parse-server 5.4.0 → 5.4.1

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.
@@ -458,6 +458,12 @@ module.exports.ParseServerOptions = {
458
458
  help: 'Starts the liveQuery server',
459
459
  action: parsers.booleanParser
460
460
  },
461
+ trustProxy: {
462
+ env: 'PARSE_SERVER_TRUST_PROXY',
463
+ help: 'The trust proxy settings. It is important to understand the exact setup of the reverse proxy, since this setting will trust values provided in the Parse Server API request. See the <a href="https://expressjs.com/en/guide/behind-proxies.html">express trust proxy settings</a> documentation. Defaults to `false`.',
464
+ action: parsers.objectParser,
465
+ default: []
466
+ },
461
467
  userSensitiveFields: {
462
468
  env: 'PARSE_SERVER_USER_SENSITIVE_FIELDS',
463
469
  help: 'Personally identifiable information fields in the user table the should be removed for non-authorized users. Deprecated @see protectedFields',
@@ -840,4 +846,4 @@ module.exports.AuthAdapter = {
840
846
  default: true
841
847
  }
842
848
  };
843
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL0RlZmluaXRpb25zLmpzIl0sIm5hbWVzIjpbInBhcnNlcnMiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsIlNjaGVtYU9wdGlvbnMiLCJhZnRlck1pZ3JhdGlvbiIsImVudiIsImhlbHAiLCJiZWZvcmVNaWdyYXRpb24iLCJkZWZpbml0aW9ucyIsInJlcXVpcmVkIiwiYWN0aW9uIiwib2JqZWN0UGFyc2VyIiwiZGVmYXVsdCIsImRlbGV0ZUV4dHJhRmllbGRzIiwiYm9vbGVhblBhcnNlciIsImxvY2tTY2hlbWFzIiwicmVjcmVhdGVNb2RpZmllZEZpZWxkcyIsInN0cmljdCIsIlBhcnNlU2VydmVyT3B0aW9ucyIsImFjY291bnRMb2Nrb3V0IiwiYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uIiwiYWxsb3dDdXN0b21PYmplY3RJZCIsImFsbG93SGVhZGVycyIsImFycmF5UGFyc2VyIiwiYWxsb3dPcmlnaW4iLCJhbmFseXRpY3NBZGFwdGVyIiwibW9kdWxlT3JPYmplY3RQYXJzZXIiLCJhcHBJZCIsImFwcE5hbWUiLCJhdXRoIiwiY2FjaGVBZGFwdGVyIiwiY2FjaGVNYXhTaXplIiwibnVtYmVyUGFyc2VyIiwiY2FjaGVUVEwiLCJjbGllbnRLZXkiLCJjbG91ZCIsImNsdXN0ZXIiLCJudW1iZXJPckJvb2xlYW5QYXJzZXIiLCJjb2xsZWN0aW9uUHJlZml4IiwiY3VzdG9tUGFnZXMiLCJkYXRhYmFzZUFkYXB0ZXIiLCJkYXRhYmFzZU9wdGlvbnMiLCJkYXRhYmFzZVVSSSIsImRlZmF1bHRMaW1pdCIsImRpcmVjdEFjY2VzcyIsImRvdE5ldEtleSIsImVtYWlsQWRhcHRlciIsImVtYWlsVmVyaWZ5VG9rZW5SZXVzZUlmVmFsaWQiLCJlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbiIsImVuYWJsZUFub255bW91c1VzZXJzIiwiZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlciIsImVuY3J5cHRpb25LZXkiLCJlbmZvcmNlUHJpdmF0ZVVzZXJzIiwiZXhwaXJlSW5hY3RpdmVTZXNzaW9ucyIsImZpbGVLZXkiLCJmaWxlc0FkYXB0ZXIiLCJmaWxlVXBsb2FkIiwiZ3JhcGhRTFBhdGgiLCJncmFwaFFMU2NoZW1hIiwiaG9zdCIsImlkZW1wb3RlbmN5T3B0aW9ucyIsImphdmFzY3JpcHRLZXkiLCJqc29uTG9ncyIsImxpdmVRdWVyeSIsImxpdmVRdWVyeVNlcnZlck9wdGlvbnMiLCJsb2dnZXJBZGFwdGVyIiwibG9nTGV2ZWwiLCJsb2dzRm9sZGVyIiwibWFzdGVyS2V5IiwibWFzdGVyS2V5SXBzIiwibWF4TGltaXQiLCJtYXhMb2dGaWxlcyIsIm1heFVwbG9hZFNpemUiLCJtaWRkbGV3YXJlIiwibW91bnRHcmFwaFFMIiwibW91bnRQYXRoIiwibW91bnRQbGF5Z3JvdW5kIiwib2JqZWN0SWRTaXplIiwicGFnZXMiLCJwYXNzd29yZFBvbGljeSIsInBsYXlncm91bmRQYXRoIiwicG9ydCIsInByZXNlcnZlRmlsZU5hbWUiLCJwcmV2ZW50TG9naW5XaXRoVW52ZXJpZmllZEVtYWlsIiwicHJvdGVjdGVkRmllbGRzIiwiX1VzZXIiLCJwdWJsaWNTZXJ2ZXJVUkwiLCJwdXNoIiwicmVhZE9ubHlNYXN0ZXJLZXkiLCJyZXF1ZXN0S2V5d29yZERlbnlsaXN0Iiwia2V5IiwidmFsdWUiLCJyZXN0QVBJS2V5IiwicmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldCIsInNjaGVkdWxlZFB1c2giLCJzY2hlbWEiLCJzZWN1cml0eSIsInNlcnZlckNsb3NlQ29tcGxldGUiLCJzZXJ2ZXJTdGFydENvbXBsZXRlIiwic2VydmVyVVJMIiwic2Vzc2lvbkxlbmd0aCIsInNpbGVudCIsInN0YXJ0TGl2ZVF1ZXJ5U2VydmVyIiwidXNlclNlbnNpdGl2ZUZpZWxkcyIsInZlcmJvc2UiLCJ2ZXJpZnlVc2VyRW1haWxzIiwid2ViaG9va0tleSIsIlNlY3VyaXR5T3B0aW9ucyIsImNoZWNrR3JvdXBzIiwiZW5hYmxlQ2hlY2siLCJlbmFibGVDaGVja0xvZyIsIlBhZ2VzT3B0aW9ucyIsImN1c3RvbVJvdXRlcyIsImN1c3RvbVVybHMiLCJlbmFibGVMb2NhbGl6YXRpb24iLCJlbmFibGVSb3V0ZXIiLCJmb3JjZVJlZGlyZWN0IiwibG9jYWxpemF0aW9uRmFsbGJhY2tMb2NhbGUiLCJsb2NhbGl6YXRpb25Kc29uUGF0aCIsInBhZ2VzRW5kcG9pbnQiLCJwYWdlc1BhdGgiLCJwbGFjZWhvbGRlcnMiLCJQYWdlc1JvdXRlIiwiaGFuZGxlciIsIm1ldGhvZCIsInBhdGgiLCJQYWdlc0N1c3RvbVVybHNPcHRpb25zIiwiZW1haWxWZXJpZmljYXRpb25MaW5rRXhwaXJlZCIsImVtYWlsVmVyaWZpY2F0aW9uTGlua0ludmFsaWQiLCJlbWFpbFZlcmlmaWNhdGlvblNlbmRGYWlsIiwiZW1haWxWZXJpZmljYXRpb25TZW5kU3VjY2VzcyIsImVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzcyIsInBhc3N3b3JkUmVzZXQiLCJwYXNzd29yZFJlc2V0TGlua0ludmFsaWQiLCJwYXNzd29yZFJlc2V0U3VjY2VzcyIsIkN1c3RvbVBhZ2VzT3B0aW9ucyIsImNob29zZVBhc3N3b3JkIiwiZXhwaXJlZFZlcmlmaWNhdGlvbkxpbmsiLCJpbnZhbGlkTGluayIsImludmFsaWRQYXNzd29yZFJlc2V0TGluayIsImludmFsaWRWZXJpZmljYXRpb25MaW5rIiwibGlua1NlbmRGYWlsIiwibGlua1NlbmRTdWNjZXNzIiwicGFyc2VGcmFtZVVSTCIsInZlcmlmeUVtYWlsU3VjY2VzcyIsIkxpdmVRdWVyeU9wdGlvbnMiLCJjbGFzc05hbWVzIiwicHViU3ViQWRhcHRlciIsInJlZGlzT3B0aW9ucyIsInJlZGlzVVJMIiwid3NzQWRhcHRlciIsIkxpdmVRdWVyeVNlcnZlck9wdGlvbnMiLCJjYWNoZVRpbWVvdXQiLCJrZXlQYWlycyIsIndlYnNvY2tldFRpbWVvdXQiLCJJZGVtcG90ZW5jeU9wdGlvbnMiLCJwYXRocyIsInR0bCIsIkFjY291bnRMb2Nrb3V0T3B0aW9ucyIsImR1cmF0aW9uIiwidGhyZXNob2xkIiwidW5sb2NrT25QYXNzd29yZFJlc2V0IiwiUGFzc3dvcmRQb2xpY3lPcHRpb25zIiwiZG9Ob3RBbGxvd1VzZXJuYW1lIiwibWF4UGFzc3dvcmRBZ2UiLCJtYXhQYXNzd29yZEhpc3RvcnkiLCJyZXNldFRva2VuUmV1c2VJZlZhbGlkIiwicmVzZXRUb2tlblZhbGlkaXR5RHVyYXRpb24iLCJ2YWxpZGF0aW9uRXJyb3IiLCJ2YWxpZGF0b3JDYWxsYmFjayIsInZhbGlkYXRvclBhdHRlcm4iLCJGaWxlVXBsb2FkT3B0aW9ucyIsImVuYWJsZUZvckFub255bW91c1VzZXIiLCJlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlciIsImVuYWJsZUZvclB1YmxpYyIsIkRhdGFiYXNlT3B0aW9ucyIsImVuYWJsZVNjaGVtYUhvb2tzIiwiQXV0aEFkYXB0ZXIiLCJlbmFibGVkIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsQ0FBZUMsYUFBZixHQUErQjtBQUM3QkMsRUFBQUEsY0FBYyxFQUFFO0FBQ2RDLElBQUFBLEdBQUcsRUFBRSxxQ0FEUztBQUVkQyxJQUFBQSxJQUFJLEVBQUU7QUFGUSxHQURhO0FBSzdCQyxFQUFBQSxlQUFlLEVBQUU7QUFDZkYsSUFBQUEsR0FBRyxFQUFFLHNDQURVO0FBRWZDLElBQUFBLElBQUksRUFBRTtBQUZTLEdBTFk7QUFTN0JFLEVBQUFBLFdBQVcsRUFBRTtBQUNYSCxJQUFBQSxHQUFHLEVBQUUsaUNBRE07QUFFWEMsSUFBQUEsSUFBSSxFQUNGLGdHQUhTO0FBSVhHLElBQUFBLFFBQVEsRUFBRSxJQUpDO0FBS1hDLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDWSxZQUxMO0FBTVhDLElBQUFBLE9BQU8sRUFBRTtBQU5FLEdBVGdCO0FBaUI3QkMsRUFBQUEsaUJBQWlCLEVBQUU7QUFDakJSLElBQUFBLEdBQUcsRUFB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QUEsSUFBSSxFQUFFLG1FQUZvQjtBQUcxQkksSUFBQUEsTUFBTSxFQUFFWCxPQUFPLENBQUNlLGFBSFU7QUFJMUJGLElBQUFBLE9BQU8sRUFBRTtBQUppQixHQVBLO0FBYWpDa0ssRUFBQUEsZUFBZSxFQUFFO0FBQ2Z6SyxJQUFBQSxHQUFHLEVBQUUsNENBRFU7QUFFZkMsSUFBQUEsSUFBSSxFQUFFLHlGQUZTO0FBR2ZJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUhEO0FBSWZGLElBQUFBLE9BQU8sRUFBRTtBQUpNO0FBYmdCLENBQW5DO0FBb0JBWCxNQUFNLENBQUNDLE9BQVAsQ0FBZTZLLGVBQWYsR0FBaUM7QUFDL0JDLEVBQUFBLGlCQUFpQixFQUFFO0FBQ2pCM0ssSUFBQUEsR0FBRyxFQUFFLDJDQURZO0FBRWpCQyxJQUFBQSxJQUFJLEVBQ0Ysa2NBSGU7QUFJakJJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUpDO0FBS2pCRixJQUFBQSxPQUFPLEVBQUU7QUFMUTtBQURZLENBQWpDO0FBU0FYLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlK0ssV0FBZixHQUE2QjtBQUMzQkMsRUFBQUEsT0FBTyxFQUFFO0FBQ1A1SyxJQUFBQSxJQUFJLEVBQUUsOERBREM7QUFFUEksSUFBQUEsTUFBTSxFQUFFWCxPQUFPLENBQUNlLGFBRlQ7QUFHUEYsSUFBQUEsT0FBTyxFQUFFO0FBSEY7QUFEa0IsQ0FBN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuKioqKiBHRU5FUkFURUQgQ09ERSAqKioqXG5UaGlzIGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHJlc291cmNlcy9idWlsZENvbmZpZ0RlZmluaXRpb25zLmpzXG5EbyBub3QgZWRpdCBtYW51YWxseSwgYnV0IHVwZGF0ZSBPcHRpb25zL2luZGV4LmpzXG4qL1xudmFyIHBhcnNlcnMgPSByZXF1aXJlKCcuL3BhcnNlcnMnKTtcblxubW9kdWxlLmV4cG9ydHMuU2NoZW1hT3B0aW9ucyA9IHtcbiAgYWZ0ZXJNaWdyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0FGVEVSX01JR1JBVElPTicsXG4gICAgaGVscDogJ0V4ZWN1dGUgYSBjYWxsYmFjayBhZnRlciBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLicsXG4gIH0sXG4gIGJlZm9yZU1pZ3JhdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfQkVGT1JFX01JR1JBVElPTicsXG4gICAgaGVscDogJ0V4ZWN1dGUgYSBjYWxsYmFjayBiZWZvcmUgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy4nLFxuICB9LFxuICBkZWZpbml0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfREVGSU5JVElPTlMnLFxuICAgIGhlbHA6XG4gICAgICAnUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYScsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiBbXSxcbiAgfSxcbiAgZGVsZXRlRXh0cmFGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0RFTEVURV9FWFRSQV9GSUVMRFMnLFxuICAgIGhlbHA6XG4gICAgICAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbG9ja1NjaGVtYXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0xPQ0tfU0NIRU1BUycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHJlY3JlYXRlTW9kaWZpZWRGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX1JFQ1JFQVRFX01PRElGSUVEX0ZJRUxEUycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgcmVjcmVhdGUgYW55IGZpZWxkcyB0aGF0IGFyZSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgY3VycmVudCBkYXRhYmFzZSBzY2hlbWEgYW5kIHRoZXNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHN0cmljdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfU1RSSUNUJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFyc2VTZXJ2ZXJPcHRpb25zID0ge1xuICBhY2NvdW50TG9ja291dDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BQ0NPVU5UX0xPQ0tPVVQnLFxuICAgIGhlbHA6ICdUaGUgYWNjb3VudCBsb2Nrb3V0IHBvbGljeSBmb3IgZmFpbGVkIGxvZ2luIGF0dGVtcHRzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0NMSUVOVF9DTEFTU19DUkVBVElPTicsXG4gICAgaGVscDogJ0VuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byB0cnVlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBhbGxvd0N1c3RvbU9iamVjdElkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0NVU1RPTV9PQkpFQ1RfSUQnLFxuICAgIGhlbHA6ICdFbmFibGUgKG9yIGRpc2FibGUpIGN1c3RvbSBvYmplY3RJZCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGFsbG93SGVhZGVyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTExPV19IRUFERVJTJyxcbiAgICBoZWxwOiAnQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICBhbGxvd09yaWdpbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTExPV19PUklHSU4nLFxuICAgIGhlbHA6ICdTZXRzIHRoZSBvcmlnaW4gdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJyxcbiAgfSxcbiAgYW5hbHl0aWNzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTkFMWVRJQ1NfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgYW5hbHl0aWNzJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGFwcElkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEJyxcbiAgICBoZWxwOiAnWW91ciBQYXJzZSBBcHBsaWNhdGlvbiBJRCcsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gIH0sXG4gIGFwcE5hbWU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQVBQX05BTUUnLFxuICAgIGhlbHA6ICdTZXRzIHRoZSBhcHAgbmFtZScsXG4gIH0sXG4gIGF1dGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQVVUSF9QUk9WSURFUlMnLFxuICAgIGhlbHA6XG4gICAgICAnQ29uZmlndXJhdGlvbiBmb3IgeW91ciBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI29hdXRoLWFuZC0zcmQtcGFydHktYXV0aGVudGljYXRpb24nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgfSxcbiAgY2FjaGVBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NBQ0hFX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGNhY2hlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGNhY2hlTWF4U2l6ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DQUNIRV9NQVhfU0laRScsXG4gICAgaGVscDogJ1NldHMgdGhlIG1heGltdW0gc2l6ZSBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSwgZGVmYXVsdHMgdG8gMTAwMDAnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ2NhY2hlTWF4U2l6ZScpLFxuICAgIGRlZmF1bHQ6IDEwMDAwLFxuICB9LFxuICBjYWNoZVRUTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DQUNIRV9UVEwnLFxuICAgIGhlbHA6ICdTZXRzIHRoZSBUVEwgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUgKGluIG1zKSwgZGVmYXVsdHMgdG8gNTAwMCAoNSBzZWNvbmRzKScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignY2FjaGVUVEwnKSxcbiAgICBkZWZhdWx0OiA1MDAwLFxuICB9LFxuICBjbGllbnRLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0xJRU5UX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgaU9TLCBNYWNPUywgdHZPUyBjbGllbnRzJyxcbiAgfSxcbiAgY2xvdWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0xPVUQnLFxuICAgIGhlbHA6ICdGdWxsIHBhdGggdG8geW91ciBjbG91ZCBjb2RlIG1haW4uanMnLFxuICB9LFxuICBjbHVzdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NMVVNURVInLFxuICAgIGhlbHA6ICdSdW4gd2l0aCBjbHVzdGVyLCBvcHRpb25hbGx5IHNldCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBkZWZhdWx0IHRvIG9zLmNwdXMoKS5sZW5ndGgnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJPckJvb2xlYW5QYXJzZXIsXG4gIH0sXG4gIGNvbGxlY3Rpb25QcmVmaXg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ09MTEVDVElPTl9QUkVGSVgnLFxuICAgIGhlbHA6ICdBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3NlcycsXG4gICAgZGVmYXVsdDogJycsXG4gIH0sXG4gIGN1c3RvbVBhZ2VzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFUycsXG4gICAgaGVscDogJ2N1c3RvbSBwYWdlcyBmb3IgcGFzc3dvcmQgdmFsaWRhdGlvbiBhbmQgcmVzZXQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIGRhdGFiYXNlQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9EQVRBQkFTRV9BREFQVEVSJyxcbiAgICBoZWxwOlxuICAgICAgJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZGF0YWJhc2U7IGFueSBvcHRpb25zIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGRhdGFiYXNlIGNsaWVudC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgZGF0YWJhc2VPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RBVEFCQVNFX09QVElPTlMnLFxuICAgIGhlbHA6ICdPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRhdGFiYXNlIGNsaWVudCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgZGF0YWJhc2VVUkk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfREFUQUJBU0VfVVJJJyxcbiAgICBoZWxwOiAnVGhlIGZ1bGwgVVJJIHRvIHlvdXIgZGF0YWJhc2UuIFN1cHBvcnRlZCBkYXRhYmFzZXMgYXJlIG1vbmdvZGIgb3IgcG9zdGdyZXMuJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZWZhdWx0OiAnbW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNy9wYXJzZScsXG4gIH0sXG4gIGRlZmF1bHRMaW1pdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9ERUZBVUxUX0xJTUlUJyxcbiAgICBoZWxwOiAnRGVmYXVsdCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIGAxMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignZGVmYXVsdExpbWl0JyksXG4gICAgZGVmYXVsdDogMTAwLFxuICB9LFxuICBkaXJlY3RBY2Nlc3M6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRElSRUNUX0FDQ0VTUycsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIGlmIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBzaG91bGQgYmUgcm91dGVkIHRvIFBhcnNlIFNlcnZlciBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSB0aGUgSFRUUCBpbnRlcmZhY2UuIERlZmF1bHQgaXMgYGZhbHNlYC48YnI+PGJyPklmIHNldCB0byBgZmFsc2VgIHRoZW4gUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIGFyZSBleGVjdXRlZCBhcyBIVFRQIHJlcXVlc3RzIHNlbnQgdG8gUGFyc2UgU2VydmVyIHZpYSB0aGUgYHNlcnZlclVSTGAuIEZvciBleGFtcGxlLCBhIGBQYXJzZS5RdWVyeWAgaW4gQ2xvdWQgQ29kZSBpcyBjYWxsaW5nIFBhcnNlIFNlcnZlciB2aWEgYSBIVFRQIHJlcXVlc3QuIFRoZSBzZXJ2ZXIgaXMgZXNzZW50aWFsbHkgbWFraW5nIGEgSFRUUCByZXF1ZXN0IHRvIGl0c2VsZiwgdW5uZWNlc3NhcmlseSB1c2luZyBuZXR3b3JrIHJlc291cmNlcyBzdWNoIGFzIG5ldHdvcmsgcG9ydHMuPGJyPjxicj5cXHUyNkEwXFx1RkUwRiBJbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBydW4gYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBhbmQgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBjdXJyZW50IE5vZGUuanMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJvdXRlZCB2aWEgdGhlIGxvYWQgYmFsYW5jZXIgYW5kIGRpc3RyaWJ1dGVkIGFzIEhUVFAgcmVxdWVzdHMgYW1vbmcgYWxsIGluc3RhbmNlcyB2aWEgdGhlIGBzZXJ2ZXJVUkxgLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBkb3ROZXRLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRE9UX05FVF9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIFVuaXR5IGFuZCAuTmV0IFNESycsXG4gIH0sXG4gIGVtYWlsQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTUFJTF9BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIGVtYWlsIHNlbmRpbmcnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTUFJTF9WRVJJRllfVE9LRU5fUkVVU0VfSUZfVkFMSUQnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCBpZiBhIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU1BSUxfVkVSSUZZX1RPS0VOX1ZBTElESVRZX0RVUkFUSU9OJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbicpLFxuICB9LFxuICBlbmFibGVBbm9ueW1vdXNVc2Vyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSUycsXG4gICAgaGVscDogJ0VuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VOQUJMRV9FWFBSRVNTX0VSUk9SX0hBTkRMRVInLFxuICAgIGhlbHA6ICdFbmFibGVzIHRoZSBkZWZhdWx0IGV4cHJlc3MgZXJyb3IgaGFuZGxlciBmb3IgYWxsIGVycm9ycycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuY3J5cHRpb25LZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU5DUllQVElPTl9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIGVuY3J5cHRpbmcgeW91ciBmaWxlcycsXG4gIH0sXG4gIGVuZm9yY2VQcml2YXRlVXNlcnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU5GT1JDRV9QUklWQVRFX1VTRVJTJyxcbiAgICBoZWxwOiAnU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VYUElSRV9JTkFDVElWRV9TRVNTSU9OUycsXG4gICAgaGVscDpcbiAgICAgICdTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgZmlsZUtleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgeW91ciBmaWxlcycsXG4gIH0sXG4gIGZpbGVzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFU19BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBmaWxlcyBzdWItc3lzdGVtJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGZpbGVVcGxvYWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRklMRV9VUExPQURfT1BUSU9OUycsXG4gICAgaGVscDogJ09wdGlvbnMgZm9yIGZpbGUgdXBsb2FkcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgZ3JhcGhRTFBhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfR1JBUEhRTF9QQVRIJyxcbiAgICBoZWxwOiAnTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQsIGRlZmF1bHRzIHRvIC9ncmFwaHFsJyxcbiAgICBkZWZhdWx0OiAnL2dyYXBocWwnLFxuICB9LFxuICBncmFwaFFMU2NoZW1hOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0dSQVBIX1FMU0NIRU1BJyxcbiAgICBoZWxwOiAnRnVsbCBwYXRoIHRvIHlvdXIgR3JhcGhRTCBjdXN0b20gc2NoZW1hLmdyYXBocWwgZmlsZScsXG4gIH0sXG4gIGhvc3Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfSE9TVCcsXG4gICAgaGVscDogJ1RoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wJyxcbiAgICBkZWZhdWx0OiAnMC4wLjAuMCcsXG4gIH0sXG4gIGlkZW1wb3RlbmN5T3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfT1BUSU9OUycsXG4gICAgaGVscDpcbiAgICAgICdPcHRpb25zIGZvciByZXF1ZXN0IGlkZW1wb3RlbmN5IHRvIGRlZHVwbGljYXRlIGlkZW50aWNhbCByZXF1ZXN0cyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgamF2YXNjcmlwdEtleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9KQVZBU0NSSVBUX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgdGhlIEphdmFzY3JpcHQgU0RLJyxcbiAgfSxcbiAganNvbkxvZ3M6IHtcbiAgICBlbnY6ICdKU09OX0xPR1MnLFxuICAgIGhlbHA6ICdMb2cgYXMgc3RydWN0dXJlZCBKU09OIG9iamVjdHMnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICBsaXZlUXVlcnk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTElWRV9RVUVSWScsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY29uZmlndXJhdGlvbiBvYmplY3RcIixcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVfUVVFUllfU0VSVkVSX09QVElPTlMnLFxuICAgIGhlbHA6ICdMaXZlIHF1ZXJ5IHNlcnZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgKHdpbGwgc3RhcnQgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIpJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBsb2dnZXJBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xPR0dFUl9BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBsb2dnaW5nIHN1Yi1zeXN0ZW0nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgbG9nTGV2ZWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTE9HX0xFVkVMJyxcbiAgICBoZWxwOiAnU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MnLFxuICB9LFxuICBsb2dzRm9sZGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSJyxcbiAgICBoZWxwOiBcIkZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcIixcbiAgICBkZWZhdWx0OiAnLi9sb2dzJyxcbiAgfSxcbiAgbWFzdGVyS2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BU1RFUl9LRVknLFxuICAgIGhlbHA6ICdZb3VyIFBhcnNlIE1hc3RlciBLZXknLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBtYXN0ZXJLZXlJcHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUFTVEVSX0tFWV9JUFMnLFxuICAgIGhlbHA6ICdSZXN0cmljdCBtYXN0ZXJLZXkgdG8gYmUgdXNlZCBieSBvbmx5IHRoZXNlIGlwcywgZGVmYXVsdHMgdG8gW10gKGFsbG93IGFsbCBpcHMpJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gICAgZGVmYXVsdDogW10sXG4gIH0sXG4gIG1heExpbWl0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BWF9MSU1JVCcsXG4gICAgaGVscDogJ01heCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIHVubGltaXRlZCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignbWF4TGltaXQnKSxcbiAgfSxcbiAgbWF4TG9nRmlsZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUFYX0xPR19GSUxFUycsXG4gICAgaGVscDpcbiAgICAgIFwiTWF4aW11bSBudW1iZXIgb2YgbG9ncyB0byBrZWVwLiBJZiBub3Qgc2V0LCBubyBsb2dzIHdpbGwgYmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2YgZmlsZXMgb3IgbnVtYmVyIG9mIGRheXMuIElmIHVzaW5nIGRheXMsIGFkZCAnZCcgYXMgdGhlIHN1ZmZpeC4gKGRlZmF1bHQ6IG51bGwpXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgbWF4VXBsb2FkU2l6ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NQVhfVVBMT0FEX1NJWkUnLFxuICAgIGhlbHA6ICdNYXggZmlsZSBzaXplIGZvciB1cGxvYWRzLCBkZWZhdWx0cyB0byAyMG1iJyxcbiAgICBkZWZhdWx0OiAnMjBtYicsXG4gIH0sXG4gIG1pZGRsZXdhcmU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUlERExFV0FSRScsXG4gICAgaGVscDogJ21pZGRsZXdhcmUgZm9yIGV4cHJlc3Mgc2VydmVyLCBjYW4gYmUgc3RyaW5nIG9yIGZ1bmN0aW9uJyxcbiAgfSxcbiAgbW91bnRHcmFwaFFMOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01PVU5UX0dSQVBIUUwnLFxuICAgIGhlbHA6ICdNb3VudHMgdGhlIEdyYXBoUUwgZW5kcG9pbnQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBtb3VudFBhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTU9VTlRfUEFUSCcsXG4gICAgaGVscDogJ01vdW50IHBhdGggZm9yIHRoZSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIC9wYXJzZScsXG4gICAgZGVmYXVsdDogJy9wYXJzZScsXG4gIH0sXG4gIG1vdW50UGxheWdyb3VuZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NT1VOVF9QTEFZR1JPVU5EJyxcbiAgICBoZWxwOiAnTW91bnRzIHRoZSBHcmFwaFFMIFBsYXlncm91bmQgLSBuZXZlciB1c2UgdGhpcyBvcHRpb24gaW4gcHJvZHVjdGlvbicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIG9iamVjdElkU2l6ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9PQkpFQ1RfSURfU0laRScsXG4gICAgaGVscDogXCJTZXRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBnZW5lcmF0ZWQgb2JqZWN0IGlkJ3MsIGRlZmF1bHQgMTBcIixcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdvYmplY3RJZFNpemUnKSxcbiAgICBkZWZhdWx0OiAxMCxcbiAgfSxcbiAgcGFnZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIG9wdGlvbnMgZm9yIHBhZ2VzIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbi4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICAgIGRlZmF1bHQ6IHt9LFxuICB9LFxuICBwYXNzd29yZFBvbGljeToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1knLFxuICAgIGhlbHA6ICdUaGUgcGFzc3dvcmQgcG9saWN5IGZvciBlbmZvcmNpbmcgcGFzc3dvcmQgcmVsYXRlZCBydWxlcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIHBsYXlncm91bmRQYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BMQVlHUk9VTkRfUEFUSCcsXG4gICAgaGVscDogJ01vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIFBsYXlncm91bmQsIGRlZmF1bHRzIHRvIC9wbGF5Z3JvdW5kJyxcbiAgICBkZWZhdWx0OiAnL3BsYXlncm91bmQnLFxuICB9LFxuICBwb3J0OiB7XG4gICAgZW52OiAnUE9SVCcsXG4gICAgaGVscDogJ1RoZSBwb3J0IHRvIHJ1biB0aGUgUGFyc2VTZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdwb3J0JyksXG4gICAgZGVmYXVsdDogMTMzNyxcbiAgfSxcbiAgcHJlc2VydmVGaWxlTmFtZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QUkVTRVJWRV9GSUxFX05BTUUnLFxuICAgIGhlbHA6ICdFbmFibGUgKG9yIGRpc2FibGUpIHRoZSBhZGRpdGlvbiBvZiBhIHVuaXF1ZSBoYXNoIHRvIHRoZSBmaWxlIG5hbWVzJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QUkVWRU5UX0xPR0lOX1dJVEhfVU5WRVJJRklFRF9FTUFJTCcsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgYSB1c2VyIGZyb20gbG9nZ2luZyBpbiBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHByb3RlY3RlZEZpZWxkczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QUk9URUNURURfRklFTERTJyxcbiAgICBoZWxwOiAnUHJvdGVjdGVkIGZpZWxkcyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIHdpdGggZXh0cmEgc2VjdXJpdHkgd2hlbiBmZXRjaGluZyBkZXRhaWxzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7XG4gICAgICBfVXNlcjoge1xuICAgICAgICAnKic6IFsnZW1haWwnXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcHVibGljU2VydmVyVVJMOiB7XG4gICAgZW52OiAnUEFSU0VfUFVCTElDX1NFUlZFUl9VUkwnLFxuICAgIGhlbHA6ICdQdWJsaWMgVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy4nLFxuICB9LFxuICBwdXNoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BVU0gnLFxuICAgIGhlbHA6XG4gICAgICAnQ29uZmlndXJhdGlvbiBmb3IgcHVzaCwgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jcHVzaC1ub3RpZmljYXRpb25zJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICByZWFkT25seU1hc3RlcktleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9SRUFEX09OTFlfTUFTVEVSX0tFWScsXG4gICAgaGVscDogJ1JlYWQtb25seSBrZXksIHdoaWNoIGhhcyB0aGUgc2FtZSBjYXBhYmlsaXRpZXMgYXMgTWFzdGVyS2V5IHdpdGhvdXQgd3JpdGVzJyxcbiAgfSxcbiAgcmVxdWVzdEtleXdvcmREZW55bGlzdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9SRVFVRVNUX0tFWVdPUkRfREVOWUxJU1QnLFxuICAgIGhlbHA6XG4gICAgICAnQW4gYXJyYXkgb2Yga2V5cyBhbmQgdmFsdWVzIHRoYXQgYXJlIHByb2hpYml0ZWQgaW4gZGF0YWJhc2UgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgdG8gcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG9ubHkgYSBrZXkgKGB7XCJrZXlcIjpcIi4uLlwifWApLCBvbmx5IGEgdmFsdWUgKGB7XCJ2YWx1ZVwiOlwiLi4uXCJ9YCkgb3IgYSBrZXktdmFsdWUgcGFpciAoYHtcImtleVwiOlwiLi4uXCIsXCJ2YWx1ZVwiOlwiLi4uXCJ9YCkuIFRoZSBzcGVjaWZpY2F0aW9uIGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0eXBlczogYGJvb2xlYW5gLCBgbnVtZXJpY2Agb3IgYHN0cmluZ2AsIHdoZXJlIGBzdHJpbmdgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSByZWdleCBub3RhdGlvbi4gUmVxdWVzdCBkYXRhIGlzIGRlZXAtc2Nhbm5lZCBmb3IgbWF0Y2hpbmcgZGVmaW5pdGlvbnMgdG8gZGV0ZWN0IGFsc28gYW55IG5lc3RlZCBvY2N1cnJlbmNlcy4gRGVmYXVsdHMgYXJlIHBhdHRlcm5zIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIG1hbGljaW91cyByZXF1ZXN0cy4gU2V0dGluZyB0aGlzIG9wdGlvbiB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhdHRlcm5zLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICAgIGRlZmF1bHQ6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnX2Jzb250eXBlJyxcbiAgICAgICAgdmFsdWU6ICdDb2RlJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2NvbnN0cnVjdG9yJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ19fcHJvdG9fXycsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHJlc3RBUElLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVTVF9BUElfS0VZJyxcbiAgICBoZWxwOiAnS2V5IGZvciBSRVNUIGNhbGxzJyxcbiAgfSxcbiAgcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9SRVZPS0VfU0VTU0lPTl9PTl9QQVNTV09SRF9SRVNFVCcsXG4gICAgaGVscDpcbiAgICAgIFwiV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cIixcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBzY2hlZHVsZWRQdXNoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVEVUxFRF9QVVNIJyxcbiAgICBoZWxwOiAnQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBzY2hlbWE6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BJyxcbiAgICBoZWxwOiAnRGVmaW5lZCBzY2hlbWEnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIHNlY3VyaXR5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NFQ1VSSVRZJyxcbiAgICBoZWxwOiAnVGhlIHNlY3VyaXR5IG9wdGlvbnMgdG8gaWRlbnRpZnkgYW5kIHJlcG9ydCB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgc2VydmVyQ2xvc2VDb21wbGV0ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRVJWRVJfQ0xPU0VfQ09NUExFVEUnLFxuICAgIGhlbHA6ICdDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgY2xvc2VkJyxcbiAgfSxcbiAgc2VydmVyU3RhcnRDb21wbGV0ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRVJWRVJfU1RBUlRfQ09NUExFVEUnLFxuICAgIGhlbHA6ICdDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgc3RhcnRlZCcsXG4gIH0sXG4gIHNlcnZlclVSTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9VUkwnLFxuICAgIGhlbHA6ICdVUkwgdG8geW91ciBwYXJzZSBzZXJ2ZXIgd2l0aCBodHRwOi8vIG9yIGh0dHBzOi8vLicsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gIH0sXG4gIHNlc3Npb25MZW5ndGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VTU0lPTl9MRU5HVEgnLFxuICAgIGhlbHA6ICdTZXNzaW9uIGR1cmF0aW9uLCBpbiBzZWNvbmRzLCBkZWZhdWx0cyB0byAxIHllYXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ3Nlc3Npb25MZW5ndGgnKSxcbiAgICBkZWZhdWx0OiAzMTUzNjAwMCxcbiAgfSxcbiAgc2lsZW50OiB7XG4gICAgZW52OiAnU0lMRU5UJyxcbiAgICBoZWxwOiAnRGlzYWJsZXMgY29uc29sZSBvdXRwdXQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICBzdGFydExpdmVRdWVyeVNlcnZlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TVEFSVF9MSVZFX1FVRVJZX1NFUlZFUicsXG4gICAgaGVscDogJ1N0YXJ0cyB0aGUgbGl2ZVF1ZXJ5IHNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gIH0sXG4gIHVzZXJTZW5zaXRpdmVGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfVVNFUl9TRU5TSVRJVkVfRklFTERTJyxcbiAgICBoZWxwOlxuICAgICAgJ1BlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGZpZWxkcyBpbiB0aGUgdXNlciB0YWJsZSB0aGUgc2hvdWxkIGJlIHJlbW92ZWQgZm9yIG5vbi1hdXRob3JpemVkIHVzZXJzLiBEZXByZWNhdGVkIEBzZWUgcHJvdGVjdGVkRmllbGRzJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gIH0sXG4gIHZlcmJvc2U6IHtcbiAgICBlbnY6ICdWRVJCT1NFJyxcbiAgICBoZWxwOiAnU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2UnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICB2ZXJpZnlVc2VyRW1haWxzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1ZFUklGWV9VU0VSX0VNQUlMUycsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIHRvIHJlcXVpcmUgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIGVtYWlsIGFkZHJlc3MgdG8gY29tcGxldGUgdGhlIHNpZ24tdXAgcHJvY2Vzcy48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICB3ZWJob29rS2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1dFQkhPT0tfS0VZJyxcbiAgICBoZWxwOiAnS2V5IHNlbnQgd2l0aCBvdXRnb2luZyB3ZWJob29rIGNhbGxzJyxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5TZWN1cml0eU9wdGlvbnMgPSB7XG4gIGNoZWNrR3JvdXBzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NFQ1VSSVRZX0NIRUNLX0dST1VQUycsXG4gICAgaGVscDpcbiAgICAgICdUaGUgc2VjdXJpdHkgY2hlY2sgZ3JvdXBzIHRvIHJ1bi4gVGhpcyBhbGxvd3MgdG8gYWRkIGN1c3RvbSBzZWN1cml0eSBjaGVja3Mgb3Igb3ZlcnJpZGUgZXhpc3Rpbmcgb25lcy4gRGVmYXVsdCBhcmUgdGhlIGdyb3VwcyBkZWZpbmVkIGluIGBDaGVja0dyb3Vwcy5qc2AuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gIH0sXG4gIGVuYWJsZUNoZWNrOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NFQ1VSSVRZX0VOQUJMRV9DSEVDSycsXG4gICAgaGVscDogJ0lzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBjaGVjayBmb3Igd2VhayBzZWN1cml0eSBzZXR0aW5ncy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBlbmFibGVDaGVja0xvZzoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWV9FTkFCTEVfQ0hFQ0tfTE9HJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgdGhlIHNlY3VyaXR5IGNoZWNrIHJlcG9ydCBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2dzLiBUaGlzIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgdGVtcG9yYXJpbHkgdG8gbm90IGV4cG9zZSB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzIGluIGxvZ3MuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5QYWdlc09wdGlvbnMgPSB7XG4gIGN1c3RvbVJvdXRlczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fUk9VVEVTJyxcbiAgICBoZWxwOiAnVGhlIGN1c3RvbSByb3V0ZXMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gICAgZGVmYXVsdDogW10sXG4gIH0sXG4gIGN1c3RvbVVybHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTFMnLFxuICAgIGhlbHA6ICdUaGUgVVJMcyB0byB0aGUgY3VzdG9tIHBhZ2VzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgZW5hYmxlTG9jYWxpemF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0VOQUJMRV9MT0NBTElaQVRJT04nLFxuICAgIGhlbHA6ICdJcyB0cnVlIGlmIHBhZ2VzIHNob3VsZCBiZSBsb2NhbGl6ZWQ7IHRoaXMgaGFzIG5vIGVmZmVjdCBvbiBjdXN0b20gcGFnZSByZWRpcmVjdHMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW5hYmxlUm91dGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0VOQUJMRV9ST1VURVInLFxuICAgIGhlbHA6XG4gICAgICAnSXMgdHJ1ZSBpZiB0aGUgcGFnZXMgcm91dGVyIHNob3VsZCBiZSBlbmFibGVkOyB0aGlzIGlzIHJlcXVpcmVkIGZvciBhbnkgb2YgdGhlIHBhZ2VzIG9wdGlvbnMgdG8gdGFrZSBlZmZlY3QuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGZvcmNlUmVkaXJlY3Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfRk9SQ0VfUkVESVJFQ1QnLFxuICAgIGhlbHA6XG4gICAgICAnSXMgdHJ1ZSBpZiByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZWRpcmVjdHMgYW5kIG5ldmVyIGNvbnRlbnQsIGZhbHNlIGlmIHRoZSByZXNwb25zZSB0eXBlIHNob3VsZCBkZXBlbmQgb24gdGhlIHJlcXVlc3QgdHlwZSAoR0VUIHJlcXVlc3QgLT4gY29udGVudCByZXNwb25zZTsgUE9TVCByZXF1ZXN0IC0+IHJlZGlyZWN0IHJlc3BvbnNlKS4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBsb2NhbGl6YXRpb25GYWxsYmFja0xvY2FsZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19MT0NBTElaQVRJT05fRkFMTEJBQ0tfTE9DQUxFJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoZSBmYWxsYmFjayBsb2NhbGUgZm9yIGxvY2FsaXphdGlvbiBpZiBubyBtYXRjaGluZyB0cmFuc2xhdGlvbiBpcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuIGxvY2FsZS4gVGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gcHJvdmlkaW5nIHRyYW5zbGF0aW9uIHJlc291cmNlcyB2aWEgSlNPTiBmaWxlLicsXG4gICAgZGVmYXVsdDogJ2VuJyxcbiAgfSxcbiAgbG9jYWxpemF0aW9uSnNvblBhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfTE9DQUxJWkFUSU9OX0pTT05fUEFUSCcsXG4gICAgaGVscDpcbiAgICAgICdUaGUgcGF0aCB0byB0aGUgSlNPTiBmaWxlIGZvciBsb2NhbGl6YXRpb247IHRoZSB0cmFuc2xhdGlvbnMgd2lsbCBiZSB1c2VkIHRvIGZpbGwgdGVtcGxhdGUgcGxhY2Vob2xkZXJzIGFjY29yZGluZyB0byB0aGUgbG9jYWxlLicsXG4gIH0sXG4gIHBhZ2VzRW5kcG9pbnQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUEFHRVNfRU5EUE9JTlQnLFxuICAgIGhlbHA6IFwiVGhlIEFQSSBlbmRwb2ludCBmb3IgdGhlIHBhZ2VzLiBEZWZhdWx0IGlzICdhcHBzJy5cIixcbiAgICBkZWZhdWx0OiAnYXBwcycsXG4gIH0sXG4gIHBhZ2VzUGF0aDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19QQUdFU19QQVRIJyxcbiAgICBoZWxwOlxuICAgICAgXCJUaGUgcGF0aCB0byB0aGUgcGFnZXMgZGlyZWN0b3J5OyB0aGlzIGFsc28gZGVmaW5lcyB3aGVyZSB0aGUgc3RhdGljIGVuZHBvaW50ICcvYXBwcycgcG9pbnRzIHRvLiBEZWZhdWx0IGlzIHRoZSAnLi9wdWJsaWMvJyBkaXJlY3RvcnkuXCIsXG4gICAgZGVmYXVsdDogJy4vcHVibGljJyxcbiAgfSxcbiAgcGxhY2Vob2xkZXJzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1BMQUNFSE9MREVSUycsXG4gICAgaGVscDpcbiAgICAgICdUaGUgcGxhY2Vob2xkZXIga2V5cyBhbmQgdmFsdWVzIHdoaWNoIHdpbGwgYmUgZmlsbGVkIGluIHBhZ2VzOyB0aGlzIGNhbiBiZSBhIHNpbXBsZSBvYmplY3Qgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFnZXNSb3V0ZSA9IHtcbiAgaGFuZGxlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19ST1VURV9IQU5ETEVSJyxcbiAgICBoZWxwOiAnVGhlIHJvdXRlIGhhbmRsZXIgdGhhdCBpcyBhbiBhc3luYyBmdW5jdGlvbi4nLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBtZXRob2Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUk9VVEVfTUVUSE9EJyxcbiAgICBoZWxwOiBcIlRoZSByb3V0ZSBtZXRob2QsIGUuZy4gJ0dFVCcgb3IgJ1BPU1QnLlwiLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBwYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1JPVVRFX1BBVEgnLFxuICAgIGhlbHA6ICdUaGUgcm91dGUgcGF0aC4nLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLlBhZ2VzQ3VzdG9tVXJsc09wdGlvbnMgPSB7XG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9FTUFJTF9WRVJJRklDQVRJT05fTElOS19FWFBJUkVEJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGV4cGlyZWQuJyxcbiAgfSxcbiAgZW1haWxWZXJpZmljYXRpb25MaW5rSW52YWxpZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9MSU5LX0lOVkFMSUQnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgaW52YWxpZC4nLFxuICB9LFxuICBlbWFpbFZlcmlmaWNhdGlvblNlbmRGYWlsOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfRU1BSUxfVkVSSUZJQ0FUSU9OX1NFTkRfRkFJTCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBzZW5kIGZhaWwuJyxcbiAgfSxcbiAgZW1haWxWZXJpZmljYXRpb25TZW5kU3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9TRU5EX1NVQ0NFU1MnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHJlc2VuZCBsaW5rIC0+IHN1Y2Nlc3MuJyxcbiAgfSxcbiAgZW1haWxWZXJpZmljYXRpb25TdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfRU1BSUxfVkVSSUZJQ0FUSU9OX1NVQ0NFU1MnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHN1Y2Nlc3MuJyxcbiAgfSxcbiAgcGFzc3dvcmRSZXNldDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX1BBU1NXT1JEX1JFU0VUJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0LicsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXRMaW5rSW52YWxpZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX1BBU1NXT1JEX1JFU0VUX0xJTktfSU5WQUxJRCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBsaW5rIGludmFsaWQuJyxcbiAgfSxcbiAgcGFzc3dvcmRSZXNldFN1Y2Nlc3M6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9QQVNTV09SRF9SRVNFVF9TVUNDRVNTJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IHN1Y2Nlc3MuJyxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5DdXN0b21QYWdlc09wdGlvbnMgPSB7XG4gIGNob29zZVBhc3N3b3JkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19DSE9PU0VfUEFTU1dPUkQnLFxuICAgIGhlbHA6ICdjaG9vc2UgcGFzc3dvcmQgcGFnZSBwYXRoJyxcbiAgfSxcbiAgZXhwaXJlZFZlcmlmaWNhdGlvbkxpbms6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ1VTVE9NX1BBR0VTX0VYUElSRURfVkVSSUZJQ0FUSU9OX0xJTksnLFxuICAgIGhlbHA6ICdleHBpcmVkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGludmFsaWRMaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19JTlZBTElEX0xJTksnLFxuICAgIGhlbHA6ICdpbnZhbGlkIGxpbmsgcGFnZSBwYXRoJyxcbiAgfSxcbiAgaW52YWxpZFBhc3N3b3JkUmVzZXRMaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19JTlZBTElEX1BBU1NXT1JEX1JFU0VUX0xJTksnLFxuICAgIGhlbHA6ICdpbnZhbGlkIHBhc3N3b3JkIHJlc2V0IGxpbmsgcGFnZSBwYXRoJyxcbiAgfSxcbiAgaW52YWxpZFZlcmlmaWNhdGlvbkxpbms6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ1VTVE9NX1BBR0VTX0lOVkFMSURfVkVSSUZJQ0FUSU9OX0xJTksnLFxuICAgIGhlbHA6ICdpbnZhbGlkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGxpbmtTZW5kRmFpbDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfTElOS19TRU5EX0ZBSUwnLFxuICAgIGhlbHA6ICd2ZXJpZmljYXRpb24gbGluayBzZW5kIGZhaWwgcGFnZSBwYXRoJyxcbiAgfSxcbiAgbGlua1NlbmRTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19MSU5LX1NFTkRfU1VDQ0VTUycsXG4gICAgaGVscDogJ3ZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgc3VjY2VzcyBwYWdlIHBhdGgnLFxuICB9LFxuICBwYXJzZUZyYW1lVVJMOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19QQVJTRV9GUkFNRV9VUkwnLFxuICAgIGhlbHA6ICdmb3IgbWFza2luZyB1c2VyLWZhY2luZyBwYWdlcycsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19QQVNTV09SRF9SRVNFVF9TVUNDRVNTJyxcbiAgICBoZWxwOiAncGFzc3dvcmQgcmVzZXQgc3VjY2VzcyBwYWdlIHBhdGgnLFxuICB9LFxuICB2ZXJpZnlFbWFpbFN1Y2Nlc3M6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ1VTVE9NX1BBR0VTX1ZFUklGWV9FTUFJTF9TVUNDRVNTJyxcbiAgICBoZWxwOiAndmVyaWZ5IGVtYWlsIHN1Y2Nlc3MgcGFnZSBwYXRoJyxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5MaXZlUXVlcnlPcHRpb25zID0ge1xuICBjbGFzc05hbWVzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9DTEFTU05BTUVTJyxcbiAgICBoZWxwOiBcInBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjbGFzc05hbWVzXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICBwdWJTdWJBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9QVUJfU1VCX0FEQVBURVInLFxuICAgIGhlbHA6ICdMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9SRURJU19PUFRJT05TJyxcbiAgICBoZWxwOiBcInBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnNcIixcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICByZWRpc1VSTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfUkVESVNfVVJMJyxcbiAgICBoZWxwOiBcInBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTFwiLFxuICB9LFxuICB3c3NBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9XU1NfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyA9IHtcbiAgYXBwSWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9BUFBfSUQnLFxuICAgIGhlbHA6XG4gICAgICAnVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBhcHBJZCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIGFwcElkLicsXG4gIH0sXG4gIGNhY2hlVGltZW91dDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX0NBQ0hFX1RJTUVPVVQnLFxuICAgIGhlbHA6XG4gICAgICBcIk51bWJlciBpbiBtaWxsaXNlY29uZHMuIFdoZW4gY2xpZW50cyBwcm92aWRlIHRoZSBzZXNzaW9uVG9rZW4gdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIGZldGNoIGl0cyBQYXJzZVVzZXIncyBvYmplY3RJZCBmcm9tIHBhcnNlIHNlcnZlciBhbmQgc3RvcmUgaXQgaW4gdGhlIGNhY2hlLiBUaGUgdmFsdWUgZGVmaW5lcyB0aGUgZHVyYXRpb24gb2YgdGhlIGNhY2hlLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLCBkZWZhdWx0cyB0byA1ICogMTAwMCBtcyAoNSBzZWNvbmRzKS5cIixcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdjYWNoZVRpbWVvdXQnKSxcbiAgfSxcbiAga2V5UGFpcnM6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9LRVlfUEFJUlMnLFxuICAgIGhlbHA6XG4gICAgICAnQSBKU09OIG9iamVjdCB0aGF0IHNlcnZlcyBhcyBhIHdoaXRlbGlzdCBvZiBrZXlzLiBJdCBpcyB1c2VkIGZvciB2YWxpZGF0aW5nIGNsaWVudHMgd2hlbiB0aGV5IHRyeSB0byBjb25uZWN0IHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgbG9nTGV2ZWw6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9MT0dfTEVWRUwnLFxuICAgIGhlbHA6XG4gICAgICAnVGhpcyBzdHJpbmcgZGVmaW5lcyB0aGUgbG9nIGxldmVsIG9mIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBXZSBzdXBwb3J0IFZFUkJPU0UsIElORk8sIEVSUk9SLCBOT05FLCBkZWZhdWx0cyB0byBJTkZPLicsXG4gIH0sXG4gIG1hc3RlcktleToge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX01BU1RFUl9LRVknLFxuICAgIGhlbHA6XG4gICAgICAnVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBtYXN0ZXJLZXkgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBtYXN0ZXJLZXkuJyxcbiAgfSxcbiAgcG9ydDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1BPUlQnLFxuICAgIGhlbHA6ICdUaGUgcG9ydCB0byBydW4gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdwb3J0JyksXG4gICAgZGVmYXVsdDogMTMzNyxcbiAgfSxcbiAgcHViU3ViQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1BVQl9TVUJfQURBUFRFUicsXG4gICAgaGVscDogJ0xpdmVRdWVyeSBwdWJzdWIgYWRhcHRlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxuICByZWRpc09wdGlvbnM6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9SRURJU19PUFRJT05TJyxcbiAgICBoZWxwOiBcInBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnNcIixcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICByZWRpc1VSTDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1JFRElTX1VSTCcsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkxcIixcbiAgfSxcbiAgc2VydmVyVVJMOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfU0VSVkVSX1VSTCcsXG4gICAgaGVscDpcbiAgICAgICdUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIHNlcnZlclVSTCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIHNlcnZlclVSTC4nLFxuICB9LFxuICB3ZWJzb2NrZXRUaW1lb3V0OiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfV0VCU09DS0VUX1RJTUVPVVQnLFxuICAgIGhlbHA6XG4gICAgICAnTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBpbmcvcG9uZyBmcmFtZXMuIFRoZSBXZWJTb2NrZXQgc2VydmVyIHNlbmRzIHBpbmcvcG9uZyBmcmFtZXMgdG8gdGhlIGNsaWVudHMgdG8ga2VlcCB0aGUgV2ViU29ja2V0IGFsaXZlLiBUaGlzIHZhbHVlIGRlZmluZXMgdGhlIGludGVydmFsIG9mIHRoZSBwaW5nL3BvbmcgZnJhbWUgZnJvbSB0aGUgc2VydmVyIHRvIGNsaWVudHMsIGRlZmF1bHRzIHRvIDEwICogMTAwMCBtcyAoMTAgcykuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCd3ZWJzb2NrZXRUaW1lb3V0JyksXG4gIH0sXG4gIHdzc0FkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9XU1NfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuSWRlbXBvdGVuY3lPcHRpb25zID0ge1xuICBwYXRoczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfUEFUSFMnLFxuICAgIGhlbHA6XG4gICAgICAnQW4gYXJyYXkgb2YgcGF0aHMgZm9yIHdoaWNoIHRoZSBmZWF0dXJlIHNob3VsZCBiZSBlbmFibGVkLiBUaGUgbW91bnQgcGF0aCBtdXN0IG5vdCBiZSBpbmNsdWRlZCwgZm9yIGV4YW1wbGUgaW5zdGVhZCBvZiBgL3BhcnNlL2Z1bmN0aW9ucy9teUZ1bmN0aW9uYCBzcGVjaWZpeSBgZnVuY3Rpb25zL215RnVuY3Rpb25gLiBUaGUgZW50cmllcyBhcmUgaW50ZXJwcmV0ZWQgYXMgcmVndWxhciBleHByZXNzaW9uLCBmb3IgZXhhbXBsZSBgZnVuY3Rpb25zLy4qYCBtYXRjaGVzIGFsbCBmdW5jdGlvbnMsIGBqb2JzLy4qYCBtYXRjaGVzIGFsbCBqb2JzLCBgY2xhc3Nlcy8uKmAgbWF0Y2hlcyBhbGwgY2xhc3NlcywgYC4qYCBtYXRjaGVzIGFsbCBwYXRocy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgICBkZWZhdWx0OiBbXSxcbiAgfSxcbiAgdHRsOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VYUEVSSU1FTlRBTF9JREVNUE9URU5DWV9UVEwnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggYSByZXF1ZXN0IHJlY29yZCBpcyBkaXNjYXJkZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIDMwMHMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCd0dGwnKSxcbiAgICBkZWZhdWx0OiAzMDAsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuQWNjb3VudExvY2tvdXRPcHRpb25zID0ge1xuICBkdXJhdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BQ0NPVU5UX0xPQ0tPVVRfRFVSQVRJT04nLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBkdXJhdGlvbiBpbiBtaW51dGVzIHRoYXQgYSBsb2NrZWQtb3V0IGFjY291bnQgcmVtYWlucyBsb2NrZWQgb3V0IGJlZm9yZSBhdXRvbWF0aWNhbGx5IGJlY29taW5nIHVubG9ja2VkLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDAwMGAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdkdXJhdGlvbicpLFxuICB9LFxuICB0aHJlc2hvbGQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUNDT1VOVF9MT0NLT1VUX1RIUkVTSE9MRCcsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIG51bWJlciBvZiBmYWlsZWQgc2lnbi1pbiBhdHRlbXB0cyB0aGF0IHdpbGwgY2F1c2UgYSB1c2VyIGFjY291bnQgdG8gYmUgbG9ja2VkLiBJZiB0aGUgYWNjb3VudCBpcyBsb2NrZWQuIFRoZSBhY2NvdW50IHdpbGwgdW5sb2NrIGFmdGVyIHRoZSBkdXJhdGlvbiBzZXQgaW4gdGhlIGBkdXJhdGlvbmAgb3B0aW9uIGhhcyBwYXNzZWQgYW5kIG5vIGZ1cnRoZXIgbG9naW4gYXR0ZW1wdHMgaGF2ZSBiZWVuIG1hZGUuPGJyPjxicj5WYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMGAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCd0aHJlc2hvbGQnKSxcbiAgfSxcbiAgdW5sb2NrT25QYXNzd29yZFJlc2V0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FDQ09VTlRfTE9DS09VVF9VTkxPQ0tfT05fUEFTU1dPUkRfUkVTRVQnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCAgaWYgdGhlIGFjY291bnQgc2hvdWxkIGJlIHVubG9ja2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBwYXNzd29yZCByZXNldC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC48YnI+UmVxdWlyZXMgb3B0aW9ucyBgZHVyYXRpb25gIGFuZCBgdGhyZXNob2xkYCB0byBiZSBzZXQuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5QYXNzd29yZFBvbGljeU9wdGlvbnMgPSB7XG4gIGRvTm90QWxsb3dVc2VybmFtZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfRE9fTk9UX0FMTE9XX1VTRVJOQU1FJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0byBgdHJ1ZWAgdG8gZGlzYWxsb3cgdGhlIHVzZXJuYW1lIGFzIHBhcnQgb2YgdGhlIHBhc3N3b3JkLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIG1heFBhc3N3b3JkQWdlOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9NQVhfUEFTU1dPUkRfQUdFJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggYSBwYXNzd29yZCBleHBpcmVzLiBMb2dpbiBhdHRlbXB0cyBmYWlsIGlmIHRoZSB1c2VyIGRvZXMgbm90IHJlc2V0IHRoZSBwYXNzd29yZCBiZWZvcmUgZXhwaXJhdGlvbi4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ21heFBhc3N3b3JkQWdlJyksXG4gIH0sXG4gIG1heFBhc3N3b3JkSGlzdG9yeToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfTUFYX1BBU1NXT1JEX0hJU1RPUlknLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBudW1iZXIgb2YgcHJldmlvdXMgcGFzc3dvcmQgdGhhdCB3aWxsIG5vdCBiZSBhbGxvd2VkIHRvIGJlIHNldCBhcyBuZXcgcGFzc3dvcmQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYDBgLCBubyBwcmV2aW91cyBwYXNzd29yZHMgd2lsbCBiZSBjb25zaWRlcmVkLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSA+PSBgMGAgYW5kIDw9IGAyMGAuPGJyPkRlZmF1bHQgaXMgYDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignbWF4UGFzc3dvcmRIaXN0b3J5JyksXG4gIH0sXG4gIHJlc2V0VG9rZW5SZXVzZUlmVmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX1JFU0VUX1RPS0VOX1JFVVNFX0lGX1ZBTElEJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0byBgdHJ1ZWAgaWYgYSBwYXNzd29yZCByZXNldCB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgcmVzZXRUb2tlblZhbGlkaXR5RHVyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX1JFU0VUX1RPS0VOX1ZBTElESVRZX0RVUkFUSU9OJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIHBhc3N3b3JkIHJlc2V0IHRva2VuIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHRva2VuIGV4cGlyZXMuIFRoZSB0b2tlbiBpcyB1c2VkIGluIHRoZSBsaW5rIHRoYXQgaXMgc2V0IGluIHRoZSBlbWFpbC4gQWZ0ZXIgdGhlIHRva2VuIGV4cGlyZXMsIHRoZSBsaW5rIGJlY29tZXMgaW52YWxpZCBhbmQgYSBuZXcgbGluayBoYXMgdG8gYmUgc2VudC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgdW5kZWZpbmVkYCwgdGhlbiB0aGUgdG9rZW4gbmV2ZXIgZXhwaXJlcy48YnI+PGJyPkZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLjxicj48YnI+RGVmYXVsdCBpcyBgdW5kZWZpbmVkYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ3Jlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uJyksXG4gIH0sXG4gIHZhbGlkYXRpb25FcnJvcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfVkFMSURBVElPTl9FUlJPUicsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIGVycm9yIG1lc3NhZ2UgdG8gYmUgc2VudC48YnI+PGJyPkRlZmF1bHQgaXMgYFBhc3N3b3JkIGRvZXMgbm90IG1lZXQgdGhlIFBhc3N3b3JkIFBvbGljeSByZXF1aXJlbWVudHMuYCcsXG4gIH0sXG4gIHZhbGlkYXRvckNhbGxiYWNrOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9WQUxJREFUT1JfQ0FMTEJBQ0snLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYSBwYXNzd29yZCB0byBiZSBhY2NlcHRlZC48YnI+PGJyPklmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yUGF0dGVybmAsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4nLFxuICB9LFxuICB2YWxpZGF0b3JQYXR0ZXJuOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9WQUxJREFUT1JfUEFUVEVSTicsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0aW9uIHBhdHRlcm4gYSBwYXNzd29yZCBtdXN0IG1hdGNoIHRvIGJlIGFjY2VwdGVkLjxicj48YnI+SWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JDYWxsYmFja2AsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4nLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkZpbGVVcGxvYWRPcHRpb25zID0ge1xuICBlbmFibGVGb3JBbm9ueW1vdXNVc2VyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX0VOQUJMRV9GT1JfQU5PTllNT1VTX1VTRVInLFxuICAgIGhlbHA6ICdJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbm9ueW1vdXMgdXNlcnMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRklMRV9VUExPQURfRU5BQkxFX0ZPUl9BVVRIRU5USUNBVEVEX1VTRVInLFxuICAgIGhlbHA6ICdJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgZW5hYmxlRm9yUHVibGljOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX0VOQUJMRV9GT1JfUFVCTElDJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW55b25lLCByZWdhcmRsZXNzIG9mIHVzZXIgYXV0aGVudGljYXRpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5EYXRhYmFzZU9wdGlvbnMgPSB7XG4gIGVuYWJsZVNjaGVtYUhvb2tzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RBVEFCQVNFX0VOQUJMRV9TQ0hFTUFfSE9PS1MnLFxuICAgIGhlbHA6XG4gICAgICAnRW5hYmxlcyBkYXRhYmFzZSByZWFsLXRpbWUgaG9va3MgdG8gdXBkYXRlIHNpbmdsZSBzY2hlbWEgY2FjaGUuIFNldCB0byBgdHJ1ZWAgaWYgdXNpbmcgbXVsdGlwbGUgUGFyc2UgU2VydmVycyBpbnN0YW5jZXMgY29ubmVjdGVkIHRvIHRoZSBzYW1lIGRhdGFiYXNlLiBGYWlsaW5nIHRvIGRvIHNvIHdpbGwgY2F1c2UgYSBzY2hlbWEgY2hhbmdlIHRvIG5vdCBwcm9wYWdhdGUgdG8gYWxsIGluc3RhbmNlcyBhbmQgcmUtc3luY2luZyB3aWxsIG9ubHkgaGFwcGVuIHdoZW4gdGhlIGluc3RhbmNlcyByZXN0YXJ0LiBUbyB1c2UgdGhpcyBmZWF0dXJlIHdpdGggTW9uZ29EQiwgYSByZXBsaWNhIHNldCBjbHVzdGVyIHdpdGggW2NoYW5nZSBzdHJlYW1dKGh0dHBzOi8vZG9jcy5tb25nb2RiLmNvbS9tYW51YWwvY2hhbmdlU3RyZWFtcy8jYXZhaWxhYmlsaXR5KSBzdXBwb3J0IGlzIHJlcXVpcmVkLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuQXV0aEFkYXB0ZXIgPSB7XG4gIGVuYWJsZWQ6IHtcbiAgICBoZWxwOiAnSXMgYHRydWVgIGlmIHRoZSBhdXRoIGFkYXB0ZXIgaXMgZW5hYmxlZCwgYGZhbHNlYCBvdGhlcndpc2UuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxufTtcbiJdfQ==
849
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL0RlZmluaXRpb25zLmpzIl0sIm5hbWVzIjpbInBhcnNlcnMiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsIlNjaGVtYU9wdGlvbnMiLCJhZnRlck1pZ3JhdGlvbiIsImVudiIsImhlbHAiLCJiZWZvcmVNaWdyYXRpb24iLCJkZWZpbml0aW9ucyIsInJlcXVpcmVkIiwiYWN0aW9uIiwib2JqZWN0UGFyc2VyIiwiZGVmYXVsdCIsImRlbGV0ZUV4dHJhRmllbGRzIiwiYm9vbGVhblBhcnNlciIsImxvY2tTY2hlbWFzIiwicmVjcmVhdGVNb2RpZmllZEZpZWxkcyIsInN0cmljdCIsIlBhcnNlU2VydmVyT3B0aW9ucyIsImFjY291bnRMb2Nrb3V0IiwiYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uIiwiYWxsb3dDdXN0b21PYmplY3RJZCIsImFsbG93SGVhZGVycyIsImFycmF5UGFyc2VyIiwiYWxsb3dPcmlnaW4iLCJhbmFseXRpY3NBZGFwdGVyIiwibW9kdWxlT3JPYmplY3RQYXJzZXIiLCJhcHBJZCIsImFwcE5hbWUiLCJhdXRoIiwiY2FjaGVBZGFwdGVyIiwiY2FjaGVNYXhTaXplIiwibnVtYmVyUGFyc2VyIiwiY2FjaGVUVEwiLCJjbGllbnRLZXkiLCJjbG91ZCIsImNsdXN0ZXIiLCJudW1iZXJPckJvb2xlYW5QYXJzZXIiLCJjb2xsZWN0aW9uUHJlZml4IiwiY3VzdG9tUGFnZXMiLCJkYXRhYmFzZUFkYXB0ZXIiLCJkYXRhYmFzZU9wdGlvbnMiLCJkYXRhYmFzZVVSSSIsImRlZmF1bHRMaW1pdCIsImRpcmVjdEFjY2VzcyIsImRvdE5ldEtleSIsImVtYWlsQWRhcHRlciIsImVtYWlsVmVyaWZ5VG9rZW5SZXVzZUlmVmFsaWQiLCJlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbiIsImVuYWJsZUFub255bW91c1VzZXJzIiwiZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlciIsImVuY3J5cHRpb25LZXkiLCJlbmZvcmNlUHJpdmF0ZVVzZXJzIiwiZXhwaXJlSW5hY3RpdmVTZXNzaW9ucyIsImZpbGVLZXkiLCJmaWxlc0FkYXB0ZXIiLCJmaWxlVXBsb2FkIiwiZ3JhcGhRTFBhdGgiLCJncmFwaFFMU2NoZW1hIiwiaG9zdCIsImlkZW1wb3RlbmN5T3B0aW9ucyIsImphdmFzY3JpcHRLZXkiLCJqc29uTG9ncyIsImxpdmVRdWVyeSIsImxpdmVRdWVyeVNlcnZlck9wdGlvbnMiLCJsb2dnZXJBZGFwdGVyIiwibG9nTGV2ZWwiLCJsb2dzRm9sZGVyIiwibWFzdGVyS2V5IiwibWFzdGVyS2V5SXBzIiwibWF4TGltaXQiLCJtYXhMb2dGaWxlcyIsIm1heFVwbG9hZFNpemUiLCJtaWRkbGV3YXJlIiwibW91bnRHcmFwaFFMIiwibW91bnRQYXRoIiwibW91bnRQbGF5Z3JvdW5kIiwib2JqZWN0SWRTaXplIiwicGFnZXMiLCJwYXNzd29yZFBvbGljeSIsInBsYXlncm91bmRQYXRoIiwicG9ydCIsInByZXNlcnZlRmlsZU5hbWUiLCJwcmV2ZW50TG9naW5XaXRoVW52ZXJpZmllZEVtYWlsIiwicHJvdGVjdGVkRmllbGRzIiwiX1VzZXIiLCJwdWJsaWNTZXJ2ZXJVUkwiLCJwdXNoIiwicmVhZE9ubHlNYXN0ZXJLZXkiLCJyZXF1ZXN0S2V5d29yZERlbnlsaXN0Iiwia2V5IiwidmFsdWUiLCJyZXN0QVBJS2V5IiwicmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldCIsInNjaGVkdWxlZFB1c2giLCJzY2hlbWEiLCJzZWN1cml0eSIsInNlcnZlckNsb3NlQ29tcGxldGUiLCJzZXJ2ZXJTdGFydENvbXBsZXRlIiwic2VydmVyVVJMIiwic2Vzc2lvbkxlbmd0aCIsInNpbGVudCIsInN0YXJ0TGl2ZVF1ZXJ5U2VydmVyIiwidHJ1c3RQcm94eSIsInVzZXJTZW5zaXRpdmVGaWVsZHMiLCJ2ZXJib3NlIiwidmVyaWZ5VXNlckVtYWlscyIsIndlYmhvb2tLZXkiLCJTZWN1cml0eU9wdGlvbnMiLCJjaGVja0dyb3VwcyIsImVuYWJsZUNoZWNrIiwiZW5hYmxlQ2hlY2tMb2ciLCJQYWdlc09wdGlvbnMiLCJjdXN0b21Sb3V0ZXMiLCJjdXN0b21VcmxzIiwiZW5hYmxlTG9jYWxpemF0aW9uIiwiZW5hYmxlUm91dGVyIiwiZm9yY2VSZWRpcmVjdCIsImxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlIiwibG9jYWxpemF0aW9uSnNvblBhdGgiLCJwYWdlc0VuZHBvaW50IiwicGFnZXNQYXRoIiwicGxhY2Vob2xkZXJzIiwiUGFnZXNSb3V0ZSIsImhhbmRsZXIiLCJtZXRob2QiLCJwYXRoIiwiUGFnZXNDdXN0b21VcmxzT3B0aW9ucyIsImVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQiLCJlbWFpbFZlcmlmaWNhdGlvbkxpbmtJbnZhbGlkIiwiZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbCIsImVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3MiLCJlbWFpbFZlcmlmaWNhdGlvblN1Y2Nlc3MiLCJwYXNzd29yZFJlc2V0IiwicGFzc3dvcmRSZXNldExpbmtJbnZhbGlkIiwicGFzc3dvcmRSZXNldFN1Y2Nlc3MiLCJDdXN0b21QYWdlc09wdGlvbnMiLCJjaG9vc2VQYXNzd29yZCIsImV4cGlyZWRWZXJpZmljYXRpb25MaW5rIiwiaW52YWxpZExpbmsiLCJpbnZhbGlkUGFzc3dvcmRSZXNldExpbmsiLCJpbnZhbGlkVmVyaWZpY2F0aW9uTGluayIsImxpbmtTZW5kRmFpbCIsImxpbmtTZW5kU3VjY2VzcyIsInBhcnNlRnJhbWVVUkwiLCJ2ZXJpZnlFbWFpbFN1Y2Nlc3MiLCJMaXZlUXVlcnlPcHRpb25zIiwiY2xhc3NOYW1lcyIsInB1YlN1YkFkYXB0ZXIiLCJyZWRpc09wdGlvbnMiLCJyZWRpc1VSTCIsIndzc0FkYXB0ZXIiLCJMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIiwiY2FjaGVUaW1lb3V0Iiwia2V5UGFpcnMiLCJ3ZWJzb2NrZXRUaW1lb3V0IiwiSWRlbXBvdGVuY3lPcHRpb25zIiwicGF0aHMiLCJ0dGwiLCJBY2NvdW50TG9ja291dE9wdGlvbnMiLCJkdXJhdGlvbiIsInRocmVzaG9sZCIsInVubG9ja09uUGFzc3dvcmRSZXNldCIsIlBhc3N3b3JkUG9saWN5T3B0aW9ucyIsImRvTm90QWxsb3dVc2VybmFtZSIsIm1heFBhc3N3b3JkQWdlIiwibWF4UGFzc3dvcmRIaXN0b3J5IiwicmVzZXRUb2tlblJldXNlSWZWYWxpZCIsInJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uIiwidmFsaWRhdGlvbkVycm9yIiwidmFsaWRhdG9yQ2FsbGJhY2siLCJ2YWxpZGF0b3JQYXR0ZXJuIiwiRmlsZVVwbG9hZE9wdGlvbnMiLCJlbmFibGVGb3JBbm9ueW1vdXNVc2VyIiwiZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIiLCJlbmFibGVGb3JQdWJsaWMiLCJEYXRhYmFzZU9wdGlvbnMiLCJlbmFibGVTY2hlbWFIb29rcyIsIkF1dGhBZGFwdGVyIiwiZW5hYmxlZCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsV0FBRCxDQUFyQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLENBQWVDLGFBQWYsR0FBK0I7QUFDN0JDLEVBQUFBLGNBQWMsRUFBRTtBQUNkQyxJQUFBQSxHQUFHLEVBQUUscUNBRFM7QUFFZEMsSUFBQUEsSUFBSSxFQUFFO0FBRlEsR0FEYTtBQUs3QkMsRUFBQUEsZUFBZSxFQUFFO0FBQ2ZGLElBQUFBLEdBQUcsRUFBRSxzQ0FEVTtBQUVmQyxJQUFBQSxJQUFJLEVBQUU7QUFGUyxHQUxZO0FBUzdCRSxFQUFBQSxXQUFXLEVBQUU7QUFDWEgsSUFBQUEsR0FBRyxFQUFFLGlDQURNO0FBRVhDLElBQUFBLElBQUksRUFDRixnR0FIUztBQUlYRyxJQUFBQSxRQUFRLEVBQUUsSUFKQztBQUtYQyxJQUFBQSxNQUFNLEVBQUVYLE9BQU8sQ0FBQ1ksWUFMTDtBQU1YQyxJQUFBQSxPQUFPLEVBQUU7QUFORSxHQVRnQjtBQWlCN0JDLEVBQUFBLGlCQUFpQixFQUFFO0FBQ2pCUixJ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RXRCQyxJQUFBQSxJQUFJLEVBQUUsK0RBRmdCO0FBR3RCSSxJQUFBQSxNQUFNLEVBQUVYLE9BQU8sQ0FBQ2UsYUFITTtBQUl0QkYsSUFBQUEsT0FBTyxFQUFFO0FBSmEsR0FEUztBQU9qQ2tLLEVBQUFBLDBCQUEwQixFQUFFO0FBQzFCekssSUFBQUEsR0FBRyxFQUFFLHdEQURxQjtBQUUxQkMsSUFBQUEsSUFBSSxFQUFFLG1FQUZvQjtBQUcxQkksSUFBQUEsTUFBTSxFQUFFWCxPQUFPLENBQUNlLGFBSFU7QUFJMUJGLElBQUFBLE9BQU8sRUFBRTtBQUppQixHQVBLO0FBYWpDbUssRUFBQUEsZUFBZSxFQUFFO0FBQ2YxSyxJQUFBQSxHQUFHLEVBQUUsNENBRFU7QUFFZkMsSUFBQUEsSUFBSSxFQUFFLHlGQUZTO0FBR2ZJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUhEO0FBSWZGLElBQUFBLE9BQU8sRUFBRTtBQUpNO0FBYmdCLENBQW5DO0FBb0JBWCxNQUFNLENBQUNDLE9BQVAsQ0FBZThLLGVBQWYsR0FBaUM7QUFDL0JDLEVBQUFBLGlCQUFpQixFQUFFO0FBQ2pCNUssSUFBQUEsR0FBRyxFQUFFLDJDQURZO0FBRWpCQyxJQUFBQSxJQUFJLEVBQ0Ysa2NBSGU7QUFJakJJLElBQUFBLE1BQU0sRUFBRVgsT0FBTyxDQUFDZSxhQUpDO0FBS2pCRixJQUFBQSxPQUFPLEVBQUU7QUFMUTtBQURZLENBQWpDO0FBU0FYLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlZ0wsV0FBZixHQUE2QjtBQUMzQkMsRUFBQUEsT0FBTyxFQUFFO0FBQ1A3SyxJQUFBQSxJQUFJLEVBQUUsOERBREM7QUFFUEksSUFBQUEsTUFBTSxFQUFFWCxPQUFPLENBQUNlLGFBRlQ7QUFHUEYsSUFBQUEsT0FBTyxFQUFFO0FBSEY7QUFEa0IsQ0FBN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuKioqKiBHRU5FUkFURUQgQ09ERSAqKioqXG5UaGlzIGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IHJlc291cmNlcy9idWlsZENvbmZpZ0RlZmluaXRpb25zLmpzXG5EbyBub3QgZWRpdCBtYW51YWxseSwgYnV0IHVwZGF0ZSBPcHRpb25zL2luZGV4LmpzXG4qL1xudmFyIHBhcnNlcnMgPSByZXF1aXJlKCcuL3BhcnNlcnMnKTtcblxubW9kdWxlLmV4cG9ydHMuU2NoZW1hT3B0aW9ucyA9IHtcbiAgYWZ0ZXJNaWdyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0FGVEVSX01JR1JBVElPTicsXG4gICAgaGVscDogJ0V4ZWN1dGUgYSBjYWxsYmFjayBhZnRlciBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLicsXG4gIH0sXG4gIGJlZm9yZU1pZ3JhdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfQkVGT1JFX01JR1JBVElPTicsXG4gICAgaGVscDogJ0V4ZWN1dGUgYSBjYWxsYmFjayBiZWZvcmUgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy4nLFxuICB9LFxuICBkZWZpbml0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfREVGSU5JVElPTlMnLFxuICAgIGhlbHA6XG4gICAgICAnUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYScsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiBbXSxcbiAgfSxcbiAgZGVsZXRlRXh0cmFGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0RFTEVURV9FWFRSQV9GSUVMRFMnLFxuICAgIGhlbHA6XG4gICAgICAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGRlbGV0ZSBhbnkgZmllbGRzIG5vdCBkZWZpbmVkIGluIGEgc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbG9ja1NjaGVtYXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX0xPQ0tfU0NIRU1BUycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHJlY3JlYXRlTW9kaWZpZWRGaWVsZHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BX1JFQ1JFQVRFX01PRElGSUVEX0ZJRUxEUycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgcmVjcmVhdGUgYW55IGZpZWxkcyB0aGF0IGFyZSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgY3VycmVudCBkYXRhYmFzZSBzY2hlbWEgYW5kIHRoZXNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHN0cmljdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TQ0hFTUFfU1RSSUNUJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFyc2VTZXJ2ZXJPcHRpb25zID0ge1xuICBhY2NvdW50TG9ja291dDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BQ0NPVU5UX0xPQ0tPVVQnLFxuICAgIGhlbHA6ICdUaGUgYWNjb3VudCBsb2Nrb3V0IHBvbGljeSBmb3IgZmFpbGVkIGxvZ2luIGF0dGVtcHRzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0NMSUVOVF9DTEFTU19DUkVBVElPTicsXG4gICAgaGVscDogJ0VuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byB0cnVlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBhbGxvd0N1c3RvbU9iamVjdElkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FMTE9XX0NVU1RPTV9PQkpFQ1RfSUQnLFxuICAgIGhlbHA6ICdFbmFibGUgKG9yIGRpc2FibGUpIGN1c3RvbSBvYmplY3RJZCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGFsbG93SGVhZGVyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTExPV19IRUFERVJTJyxcbiAgICBoZWxwOiAnQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICBhbGxvd09yaWdpbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTExPV19PUklHSU4nLFxuICAgIGhlbHA6ICdTZXRzIHRoZSBvcmlnaW4gdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luJyxcbiAgfSxcbiAgYW5hbHl0aWNzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BTkFMWVRJQ1NfQURBUFRFUicsXG4gICAgaGVscDogJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgYW5hbHl0aWNzJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGFwcElkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEJyxcbiAgICBoZWxwOiAnWW91ciBQYXJzZSBBcHBsaWNhdGlvbiBJRCcsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gIH0sXG4gIGFwcE5hbWU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQVBQX05BTUUnLFxuICAgIGhlbHA6ICdTZXRzIHRoZSBhcHAgbmFtZScsXG4gIH0sXG4gIGF1dGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQVVUSF9QUk9WSURFUlMnLFxuICAgIGhlbHA6XG4gICAgICAnQ29uZmlndXJhdGlvbiBmb3IgeW91ciBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI29hdXRoLWFuZC0zcmQtcGFydHktYXV0aGVudGljYXRpb24nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgfSxcbiAgY2FjaGVBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NBQ0hFX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGNhY2hlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGNhY2hlTWF4U2l6ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DQUNIRV9NQVhfU0laRScsXG4gICAgaGVscDogJ1NldHMgdGhlIG1heGltdW0gc2l6ZSBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSwgZGVmYXVsdHMgdG8gMTAwMDAnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ2NhY2hlTWF4U2l6ZScpLFxuICAgIGRlZmF1bHQ6IDEwMDAwLFxuICB9LFxuICBjYWNoZVRUTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DQUNIRV9UVEwnLFxuICAgIGhlbHA6ICdTZXRzIHRoZSBUVEwgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUgKGluIG1zKSwgZGVmYXVsdHMgdG8gNTAwMCAoNSBzZWNvbmRzKScsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignY2FjaGVUVEwnKSxcbiAgICBkZWZhdWx0OiA1MDAwLFxuICB9LFxuICBjbGllbnRLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0xJRU5UX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgaU9TLCBNYWNPUywgdHZPUyBjbGllbnRzJyxcbiAgfSxcbiAgY2xvdWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ0xPVUQnLFxuICAgIGhlbHA6ICdGdWxsIHBhdGggdG8geW91ciBjbG91ZCBjb2RlIG1haW4uanMnLFxuICB9LFxuICBjbHVzdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NMVVNURVInLFxuICAgIGhlbHA6ICdSdW4gd2l0aCBjbHVzdGVyLCBvcHRpb25hbGx5IHNldCB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBkZWZhdWx0IHRvIG9zLmNwdXMoKS5sZW5ndGgnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJPckJvb2xlYW5QYXJzZXIsXG4gIH0sXG4gIGNvbGxlY3Rpb25QcmVmaXg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ09MTEVDVElPTl9QUkVGSVgnLFxuICAgIGhlbHA6ICdBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3NlcycsXG4gICAgZGVmYXVsdDogJycsXG4gIH0sXG4gIGN1c3RvbVBhZ2VzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFUycsXG4gICAgaGVscDogJ2N1c3RvbSBwYWdlcyBmb3IgcGFzc3dvcmQgdmFsaWRhdGlvbiBhbmQgcmVzZXQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIGRhdGFiYXNlQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9EQVRBQkFTRV9BREFQVEVSJyxcbiAgICBoZWxwOlxuICAgICAgJ0FkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZGF0YWJhc2U7IGFueSBvcHRpb25zIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGRhdGFiYXNlIGNsaWVudC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgZGF0YWJhc2VPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0RBVEFCQVNFX09QVElPTlMnLFxuICAgIGhlbHA6ICdPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRhdGFiYXNlIGNsaWVudCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgZGF0YWJhc2VVUkk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfREFUQUJBU0VfVVJJJyxcbiAgICBoZWxwOiAnVGhlIGZ1bGwgVVJJIHRvIHlvdXIgZGF0YWJhc2UuIFN1cHBvcnRlZCBkYXRhYmFzZXMgYXJlIG1vbmdvZGIgb3IgcG9zdGdyZXMuJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICBkZWZhdWx0OiAnbW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNy9wYXJzZScsXG4gIH0sXG4gIGRlZmF1bHRMaW1pdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9ERUZBVUxUX0xJTUlUJyxcbiAgICBoZWxwOiAnRGVmYXVsdCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIGAxMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignZGVmYXVsdExpbWl0JyksXG4gICAgZGVmYXVsdDogMTAwLFxuICB9LFxuICBkaXJlY3RBY2Nlc3M6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRElSRUNUX0FDQ0VTUycsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIGlmIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBzaG91bGQgYmUgcm91dGVkIHRvIFBhcnNlIFNlcnZlciBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSB0aGUgSFRUUCBpbnRlcmZhY2UuIERlZmF1bHQgaXMgYGZhbHNlYC48YnI+PGJyPklmIHNldCB0byBgZmFsc2VgIHRoZW4gUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIGFyZSBleGVjdXRlZCBhcyBIVFRQIHJlcXVlc3RzIHNlbnQgdG8gUGFyc2UgU2VydmVyIHZpYSB0aGUgYHNlcnZlclVSTGAuIEZvciBleGFtcGxlLCBhIGBQYXJzZS5RdWVyeWAgaW4gQ2xvdWQgQ29kZSBpcyBjYWxsaW5nIFBhcnNlIFNlcnZlciB2aWEgYSBIVFRQIHJlcXVlc3QuIFRoZSBzZXJ2ZXIgaXMgZXNzZW50aWFsbHkgbWFraW5nIGEgSFRUUCByZXF1ZXN0IHRvIGl0c2VsZiwgdW5uZWNlc3NhcmlseSB1c2luZyBuZXR3b3JrIHJlc291cmNlcyBzdWNoIGFzIG5ldHdvcmsgcG9ydHMuPGJyPjxicj5cXHUyNkEwXFx1RkUwRiBJbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBydW4gYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBhbmQgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBjdXJyZW50IE5vZGUuanMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJvdXRlZCB2aWEgdGhlIGxvYWQgYmFsYW5jZXIgYW5kIGRpc3RyaWJ1dGVkIGFzIEhUVFAgcmVxdWVzdHMgYW1vbmcgYWxsIGluc3RhbmNlcyB2aWEgdGhlIGBzZXJ2ZXJVUkxgLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBkb3ROZXRLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRE9UX05FVF9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIFVuaXR5IGFuZCAuTmV0IFNESycsXG4gIH0sXG4gIGVtYWlsQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTUFJTF9BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIGVtYWlsIHNlbmRpbmcnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTUFJTF9WRVJJRllfVE9LRU5fUkVVU0VfSUZfVkFMSUQnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCBpZiBhIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW1haWxWZXJpZnlUb2tlblZhbGlkaXR5RHVyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU1BSUxfVkVSSUZZX1RPS0VOX1ZBTElESVRZX0RVUkFUSU9OJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbicpLFxuICB9LFxuICBlbmFibGVBbm9ueW1vdXNVc2Vyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSUycsXG4gICAgaGVscDogJ0VuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VOQUJMRV9FWFBSRVNTX0VSUk9SX0hBTkRMRVInLFxuICAgIGhlbHA6ICdFbmFibGVzIHRoZSBkZWZhdWx0IGV4cHJlc3MgZXJyb3IgaGFuZGxlciBmb3IgYWxsIGVycm9ycycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuY3J5cHRpb25LZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU5DUllQVElPTl9LRVknLFxuICAgIGhlbHA6ICdLZXkgZm9yIGVuY3J5cHRpbmcgeW91ciBmaWxlcycsXG4gIH0sXG4gIGVuZm9yY2VQcml2YXRlVXNlcnM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRU5GT1JDRV9QUklWQVRFX1VTRVJTJyxcbiAgICBoZWxwOiAnU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0VYUElSRV9JTkFDVElWRV9TRVNTSU9OUycsXG4gICAgaGVscDpcbiAgICAgICdTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgZmlsZUtleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgeW91ciBmaWxlcycsXG4gIH0sXG4gIGZpbGVzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFU19BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBmaWxlcyBzdWItc3lzdGVtJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIGZpbGVVcGxvYWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRklMRV9VUExPQURfT1BUSU9OUycsXG4gICAgaGVscDogJ09wdGlvbnMgZm9yIGZpbGUgdXBsb2FkcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgZ3JhcGhRTFBhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfR1JBUEhRTF9QQVRIJyxcbiAgICBoZWxwOiAnTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQsIGRlZmF1bHRzIHRvIC9ncmFwaHFsJyxcbiAgICBkZWZhdWx0OiAnL2dyYXBocWwnLFxuICB9LFxuICBncmFwaFFMU2NoZW1hOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0dSQVBIX1FMU0NIRU1BJyxcbiAgICBoZWxwOiAnRnVsbCBwYXRoIHRvIHlvdXIgR3JhcGhRTCBjdXN0b20gc2NoZW1hLmdyYXBocWwgZmlsZScsXG4gIH0sXG4gIGhvc3Q6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfSE9TVCcsXG4gICAgaGVscDogJ1RoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wJyxcbiAgICBkZWZhdWx0OiAnMC4wLjAuMCcsXG4gIH0sXG4gIGlkZW1wb3RlbmN5T3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfT1BUSU9OUycsXG4gICAgaGVscDpcbiAgICAgICdPcHRpb25zIGZvciByZXF1ZXN0IGlkZW1wb3RlbmN5IHRvIGRlZHVwbGljYXRlIGlkZW50aWNhbCByZXF1ZXN0cyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgamF2YXNjcmlwdEtleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9KQVZBU0NSSVBUX0tFWScsXG4gICAgaGVscDogJ0tleSBmb3IgdGhlIEphdmFzY3JpcHQgU0RLJyxcbiAgfSxcbiAganNvbkxvZ3M6IHtcbiAgICBlbnY6ICdKU09OX0xPR1MnLFxuICAgIGhlbHA6ICdMb2cgYXMgc3RydWN0dXJlZCBKU09OIG9iamVjdHMnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICBsaXZlUXVlcnk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTElWRV9RVUVSWScsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY29uZmlndXJhdGlvbiBvYmplY3RcIixcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xJVkVfUVVFUllfU0VSVkVSX09QVElPTlMnLFxuICAgIGhlbHA6ICdMaXZlIHF1ZXJ5IHNlcnZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgKHdpbGwgc3RhcnQgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIpJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICBsb2dnZXJBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xPR0dFUl9BREFQVEVSJyxcbiAgICBoZWxwOiAnQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBsb2dnaW5nIHN1Yi1zeXN0ZW0nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgbG9nTGV2ZWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTE9HX0xFVkVMJyxcbiAgICBoZWxwOiAnU2V0cyB0aGUgbGV2ZWwgZm9yIGxvZ3MnLFxuICB9LFxuICBsb2dzRm9sZGVyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0xPR1NfRk9MREVSJyxcbiAgICBoZWxwOiBcIkZvbGRlciBmb3IgdGhlIGxvZ3MgKGRlZmF1bHRzIHRvICcuL2xvZ3MnKTsgc2V0IHRvIG51bGwgdG8gZGlzYWJsZSBmaWxlIGJhc2VkIGxvZ2dpbmdcIixcbiAgICBkZWZhdWx0OiAnLi9sb2dzJyxcbiAgfSxcbiAgbWFzdGVyS2V5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BU1RFUl9LRVknLFxuICAgIGhlbHA6ICdZb3VyIFBhcnNlIE1hc3RlciBLZXknLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICB9LFxuICBtYXN0ZXJLZXlJcHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUFTVEVSX0tFWV9JUFMnLFxuICAgIGhlbHA6ICdSZXN0cmljdCBtYXN0ZXJLZXkgdG8gYmUgdXNlZCBieSBvbmx5IHRoZXNlIGlwcywgZGVmYXVsdHMgdG8gW10gKGFsbG93IGFsbCBpcHMpJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gICAgZGVmYXVsdDogW10sXG4gIH0sXG4gIG1heExpbWl0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01BWF9MSU1JVCcsXG4gICAgaGVscDogJ01heCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIHVubGltaXRlZCcsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignbWF4TGltaXQnKSxcbiAgfSxcbiAgbWF4TG9nRmlsZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUFYX0xPR19GSUxFUycsXG4gICAgaGVscDpcbiAgICAgIFwiTWF4aW11bSBudW1iZXIgb2YgbG9ncyB0byBrZWVwLiBJZiBub3Qgc2V0LCBubyBsb2dzIHdpbGwgYmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2YgZmlsZXMgb3IgbnVtYmVyIG9mIGRheXMuIElmIHVzaW5nIGRheXMsIGFkZCAnZCcgYXMgdGhlIHN1ZmZpeC4gKGRlZmF1bHQ6IG51bGwpXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgbWF4VXBsb2FkU2l6ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NQVhfVVBMT0FEX1NJWkUnLFxuICAgIGhlbHA6ICdNYXggZmlsZSBzaXplIGZvciB1cGxvYWRzLCBkZWZhdWx0cyB0byAyMG1iJyxcbiAgICBkZWZhdWx0OiAnMjBtYicsXG4gIH0sXG4gIG1pZGRsZXdhcmU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTUlERExFV0FSRScsXG4gICAgaGVscDogJ21pZGRsZXdhcmUgZm9yIGV4cHJlc3Mgc2VydmVyLCBjYW4gYmUgc3RyaW5nIG9yIGZ1bmN0aW9uJyxcbiAgfSxcbiAgbW91bnRHcmFwaFFMOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX01PVU5UX0dSQVBIUUwnLFxuICAgIGhlbHA6ICdNb3VudHMgdGhlIEdyYXBoUUwgZW5kcG9pbnQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBtb3VudFBhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTU9VTlRfUEFUSCcsXG4gICAgaGVscDogJ01vdW50IHBhdGggZm9yIHRoZSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIC9wYXJzZScsXG4gICAgZGVmYXVsdDogJy9wYXJzZScsXG4gIH0sXG4gIG1vdW50UGxheWdyb3VuZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9NT1VOVF9QTEFZR1JPVU5EJyxcbiAgICBoZWxwOiAnTW91bnRzIHRoZSBHcmFwaFFMIFBsYXlncm91bmQgLSBuZXZlciB1c2UgdGhpcyBvcHRpb24gaW4gcHJvZHVjdGlvbicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIG9iamVjdElkU2l6ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9PQkpFQ1RfSURfU0laRScsXG4gICAgaGVscDogXCJTZXRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBnZW5lcmF0ZWQgb2JqZWN0IGlkJ3MsIGRlZmF1bHQgMTBcIixcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdvYmplY3RJZFNpemUnKSxcbiAgICBkZWZhdWx0OiAxMCxcbiAgfSxcbiAgcGFnZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIG9wdGlvbnMgZm9yIHBhZ2VzIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbi4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICAgIGRlZmF1bHQ6IHt9LFxuICB9LFxuICBwYXNzd29yZFBvbGljeToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1knLFxuICAgIGhlbHA6ICdUaGUgcGFzc3dvcmQgcG9saWN5IGZvciBlbmZvcmNpbmcgcGFzc3dvcmQgcmVsYXRlZCBydWxlcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIHBsYXlncm91bmRQYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BMQVlHUk9VTkRfUEFUSCcsXG4gICAgaGVscDogJ01vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIFBsYXlncm91bmQsIGRlZmF1bHRzIHRvIC9wbGF5Z3JvdW5kJyxcbiAgICBkZWZhdWx0OiAnL3BsYXlncm91bmQnLFxuICB9LFxuICBwb3J0OiB7XG4gICAgZW52OiAnUE9SVCcsXG4gICAgaGVscDogJ1RoZSBwb3J0IHRvIHJ1biB0aGUgUGFyc2VTZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdwb3J0JyksXG4gICAgZGVmYXVsdDogMTMzNyxcbiAgfSxcbiAgcHJlc2VydmVGaWxlTmFtZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QUkVTRVJWRV9GSUxFX05BTUUnLFxuICAgIGhlbHA6ICdFbmFibGUgKG9yIGRpc2FibGUpIHRoZSBhZGRpdGlvbiBvZiBhIHVuaXF1ZSBoYXNoIHRvIHRoZSBmaWxlIG5hbWVzJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QUkVWRU5UX0xPR0lOX1dJVEhfVU5WRVJJRklFRF9FTUFJTCcsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgYSB1c2VyIGZyb20gbG9nZ2luZyBpbiBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHByb3RlY3RlZEZpZWxkczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QUk9URUNURURfRklFTERTJyxcbiAgICBoZWxwOiAnUHJvdGVjdGVkIGZpZWxkcyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIHdpdGggZXh0cmEgc2VjdXJpdHkgd2hlbiBmZXRjaGluZyBkZXRhaWxzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7XG4gICAgICBfVXNlcjoge1xuICAgICAgICAnKic6IFsnZW1haWwnXSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgcHVibGljU2VydmVyVVJMOiB7XG4gICAgZW52OiAnUEFSU0VfUFVCTElDX1NFUlZFUl9VUkwnLFxuICAgIGhlbHA6ICdQdWJsaWMgVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy4nLFxuICB9LFxuICBwdXNoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BVU0gnLFxuICAgIGhlbHA6XG4gICAgICAnQ29uZmlndXJhdGlvbiBmb3IgcHVzaCwgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jcHVzaC1ub3RpZmljYXRpb25zJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICB9LFxuICByZWFkT25seU1hc3RlcktleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9SRUFEX09OTFlfTUFTVEVSX0tFWScsXG4gICAgaGVscDogJ1JlYWQtb25seSBrZXksIHdoaWNoIGhhcyB0aGUgc2FtZSBjYXBhYmlsaXRpZXMgYXMgTWFzdGVyS2V5IHdpdGhvdXQgd3JpdGVzJyxcbiAgfSxcbiAgcmVxdWVzdEtleXdvcmREZW55bGlzdDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9SRVFVRVNUX0tFWVdPUkRfREVOWUxJU1QnLFxuICAgIGhlbHA6XG4gICAgICAnQW4gYXJyYXkgb2Yga2V5cyBhbmQgdmFsdWVzIHRoYXQgYXJlIHByb2hpYml0ZWQgaW4gZGF0YWJhc2UgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgdG8gcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG9ubHkgYSBrZXkgKGB7XCJrZXlcIjpcIi4uLlwifWApLCBvbmx5IGEgdmFsdWUgKGB7XCJ2YWx1ZVwiOlwiLi4uXCJ9YCkgb3IgYSBrZXktdmFsdWUgcGFpciAoYHtcImtleVwiOlwiLi4uXCIsXCJ2YWx1ZVwiOlwiLi4uXCJ9YCkuIFRoZSBzcGVjaWZpY2F0aW9uIGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0eXBlczogYGJvb2xlYW5gLCBgbnVtZXJpY2Agb3IgYHN0cmluZ2AsIHdoZXJlIGBzdHJpbmdgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSByZWdleCBub3RhdGlvbi4gUmVxdWVzdCBkYXRhIGlzIGRlZXAtc2Nhbm5lZCBmb3IgbWF0Y2hpbmcgZGVmaW5pdGlvbnMgdG8gZGV0ZWN0IGFsc28gYW55IG5lc3RlZCBvY2N1cnJlbmNlcy4gRGVmYXVsdHMgYXJlIHBhdHRlcm5zIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIG1hbGljaW91cyByZXF1ZXN0cy4gU2V0dGluZyB0aGlzIG9wdGlvbiB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhdHRlcm5zLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICAgIGRlZmF1bHQ6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnX2Jzb250eXBlJyxcbiAgICAgICAgdmFsdWU6ICdDb2RlJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2NvbnN0cnVjdG9yJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ19fcHJvdG9fXycsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHJlc3RBUElLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUkVTVF9BUElfS0VZJyxcbiAgICBoZWxwOiAnS2V5IGZvciBSRVNUIGNhbGxzJyxcbiAgfSxcbiAgcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9SRVZPS0VfU0VTU0lPTl9PTl9QQVNTV09SRF9SRVNFVCcsXG4gICAgaGVscDpcbiAgICAgIFwiV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cIixcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBzY2hlZHVsZWRQdXNoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NDSEVEVUxFRF9QVVNIJyxcbiAgICBoZWxwOiAnQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBzY2hlbWE6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0NIRU1BJyxcbiAgICBoZWxwOiAnRGVmaW5lZCBzY2hlbWEnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIHNlY3VyaXR5OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1NFQ1VSSVRZJyxcbiAgICBoZWxwOiAnVGhlIHNlY3VyaXR5IG9wdGlvbnMgdG8gaWRlbnRpZnkgYW5kIHJlcG9ydCB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgICBkZWZhdWx0OiB7fSxcbiAgfSxcbiAgc2VydmVyQ2xvc2VDb21wbGV0ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRVJWRVJfQ0xPU0VfQ09NUExFVEUnLFxuICAgIGhlbHA6ICdDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgY2xvc2VkJyxcbiAgfSxcbiAgc2VydmVyU3RhcnRDb21wbGV0ZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRVJWRVJfU1RBUlRfQ09NUExFVEUnLFxuICAgIGhlbHA6ICdDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgc3RhcnRlZCcsXG4gIH0sXG4gIHNlcnZlclVSTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9VUkwnLFxuICAgIGhlbHA6ICdVUkwgdG8geW91ciBwYXJzZSBzZXJ2ZXIgd2l0aCBodHRwOi8vIG9yIGh0dHBzOi8vLicsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gIH0sXG4gIHNlc3Npb25MZW5ndGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VTU0lPTl9MRU5HVEgnLFxuICAgIGhlbHA6ICdTZXNzaW9uIGR1cmF0aW9uLCBpbiBzZWNvbmRzLCBkZWZhdWx0cyB0byAxIHllYXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ3Nlc3Npb25MZW5ndGgnKSxcbiAgICBkZWZhdWx0OiAzMTUzNjAwMCxcbiAgfSxcbiAgc2lsZW50OiB7XG4gICAgZW52OiAnU0lMRU5UJyxcbiAgICBoZWxwOiAnRGlzYWJsZXMgY29uc29sZSBvdXRwdXQnLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICB9LFxuICBzdGFydExpdmVRdWVyeVNlcnZlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TVEFSVF9MSVZFX1FVRVJZX1NFUlZFUicsXG4gICAgaGVscDogJ1N0YXJ0cyB0aGUgbGl2ZVF1ZXJ5IHNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gIH0sXG4gIHRydXN0UHJveHk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfVFJVU1RfUFJPWFknLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHRydXN0IHByb3h5IHNldHRpbmdzLiBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2V0dXAgb2YgdGhlIHJldmVyc2UgcHJveHksIHNpbmNlIHRoaXMgc2V0dGluZyB3aWxsIHRydXN0IHZhbHVlcyBwcm92aWRlZCBpbiB0aGUgUGFyc2UgU2VydmVyIEFQSSByZXF1ZXN0LiBTZWUgdGhlIDxhIGhyZWY9XCJodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vZ3VpZGUvYmVoaW5kLXByb3hpZXMuaHRtbFwiPmV4cHJlc3MgdHJ1c3QgcHJveHkgc2V0dGluZ3M8L2E+IGRvY3VtZW50YXRpb24uIERlZmF1bHRzIHRvIGBmYWxzZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICAgIGRlZmF1bHQ6IFtdLFxuICB9LFxuICB1c2VyU2Vuc2l0aXZlRmllbGRzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1VTRVJfU0VOU0lUSVZFX0ZJRUxEUycsXG4gICAgaGVscDpcbiAgICAgICdQZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbiBmaWVsZHMgaW4gdGhlIHVzZXIgdGFibGUgdGhlIHNob3VsZCBiZSByZW1vdmVkIGZvciBub24tYXV0aG9yaXplZCB1c2Vycy4gRGVwcmVjYXRlZCBAc2VlIHByb3RlY3RlZEZpZWxkcycsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICB2ZXJib3NlOiB7XG4gICAgZW52OiAnVkVSQk9TRScsXG4gICAgaGVscDogJ1NldCB0aGUgbG9nZ2luZyB0byB2ZXJib3NlJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgfSxcbiAgdmVyaWZ5VXNlckVtYWlsczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9WRVJJRllfVVNFUl9FTUFJTFMnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRvIGB0cnVlYCB0byByZXF1aXJlIHVzZXJzIHRvIHZlcmlmeSB0aGVpciBlbWFpbCBhZGRyZXNzIHRvIGNvbXBsZXRlIHRoZSBzaWduLXVwIHByb2Nlc3MuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgd2ViaG9va0tleToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9XRUJIT09LX0tFWScsXG4gICAgaGVscDogJ0tleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscycsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuU2VjdXJpdHlPcHRpb25zID0ge1xuICBjaGVja0dyb3Vwczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWV9DSEVDS19HUk9VUFMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHNlY3VyaXR5IGNoZWNrIGdyb3VwcyB0byBydW4uIFRoaXMgYWxsb3dzIHRvIGFkZCBjdXN0b20gc2VjdXJpdHkgY2hlY2tzIG9yIG92ZXJyaWRlIGV4aXN0aW5nIG9uZXMuIERlZmF1bHQgYXJlIHRoZSBncm91cHMgZGVmaW5lZCBpbiBgQ2hlY2tHcm91cHMuanNgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICB9LFxuICBlbmFibGVDaGVjazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9TRUNVUklUWV9FTkFCTEVfQ0hFQ0snLFxuICAgIGhlbHA6ICdJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgY2hlY2sgZm9yIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZW5hYmxlQ2hlY2tMb2c6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfU0VDVVJJVFlfRU5BQkxFX0NIRUNLX0xPRycsXG4gICAgaGVscDpcbiAgICAgICdJcyB0cnVlIGlmIHRoZSBzZWN1cml0eSBjaGVjayByZXBvcnQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9ncy4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IHRvIG5vdCBleHBvc2Ugd2VhayBzZWN1cml0eSBzZXR0aW5ncyBpbiBsb2dzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFnZXNPcHRpb25zID0ge1xuICBjdXN0b21Sb3V0ZXM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1JPVVRFUycsXG4gICAgaGVscDogJ1RoZSBjdXN0b20gcm91dGVzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmFycmF5UGFyc2VyLFxuICAgIGRlZmF1bHQ6IFtdLFxuICB9LFxuICBjdXN0b21VcmxzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxTJyxcbiAgICBoZWxwOiAnVGhlIFVSTHMgdG8gdGhlIGN1c3RvbSBwYWdlcy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gICAgZGVmYXVsdDoge30sXG4gIH0sXG4gIGVuYWJsZUxvY2FsaXphdGlvbjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19FTkFCTEVfTE9DQUxJWkFUSU9OJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBwYWdlcyBzaG91bGQgYmUgbG9jYWxpemVkOyB0aGlzIGhhcyBubyBlZmZlY3Qgb24gY3VzdG9tIHBhZ2UgcmVkaXJlY3RzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuYWJsZVJvdXRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19FTkFCTEVfUk9VVEVSJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgdGhlIHBhZ2VzIHJvdXRlciBzaG91bGQgYmUgZW5hYmxlZDsgdGhpcyBpcyByZXF1aXJlZCBmb3IgYW55IG9mIHRoZSBwYWdlcyBvcHRpb25zIHRvIHRha2UgZWZmZWN0LiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBmb3JjZVJlZGlyZWN0OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0ZPUkNFX1JFRElSRUNUJyxcbiAgICBoZWxwOlxuICAgICAgJ0lzIHRydWUgaWYgcmVzcG9uc2VzIHNob3VsZCBhbHdheXMgYmUgcmVkaXJlY3RzIGFuZCBuZXZlciBjb250ZW50LCBmYWxzZSBpZiB0aGUgcmVzcG9uc2UgdHlwZSBzaG91bGQgZGVwZW5kIG9uIHRoZSByZXF1ZXN0IHR5cGUgKEdFVCByZXF1ZXN0IC0+IGNvbnRlbnQgcmVzcG9uc2U7IFBPU1QgcmVxdWVzdCAtPiByZWRpcmVjdCByZXNwb25zZSkuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYm9vbGVhblBhcnNlcixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgbG9jYWxpemF0aW9uRmFsbGJhY2tMb2NhbGU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfTE9DQUxJWkFUSU9OX0ZBTExCQUNLX0xPQ0FMRScsXG4gICAgaGVscDpcbiAgICAgICdUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS4nLFxuICAgIGRlZmF1bHQ6ICdlbicsXG4gIH0sXG4gIGxvY2FsaXphdGlvbkpzb25QYXRoOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0xPQ0FMSVpBVElPTl9KU09OX1BBVEgnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZSBmb3IgbG9jYWxpemF0aW9uOyB0aGUgdHJhbnNsYXRpb25zIHdpbGwgYmUgdXNlZCB0byBmaWxsIHRlbXBsYXRlIHBsYWNlaG9sZGVycyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS4nLFxuICB9LFxuICBwYWdlc0VuZHBvaW50OiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1BBR0VTX0VORFBPSU5UJyxcbiAgICBoZWxwOiBcIlRoZSBBUEkgZW5kcG9pbnQgZm9yIHRoZSBwYWdlcy4gRGVmYXVsdCBpcyAnYXBwcycuXCIsXG4gICAgZGVmYXVsdDogJ2FwcHMnLFxuICB9LFxuICBwYWdlc1BhdGg6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUEFHRVNfUEFUSCcsXG4gICAgaGVscDpcbiAgICAgIFwiVGhlIHBhdGggdG8gdGhlIHBhZ2VzIGRpcmVjdG9yeTsgdGhpcyBhbHNvIGRlZmluZXMgd2hlcmUgdGhlIHN0YXRpYyBlbmRwb2ludCAnL2FwcHMnIHBvaW50cyB0by4gRGVmYXVsdCBpcyB0aGUgJy4vcHVibGljLycgZGlyZWN0b3J5LlwiLFxuICAgIGRlZmF1bHQ6ICcuL3B1YmxpYycsXG4gIH0sXG4gIHBsYWNlaG9sZGVyczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19QTEFDRUhPTERFUlMnLFxuICAgIGhlbHA6XG4gICAgICAnVGhlIHBsYWNlaG9sZGVyIGtleXMgYW5kIHZhbHVlcyB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBwYWdlczsgdGhpcyBjYW4gYmUgYSBzaW1wbGUgb2JqZWN0IG9yIGEgY2FsbGJhY2sgZnVuY3Rpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMub2JqZWN0UGFyc2VyLFxuICAgIGRlZmF1bHQ6IHt9LFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLlBhZ2VzUm91dGUgPSB7XG4gIGhhbmRsZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfUk9VVEVfSEFORExFUicsXG4gICAgaGVscDogJ1RoZSByb3V0ZSBoYW5kbGVyIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24uJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgbWV0aG9kOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX1JPVVRFX01FVEhPRCcsXG4gICAgaGVscDogXCJUaGUgcm91dGUgbWV0aG9kLCBlLmcuICdHRVQnIG9yICdQT1NUJy5cIixcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbiAgcGF0aDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19ST1VURV9QQVRIJyxcbiAgICBoZWxwOiAnVGhlIHJvdXRlIHBhdGguJyxcbiAgICByZXF1aXJlZDogdHJ1ZSxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5QYWdlc0N1c3RvbVVybHNPcHRpb25zID0ge1xuICBlbWFpbFZlcmlmaWNhdGlvbkxpbmtFeHBpcmVkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfRU1BSUxfVkVSSUZJQ0FUSU9OX0xJTktfRVhQSVJFRCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBleHBpcmVkLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0ludmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9FTUFJTF9WRVJJRklDQVRJT05fTElOS19JTlZBTElEJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGludmFsaWQuJyxcbiAgfSxcbiAgZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9TRU5EX0ZBSUwnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgc2VuZCBmYWlsLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3M6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9FTUFJTF9WRVJJRklDQVRJT05fU0VORF9TVUNDRVNTJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLicsXG4gIH0sXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQUdFU19DVVNUT01fVVJMX0VNQUlMX1ZFUklGSUNBVElPTl9TVUNDRVNTJyxcbiAgICBoZWxwOiAnVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBzdWNjZXNzLicsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9QQVNTV09SRF9SRVNFVCcsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldC4nLFxuICB9LFxuICBwYXNzd29yZFJlc2V0TGlua0ludmFsaWQ6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFHRVNfQ1VTVE9NX1VSTF9QQVNTV09SRF9SRVNFVF9MSU5LX0lOVkFMSUQnLFxuICAgIGhlbHA6ICdUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gbGluayBpbnZhbGlkLicsXG4gIH0sXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBR0VTX0NVU1RPTV9VUkxfUEFTU1dPUkRfUkVTRVRfU1VDQ0VTUycsXG4gICAgaGVscDogJ1RoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBzdWNjZXNzLicsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuQ3VzdG9tUGFnZXNPcHRpb25zID0ge1xuICBjaG9vc2VQYXNzd29yZDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfQ0hPT1NFX1BBU1NXT1JEJyxcbiAgICBoZWxwOiAnY2hvb3NlIHBhc3N3b3JkIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGV4cGlyZWRWZXJpZmljYXRpb25MaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19FWFBJUkVEX1ZFUklGSUNBVElPTl9MSU5LJyxcbiAgICBoZWxwOiAnZXhwaXJlZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGgnLFxuICB9LFxuICBpbnZhbGlkTGluazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfSU5WQUxJRF9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGludmFsaWRQYXNzd29yZFJlc2V0TGluazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfSU5WQUxJRF9QQVNTV09SRF9SRVNFVF9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCBwYXNzd29yZCByZXNldCBsaW5rIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGludmFsaWRWZXJpZmljYXRpb25MaW5rOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19JTlZBTElEX1ZFUklGSUNBVElPTl9MSU5LJyxcbiAgICBoZWxwOiAnaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGgnLFxuICB9LFxuICBsaW5rU2VuZEZhaWw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQ1VTVE9NX1BBR0VTX0xJTktfU0VORF9GQUlMJyxcbiAgICBoZWxwOiAndmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aCcsXG4gIH0sXG4gIGxpbmtTZW5kU3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfTElOS19TRU5EX1NVQ0NFU1MnLFxuICAgIGhlbHA6ICd2ZXJpZmljYXRpb24gbGluayBzZW5kIHN1Y2Nlc3MgcGFnZSBwYXRoJyxcbiAgfSxcbiAgcGFyc2VGcmFtZVVSTDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfUEFSU0VfRlJBTUVfVVJMJyxcbiAgICBoZWxwOiAnZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXMnLFxuICB9LFxuICBwYXNzd29yZFJlc2V0U3VjY2Vzczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9DVVNUT01fUEFHRVNfUEFTU1dPUkRfUkVTRVRfU1VDQ0VTUycsXG4gICAgaGVscDogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3MgcGFnZSBwYXRoJyxcbiAgfSxcbiAgdmVyaWZ5RW1haWxTdWNjZXNzOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0NVU1RPTV9QQUdFU19WRVJJRllfRU1BSUxfU1VDQ0VTUycsXG4gICAgaGVscDogJ3ZlcmlmeSBlbWFpbCBzdWNjZXNzIHBhZ2UgcGF0aCcsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuTGl2ZVF1ZXJ5T3B0aW9ucyA9IHtcbiAgY2xhc3NOYW1lczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfQ0xBU1NOQU1FUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY2xhc3NOYW1lc1wiLFxuICAgIGFjdGlvbjogcGFyc2Vycy5hcnJheVBhcnNlcixcbiAgfSxcbiAgcHViU3ViQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfUFVCX1NVQl9BREFQVEVSJyxcbiAgICBoZWxwOiAnTGl2ZVF1ZXJ5IHB1YnN1YiBhZGFwdGVyJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubW9kdWxlT3JPYmplY3RQYXJzZXIsXG4gIH0sXG4gIHJlZGlzT3B0aW9uczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfUkVESVNfT1BUSU9OUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfTElWRVFVRVJZX1JFRElTX1VSTCcsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkxcIixcbiAgfSxcbiAgd3NzQWRhcHRlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9MSVZFUVVFUllfV1NTX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkxpdmVRdWVyeVNlcnZlck9wdGlvbnMgPSB7XG4gIGFwcElkOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfQVBQX0lEJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgYXBwSWQgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBhcHBJZC4nLFxuICB9LFxuICBjYWNoZVRpbWVvdXQ6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9DQUNIRV9USU1FT1VUJyxcbiAgICBoZWxwOlxuICAgICAgXCJOdW1iZXIgaW4gbWlsbGlzZWNvbmRzLiBXaGVuIGNsaWVudHMgcHJvdmlkZSB0aGUgc2Vzc2lvblRva2VuIHRvIHRoZSBMaXZlUXVlcnkgc2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byBmZXRjaCBpdHMgUGFyc2VVc2VyJ3Mgb2JqZWN0SWQgZnJvbSBwYXJzZSBzZXJ2ZXIgYW5kIHN0b3JlIGl0IGluIHRoZSBjYWNoZS4gVGhlIHZhbHVlIGRlZmluZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWNoZS4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscywgZGVmYXVsdHMgdG8gNSAqIDEwMDAgbXMgKDUgc2Vjb25kcykuXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignY2FjaGVUaW1lb3V0JyksXG4gIH0sXG4gIGtleVBhaXJzOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfS0VZX1BBSVJTJyxcbiAgICBoZWxwOlxuICAgICAgJ0EgSlNPTiBvYmplY3QgdGhhdCBzZXJ2ZXMgYXMgYSB3aGl0ZWxpc3Qgb2Yga2V5cy4gSXQgaXMgdXNlZCBmb3IgdmFsaWRhdGluZyBjbGllbnRzIHdoZW4gdGhleSB0cnkgdG8gY29ubmVjdCB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5vYmplY3RQYXJzZXIsXG4gIH0sXG4gIGxvZ0xldmVsOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfTE9HX0xFVkVMJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIGRlZmluZXMgdGhlIGxvZyBsZXZlbCBvZiB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gV2Ugc3VwcG9ydCBWRVJCT1NFLCBJTkZPLCBFUlJPUiwgTk9ORSwgZGVmYXVsdHMgdG8gSU5GTy4nLFxuICB9LFxuICBtYXN0ZXJLZXk6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9NQVNURVJfS0VZJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgbWFzdGVyS2V5IGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgbWFzdGVyS2V5LicsXG4gIH0sXG4gIHBvcnQ6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9QT1JUJyxcbiAgICBoZWxwOiAnVGhlIHBvcnQgdG8gcnVuIHRoZSBMaXZlUXVlcnkgc2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigncG9ydCcpLFxuICAgIGRlZmF1bHQ6IDEzMzcsXG4gIH0sXG4gIHB1YlN1YkFkYXB0ZXI6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9QVUJfU1VCX0FEQVBURVInLFxuICAgIGhlbHA6ICdMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXInLFxuICAgIGFjdGlvbjogcGFyc2Vycy5tb2R1bGVPck9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNPcHRpb25zOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfUkVESVNfT1BUSU9OUycsXG4gICAgaGVscDogXCJwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXCIsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm9iamVjdFBhcnNlcixcbiAgfSxcbiAgcmVkaXNVUkw6IHtcbiAgICBlbnY6ICdQQVJTRV9MSVZFX1FVRVJZX1NFUlZFUl9SRURJU19VUkwnLFxuICAgIGhlbHA6IFwicGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMXCIsXG4gIH0sXG4gIHNlcnZlclVSTDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1NFUlZFUl9VUkwnLFxuICAgIGhlbHA6XG4gICAgICAnVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBzZXJ2ZXJVUkwgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBzZXJ2ZXJVUkwuJyxcbiAgfSxcbiAgd2Vic29ja2V0VGltZW91dDoge1xuICAgIGVudjogJ1BBUlNFX0xJVkVfUVVFUllfU0VSVkVSX1dFQlNPQ0tFVF9USU1FT1VUJyxcbiAgICBoZWxwOlxuICAgICAgJ051bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignd2Vic29ja2V0VGltZW91dCcpLFxuICB9LFxuICB3c3NBZGFwdGVyOiB7XG4gICAgZW52OiAnUEFSU0VfTElWRV9RVUVSWV9TRVJWRVJfV1NTX0FEQVBURVInLFxuICAgIGhlbHA6ICdBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIFdlYlNvY2tldFNlcnZlcicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm1vZHVsZU9yT2JqZWN0UGFyc2VyLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLklkZW1wb3RlbmN5T3B0aW9ucyA9IHtcbiAgcGF0aHM6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfRVhQRVJJTUVOVEFMX0lERU1QT1RFTkNZX1BBVEhTJyxcbiAgICBoZWxwOlxuICAgICAgJ0FuIGFycmF5IG9mIHBhdGhzIGZvciB3aGljaCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZC4gVGhlIG1vdW50IHBhdGggbXVzdCBub3QgYmUgaW5jbHVkZWQsIGZvciBleGFtcGxlIGluc3RlYWQgb2YgYC9wYXJzZS9mdW5jdGlvbnMvbXlGdW5jdGlvbmAgc3BlY2lmaXkgYGZ1bmN0aW9ucy9teUZ1bmN0aW9uYC4gVGhlIGVudHJpZXMgYXJlIGludGVycHJldGVkIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbiwgZm9yIGV4YW1wbGUgYGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgZnVuY3Rpb25zLCBgam9icy8uKmAgbWF0Y2hlcyBhbGwgam9icywgYGNsYXNzZXMvLipgIG1hdGNoZXMgYWxsIGNsYXNzZXMsIGAuKmAgbWF0Y2hlcyBhbGwgcGF0aHMuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMuYXJyYXlQYXJzZXIsXG4gICAgZGVmYXVsdDogW10sXG4gIH0sXG4gIHR0bDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9FWFBFUklNRU5UQUxfSURFTVBPVEVOQ1lfVFRMJyxcbiAgICBoZWxwOlxuICAgICAgJ1RoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgcmVxdWVzdCByZWNvcmQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byAzMDBzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigndHRsJyksXG4gICAgZGVmYXVsdDogMzAwLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkFjY291bnRMb2Nrb3V0T3B0aW9ucyA9IHtcbiAgZHVyYXRpb246IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfQUNDT1VOVF9MT0NLT1VUX0RVUkFUSU9OJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgZHVyYXRpb24gaW4gbWludXRlcyB0aGF0IGEgbG9ja2VkLW91dCBhY2NvdW50IHJlbWFpbnMgbG9ja2VkIG91dCBiZWZvcmUgYXV0b21hdGljYWxseSBiZWNvbWluZyB1bmxvY2tlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcignZHVyYXRpb24nKSxcbiAgfSxcbiAgdGhyZXNob2xkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0FDQ09VTlRfTE9DS09VVF9USFJFU0hPTEQnLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBudW1iZXIgb2YgZmFpbGVkIHNpZ24taW4gYXR0ZW1wdHMgdGhhdCB3aWxsIGNhdXNlIGEgdXNlciBhY2NvdW50IHRvIGJlIGxvY2tlZC4gSWYgdGhlIGFjY291bnQgaXMgbG9ja2VkLiBUaGUgYWNjb3VudCB3aWxsIHVubG9jayBhZnRlciB0aGUgZHVyYXRpb24gc2V0IGluIHRoZSBgZHVyYXRpb25gIG9wdGlvbiBoYXMgcGFzc2VkIGFuZCBubyBmdXJ0aGVyIGxvZ2luIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDBgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLm51bWJlclBhcnNlcigndGhyZXNob2xkJyksXG4gIH0sXG4gIHVubG9ja09uUGFzc3dvcmRSZXNldDoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9BQ0NPVU5UX0xPQ0tPVVRfVU5MT0NLX09OX1BBU1NXT1JEX1JFU0VUJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0byBgdHJ1ZWAgIGlmIHRoZSBhY2NvdW50IHNob3VsZCBiZSB1bmxvY2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgcGFzc3dvcmQgcmVzZXQuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbnMgYGR1cmF0aW9uYCBhbmQgYHRocmVzaG9sZGAgdG8gYmUgc2V0LicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuUGFzc3dvcmRQb2xpY3lPcHRpb25zID0ge1xuICBkb05vdEFsbG93VXNlcm5hbWU6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX0RPX05PVF9BTExPV19VU0VSTkFNRScsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIHRvIGRpc2FsbG93IHRoZSB1c2VybmFtZSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBtYXhQYXNzd29yZEFnZToge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfTUFYX1BBU1NXT1JEX0FHRScsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdtYXhQYXNzd29yZEFnZScpLFxuICB9LFxuICBtYXhQYXNzd29yZEhpc3Rvcnk6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX01BWF9QQVNTV09SRF9ISVNUT1JZJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLjxicj5EZWZhdWx0IGlzIGAwYC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5udW1iZXJQYXJzZXIoJ21heFBhc3N3b3JkSGlzdG9yeScpLFxuICB9LFxuICByZXNldFRva2VuUmV1c2VJZlZhbGlkOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9SRVNFVF9UT0tFTl9SRVVTRV9JRl9WQUxJRCcsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX1BBU1NXT1JEX1BPTElDWV9SRVNFVF9UT0tFTl9WQUxJRElUWV9EVVJBVElPTicsXG4gICAgaGVscDpcbiAgICAgICdTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBwYXNzd29yZCByZXNldCB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuJyxcbiAgICBhY3Rpb246IHBhcnNlcnMubnVtYmVyUGFyc2VyKCdyZXNldFRva2VuVmFsaWRpdHlEdXJhdGlvbicpLFxuICB9LFxuICB2YWxpZGF0aW9uRXJyb3I6IHtcbiAgICBlbnY6ICdQQVJTRV9TRVJWRVJfUEFTU1dPUkRfUE9MSUNZX1ZBTElEQVRJT05fRVJST1InLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuPGJyPjxicj5EZWZhdWx0IGlzIGBQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHRoZSBQYXNzd29yZCBQb2xpY3kgcmVxdWlyZW1lbnRzLmAnLFxuICB9LFxuICB2YWxpZGF0b3JDYWxsYmFjazoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfVkFMSURBVE9SX0NBTExCQUNLJyxcbiAgICBoZWxwOlxuICAgICAgJ1NldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuPGJyPjxicj5JZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuJyxcbiAgfSxcbiAgdmFsaWRhdG9yUGF0dGVybjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9QQVNTV09SRF9QT0xJQ1lfVkFMSURBVE9SX1BBVFRFUk4nLFxuICAgIGhlbHA6XG4gICAgICAnU2V0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGlvbiBwYXR0ZXJuIGEgcGFzc3dvcmQgbXVzdCBtYXRjaCB0byBiZSBhY2NlcHRlZC48YnI+PGJyPklmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yQ2FsbGJhY2tgLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuJyxcbiAgfSxcbn07XG5tb2R1bGUuZXhwb3J0cy5GaWxlVXBsb2FkT3B0aW9ucyA9IHtcbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9FTkFCTEVfRk9SX0FOT05ZTU9VU19VU0VSJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiB7XG4gICAgZW52OiAnUEFSU0VfU0VSVkVSX0ZJTEVfVVBMT0FEX0VOQUJMRV9GT1JfQVVUSEVOVElDQVRFRF9VU0VSJyxcbiAgICBoZWxwOiAnSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIGVuYWJsZUZvclB1YmxpYzoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9FTkFCTEVfRk9SX1BVQkxJQycsXG4gICAgaGVscDogJ0lzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xubW9kdWxlLmV4cG9ydHMuRGF0YWJhc2VPcHRpb25zID0ge1xuICBlbmFibGVTY2hlbWFIb29rczoge1xuICAgIGVudjogJ1BBUlNFX1NFUlZFUl9EQVRBQkFTRV9FTkFCTEVfU0NIRU1BX0hPT0tTJyxcbiAgICBoZWxwOlxuICAgICAgJ0VuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC4nLFxuICAgIGFjdGlvbjogcGFyc2Vycy5ib29sZWFuUGFyc2VyLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxufTtcbm1vZHVsZS5leHBvcnRzLkF1dGhBZGFwdGVyID0ge1xuICBlbmFibGVkOiB7XG4gICAgaGVscDogJ0lzIGB0cnVlYCBpZiB0aGUgYXV0aCBhZGFwdGVyIGlzIGVuYWJsZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLicsXG4gICAgYWN0aW9uOiBwYXJzZXJzLmJvb2xlYW5QYXJzZXIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbn07XG4iXX0=
@@ -88,6 +88,7 @@
88
88
  * @property {Number} sessionLength Session duration, in seconds, defaults to 1 year
89
89
  * @property {Boolean} silent Disables console output
90
90
  * @property {Boolean} startLiveQueryServer Starts the liveQuery server
91
+ * @property {Any} trustProxy The trust proxy settings. It is important to understand the exact setup of the reverse proxy, since this setting will trust values provided in the Parse Server API request. See the <a href="https://expressjs.com/en/guide/behind-proxies.html">express trust proxy settings</a> documentation. Defaults to `false`.
91
92
  * @property {String[]} userSensitiveFields Personally identifiable information fields in the user table the should be removed for non-authorized users. Deprecated @see protectedFields
92
93
  * @property {Boolean} verbose Set the logging to verbose
93
94
  * @property {Boolean} verifyUserEmails Set to `true` to require users to verify their email address to complete the sign-up process.<br><br>Default is `false`.
@@ -215,4 +216,4 @@
215
216
  * @property {Boolean} enabled Is `true` if the auth adapter is enabled, `false` otherwise.
216
217
  */
217
218
  "use strict";
218
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL2RvY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGludGVyZmFjZSBTY2hlbWFPcHRpb25zXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBhZnRlck1pZ3JhdGlvbiBFeGVjdXRlIGEgY2FsbGJhY2sgYWZ0ZXIgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGJlZm9yZU1pZ3JhdGlvbiBFeGVjdXRlIGEgY2FsbGJhY2sgYmVmb3JlIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuXG4gKiBAcHJvcGVydHkge0FueX0gZGVmaW5pdGlvbnMgUmVzdCByZXByZXNlbnRhdGlvbiBvbiBQYXJzZS5TY2hlbWEgaHR0cHM6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3Jlc3QvZ3VpZGUvI2FkZGluZy1hLXNjaGVtYVxuICogQHByb3BlcnR5IHtCb29sZWFufSBkZWxldGVFeHRyYUZpZWxkcyBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZGVsZXRlIGFueSBmaWVsZHMgbm90IGRlZmluZWQgaW4gYSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGR1cmluZyBkZXZlbG9wbWVudC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gbG9ja1NjaGVtYXMgSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgd2lsbCByZWplY3QgYW55IGF0dGVtcHRzIHRvIG1vZGlmeSB0aGUgc2NoZW1hIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcmVjcmVhdGVNb2RpZmllZEZpZWxkcyBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgcmVjcmVhdGUgYW55IGZpZWxkcyB0aGF0IGFyZSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgY3VycmVudCBkYXRhYmFzZSBzY2hlbWEgYW5kIHRoZXNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LlxuICogQHByb3BlcnR5IHtCb29sZWFufSBzdHJpY3QgSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGV4aXQgaWYgc2NoZW1hIHVwZGF0ZSBmYWlsLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBQYXJzZVNlcnZlck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7QWNjb3VudExvY2tvdXRPcHRpb25zfSBhY2NvdW50TG9ja291dCBUaGUgYWNjb3VudCBsb2Nrb3V0IHBvbGljeSBmb3IgZmFpbGVkIGxvZ2luIGF0dGVtcHRzLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBhbGxvd0NsaWVudENsYXNzQ3JlYXRpb24gRW5hYmxlIChvciBkaXNhYmxlKSBjbGllbnQgY2xhc3MgY3JlYXRpb24sIGRlZmF1bHRzIHRvIHRydWVcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gYWxsb3dDdXN0b21PYmplY3RJZCBFbmFibGUgKG9yIGRpc2FibGUpIGN1c3RvbSBvYmplY3RJZFxuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gYWxsb3dIZWFkZXJzIEFkZCBoZWFkZXJzIHRvIEFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhbGxvd09yaWdpbiBTZXRzIHRoZSBvcmlnaW4gdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8QW5hbHl0aWNzQWRhcHRlcj59IGFuYWx5dGljc0FkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBhbmFseXRpY3NcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhcHBJZCBZb3VyIFBhcnNlIEFwcGxpY2F0aW9uIElEXG4gKiBAcHJvcGVydHkge1N0cmluZ30gYXBwTmFtZSBTZXRzIHRoZSBhcHAgbmFtZVxuICogQHByb3BlcnR5IHtBdXRoQWRhcHRlcltdfSBhdXRoIENvbmZpZ3VyYXRpb24gZm9yIHlvdXIgYXV0aGVudGljYXRpb24gcHJvdmlkZXJzLCBhcyBzdHJpbmdpZmllZCBKU09OLiBTZWUgaHR0cDovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2d1aWRlLyNvYXV0aC1hbmQtM3JkLXBhcnR5LWF1dGhlbnRpY2F0aW9uXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8Q2FjaGVBZGFwdGVyPn0gY2FjaGVBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgY2FjaGVcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBjYWNoZU1heFNpemUgU2V0cyB0aGUgbWF4aW11bSBzaXplIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlLCBkZWZhdWx0cyB0byAxMDAwMFxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGNhY2hlVFRMIFNldHMgdGhlIFRUTCBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSAoaW4gbXMpLCBkZWZhdWx0cyB0byA1MDAwICg1IHNlY29uZHMpXG4gKiBAcHJvcGVydHkge1N0cmluZ30gY2xpZW50S2V5IEtleSBmb3IgaU9TLCBNYWNPUywgdHZPUyBjbGllbnRzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gY2xvdWQgRnVsbCBwYXRoIHRvIHlvdXIgY2xvdWQgY29kZSBtYWluLmpzXG4gKiBAcHJvcGVydHkge051bWJlcnxCb29sZWFufSBjbHVzdGVyIFJ1biB3aXRoIGNsdXN0ZXIsIG9wdGlvbmFsbHkgc2V0IHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGRlZmF1bHQgdG8gb3MuY3B1cygpLmxlbmd0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGNvbGxlY3Rpb25QcmVmaXggQSBjb2xsZWN0aW9uIHByZWZpeCBmb3IgdGhlIGNsYXNzZXNcbiAqIEBwcm9wZXJ0eSB7Q3VzdG9tUGFnZXNPcHRpb25zfSBjdXN0b21QYWdlcyBjdXN0b20gcGFnZXMgZm9yIHBhc3N3b3JkIHZhbGlkYXRpb24gYW5kIHJlc2V0XG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8U3RvcmFnZUFkYXB0ZXI+fSBkYXRhYmFzZUFkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBkYXRhYmFzZTsgYW55IG9wdGlvbnMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgZGVzY3JpYmVkIGhlcmUgYXJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgZGF0YWJhc2UgY2xpZW50LlxuICogQHByb3BlcnR5IHtEYXRhYmFzZU9wdGlvbnN9IGRhdGFiYXNlT3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRhdGFiYXNlIGNsaWVudFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGRhdGFiYXNlVVJJIFRoZSBmdWxsIFVSSSB0byB5b3VyIGRhdGFiYXNlLiBTdXBwb3J0ZWQgZGF0YWJhc2VzIGFyZSBtb25nb2RiIG9yIHBvc3RncmVzLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGRlZmF1bHRMaW1pdCBEZWZhdWx0IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gYDEwMGAuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRpcmVjdEFjY2VzcyBTZXQgdG8gYHRydWVgIGlmIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBzaG91bGQgYmUgcm91dGVkIHRvIFBhcnNlIFNlcnZlciBkaXJlY3RseSBpbnN0ZWFkIG9mIHZpYSB0aGUgSFRUUCBpbnRlcmZhY2UuIERlZmF1bHQgaXMgYGZhbHNlYC48YnI+PGJyPklmIHNldCB0byBgZmFsc2VgIHRoZW4gUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIGFyZSBleGVjdXRlZCBhcyBIVFRQIHJlcXVlc3RzIHNlbnQgdG8gUGFyc2UgU2VydmVyIHZpYSB0aGUgYHNlcnZlclVSTGAuIEZvciBleGFtcGxlLCBhIGBQYXJzZS5RdWVyeWAgaW4gQ2xvdWQgQ29kZSBpcyBjYWxsaW5nIFBhcnNlIFNlcnZlciB2aWEgYSBIVFRQIHJlcXVlc3QuIFRoZSBzZXJ2ZXIgaXMgZXNzZW50aWFsbHkgbWFraW5nIGEgSFRUUCByZXF1ZXN0IHRvIGl0c2VsZiwgdW5uZWNlc3NhcmlseSB1c2luZyBuZXR3b3JrIHJlc291cmNlcyBzdWNoIGFzIG5ldHdvcmsgcG9ydHMuPGJyPjxicj7imqDvuI8gSW4gZW52aXJvbm1lbnRzIHdoZXJlIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgcnVuIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgYW5kIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgY3VycmVudCBOb2RlLmpzIGVudmlyb25tZW50IHNob3VsZCBiZSByb3V0ZWQgdmlhIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCBkaXN0cmlidXRlZCBhcyBIVFRQIHJlcXVlc3RzIGFtb25nIGFsbCBpbnN0YW5jZXMgdmlhIHRoZSBgc2VydmVyVVJMYCwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZG90TmV0S2V5IEtleSBmb3IgVW5pdHkgYW5kIC5OZXQgU0RLXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8TWFpbEFkYXB0ZXI+fSBlbWFpbEFkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIGVtYWlsIHNlbmRpbmdcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW1haWxWZXJpZnlUb2tlblJldXNlSWZWYWxpZCBTZXQgdG8gYHRydWVgIGlmIGEgZW1haWwgdmVyaWZpY2F0aW9uIHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC48YnI+UmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBlbWFpbFZlcmlmeVRva2VuVmFsaWRpdHlEdXJhdGlvbiBTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLjxicj48YnI+Rm9yIGV4YW1wbGUsIHRvIGV4cGlyZSB0aGUgdG9rZW4gYWZ0ZXIgMiBob3Vycywgc2V0IGEgdmFsdWUgb2YgNzIwMCBzZWNvbmRzICg9IDYwIHNlY29uZHMgKiA2MCBtaW51dGVzICogMiBob3VycykuPGJyPjxicj5EZWZhdWx0IGlzIGB1bmRlZmluZWRgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVBbm9ueW1vdXNVc2VycyBFbmFibGUgKG9yIGRpc2FibGUpIGFub255bW91cyB1c2VycywgZGVmYXVsdHMgdG8gdHJ1ZVxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyIEVuYWJsZXMgdGhlIGRlZmF1bHQgZXhwcmVzcyBlcnJvciBoYW5kbGVyIGZvciBhbGwgZXJyb3JzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZW5jcnlwdGlvbktleSBLZXkgZm9yIGVuY3J5cHRpbmcgeW91ciBmaWxlc1xuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmZvcmNlUHJpdmF0ZVVzZXJzIFNldCB0byB0cnVlIGlmIG5ldyB1c2VycyBzaG91bGQgYmUgY3JlYXRlZCB3aXRob3V0IHB1YmxpYyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGV4cGlyZUluYWN0aXZlU2Vzc2lvbnMgU2V0cyB3aGV0aGVyIHdlIHNob3VsZCBleHBpcmUgdGhlIGluYWN0aXZlIHNlc3Npb25zLCBkZWZhdWx0cyB0byB0cnVlLiBJZiBmYWxzZSwgYWxsIG5ldyBzZXNzaW9ucyBhcmUgY3JlYXRlZCB3aXRoIG5vIGV4cGlyYXRpb24gZGF0ZS5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBmaWxlS2V5IEtleSBmb3IgeW91ciBmaWxlc1xuICogQHByb3BlcnR5IHtBZGFwdGVyPEZpbGVzQWRhcHRlcj59IGZpbGVzQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGZpbGVzIHN1Yi1zeXN0ZW1cbiAqIEBwcm9wZXJ0eSB7RmlsZVVwbG9hZE9wdGlvbnN9IGZpbGVVcGxvYWQgT3B0aW9ucyBmb3IgZmlsZSB1cGxvYWRzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZ3JhcGhRTFBhdGggTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQsIGRlZmF1bHRzIHRvIC9ncmFwaHFsXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZ3JhcGhRTFNjaGVtYSBGdWxsIHBhdGggdG8geW91ciBHcmFwaFFMIGN1c3RvbSBzY2hlbWEuZ3JhcGhxbCBmaWxlXG4gKiBAcHJvcGVydHkge1N0cmluZ30gaG9zdCBUaGUgaG9zdCB0byBzZXJ2ZSBQYXJzZVNlcnZlciBvbiwgZGVmYXVsdHMgdG8gMC4wLjAuMFxuICogQHByb3BlcnR5IHtJZGVtcG90ZW5jeU9wdGlvbnN9IGlkZW1wb3RlbmN5T3B0aW9ucyBPcHRpb25zIGZvciByZXF1ZXN0IGlkZW1wb3RlbmN5IHRvIGRlZHVwbGljYXRlIGlkZW50aWNhbCByZXF1ZXN0cyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGphdmFzY3JpcHRLZXkgS2V5IGZvciB0aGUgSmF2YXNjcmlwdCBTREtcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0ganNvbkxvZ3MgTG9nIGFzIHN0cnVjdHVyZWQgSlNPTiBvYmplY3RzXG4gKiBAcHJvcGVydHkge0xpdmVRdWVyeU9wdGlvbnN9IGxpdmVRdWVyeSBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7TGl2ZVF1ZXJ5U2VydmVyT3B0aW9uc30gbGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyBMaXZlIHF1ZXJ5IHNlcnZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgKHdpbGwgc3RhcnQgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIpXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8TG9nZ2VyQWRhcHRlcj59IGxvZ2dlckFkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBsb2dnaW5nIHN1Yi1zeXN0ZW1cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsb2dMZXZlbCBTZXRzIHRoZSBsZXZlbCBmb3IgbG9nc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGxvZ3NGb2xkZXIgRm9sZGVyIGZvciB0aGUgbG9ncyAoZGVmYXVsdHMgdG8gJy4vbG9ncycpOyBzZXQgdG8gbnVsbCB0byBkaXNhYmxlIGZpbGUgYmFzZWQgbG9nZ2luZ1xuICogQHByb3BlcnR5IHtTdHJpbmd9IG1hc3RlcktleSBZb3VyIFBhcnNlIE1hc3RlciBLZXlcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nW119IG1hc3RlcktleUlwcyBSZXN0cmljdCBtYXN0ZXJLZXkgdG8gYmUgdXNlZCBieSBvbmx5IHRoZXNlIGlwcywgZGVmYXVsdHMgdG8gW10gKGFsbG93IGFsbCBpcHMpXG4gKiBAcHJvcGVydHkge051bWJlcn0gbWF4TGltaXQgTWF4IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gdW5saW1pdGVkXG4gKiBAcHJvcGVydHkge051bWJlcnxTdHJpbmd9IG1heExvZ0ZpbGVzIE1heGltdW0gbnVtYmVyIG9mIGxvZ3MgdG8ga2VlcC4gSWYgbm90IHNldCwgbm8gbG9ncyB3aWxsIGJlIHJlbW92ZWQuIFRoaXMgY2FuIGJlIGEgbnVtYmVyIG9mIGZpbGVzIG9yIG51bWJlciBvZiBkYXlzLiBJZiB1c2luZyBkYXlzLCBhZGQgJ2QnIGFzIHRoZSBzdWZmaXguIChkZWZhdWx0OiBudWxsKVxuICogQHByb3BlcnR5IHtTdHJpbmd9IG1heFVwbG9hZFNpemUgTWF4IGZpbGUgc2l6ZSBmb3IgdXBsb2FkcywgZGVmYXVsdHMgdG8gMjBtYlxuICogQHByb3BlcnR5IHtVbmlvbn0gbWlkZGxld2FyZSBtaWRkbGV3YXJlIGZvciBleHByZXNzIHNlcnZlciwgY2FuIGJlIHN0cmluZyBvciBmdW5jdGlvblxuICogQHByb3BlcnR5IHtCb29sZWFufSBtb3VudEdyYXBoUUwgTW91bnRzIHRoZSBHcmFwaFFMIGVuZHBvaW50XG4gKiBAcHJvcGVydHkge1N0cmluZ30gbW91bnRQYXRoIE1vdW50IHBhdGggZm9yIHRoZSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIC9wYXJzZVxuICogQHByb3BlcnR5IHtCb29sZWFufSBtb3VudFBsYXlncm91bmQgTW91bnRzIHRoZSBHcmFwaFFMIFBsYXlncm91bmQgLSBuZXZlciB1c2UgdGhpcyBvcHRpb24gaW4gcHJvZHVjdGlvblxuICogQHByb3BlcnR5IHtOdW1iZXJ9IG9iamVjdElkU2l6ZSBTZXRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBnZW5lcmF0ZWQgb2JqZWN0IGlkJ3MsIGRlZmF1bHQgMTBcbiAqIEBwcm9wZXJ0eSB7UGFnZXNPcHRpb25zfSBwYWdlcyBUaGUgb3B0aW9ucyBmb3IgcGFnZXMgc3VjaCBhcyBwYXNzd29yZCByZXNldCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uLiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAqIEBwcm9wZXJ0eSB7UGFzc3dvcmRQb2xpY3lPcHRpb25zfSBwYXNzd29yZFBvbGljeSBUaGUgcGFzc3dvcmQgcG9saWN5IGZvciBlbmZvcmNpbmcgcGFzc3dvcmQgcmVsYXRlZCBydWxlcy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwbGF5Z3JvdW5kUGF0aCBNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kLCBkZWZhdWx0cyB0byAvcGxheWdyb3VuZFxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHBvcnQgVGhlIHBvcnQgdG8gcnVuIHRoZSBQYXJzZVNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcHJlc2VydmVGaWxlTmFtZSBFbmFibGUgKG9yIGRpc2FibGUpIHRoZSBhZGRpdGlvbiBvZiBhIHVuaXF1ZSBoYXNoIHRvIHRoZSBmaWxlIG5hbWVzXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHByZXZlbnRMb2dpbldpdGhVbnZlcmlmaWVkRW1haWwgU2V0IHRvIGB0cnVlYCB0byBwcmV2ZW50IGEgdXNlciBmcm9tIGxvZ2dpbmcgaW4gaWYgdGhlIGVtYWlsIGhhcyBub3QgeWV0IGJlZW4gdmVyaWZpZWQgYW5kIGVtYWlsIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC48YnI+UmVxdWlyZXMgb3B0aW9uIGB2ZXJpZnlVc2VyRW1haWxzOiB0cnVlYC5cbiAqIEBwcm9wZXJ0eSB7UHJvdGVjdGVkRmllbGRzfSBwcm90ZWN0ZWRGaWVsZHMgUHJvdGVjdGVkIGZpZWxkcyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkIHdpdGggZXh0cmEgc2VjdXJpdHkgd2hlbiBmZXRjaGluZyBkZXRhaWxzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHB1YmxpY1NlcnZlclVSTCBQdWJsaWMgVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy5cbiAqIEBwcm9wZXJ0eSB7QW55fSBwdXNoIENvbmZpZ3VyYXRpb24gZm9yIHB1c2gsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI3B1c2gtbm90aWZpY2F0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IHJlYWRPbmx5TWFzdGVyS2V5IFJlYWQtb25seSBrZXksIHdoaWNoIGhhcyB0aGUgc2FtZSBjYXBhYmlsaXRpZXMgYXMgTWFzdGVyS2V5IHdpdGhvdXQgd3JpdGVzXG4gKiBAcHJvcGVydHkge1JlcXVlc3RLZXl3b3JkRGVueWxpc3RbXX0gcmVxdWVzdEtleXdvcmREZW55bGlzdCBBbiBhcnJheSBvZiBrZXlzIGFuZCB2YWx1ZXMgdGhhdCBhcmUgcHJvaGliaXRlZCBpbiBkYXRhYmFzZSByZWFkIGFuZCB3cml0ZSByZXF1ZXN0cyB0byBwcmV2ZW50IHBvdGVudGlhbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIEl0IGlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgb25seSBhIGtleSAoYHtcImtleVwiOlwiLi4uXCJ9YCksIG9ubHkgYSB2YWx1ZSAoYHtcInZhbHVlXCI6XCIuLi5cIn1gKSBvciBhIGtleS12YWx1ZSBwYWlyIChge1wia2V5XCI6XCIuLi5cIixcInZhbHVlXCI6XCIuLi5cIn1gKS4gVGhlIHNwZWNpZmljYXRpb24gY2FuIHVzZSB0aGUgZm9sbG93aW5nIHR5cGVzOiBgYm9vbGVhbmAsIGBudW1lcmljYCBvciBgc3RyaW5nYCwgd2hlcmUgYHN0cmluZ2Agd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIHJlZ2V4IG5vdGF0aW9uLiBSZXF1ZXN0IGRhdGEgaXMgZGVlcC1zY2FubmVkIGZvciBtYXRjaGluZyBkZWZpbml0aW9ucyB0byBkZXRlY3QgYWxzbyBhbnkgbmVzdGVkIG9jY3VycmVuY2VzLiBEZWZhdWx0cyBhcmUgcGF0dGVybnMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIHVzZWQgaW4gbWFsaWNpb3VzIHJlcXVlc3RzLiBTZXR0aW5nIHRoaXMgb3B0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcGF0dGVybnMuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcmVzdEFQSUtleSBLZXkgZm9yIFJFU1QgY2FsbHNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldCBXaGVuIGEgdXNlciBjaGFuZ2VzIHRoZWlyIHBhc3N3b3JkLCBlaXRoZXIgdGhyb3VnaCB0aGUgcmVzZXQgcGFzc3dvcmQgZW1haWwgb3Igd2hpbGUgbG9nZ2VkIGluLCBhbGwgc2Vzc2lvbnMgYXJlIHJldm9rZWQgaWYgdGhpcyBpcyB0cnVlLiBTZXQgdG8gZmFsc2UgaWYgeW91IGRvbid0IHdhbnQgdG8gcmV2b2tlIHNlc3Npb25zLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBzY2hlZHVsZWRQdXNoIENvbmZpZ3VyYXRpb24gZm9yIHB1c2ggc2NoZWR1bGluZywgZGVmYXVsdHMgdG8gZmFsc2UuXG4gKiBAcHJvcGVydHkge1NjaGVtYU9wdGlvbnN9IHNjaGVtYSBEZWZpbmVkIHNjaGVtYVxuICogQHByb3BlcnR5IHtTZWN1cml0eU9wdGlvbnN9IHNlY3VyaXR5IFRoZSBzZWN1cml0eSBvcHRpb25zIHRvIGlkZW50aWZ5IGFuZCByZXBvcnQgd2VhayBzZWN1cml0eSBzZXR0aW5ncy5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHNlcnZlckNsb3NlQ29tcGxldGUgQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIGNsb3NlZFxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gc2VydmVyU3RhcnRDb21wbGV0ZSBDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgc3RhcnRlZFxuICogQHByb3BlcnR5IHtTdHJpbmd9IHNlcnZlclVSTCBVUkwgdG8geW91ciBwYXJzZSBzZXJ2ZXIgd2l0aCBodHRwOi8vIG9yIGh0dHBzOi8vLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHNlc3Npb25MZW5ndGggU2Vzc2lvbiBkdXJhdGlvbiwgaW4gc2Vjb25kcywgZGVmYXVsdHMgdG8gMSB5ZWFyXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHNpbGVudCBEaXNhYmxlcyBjb25zb2xlIG91dHB1dFxuICogQHByb3BlcnR5IHtCb29sZWFufSBzdGFydExpdmVRdWVyeVNlcnZlciBTdGFydHMgdGhlIGxpdmVRdWVyeSBzZXJ2ZXJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nW119IHVzZXJTZW5zaXRpdmVGaWVsZHMgUGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gZmllbGRzIGluIHRoZSB1c2VyIHRhYmxlIHRoZSBzaG91bGQgYmUgcmVtb3ZlZCBmb3Igbm9uLWF1dGhvcml6ZWQgdXNlcnMuIERlcHJlY2F0ZWQgQHNlZSBwcm90ZWN0ZWRGaWVsZHNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gdmVyYm9zZSBTZXQgdGhlIGxvZ2dpbmcgdG8gdmVyYm9zZVxuICogQHByb3BlcnR5IHtCb29sZWFufSB2ZXJpZnlVc2VyRW1haWxzIFNldCB0byBgdHJ1ZWAgdG8gcmVxdWlyZSB1c2VycyB0byB2ZXJpZnkgdGhlaXIgZW1haWwgYWRkcmVzcyB0byBjb21wbGV0ZSB0aGUgc2lnbi11cCBwcm9jZXNzLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHdlYmhvb2tLZXkgS2V5IHNlbnQgd2l0aCBvdXRnb2luZyB3ZWJob29rIGNhbGxzXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFNlY3VyaXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHtDaGVja0dyb3VwW119IGNoZWNrR3JvdXBzIFRoZSBzZWN1cml0eSBjaGVjayBncm91cHMgdG8gcnVuLiBUaGlzIGFsbG93cyB0byBhZGQgY3VzdG9tIHNlY3VyaXR5IGNoZWNrcyBvciBvdmVycmlkZSBleGlzdGluZyBvbmVzLiBEZWZhdWx0IGFyZSB0aGUgZ3JvdXBzIGRlZmluZWQgaW4gYENoZWNrR3JvdXBzLmpzYC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlQ2hlY2sgSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGNoZWNrIGZvciB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVDaGVja0xvZyBJcyB0cnVlIGlmIHRoZSBzZWN1cml0eSBjaGVjayByZXBvcnQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9ncy4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IHRvIG5vdCBleHBvc2Ugd2VhayBzZWN1cml0eSBzZXR0aW5ncyBpbiBsb2dzLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBQYWdlc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7UGFnZXNSb3V0ZVtdfSBjdXN0b21Sb3V0ZXMgVGhlIGN1c3RvbSByb3V0ZXMuXG4gKiBAcHJvcGVydHkge1BhZ2VzQ3VzdG9tVXJsc09wdGlvbnN9IGN1c3RvbVVybHMgVGhlIFVSTHMgdG8gdGhlIGN1c3RvbSBwYWdlcy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlTG9jYWxpemF0aW9uIElzIHRydWUgaWYgcGFnZXMgc2hvdWxkIGJlIGxvY2FsaXplZDsgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIGN1c3RvbSBwYWdlIHJlZGlyZWN0cy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlUm91dGVyIElzIHRydWUgaWYgdGhlIHBhZ2VzIHJvdXRlciBzaG91bGQgYmUgZW5hYmxlZDsgdGhpcyBpcyByZXF1aXJlZCBmb3IgYW55IG9mIHRoZSBwYWdlcyBvcHRpb25zIHRvIHRha2UgZWZmZWN0LiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZm9yY2VSZWRpcmVjdCBJcyB0cnVlIGlmIHJlc3BvbnNlcyBzaG91bGQgYWx3YXlzIGJlIHJlZGlyZWN0cyBhbmQgbmV2ZXIgY29udGVudCwgZmFsc2UgaWYgdGhlIHJlc3BvbnNlIHR5cGUgc2hvdWxkIGRlcGVuZCBvbiB0aGUgcmVxdWVzdCB0eXBlIChHRVQgcmVxdWVzdCAtPiBjb250ZW50IHJlc3BvbnNlOyBQT1NUIHJlcXVlc3QgLT4gcmVkaXJlY3QgcmVzcG9uc2UpLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlIFRoZSBmYWxsYmFjayBsb2NhbGUgZm9yIGxvY2FsaXphdGlvbiBpZiBubyBtYXRjaGluZyB0cmFuc2xhdGlvbiBpcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuIGxvY2FsZS4gVGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gcHJvdmlkaW5nIHRyYW5zbGF0aW9uIHJlc291cmNlcyB2aWEgSlNPTiBmaWxlLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxvY2FsaXphdGlvbkpzb25QYXRoIFRoZSBwYXRoIHRvIHRoZSBKU09OIGZpbGUgZm9yIGxvY2FsaXphdGlvbjsgdGhlIHRyYW5zbGF0aW9ucyB3aWxsIGJlIHVzZWQgdG8gZmlsbCB0ZW1wbGF0ZSBwbGFjZWhvbGRlcnMgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFnZXNFbmRwb2ludCBUaGUgQVBJIGVuZHBvaW50IGZvciB0aGUgcGFnZXMuIERlZmF1bHQgaXMgJ2FwcHMnLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhZ2VzUGF0aCBUaGUgcGF0aCB0byB0aGUgcGFnZXMgZGlyZWN0b3J5OyB0aGlzIGFsc28gZGVmaW5lcyB3aGVyZSB0aGUgc3RhdGljIGVuZHBvaW50ICcvYXBwcycgcG9pbnRzIHRvLiBEZWZhdWx0IGlzIHRoZSAnLi9wdWJsaWMvJyBkaXJlY3RvcnkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gcGxhY2Vob2xkZXJzIFRoZSBwbGFjZWhvbGRlciBrZXlzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBmaWxsZWQgaW4gcGFnZXM7IHRoaXMgY2FuIGJlIGEgc2ltcGxlIG9iamVjdCBvciBhIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBQYWdlc1JvdXRlXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBoYW5kbGVyIFRoZSByb3V0ZSBoYW5kbGVyIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24uXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbWV0aG9kIFRoZSByb3V0ZSBtZXRob2QsIGUuZy4gJ0dFVCcgb3IgJ1BPU1QnLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhdGggVGhlIHJvdXRlIHBhdGguXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhZ2VzQ3VzdG9tVXJsc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvbkxpbmtFeHBpcmVkIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBleHBpcmVkLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGVtYWlsVmVyaWZpY2F0aW9uTGlua0ludmFsaWQgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGludmFsaWQuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbCBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgc2VuZCBmYWlsLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3MgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzcyBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHN1Y2Nlc3MuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFzc3dvcmRSZXNldCBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFzc3dvcmRSZXNldExpbmtJbnZhbGlkIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBsaW5rIGludmFsaWQuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFzc3dvcmRSZXNldFN1Y2Nlc3MgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IHN1Y2Nlc3MuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIEN1c3RvbVBhZ2VzT3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGNob29zZVBhc3N3b3JkIGNob29zZSBwYXNzd29yZCBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBleHBpcmVkVmVyaWZpY2F0aW9uTGluayBleHBpcmVkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGludmFsaWRMaW5rIGludmFsaWQgbGluayBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBpbnZhbGlkUGFzc3dvcmRSZXNldExpbmsgaW52YWxpZCBwYXNzd29yZCByZXNldCBsaW5rIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGludmFsaWRWZXJpZmljYXRpb25MaW5rIGludmFsaWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbGlua1NlbmRGYWlsIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgZmFpbCBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsaW5rU2VuZFN1Y2Nlc3MgdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBzdWNjZXNzIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhcnNlRnJhbWVVUkwgZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXNzd29yZFJlc2V0U3VjY2VzcyBwYXNzd29yZCByZXNldCBzdWNjZXNzIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IHZlcmlmeUVtYWlsU3VjY2VzcyB2ZXJpZnkgZW1haWwgc3VjY2VzcyBwYWdlIHBhdGhcbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgTGl2ZVF1ZXJ5T3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gY2xhc3NOYW1lcyBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY2xhc3NOYW1lc1xuICogQHByb3BlcnR5IHtBZGFwdGVyPFB1YlN1YkFkYXB0ZXI+fSBwdWJTdWJBZGFwdGVyIExpdmVRdWVyeSBwdWJzdWIgYWRhcHRlclxuICogQHByb3BlcnR5IHtBbnl9IHJlZGlzT3B0aW9ucyBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcmVkaXNVUkwgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8V1NTQWRhcHRlcj59IHdzc0FkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBXZWJTb2NrZXRTZXJ2ZXJcbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgTGl2ZVF1ZXJ5U2VydmVyT3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGFwcElkIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgYXBwSWQgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBhcHBJZC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBjYWNoZVRpbWVvdXQgTnVtYmVyIGluIG1pbGxpc2Vjb25kcy4gV2hlbiBjbGllbnRzIHByb3ZpZGUgdGhlIHNlc3Npb25Ub2tlbiB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gZmV0Y2ggaXRzIFBhcnNlVXNlcidzIG9iamVjdElkIGZyb20gcGFyc2Ugc2VydmVyIGFuZCBzdG9yZSBpdCBpbiB0aGUgY2FjaGUuIFRoZSB2YWx1ZSBkZWZpbmVzIHRoZSBkdXJhdGlvbiBvZiB0aGUgY2FjaGUuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMsIGRlZmF1bHRzIHRvIDUgKiAxMDAwIG1zICg1IHNlY29uZHMpLlxuICogQHByb3BlcnR5IHtBbnl9IGtleVBhaXJzIEEgSlNPTiBvYmplY3QgdGhhdCBzZXJ2ZXMgYXMgYSB3aGl0ZWxpc3Qgb2Yga2V5cy4gSXQgaXMgdXNlZCBmb3IgdmFsaWRhdGluZyBjbGllbnRzIHdoZW4gdGhleSB0cnkgdG8gY29ubmVjdCB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsb2dMZXZlbCBUaGlzIHN0cmluZyBkZWZpbmVzIHRoZSBsb2cgbGV2ZWwgb2YgdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIFdlIHN1cHBvcnQgVkVSQk9TRSwgSU5GTywgRVJST1IsIE5PTkUsIGRlZmF1bHRzIHRvIElORk8uXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbWFzdGVyS2V5IFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgbWFzdGVyS2V5IGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgbWFzdGVyS2V5LlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHBvcnQgVGhlIHBvcnQgdG8gcnVuIHRoZSBMaXZlUXVlcnkgc2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICogQHByb3BlcnR5IHtBZGFwdGVyPFB1YlN1YkFkYXB0ZXI+fSBwdWJTdWJBZGFwdGVyIExpdmVRdWVyeSBwdWJzdWIgYWRhcHRlclxuICogQHByb3BlcnR5IHtBbnl9IHJlZGlzT3B0aW9ucyBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcmVkaXNVUkwgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMXG4gKiBAcHJvcGVydHkge1N0cmluZ30gc2VydmVyVVJMIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgc2VydmVyVVJMIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgc2VydmVyVVJMLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHdlYnNvY2tldFRpbWVvdXQgTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBpbmcvcG9uZyBmcmFtZXMuIFRoZSBXZWJTb2NrZXQgc2VydmVyIHNlbmRzIHBpbmcvcG9uZyBmcmFtZXMgdG8gdGhlIGNsaWVudHMgdG8ga2VlcCB0aGUgV2ViU29ja2V0IGFsaXZlLiBUaGlzIHZhbHVlIGRlZmluZXMgdGhlIGludGVydmFsIG9mIHRoZSBwaW5nL3BvbmcgZnJhbWUgZnJvbSB0aGUgc2VydmVyIHRvIGNsaWVudHMsIGRlZmF1bHRzIHRvIDEwICogMTAwMCBtcyAoMTAgcykuXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8V1NTQWRhcHRlcj59IHdzc0FkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBXZWJTb2NrZXRTZXJ2ZXJcbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgSWRlbXBvdGVuY3lPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ1tdfSBwYXRocyBBbiBhcnJheSBvZiBwYXRocyBmb3Igd2hpY2ggdGhlIGZlYXR1cmUgc2hvdWxkIGJlIGVuYWJsZWQuIFRoZSBtb3VudCBwYXRoIG11c3Qgbm90IGJlIGluY2x1ZGVkLCBmb3IgZXhhbXBsZSBpbnN0ZWFkIG9mIGAvcGFyc2UvZnVuY3Rpb25zL215RnVuY3Rpb25gIHNwZWNpZml5IGBmdW5jdGlvbnMvbXlGdW5jdGlvbmAuIFRoZSBlbnRyaWVzIGFyZSBpbnRlcnByZXRlZCBhcyByZWd1bGFyIGV4cHJlc3Npb24sIGZvciBleGFtcGxlIGBmdW5jdGlvbnMvLipgIG1hdGNoZXMgYWxsIGZ1bmN0aW9ucywgYGpvYnMvLipgIG1hdGNoZXMgYWxsIGpvYnMsIGBjbGFzc2VzLy4qYCBtYXRjaGVzIGFsbCBjbGFzc2VzLCBgLipgIG1hdGNoZXMgYWxsIHBhdGhzLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHR0bCBUaGUgZHVyYXRpb24gaW4gc2Vjb25kcyBhZnRlciB3aGljaCBhIHJlcXVlc3QgcmVjb3JkIGlzIGRpc2NhcmRlZCBmcm9tIHRoZSBkYXRhYmFzZSwgZGVmYXVsdHMgdG8gMzAwcy5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgQWNjb3VudExvY2tvdXRPcHRpb25zXG4gKiBAcHJvcGVydHkge051bWJlcn0gZHVyYXRpb24gU2V0IHRoZSBkdXJhdGlvbiBpbiBtaW51dGVzIHRoYXQgYSBsb2NrZWQtb3V0IGFjY291bnQgcmVtYWlucyBsb2NrZWQgb3V0IGJlZm9yZSBhdXRvbWF0aWNhbGx5IGJlY29taW5nIHVubG9ja2VkLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDAwMGAuXG4gKiBAcHJvcGVydHkge051bWJlcn0gdGhyZXNob2xkIFNldCB0aGUgbnVtYmVyIG9mIGZhaWxlZCBzaWduLWluIGF0dGVtcHRzIHRoYXQgd2lsbCBjYXVzZSBhIHVzZXIgYWNjb3VudCB0byBiZSBsb2NrZWQuIElmIHRoZSBhY2NvdW50IGlzIGxvY2tlZC4gVGhlIGFjY291bnQgd2lsbCB1bmxvY2sgYWZ0ZXIgdGhlIGR1cmF0aW9uIHNldCBpbiB0aGUgYGR1cmF0aW9uYCBvcHRpb24gaGFzIHBhc3NlZCBhbmQgbm8gZnVydGhlciBsb2dpbiBhdHRlbXB0cyBoYXZlIGJlZW4gbWFkZS48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwYC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gdW5sb2NrT25QYXNzd29yZFJlc2V0IFNldCB0byBgdHJ1ZWAgIGlmIHRoZSBhY2NvdW50IHNob3VsZCBiZSB1bmxvY2tlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgcGFzc3dvcmQgcmVzZXQuPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuPGJyPlJlcXVpcmVzIG9wdGlvbnMgYGR1cmF0aW9uYCBhbmQgYHRocmVzaG9sZGAgdG8gYmUgc2V0LlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBQYXNzd29yZFBvbGljeU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZG9Ob3RBbGxvd1VzZXJuYW1lIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWxsb3cgdGhlIHVzZXJuYW1lIGFzIHBhcnQgb2YgdGhlIHBhc3N3b3JkLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IG1heFBhc3N3b3JkQWdlIFNldCB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggYSBwYXNzd29yZCBleHBpcmVzLiBMb2dpbiBhdHRlbXB0cyBmYWlsIGlmIHRoZSB1c2VyIGRvZXMgbm90IHJlc2V0IHRoZSBwYXNzd29yZCBiZWZvcmUgZXhwaXJhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYXhQYXNzd29yZEhpc3RvcnkgU2V0IHRoZSBudW1iZXIgb2YgcHJldmlvdXMgcGFzc3dvcmQgdGhhdCB3aWxsIG5vdCBiZSBhbGxvd2VkIHRvIGJlIHNldCBhcyBuZXcgcGFzc3dvcmQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYDBgLCBubyBwcmV2aW91cyBwYXNzd29yZHMgd2lsbCBiZSBjb25zaWRlcmVkLjxicj48YnI+VmFsaWQgdmFsdWVzIGFyZSA+PSBgMGAgYW5kIDw9IGAyMGAuPGJyPkRlZmF1bHQgaXMgYDBgLlxuICogQHByb3BlcnR5IHtCb29sZWFufSByZXNldFRva2VuUmV1c2VJZlZhbGlkIFNldCB0byBgdHJ1ZWAgaWYgYSBwYXNzd29yZCByZXNldCB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uPGJyPjxicj5EZWZhdWx0IGlzIGBmYWxzZWAuXG4gKiBAcHJvcGVydHkge051bWJlcn0gcmVzZXRUb2tlblZhbGlkaXR5RHVyYXRpb24gU2V0IHRoZSB2YWxpZGl0eSBkdXJhdGlvbiBvZiB0aGUgcGFzc3dvcmQgcmVzZXQgdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLjxicj48YnI+Rm9yIGV4YW1wbGUsIHRvIGV4cGlyZSB0aGUgdG9rZW4gYWZ0ZXIgMiBob3Vycywgc2V0IGEgdmFsdWUgb2YgNzIwMCBzZWNvbmRzICg9IDYwIHNlY29uZHMgKiA2MCBtaW51dGVzICogMiBob3VycykuPGJyPjxicj5EZWZhdWx0IGlzIGB1bmRlZmluZWRgLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHZhbGlkYXRpb25FcnJvciBTZXQgdGhlIGVycm9yIG1lc3NhZ2UgdG8gYmUgc2VudC48YnI+PGJyPkRlZmF1bHQgaXMgYFBhc3N3b3JkIGRvZXMgbm90IG1lZXQgdGhlIFBhc3N3b3JkIFBvbGljeSByZXF1aXJlbWVudHMuYFxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gdmFsaWRhdG9yQ2FsbGJhY2sgU2V0IGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYSBwYXNzd29yZCB0byBiZSBhY2NlcHRlZC48YnI+PGJyPklmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yUGF0dGVybmAsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB2YWxpZGF0b3JQYXR0ZXJuIFNldCB0aGUgcmVndWxhciBleHByZXNzaW9uIHZhbGlkYXRpb24gcGF0dGVybiBhIHBhc3N3b3JkIG11c3QgbWF0Y2ggdG8gYmUgYWNjZXB0ZWQuPGJyPjxicj5JZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvckNhbGxiYWNrYCwgdGhlIHBhc3N3b3JkIG11c3QgcGFzcyBib3RoIHRvIGJlIGFjY2VwdGVkLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBGaWxlVXBsb2FkT3B0aW9uc1xuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVGb3JBbm9ueW1vdXNVc2VyIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFub255bW91cyB1c2Vycy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlRm9yQXV0aGVudGljYXRlZFVzZXIgSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlRm9yUHVibGljIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBEYXRhYmFzZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlU2NoZW1hSG9va3MgRW5hYmxlcyBkYXRhYmFzZSByZWFsLXRpbWUgaG9va3MgdG8gdXBkYXRlIHNpbmdsZSBzY2hlbWEgY2FjaGUuIFNldCB0byBgdHJ1ZWAgaWYgdXNpbmcgbXVsdGlwbGUgUGFyc2UgU2VydmVycyBpbnN0YW5jZXMgY29ubmVjdGVkIHRvIHRoZSBzYW1lIGRhdGFiYXNlLiBGYWlsaW5nIHRvIGRvIHNvIHdpbGwgY2F1c2UgYSBzY2hlbWEgY2hhbmdlIHRvIG5vdCBwcm9wYWdhdGUgdG8gYWxsIGluc3RhbmNlcyBhbmQgcmUtc3luY2luZyB3aWxsIG9ubHkgaGFwcGVuIHdoZW4gdGhlIGluc3RhbmNlcyByZXN0YXJ0LiBUbyB1c2UgdGhpcyBmZWF0dXJlIHdpdGggTW9uZ29EQiwgYSByZXBsaWNhIHNldCBjbHVzdGVyIHdpdGggW2NoYW5nZSBzdHJlYW1dKGh0dHBzOi8vZG9jcy5tb25nb2RiLmNvbS9tYW51YWwvY2hhbmdlU3RyZWFtcy8jYXZhaWxhYmlsaXR5KSBzdXBwb3J0IGlzIHJlcXVpcmVkLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBBdXRoQWRhcHRlclxuICogQHByb3BlcnR5IHtCb29sZWFufSBlbmFibGVkIElzIGB0cnVlYCBpZiB0aGUgYXV0aCBhZGFwdGVyIGlzIGVuYWJsZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG4iXX0=
219
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL2RvY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJmYWNlIFNjaGVtYU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGFmdGVyTWlncmF0aW9uIEV4ZWN1dGUgYSBjYWxsYmFjayBhZnRlciBydW5uaW5nIHNjaGVtYSBtaWdyYXRpb25zLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gYmVmb3JlTWlncmF0aW9uIEV4ZWN1dGUgYSBjYWxsYmFjayBiZWZvcmUgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7QW55fSBkZWZpbml0aW9ucyBSZXN0IHJlcHJlc2VudGF0aW9uIG9uIFBhcnNlLlNjaGVtYSBodHRwczovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcmVzdC9ndWlkZS8jYWRkaW5nLWEtc2NoZW1hXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRlbGV0ZUV4dHJhRmllbGRzIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBkZWxldGUgYW55IGZpZWxkcyBub3QgZGVmaW5lZCBpbiBhIHNjaGVtYSBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZHVyaW5nIGRldmVsb3BtZW50LlxuICogQHByb3BlcnR5IHtCb29sZWFufSBsb2NrU2NoZW1hcyBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLlxuICogQHByb3BlcnR5IHtCb29sZWFufSByZWNyZWF0ZU1vZGlmaWVkRmllbGRzIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCByZWNyZWF0ZSBhbnkgZmllbGRzIHRoYXQgYXJlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjdXJyZW50IGRhdGFiYXNlIHNjaGVtYSBhbmQgdGhlc2NoZW1hIGRlZmluaXRpb24uIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBkdXJpbmcgZGV2ZWxvcG1lbnQuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHN0cmljdCBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZXhpdCBpZiBzY2hlbWEgdXBkYXRlIGZhaWwuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9uc1xuICogQHByb3BlcnR5IHtBY2NvdW50TG9ja291dE9wdGlvbnN9IGFjY291bnRMb2Nrb3V0IFRoZSBhY2NvdW50IGxvY2tvdXQgcG9saWN5IGZvciBmYWlsZWQgbG9naW4gYXR0ZW1wdHMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGFsbG93Q2xpZW50Q2xhc3NDcmVhdGlvbiBFbmFibGUgKG9yIGRpc2FibGUpIGNsaWVudCBjbGFzcyBjcmVhdGlvbiwgZGVmYXVsdHMgdG8gdHJ1ZVxuICogQHByb3BlcnR5IHtCb29sZWFufSBhbGxvd0N1c3RvbU9iamVjdElkIEVuYWJsZSAob3IgZGlzYWJsZSkgY3VzdG9tIG9iamVjdElkXG4gKiBAcHJvcGVydHkge1N0cmluZ1tdfSBhbGxvd0hlYWRlcnMgQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGFsbG93T3JpZ2luIFNldHMgdGhlIG9yaWdpbiB0byBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW5cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxBbmFseXRpY3NBZGFwdGVyPn0gYW5hbHl0aWNzQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGFuYWx5dGljc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IGFwcElkIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhcHBOYW1lIFNldHMgdGhlIGFwcCBuYW1lXG4gKiBAcHJvcGVydHkge0F1dGhBZGFwdGVyW119IGF1dGggQ29uZmlndXJhdGlvbiBmb3IgeW91ciBhdXRoZW50aWNhdGlvbiBwcm92aWRlcnMsIGFzIHN0cmluZ2lmaWVkIEpTT04uIFNlZSBodHRwOi8vZG9jcy5wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvZ3VpZGUvI29hdXRoLWFuZC0zcmQtcGFydHktYXV0aGVudGljYXRpb25cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxDYWNoZUFkYXB0ZXI+fSBjYWNoZUFkYXB0ZXIgQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGNhY2hlTWF4U2l6ZSBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gKiBAcHJvcGVydHkge051bWJlcn0gY2FjaGVUVEwgU2V0cyB0aGUgVFRMIGZvciB0aGUgaW4gbWVtb3J5IGNhY2hlIChpbiBtcyksIGRlZmF1bHRzIHRvIDUwMDAgKDUgc2Vjb25kcylcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbGllbnRLZXkgS2V5IGZvciBpT1MsIE1hY09TLCB0dk9TIGNsaWVudHNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbG91ZCBGdWxsIHBhdGggdG8geW91ciBjbG91ZCBjb2RlIG1haW4uanNcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfEJvb2xlYW59IGNsdXN0ZXIgUnVuIHdpdGggY2x1c3Rlciwgb3B0aW9uYWxseSBzZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgZGVmYXVsdCB0byBvcy5jcHVzKCkubGVuZ3RoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gY29sbGVjdGlvblByZWZpeCBBIGNvbGxlY3Rpb24gcHJlZml4IGZvciB0aGUgY2xhc3Nlc1xuICogQHByb3BlcnR5IHtDdXN0b21QYWdlc09wdGlvbnN9IGN1c3RvbVBhZ2VzIGN1c3RvbSBwYWdlcyBmb3IgcGFzc3dvcmQgdmFsaWRhdGlvbiBhbmQgcmVzZXRcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxTdG9yYWdlQWRhcHRlcj59IGRhdGFiYXNlQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGRhdGFiYXNlOyBhbnkgb3B0aW9ucyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBkYXRhYmFzZSBjbGllbnQuXG4gKiBAcHJvcGVydHkge0RhdGFiYXNlT3B0aW9uc30gZGF0YWJhc2VPcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgZGF0YWJhc2UgY2xpZW50XG4gKiBAcHJvcGVydHkge1N0cmluZ30gZGF0YWJhc2VVUkkgVGhlIGZ1bGwgVVJJIHRvIHlvdXIgZGF0YWJhc2UuIFN1cHBvcnRlZCBkYXRhYmFzZXMgYXJlIG1vbmdvZGIgb3IgcG9zdGdyZXMuXG4gKiBAcHJvcGVydHkge051bWJlcn0gZGVmYXVsdExpbWl0IERlZmF1bHQgdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byBgMTAwYC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZGlyZWN0QWNjZXNzIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLjxicj48YnI+SWYgc2V0IHRvIGBmYWxzZWAgdGhlbiBQYXJzZSByZXF1ZXN0cyB3aXRoaW4gdGhlIHNhbWUgTm9kZS5qcyBlbnZpcm9ubWVudCBhcyBQYXJzZSBTZXJ2ZXIgYXJlIGV4ZWN1dGVkIGFzIEhUVFAgcmVxdWVzdHMgc2VudCB0byBQYXJzZSBTZXJ2ZXIgdmlhIHRoZSBgc2VydmVyVVJMYC4gRm9yIGV4YW1wbGUsIGEgYFBhcnNlLlF1ZXJ5YCBpbiBDbG91ZCBDb2RlIGlzIGNhbGxpbmcgUGFyc2UgU2VydmVyIHZpYSBhIEhUVFAgcmVxdWVzdC4gVGhlIHNlcnZlciBpcyBlc3NlbnRpYWxseSBtYWtpbmcgYSBIVFRQIHJlcXVlc3QgdG8gaXRzZWxmLCB1bm5lY2Vzc2FyaWx5IHVzaW5nIG5ldHdvcmsgcmVzb3VyY2VzIHN1Y2ggYXMgbmV0d29yayBwb3J0cy48YnI+PGJyPuKaoO+4jyBJbiBlbnZpcm9ubWVudHMgd2hlcmUgbXVsdGlwbGUgUGFyc2UgU2VydmVyIGluc3RhbmNlcyBydW4gYmVoaW5kIGEgbG9hZCBiYWxhbmNlciBhbmQgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBjdXJyZW50IE5vZGUuanMgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJvdXRlZCB2aWEgdGhlIGxvYWQgYmFsYW5jZXIgYW5kIGRpc3RyaWJ1dGVkIGFzIEhUVFAgcmVxdWVzdHMgYW1vbmcgYWxsIGluc3RhbmNlcyB2aWEgdGhlIGBzZXJ2ZXJVUkxgLCB0aGlzIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBkb3ROZXRLZXkgS2V5IGZvciBVbml0eSBhbmQgLk5ldCBTREtcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxNYWlsQWRhcHRlcj59IGVtYWlsQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgZW1haWwgc2VuZGluZ1xuICogQHByb3BlcnR5IHtCb29sZWFufSBlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkIFNldCB0byBgdHJ1ZWAgaWYgYSBlbWFpbCB2ZXJpZmljYXRpb24gdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuPGJyPjxicj5Gb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS48YnI+PGJyPkRlZmF1bHQgaXMgYHVuZGVmaW5lZGAuPGJyPlJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUFub255bW91c1VzZXJzIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXIgRW5hYmxlcyB0aGUgZGVmYXVsdCBleHByZXNzIGVycm9yIGhhbmRsZXIgZm9yIGFsbCBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbmNyeXB0aW9uS2V5IEtleSBmb3IgZW5jcnlwdGluZyB5b3VyIGZpbGVzXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuZm9yY2VQcml2YXRlVXNlcnMgU2V0IHRvIHRydWUgaWYgbmV3IHVzZXJzIHNob3VsZCBiZSBjcmVhdGVkIHdpdGhvdXQgcHVibGljIHJlYWQgYW5kIHdyaXRlIGFjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZXhwaXJlSW5hY3RpdmVTZXNzaW9ucyBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGZpbGVLZXkgS2V5IGZvciB5b3VyIGZpbGVzXG4gKiBAcHJvcGVydHkge0FkYXB0ZXI8RmlsZXNBZGFwdGVyPn0gZmlsZXNBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZmlsZXMgc3ViLXN5c3RlbVxuICogQHByb3BlcnR5IHtGaWxlVXBsb2FkT3B0aW9uc30gZmlsZVVwbG9hZCBPcHRpb25zIGZvciBmaWxlIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBncmFwaFFMUGF0aCBNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCwgZGVmYXVsdHMgdG8gL2dyYXBocWxcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBncmFwaFFMU2NoZW1hIEZ1bGwgcGF0aCB0byB5b3VyIEdyYXBoUUwgY3VzdG9tIHNjaGVtYS5ncmFwaHFsIGZpbGVcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBob3N0IFRoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wXG4gKiBAcHJvcGVydHkge0lkZW1wb3RlbmN5T3B0aW9uc30gaWRlbXBvdGVuY3lPcHRpb25zIE9wdGlvbnMgZm9yIHJlcXVlc3QgaWRlbXBvdGVuY3kgdG8gZGVkdXBsaWNhdGUgaWRlbnRpY2FsIHJlcXVlc3RzIHRoYXQgbWF5IGJlIGNhdXNlZCBieSBuZXR3b3JrIGlzc3Vlcy4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gKiBAcHJvcGVydHkge1N0cmluZ30gamF2YXNjcmlwdEtleSBLZXkgZm9yIHRoZSBKYXZhc2NyaXB0IFNES1xuICogQHByb3BlcnR5IHtCb29sZWFufSBqc29uTG9ncyBMb2cgYXMgc3RydWN0dXJlZCBKU09OIG9iamVjdHNcbiAqIEBwcm9wZXJ0eSB7TGl2ZVF1ZXJ5T3B0aW9uc30gbGl2ZVF1ZXJ5IHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSBjb25maWd1cmF0aW9uIG9iamVjdFxuICogQHByb3BlcnR5IHtMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zfSBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIExpdmUgcXVlcnkgc2VydmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAod2lsbCBzdGFydCB0aGUgbGl2ZVF1ZXJ5IHNlcnZlcilcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxMb2dnZXJBZGFwdGVyPn0gbG9nZ2VyQWRhcHRlciBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGxvZ2dpbmcgc3ViLXN5c3RlbVxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxvZ0xldmVsIFNldHMgdGhlIGxldmVsIGZvciBsb2dzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbG9nc0ZvbGRlciBGb2xkZXIgZm9yIHRoZSBsb2dzIChkZWZhdWx0cyB0byAnLi9sb2dzJyk7IHNldCB0byBudWxsIHRvIGRpc2FibGUgZmlsZSBiYXNlZCBsb2dnaW5nXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbWFzdGVyS2V5IFlvdXIgUGFyc2UgTWFzdGVyIEtleVxuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gbWFzdGVyS2V5SXBzIFJlc3RyaWN0IG1hc3RlcktleSB0byBiZSB1c2VkIGJ5IG9ubHkgdGhlc2UgaXBzLCBkZWZhdWx0cyB0byBbXSAoYWxsb3cgYWxsIGlwcylcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYXhMaW1pdCBNYXggdmFsdWUgZm9yIGxpbWl0IG9wdGlvbiBvbiBxdWVyaWVzLCBkZWZhdWx0cyB0byB1bmxpbWl0ZWRcbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfFN0cmluZ30gbWF4TG9nRmlsZXMgTWF4aW11bSBudW1iZXIgb2YgbG9ncyB0byBrZWVwLiBJZiBub3Qgc2V0LCBubyBsb2dzIHdpbGwgYmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2YgZmlsZXMgb3IgbnVtYmVyIG9mIGRheXMuIElmIHVzaW5nIGRheXMsIGFkZCAnZCcgYXMgdGhlIHN1ZmZpeC4gKGRlZmF1bHQ6IG51bGwpXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbWF4VXBsb2FkU2l6ZSBNYXggZmlsZSBzaXplIGZvciB1cGxvYWRzLCBkZWZhdWx0cyB0byAyMG1iXG4gKiBAcHJvcGVydHkge1VuaW9ufSBtaWRkbGV3YXJlIG1pZGRsZXdhcmUgZm9yIGV4cHJlc3Mgc2VydmVyLCBjYW4gYmUgc3RyaW5nIG9yIGZ1bmN0aW9uXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IG1vdW50R3JhcGhRTCBNb3VudHMgdGhlIEdyYXBoUUwgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBtb3VudFBhdGggTW91bnQgcGF0aCBmb3IgdGhlIHNlcnZlciwgZGVmYXVsdHMgdG8gL3BhcnNlXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IG1vdW50UGxheWdyb3VuZCBNb3VudHMgdGhlIEdyYXBoUUwgUGxheWdyb3VuZCAtIG5ldmVyIHVzZSB0aGlzIG9wdGlvbiBpbiBwcm9kdWN0aW9uXG4gKiBAcHJvcGVydHkge051bWJlcn0gb2JqZWN0SWRTaXplIFNldHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGdlbmVyYXRlZCBvYmplY3QgaWQncywgZGVmYXVsdCAxMFxuICogQHByb3BlcnR5IHtQYWdlc09wdGlvbnN9IHBhZ2VzIFRoZSBvcHRpb25zIGZvciBwYWdlcyBzdWNoIGFzIHBhc3N3b3JkIHJlc2V0IGFuZCBlbWFpbCB2ZXJpZmljYXRpb24uIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICogQHByb3BlcnR5IHtQYXNzd29yZFBvbGljeU9wdGlvbnN9IHBhc3N3b3JkUG9saWN5IFRoZSBwYXNzd29yZCBwb2xpY3kgZm9yIGVuZm9yY2luZyBwYXNzd29yZCByZWxhdGVkIHJ1bGVzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBsYXlncm91bmRQYXRoIE1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIFBsYXlncm91bmQsIGRlZmF1bHRzIHRvIC9wbGF5Z3JvdW5kXG4gKiBAcHJvcGVydHkge051bWJlcn0gcG9ydCBUaGUgcG9ydCB0byBydW4gdGhlIFBhcnNlU2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICogQHByb3BlcnR5IHtCb29sZWFufSBwcmVzZXJ2ZUZpbGVOYW1lIEVuYWJsZSAob3IgZGlzYWJsZSkgdGhlIGFkZGl0aW9uIG9mIGEgdW5pcXVlIGhhc2ggdG8gdGhlIGZpbGUgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbCBTZXQgdG8gYHRydWVgIHRvIHByZXZlbnQgYSB1c2VyIGZyb20gbG9nZ2luZyBpbiBpZiB0aGUgZW1haWwgaGFzIG5vdCB5ZXQgYmVlbiB2ZXJpZmllZCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uIGlzIHJlcXVpcmVkLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICogQHByb3BlcnR5IHtQcm90ZWN0ZWRGaWVsZHN9IHByb3RlY3RlZEZpZWxkcyBQcm90ZWN0ZWQgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQgd2l0aCBleHRyYSBzZWN1cml0eSB3aGVuIGZldGNoaW5nIGRldGFpbHMuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcHVibGljU2VydmVyVVJMIFB1YmxpYyBVUkwgdG8geW91ciBwYXJzZSBzZXJ2ZXIgd2l0aCBodHRwOi8vIG9yIGh0dHBzOi8vLlxuICogQHByb3BlcnR5IHtBbnl9IHB1c2ggQ29uZmlndXJhdGlvbiBmb3IgcHVzaCwgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jcHVzaC1ub3RpZmljYXRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcmVhZE9ubHlNYXN0ZXJLZXkgUmVhZC1vbmx5IGtleSwgd2hpY2ggaGFzIHRoZSBzYW1lIGNhcGFiaWxpdGllcyBhcyBNYXN0ZXJLZXkgd2l0aG91dCB3cml0ZXNcbiAqIEBwcm9wZXJ0eSB7UmVxdWVzdEtleXdvcmREZW55bGlzdFtdfSByZXF1ZXN0S2V5d29yZERlbnlsaXN0IEFuIGFycmF5IG9mIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBwcm9oaWJpdGVkIGluIGRhdGFiYXNlIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBvbmx5IGEga2V5IChge1wia2V5XCI6XCIuLi5cIn1gKSwgb25seSBhIHZhbHVlIChge1widmFsdWVcIjpcIi4uLlwifWApIG9yIGEga2V5LXZhbHVlIHBhaXIgKGB7XCJrZXlcIjpcIi4uLlwiLFwidmFsdWVcIjpcIi4uLlwifWApLiBUaGUgc3BlY2lmaWNhdGlvbiBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBib29sZWFuYCwgYG51bWVyaWNgIG9yIGBzdHJpbmdgLCB3aGVyZSBgc3RyaW5nYCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcmVnZXggbm90YXRpb24uIFJlcXVlc3QgZGF0YSBpcyBkZWVwLXNjYW5uZWQgZm9yIG1hdGNoaW5nIGRlZmluaXRpb25zIHRvIGRldGVjdCBhbHNvIGFueSBuZXN0ZWQgb2NjdXJyZW5jZXMuIERlZmF1bHRzIGFyZSBwYXR0ZXJucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBtYWxpY2lvdXMgcmVxdWVzdHMuIFNldHRpbmcgdGhpcyBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXR0ZXJucy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSByZXN0QVBJS2V5IEtleSBmb3IgUkVTVCBjYWxsc1xuICogQHByb3BlcnR5IHtCb29sZWFufSByZXZva2VTZXNzaW9uT25QYXNzd29yZFJlc2V0IFdoZW4gYSB1c2VyIGNoYW5nZXMgdGhlaXIgcGFzc3dvcmQsIGVpdGhlciB0aHJvdWdoIHRoZSByZXNldCBwYXNzd29yZCBlbWFpbCBvciB3aGlsZSBsb2dnZWQgaW4sIGFsbCBzZXNzaW9ucyBhcmUgcmV2b2tlZCBpZiB0aGlzIGlzIHRydWUuIFNldCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudCB0byByZXZva2Ugc2Vzc2lvbnMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHNjaGVkdWxlZFB1c2ggQ29uZmlndXJhdGlvbiBmb3IgcHVzaCBzY2hlZHVsaW5nLCBkZWZhdWx0cyB0byBmYWxzZS5cbiAqIEBwcm9wZXJ0eSB7U2NoZW1hT3B0aW9uc30gc2NoZW1hIERlZmluZWQgc2NoZW1hXG4gKiBAcHJvcGVydHkge1NlY3VyaXR5T3B0aW9uc30gc2VjdXJpdHkgVGhlIHNlY3VyaXR5IG9wdGlvbnMgdG8gaWRlbnRpZnkgYW5kIHJlcG9ydCB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gc2VydmVyQ2xvc2VDb21wbGV0ZSBDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgY2xvc2VkXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBzZXJ2ZXJTdGFydENvbXBsZXRlIENhbGxiYWNrIHdoZW4gc2VydmVyIGhhcyBzdGFydGVkXG4gKiBAcHJvcGVydHkge1N0cmluZ30gc2VydmVyVVJMIFVSTCB0byB5b3VyIHBhcnNlIHNlcnZlciB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8uXG4gKiBAcHJvcGVydHkge051bWJlcn0gc2Vzc2lvbkxlbmd0aCBTZXNzaW9uIGR1cmF0aW9uLCBpbiBzZWNvbmRzLCBkZWZhdWx0cyB0byAxIHllYXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gc2lsZW50IERpc2FibGVzIGNvbnNvbGUgb3V0cHV0XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHN0YXJ0TGl2ZVF1ZXJ5U2VydmVyIFN0YXJ0cyB0aGUgbGl2ZVF1ZXJ5IHNlcnZlclxuICogQHByb3BlcnR5IHtBbnl9IHRydXN0UHJveHkgVGhlIHRydXN0IHByb3h5IHNldHRpbmdzLiBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2V0dXAgb2YgdGhlIHJldmVyc2UgcHJveHksIHNpbmNlIHRoaXMgc2V0dGluZyB3aWxsIHRydXN0IHZhbHVlcyBwcm92aWRlZCBpbiB0aGUgUGFyc2UgU2VydmVyIEFQSSByZXF1ZXN0LiBTZWUgdGhlIDxhIGhyZWY9XCJodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vZ3VpZGUvYmVoaW5kLXByb3hpZXMuaHRtbFwiPmV4cHJlc3MgdHJ1c3QgcHJveHkgc2V0dGluZ3M8L2E+IGRvY3VtZW50YXRpb24uIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gKiBAcHJvcGVydHkge1N0cmluZ1tdfSB1c2VyU2Vuc2l0aXZlRmllbGRzIFBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uIGZpZWxkcyBpbiB0aGUgdXNlciB0YWJsZSB0aGUgc2hvdWxkIGJlIHJlbW92ZWQgZm9yIG5vbi1hdXRob3JpemVkIHVzZXJzLiBEZXByZWNhdGVkIEBzZWUgcHJvdGVjdGVkRmllbGRzXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHZlcmJvc2UgU2V0IHRoZSBsb2dnaW5nIHRvIHZlcmJvc2VcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gdmVyaWZ5VXNlckVtYWlscyBTZXQgdG8gYHRydWVgIHRvIHJlcXVpcmUgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIGVtYWlsIGFkZHJlc3MgdG8gY29tcGxldGUgdGhlIHNpZ24tdXAgcHJvY2Vzcy48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB3ZWJob29rS2V5IEtleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxsc1xuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBTZWN1cml0eU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Q2hlY2tHcm91cFtdfSBjaGVja0dyb3VwcyBUaGUgc2VjdXJpdHkgY2hlY2sgZ3JvdXBzIHRvIHJ1bi4gVGhpcyBhbGxvd3MgdG8gYWRkIGN1c3RvbSBzZWN1cml0eSBjaGVja3Mgb3Igb3ZlcnJpZGUgZXhpc3Rpbmcgb25lcy4gRGVmYXVsdCBhcmUgdGhlIGdyb3VwcyBkZWZpbmVkIGluIGBDaGVja0dyb3Vwcy5qc2AuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUNoZWNrIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBjaGVjayBmb3Igd2VhayBzZWN1cml0eSBzZXR0aW5ncy5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlQ2hlY2tMb2cgSXMgdHJ1ZSBpZiB0aGUgc2VjdXJpdHkgY2hlY2sgcmVwb3J0IHNob3VsZCBiZSB3cml0dGVuIHRvIGxvZ3MuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCB0ZW1wb3JhcmlseSB0byBub3QgZXhwb3NlIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MgaW4gbG9ncy5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFnZXNPcHRpb25zXG4gKiBAcHJvcGVydHkge1BhZ2VzUm91dGVbXX0gY3VzdG9tUm91dGVzIFRoZSBjdXN0b20gcm91dGVzLlxuICogQHByb3BlcnR5IHtQYWdlc0N1c3RvbVVybHNPcHRpb25zfSBjdXN0b21VcmxzIFRoZSBVUkxzIHRvIHRoZSBjdXN0b20gcGFnZXMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUxvY2FsaXphdGlvbiBJcyB0cnVlIGlmIHBhZ2VzIHNob3VsZCBiZSBsb2NhbGl6ZWQ7IHRoaXMgaGFzIG5vIGVmZmVjdCBvbiBjdXN0b20gcGFnZSByZWRpcmVjdHMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZVJvdXRlciBJcyB0cnVlIGlmIHRoZSBwYWdlcyByb3V0ZXIgc2hvdWxkIGJlIGVuYWJsZWQ7IHRoaXMgaXMgcmVxdWlyZWQgZm9yIGFueSBvZiB0aGUgcGFnZXMgb3B0aW9ucyB0byB0YWtlIGVmZmVjdC4gQ2F1dGlvbiwgdGhpcyBpcyBhbiBleHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHByb2R1Y3Rpb24uXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGZvcmNlUmVkaXJlY3QgSXMgdHJ1ZSBpZiByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZWRpcmVjdHMgYW5kIG5ldmVyIGNvbnRlbnQsIGZhbHNlIGlmIHRoZSByZXNwb25zZSB0eXBlIHNob3VsZCBkZXBlbmQgb24gdGhlIHJlcXVlc3QgdHlwZSAoR0VUIHJlcXVlc3QgLT4gY29udGVudCByZXNwb25zZTsgUE9TVCByZXF1ZXN0IC0+IHJlZGlyZWN0IHJlc3BvbnNlKS5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsb2NhbGl6YXRpb25GYWxsYmFja0xvY2FsZSBUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBsb2NhbGl6YXRpb25Kc29uUGF0aCBUaGUgcGF0aCB0byB0aGUgSlNPTiBmaWxlIGZvciBsb2NhbGl6YXRpb247IHRoZSB0cmFuc2xhdGlvbnMgd2lsbCBiZSB1c2VkIHRvIGZpbGwgdGVtcGxhdGUgcGxhY2Vob2xkZXJzIGFjY29yZGluZyB0byB0aGUgbG9jYWxlLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhZ2VzRW5kcG9pbnQgVGhlIEFQSSBlbmRwb2ludCBmb3IgdGhlIHBhZ2VzLiBEZWZhdWx0IGlzICdhcHBzJy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYWdlc1BhdGggVGhlIHBhdGggdG8gdGhlIHBhZ2VzIGRpcmVjdG9yeTsgdGhpcyBhbHNvIGRlZmluZXMgd2hlcmUgdGhlIHN0YXRpYyBlbmRwb2ludCAnL2FwcHMnIHBvaW50cyB0by4gRGVmYXVsdCBpcyB0aGUgJy4vcHVibGljLycgZGlyZWN0b3J5LlxuICogQHByb3BlcnR5IHtPYmplY3R9IHBsYWNlaG9sZGVycyBUaGUgcGxhY2Vob2xkZXIga2V5cyBhbmQgdmFsdWVzIHdoaWNoIHdpbGwgYmUgZmlsbGVkIGluIHBhZ2VzOyB0aGlzIGNhbiBiZSBhIHNpbXBsZSBvYmplY3Qgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFnZXNSb3V0ZVxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgcm91dGUgaGFuZGxlciB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IG1ldGhvZCBUaGUgcm91dGUgbWV0aG9kLCBlLmcuICdHRVQnIG9yICdQT1NUJy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXRoIFRoZSByb3V0ZSBwYXRoLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBQYWdlc0N1c3RvbVVybHNPcHRpb25zXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZW1haWxWZXJpZmljYXRpb25MaW5rRXhwaXJlZCBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgZXhwaXJlZC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvbkxpbmtJbnZhbGlkIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBpbnZhbGlkLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IGVtYWlsVmVyaWZpY2F0aW9uU2VuZEZhaWwgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIHNlbmQgZmFpbC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvblNlbmRTdWNjZXNzIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gcmVzZW5kIGxpbmsgLT4gc3VjY2Vzcy5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBlbWFpbFZlcmlmaWNhdGlvblN1Y2Nlc3MgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBzdWNjZXNzLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhc3N3b3JkUmVzZXQgVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0LlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhc3N3b3JkUmVzZXRMaW5rSW52YWxpZCBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gbGluayBpbnZhbGlkLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IHBhc3N3b3JkUmVzZXRTdWNjZXNzIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBzdWNjZXNzLlxuICovXG5cbi8qKlxuICogQGludGVyZmFjZSBDdXN0b21QYWdlc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjaG9vc2VQYXNzd29yZCBjaG9vc2UgcGFzc3dvcmQgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gZXhwaXJlZFZlcmlmaWNhdGlvbkxpbmsgZXhwaXJlZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBpbnZhbGlkTGluayBpbnZhbGlkIGxpbmsgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gaW52YWxpZFBhc3N3b3JkUmVzZXRMaW5rIGludmFsaWQgcGFzc3dvcmQgcmVzZXQgbGluayBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBpbnZhbGlkVmVyaWZpY2F0aW9uTGluayBpbnZhbGlkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGxpbmtTZW5kRmFpbCB2ZXJpZmljYXRpb24gbGluayBzZW5kIGZhaWwgcGFnZSBwYXRoXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbGlua1NlbmRTdWNjZXNzIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgc3VjY2VzcyBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwYXJzZUZyYW1lVVJMIGZvciBtYXNraW5nIHVzZXItZmFjaW5nIHBhZ2VzXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGFzc3dvcmRSZXNldFN1Y2Nlc3MgcGFzc3dvcmQgcmVzZXQgc3VjY2VzcyBwYWdlIHBhdGhcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB2ZXJpZnlFbWFpbFN1Y2Nlc3MgdmVyaWZ5IGVtYWlsIHN1Y2Nlc3MgcGFnZSBwYXRoXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIExpdmVRdWVyeU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nW119IGNsYXNzTmFtZXMgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNsYXNzTmFtZXNcbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxQdWJTdWJBZGFwdGVyPn0gcHViU3ViQWRhcHRlciBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXJcbiAqIEBwcm9wZXJ0eSB7QW55fSByZWRpc09wdGlvbnMgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IHJlZGlzVVJMIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTFxuICogQHByb3BlcnR5IHtBZGFwdGVyPFdTU0FkYXB0ZXI+fSB3c3NBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIExpdmVRdWVyeVNlcnZlck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhcHBJZCBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIGFwcElkIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgYXBwSWQuXG4gKiBAcHJvcGVydHkge051bWJlcn0gY2FjaGVUaW1lb3V0IE51bWJlciBpbiBtaWxsaXNlY29uZHMuIFdoZW4gY2xpZW50cyBwcm92aWRlIHRoZSBzZXNzaW9uVG9rZW4gdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIGZldGNoIGl0cyBQYXJzZVVzZXIncyBvYmplY3RJZCBmcm9tIHBhcnNlIHNlcnZlciBhbmQgc3RvcmUgaXQgaW4gdGhlIGNhY2hlLiBUaGUgdmFsdWUgZGVmaW5lcyB0aGUgZHVyYXRpb24gb2YgdGhlIGNhY2hlLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLCBkZWZhdWx0cyB0byA1ICogMTAwMCBtcyAoNSBzZWNvbmRzKS5cbiAqIEBwcm9wZXJ0eSB7QW55fSBrZXlQYWlycyBBIEpTT04gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGEgd2hpdGVsaXN0IG9mIGtleXMuIEl0IGlzIHVzZWQgZm9yIHZhbGlkYXRpbmcgY2xpZW50cyB3aGVuIHRoZXkgdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gbG9nTGV2ZWwgVGhpcyBzdHJpbmcgZGVmaW5lcyB0aGUgbG9nIGxldmVsIG9mIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBXZSBzdXBwb3J0IFZFUkJPU0UsIElORk8sIEVSUk9SLCBOT05FLCBkZWZhdWx0cyB0byBJTkZPLlxuICogQHByb3BlcnR5IHtTdHJpbmd9IG1hc3RlcktleSBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIG1hc3RlcktleSBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIG1hc3RlcktleS5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBwb3J0IFRoZSBwb3J0IHRvIHJ1biB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgZGVmYXVsdHMgdG8gMTMzNy5cbiAqIEBwcm9wZXJ0eSB7QWRhcHRlcjxQdWJTdWJBZGFwdGVyPn0gcHViU3ViQWRhcHRlciBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXJcbiAqIEBwcm9wZXJ0eSB7QW55fSByZWRpc09wdGlvbnMgcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzT3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmd9IHJlZGlzVVJMIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc1VSTFxuICogQHByb3BlcnR5IHtTdHJpbmd9IHNlcnZlclVSTCBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIHNlcnZlclVSTCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIHNlcnZlclVSTC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB3ZWJzb2NrZXRUaW1lb3V0IE51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLlxuICogQHByb3BlcnR5IHtBZGFwdGVyPFdTU0FkYXB0ZXI+fSB3c3NBZGFwdGVyIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIElkZW1wb3RlbmN5T3B0aW9uc1xuICogQHByb3BlcnR5IHtTdHJpbmdbXX0gcGF0aHMgQW4gYXJyYXkgb2YgcGF0aHMgZm9yIHdoaWNoIHRoZSBmZWF0dXJlIHNob3VsZCBiZSBlbmFibGVkLiBUaGUgbW91bnQgcGF0aCBtdXN0IG5vdCBiZSBpbmNsdWRlZCwgZm9yIGV4YW1wbGUgaW5zdGVhZCBvZiBgL3BhcnNlL2Z1bmN0aW9ucy9teUZ1bmN0aW9uYCBzcGVjaWZpeSBgZnVuY3Rpb25zL215RnVuY3Rpb25gLiBUaGUgZW50cmllcyBhcmUgaW50ZXJwcmV0ZWQgYXMgcmVndWxhciBleHByZXNzaW9uLCBmb3IgZXhhbXBsZSBgZnVuY3Rpb25zLy4qYCBtYXRjaGVzIGFsbCBmdW5jdGlvbnMsIGBqb2JzLy4qYCBtYXRjaGVzIGFsbCBqb2JzLCBgY2xhc3Nlcy8uKmAgbWF0Y2hlcyBhbGwgY2xhc3NlcywgYC4qYCBtYXRjaGVzIGFsbCBwYXRocy5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0dGwgVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggYSByZXF1ZXN0IHJlY29yZCBpcyBkaXNjYXJkZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIDMwMHMuXG4gKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIEFjY291bnRMb2Nrb3V0T3B0aW9uc1xuICogQHByb3BlcnR5IHtOdW1iZXJ9IGR1cmF0aW9uIFNldCB0aGUgZHVyYXRpb24gaW4gbWludXRlcyB0aGF0IGEgbG9ja2VkLW91dCBhY2NvdW50IHJlbWFpbnMgbG9ja2VkIG91dCBiZWZvcmUgYXV0b21hdGljYWxseSBiZWNvbWluZyB1bmxvY2tlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHRocmVzaG9sZCBTZXQgdGhlIG51bWJlciBvZiBmYWlsZWQgc2lnbi1pbiBhdHRlbXB0cyB0aGF0IHdpbGwgY2F1c2UgYSB1c2VyIGFjY291bnQgdG8gYmUgbG9ja2VkLiBJZiB0aGUgYWNjb3VudCBpcyBsb2NrZWQuIFRoZSBhY2NvdW50IHdpbGwgdW5sb2NrIGFmdGVyIHRoZSBkdXJhdGlvbiBzZXQgaW4gdGhlIGBkdXJhdGlvbmAgb3B0aW9uIGhhcyBwYXNzZWQgYW5kIG5vIGZ1cnRoZXIgbG9naW4gYXR0ZW1wdHMgaGF2ZSBiZWVuIG1hZGUuPGJyPjxicj5WYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMGAuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IHVubG9ja09uUGFzc3dvcmRSZXNldCBTZXQgdG8gYHRydWVgICBpZiB0aGUgYWNjb3VudCBzaG91bGQgYmUgdW5sb2NrZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIHBhc3N3b3JkIHJlc2V0Ljxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLjxicj5SZXF1aXJlcyBvcHRpb25zIGBkdXJhdGlvbmAgYW5kIGB0aHJlc2hvbGRgIHRvIGJlIHNldC5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFzc3dvcmRQb2xpY3lPcHRpb25zXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGRvTm90QWxsb3dVc2VybmFtZSBTZXQgdG8gYHRydWVgIHRvIGRpc2FsbG93IHRoZSB1c2VybmFtZSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZC48YnI+PGJyPkRlZmF1bHQgaXMgYGZhbHNlYC5cbiAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYXhQYXNzd29yZEFnZSBTZXQgdGhlIG51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIGEgcGFzc3dvcmQgZXhwaXJlcy4gTG9naW4gYXR0ZW1wdHMgZmFpbCBpZiB0aGUgdXNlciBkb2VzIG5vdCByZXNldCB0aGUgcGFzc3dvcmQgYmVmb3JlIGV4cGlyYXRpb24uXG4gKiBAcHJvcGVydHkge051bWJlcn0gbWF4UGFzc3dvcmRIaXN0b3J5IFNldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC48YnI+PGJyPlZhbGlkIHZhbHVlcyBhcmUgPj0gYDBgIGFuZCA8PSBgMjBgLjxicj5EZWZhdWx0IGlzIGAwYC5cbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gcmVzZXRUb2tlblJldXNlSWZWYWxpZCBTZXQgdG8gYHRydWVgIGlmIGEgcGFzc3dvcmQgcmVzZXQgdG9rZW4gc2hvdWxkIGJlIHJldXNlZCBpbiBjYXNlIGFub3RoZXIgdG9rZW4gaXMgcmVxdWVzdGVkIGJ1dCB0aGVyZSBpcyBhIHRva2VuIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGkuZS4gaGFzIG5vdCBleHBpcmVkLiBUaGlzIGF2b2lkcyB0aGUgb2Z0ZW4gb2JzZXJ2ZWQgaXNzdWUgdGhhdCBhIHVzZXIgcmVxdWVzdHMgbXVsdGlwbGUgZW1haWxzIGFuZCBkb2VzIG5vdCBrbm93IHdoaWNoIGxpbmsgY29udGFpbnMgYSB2YWxpZCB0b2tlbiBiZWNhdXNlIGVhY2ggbmV3bHkgZ2VuZXJhdGVkIHRva2VuIHdvdWxkIGludmFsaWRhdGUgdGhlIHByZXZpb3VzIHRva2VuLjxicj48YnI+RGVmYXVsdCBpcyBgZmFsc2VgLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHJlc2V0VG9rZW5WYWxpZGl0eUR1cmF0aW9uIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIHBhc3N3b3JkIHJlc2V0IHRva2VuIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggdGhlIHRva2VuIGV4cGlyZXMuIFRoZSB0b2tlbiBpcyB1c2VkIGluIHRoZSBsaW5rIHRoYXQgaXMgc2V0IGluIHRoZSBlbWFpbC4gQWZ0ZXIgdGhlIHRva2VuIGV4cGlyZXMsIHRoZSBsaW5rIGJlY29tZXMgaW52YWxpZCBhbmQgYSBuZXcgbGluayBoYXMgdG8gYmUgc2VudC4gSWYgdGhlIG9wdGlvbiBpcyBub3Qgc2V0IG9yIHNldCB0byBgdW5kZWZpbmVkYCwgdGhlbiB0aGUgdG9rZW4gbmV2ZXIgZXhwaXJlcy48YnI+PGJyPkZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLjxicj48YnI+RGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB2YWxpZGF0aW9uRXJyb3IgU2V0IHRoZSBlcnJvciBtZXNzYWdlIHRvIGJlIHNlbnQuPGJyPjxicj5EZWZhdWx0IGlzIGBQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHRoZSBQYXNzd29yZCBQb2xpY3kgcmVxdWlyZW1lbnRzLmBcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHZhbGlkYXRvckNhbGxiYWNrIFNldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuPGJyPjxicj5JZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvclBhdHRlcm5gLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuXG4gKiBAcHJvcGVydHkge1N0cmluZ30gdmFsaWRhdG9yUGF0dGVybiBTZXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0aW9uIHBhdHRlcm4gYSBwYXNzd29yZCBtdXN0IG1hdGNoIHRvIGJlIGFjY2VwdGVkLjxicj48YnI+SWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JDYWxsYmFja2AsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRmlsZVVwbG9hZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlRm9yQW5vbnltb3VzVXNlciBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbm9ueW1vdXMgdXNlcnMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnMuXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZUZvclB1YmxpYyBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhbnlvbmUsIHJlZ2FyZGxlc3Mgb2YgdXNlciBhdXRoZW50aWNhdGlvbi5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRGF0YWJhc2VPcHRpb25zXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVuYWJsZVNjaGVtYUhvb2tzIEVuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgQXV0aEFkYXB0ZXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZW5hYmxlZCBJcyBgdHJ1ZWAgaWYgdGhlIGF1dGggYWRhcHRlciBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuIl19
@@ -17,4 +17,4 @@ var _PubSubAdapter = require("../Adapters/PubSub/PubSubAdapter");
17
17
  var _WSSAdapter = require("../Adapters/WebSocketServer/WSSAdapter");
18
18
 
19
19
  var _CheckGroup = require("../Security/CheckGroup");
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IHsgQW5hbHl0aWNzQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0FuYWx5dGljcy9BbmFseXRpY3NBZGFwdGVyJztcbmltcG9ydCB7IEZpbGVzQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0ZpbGVzL0ZpbGVzQWRhcHRlcic7XG5pbXBvcnQgeyBMb2dnZXJBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvTG9nZ2VyL0xvZ2dlckFkYXB0ZXInO1xuaW1wb3J0IHsgU3RvcmFnZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9TdG9yYWdlL1N0b3JhZ2VBZGFwdGVyJztcbmltcG9ydCB7IENhY2hlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0NhY2hlL0NhY2hlQWRhcHRlcic7XG5pbXBvcnQgeyBNYWlsQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0VtYWlsL01haWxBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBXU1NBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvV2ViU29ja2V0U2VydmVyL1dTU0FkYXB0ZXInO1xuaW1wb3J0IHsgQ2hlY2tHcm91cCB9IGZyb20gJy4uL1NlY3VyaXR5L0NoZWNrR3JvdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYU9wdGlvbnMge1xuICAvKiBSZXN0IHJlcHJlc2VudGF0aW9uIG9uIFBhcnNlLlNjaGVtYSBodHRwczovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcmVzdC9ndWlkZS8jYWRkaW5nLWEtc2NoZW1hXG4gIDpERUZBVUxUOiBbXSAqL1xuICBkZWZpbml0aW9uczogYW55O1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZXhpdCBpZiBzY2hlbWEgdXBkYXRlIGZhaWwuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBzdHJpY3Q6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZGVsZXRlIGFueSBmaWVsZHMgbm90IGRlZmluZWQgaW4gYSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGR1cmluZyBkZXZlbG9wbWVudC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGRlbGV0ZUV4dHJhRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIHJlY3JlYXRlIGFueSBmaWVsZHMgdGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gdGhlIGN1cnJlbnQgZGF0YWJhc2Ugc2NoZW1hIGFuZCB0aGVzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGR1cmluZyBkZXZlbG9wbWVudC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHJlY3JlYXRlTW9kaWZpZWRGaWVsZHM6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbG9ja1NjaGVtYXM6ID9ib29sZWFuO1xuICAvKiBFeGVjdXRlIGEgY2FsbGJhY2sgYmVmb3JlIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGJlZm9yZU1pZ3JhdGlvbjogPygpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAvKiBFeGVjdXRlIGEgY2FsbGJhY2sgYWZ0ZXIgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy4gKi9cbiAgYWZ0ZXJNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbn1cblxudHlwZSBBZGFwdGVyPFQ+ID0gc3RyaW5nIHwgYW55IHwgVDtcbnR5cGUgTnVtYmVyT3JCb29sZWFuID0gbnVtYmVyIHwgYm9vbGVhbjtcbnR5cGUgTnVtYmVyT3JTdHJpbmcgPSBudW1iZXIgfCBzdHJpbmc7XG50eXBlIFByb3RlY3RlZEZpZWxkcyA9IGFueTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6IHN0cmluZztcbiAgLyogVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1VSTCAqL1xuICBzZXJ2ZXJVUkw6IHN0cmluZztcbiAgLyogUmVzdHJpY3QgbWFzdGVyS2V5IHRvIGJlIHVzZWQgYnkgb25seSB0aGVzZSBpcHMsIGRlZmF1bHRzIHRvIFtdIChhbGxvdyBhbGwgaXBzKVxuICA6REVGQVVMVDogW10gKi9cbiAgbWFzdGVyS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyB0aGUgYXBwIG5hbWUgKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6ID8oc3RyaW5nW10pO1xuICAvKiBTZXRzIHRoZSBvcmlnaW4gdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luICovXG4gIGFsbG93T3JpZ2luOiA/c3RyaW5nO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGFuYWx5dGljcyAqL1xuICBhbmFseXRpY3NBZGFwdGVyOiA/QWRhcHRlcjxBbmFseXRpY3NBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBmaWxlcyBzdWItc3lzdGVtICovXG4gIGZpbGVzQWRhcHRlcjogP0FkYXB0ZXI8RmlsZXNBZGFwdGVyPjtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCwgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jcHVzaC1ub3RpZmljYXRpb25zICovXG4gIHB1c2g6ID9hbnk7XG4gIC8qIENvbmZpZ3VyYXRpb24gZm9yIHB1c2ggc2NoZWR1bGluZywgZGVmYXVsdHMgdG8gZmFsc2UuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBzY2hlZHVsZWRQdXNoOiA/Ym9vbGVhbjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBsb2dnaW5nIHN1Yi1zeXN0ZW0gKi9cbiAgbG9nZ2VyQWRhcHRlcjogP0FkYXB0ZXI8TG9nZ2VyQWRhcHRlcj47XG4gIC8qIExvZyBhcyBzdHJ1Y3R1cmVkIEpTT04gb2JqZWN0c1xuICA6RU5WOiBKU09OX0xPR1MgKi9cbiAganNvbkxvZ3M6ID9ib29sZWFuO1xuICAvKiBGb2xkZXIgZm9yIHRoZSBsb2dzIChkZWZhdWx0cyB0byAnLi9sb2dzJyk7IHNldCB0byBudWxsIHRvIGRpc2FibGUgZmlsZSBiYXNlZCBsb2dnaW5nXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9MT0dTX0ZPTERFUlxuICA6REVGQVVMVDogLi9sb2dzICovXG4gIGxvZ3NGb2xkZXI6ID9zdHJpbmc7XG4gIC8qIFNldCB0aGUgbG9nZ2luZyB0byB2ZXJib3NlXG4gIDpFTlY6IFZFUkJPU0UgKi9cbiAgdmVyYm9zZTogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIGxldmVsIGZvciBsb2dzICovXG4gIGxvZ0xldmVsOiA/c3RyaW5nO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiBsb2dzIHRvIGtlZXAuIElmIG5vdCBzZXQsIG5vIGxvZ3Mgd2lsbCBiZSByZW1vdmVkLiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBmaWxlcyBvciBudW1iZXIgb2YgZGF5cy4gSWYgdXNpbmcgZGF5cywgYWRkICdkJyBhcyB0aGUgc3VmZml4LiAoZGVmYXVsdDogbnVsbCkgKi9cbiAgbWF4TG9nRmlsZXM6ID9OdW1iZXJPclN0cmluZztcbiAgLyogRGlzYWJsZXMgY29uc29sZSBvdXRwdXRcbiAgOkVOVjogU0lMRU5UICovXG4gIHNpbGVudDogP2Jvb2xlYW47XG4gIC8qIFRoZSBmdWxsIFVSSSB0byB5b3VyIGRhdGFiYXNlLiBTdXBwb3J0ZWQgZGF0YWJhc2VzIGFyZSBtb25nb2RiIG9yIHBvc3RncmVzLlxuICA6REVGQVVMVDogbW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNy9wYXJzZSAqL1xuICBkYXRhYmFzZVVSSTogc3RyaW5nO1xuICAvKiBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRhdGFiYXNlIGNsaWVudFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfREFUQUJBU0VfT1BUSU9OUyAqL1xuICBkYXRhYmFzZU9wdGlvbnM6ID9EYXRhYmFzZU9wdGlvbnM7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZGF0YWJhc2U7IGFueSBvcHRpb25zIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGRhdGFiYXNlIGNsaWVudC4gKi9cbiAgZGF0YWJhc2VBZGFwdGVyOiA/QWRhcHRlcjxTdG9yYWdlQWRhcHRlcj47XG4gIC8qIEZ1bGwgcGF0aCB0byB5b3VyIGNsb3VkIGNvZGUgbWFpbi5qcyAqL1xuICBjbG91ZDogP3N0cmluZztcbiAgLyogQSBjb2xsZWN0aW9uIHByZWZpeCBmb3IgdGhlIGNsYXNzZXNcbiAgOkRFRkFVTFQ6ICcnICovXG4gIGNvbGxlY3Rpb25QcmVmaXg6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgaU9TLCBNYWNPUywgdHZPUyBjbGllbnRzICovXG4gIGNsaWVudEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciB0aGUgSmF2YXNjcmlwdCBTREsgKi9cbiAgamF2YXNjcmlwdEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBVbml0eSBhbmQgLk5ldCBTREsgKi9cbiAgZG90TmV0S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIGVuY3J5cHRpbmcgeW91ciBmaWxlc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRU5DUllQVElPTl9LRVkgKi9cbiAgZW5jcnlwdGlvbktleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBSRVNUIGNhbGxzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVNUX0FQSV9LRVkgKi9cbiAgcmVzdEFQSUtleTogP3N0cmluZztcbiAgLyogUmVhZC1vbmx5IGtleSwgd2hpY2ggaGFzIHRoZSBzYW1lIGNhcGFiaWxpdGllcyBhcyBNYXN0ZXJLZXkgd2l0aG91dCB3cml0ZXMgKi9cbiAgcmVhZE9ubHlNYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscyAqL1xuICB3ZWJob29rS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHlvdXIgZmlsZXMgKi9cbiAgZmlsZUtleTogP3N0cmluZztcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJFU0VSVkVfRklMRV9OQU1FXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmVzZXJ2ZUZpbGVOYW1lOiA/Ym9vbGVhbjtcbiAgLyogUGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gZmllbGRzIGluIHRoZSB1c2VyIHRhYmxlIHRoZSBzaG91bGQgYmUgcmVtb3ZlZCBmb3Igbm9uLWF1dGhvcml6ZWQgdXNlcnMuIERlcHJlY2F0ZWQgQHNlZSBwcm90ZWN0ZWRGaWVsZHMgKi9cbiAgdXNlclNlbnNpdGl2ZUZpZWxkczogPyhzdHJpbmdbXSk7XG4gIC8qIFByb3RlY3RlZCBmaWVsZHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCB3aXRoIGV4dHJhIHNlY3VyaXR5IHdoZW4gZmV0Y2hpbmcgZGV0YWlscy5cbiAgOkRFRkFVTFQ6IHtcIl9Vc2VyXCI6IHtcIipcIjogW1wiZW1haWxcIl19fSAqL1xuICBwcm90ZWN0ZWRGaWVsZHM6ID9Qcm90ZWN0ZWRGaWVsZHM7XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSU1xuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVBbm9ueW1vdXNVc2VyczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byB0cnVlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9BTExPV19DTElFTlRfQ0xBU1NfQ1JFQVRJT05cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uOiA/Ym9vbGVhbjtcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSBjdXN0b20gb2JqZWN0SWRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0NVU1RPTV9PQkpFQ1RfSURcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93Q3VzdG9tT2JqZWN0SWQ6ID9ib29sZWFuO1xuICAvKiBDb25maWd1cmF0aW9uIGZvciB5b3VyIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVycywgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jb2F1dGgtYW5kLTNyZC1wYXJ0eS1hdXRoZW50aWNhdGlvblxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQVVUSF9QUk9WSURFUlMgKi9cbiAgYXV0aDogPyhBdXRoQWRhcHRlcltdKTtcbiAgLyogTWF4IGZpbGUgc2l6ZSBmb3IgdXBsb2FkcywgZGVmYXVsdHMgdG8gMjBtYlxuICA6REVGQVVMVDogMjBtYiAqL1xuICBtYXhVcGxvYWRTaXplOiA/c3RyaW5nO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIHJlcXVpcmUgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIGVtYWlsIGFkZHJlc3MgdG8gY29tcGxldGUgdGhlIHNpZ24tdXAgcHJvY2Vzcy5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdmVyaWZ5VXNlckVtYWlsczogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBhIHVzZXIgZnJvbSBsb2dnaW5nIGluIGlmIHRoZSBlbWFpbCBoYXMgbm90IHlldCBiZWVuIHZlcmlmaWVkIGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbDogP2Jvb2xlYW47XG4gIC8qIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuXG4gIDxicj48YnI+XG4gIEZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB1bmRlZmluZWRgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gICovXG4gIGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgZW1haWwgdmVyaWZpY2F0aW9uIHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkOiA/Ym9vbGVhbjtcbiAgLyogVGhlIGFjY291bnQgbG9ja291dCBwb2xpY3kgZm9yIGZhaWxlZCBsb2dpbiBhdHRlbXB0cy4gKi9cbiAgYWNjb3VudExvY2tvdXQ6ID9BY2NvdW50TG9ja291dE9wdGlvbnM7XG4gIC8qIFRoZSBwYXNzd29yZCBwb2xpY3kgZm9yIGVuZm9yY2luZyBwYXNzd29yZCByZWxhdGVkIHJ1bGVzLiAqL1xuICBwYXNzd29yZFBvbGljeTogP1Bhc3N3b3JkUG9saWN5T3B0aW9ucztcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZSAqL1xuICBjYWNoZUFkYXB0ZXI6ID9BZGFwdGVyPENhY2hlQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciBlbWFpbCBzZW5kaW5nICovXG4gIGVtYWlsQWRhcHRlcjogP0FkYXB0ZXI8TWFpbEFkYXB0ZXI+O1xuICAvKiBQdWJsaWMgVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy5cbiAgOkVOVjogUEFSU0VfUFVCTElDX1NFUlZFUl9VUkwgKi9cbiAgcHVibGljU2VydmVyVVJMOiA/c3RyaW5nO1xuICAvKiBUaGUgb3B0aW9ucyBmb3IgcGFnZXMgc3VjaCBhcyBwYXNzd29yZCByZXNldCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uLiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBhZ2VzOiA/UGFnZXNPcHRpb25zO1xuICAvKiBjdXN0b20gcGFnZXMgZm9yIHBhc3N3b3JkIHZhbGlkYXRpb24gYW5kIHJlc2V0XG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21QYWdlczogP0N1c3RvbVBhZ2VzT3B0aW9ucztcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNvbmZpZ3VyYXRpb24gb2JqZWN0ICovXG4gIGxpdmVRdWVyeTogP0xpdmVRdWVyeU9wdGlvbnM7XG4gIC8qIFNlc3Npb24gZHVyYXRpb24sIGluIHNlY29uZHMsIGRlZmF1bHRzIHRvIDEgeWVhclxuICA6REVGQVVMVDogMzE1MzYwMDAgKi9cbiAgc2Vzc2lvbkxlbmd0aDogP251bWJlcjtcbiAgLyogRGVmYXVsdCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIGAxMDBgLlxuICA6REVGQVVMVDogMTAwICovXG4gIGRlZmF1bHRMaW1pdDogP251bWJlcjtcbiAgLyogTWF4IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gdW5saW1pdGVkICovXG4gIG1heExpbWl0OiA/bnVtYmVyO1xuICAvKiBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiA/Ym9vbGVhbjtcbiAgLyogV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIFRUTCBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSAoaW4gbXMpLCBkZWZhdWx0cyB0byA1MDAwICg1IHNlY29uZHMpXG4gIDpERUZBVUxUOiA1MDAwICovXG4gIGNhY2hlVFRMOiA/bnVtYmVyO1xuICAvKiBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gIDpERUZBVUxUOiAxMDAwMCAqL1xuICBjYWNoZU1heFNpemU6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+PGJyPlxuICBJZiBzZXQgdG8gYGZhbHNlYCB0aGVuIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBhcmUgZXhlY3V0ZWQgYXMgSFRUUCByZXF1ZXN0cyBzZW50IHRvIFBhcnNlIFNlcnZlciB2aWEgdGhlIGBzZXJ2ZXJVUkxgLiBGb3IgZXhhbXBsZSwgYSBgUGFyc2UuUXVlcnlgIGluIENsb3VkIENvZGUgaXMgY2FsbGluZyBQYXJzZSBTZXJ2ZXIgdmlhIGEgSFRUUCByZXF1ZXN0LiBUaGUgc2VydmVyIGlzIGVzc2VudGlhbGx5IG1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBpdHNlbGYsIHVubmVjZXNzYXJpbHkgdXNpbmcgbmV0d29yayByZXNvdXJjZXMgc3VjaCBhcyBuZXR3b3JrIHBvcnRzLlxuICA8YnI+PGJyPlxuICDimqDvuI8gSW4gZW52aXJvbm1lbnRzIHdoZXJlIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgcnVuIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgYW5kIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgY3VycmVudCBOb2RlLmpzIGVudmlyb25tZW50IHNob3VsZCBiZSByb3V0ZWQgdmlhIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCBkaXN0cmlidXRlZCBhcyBIVFRQIHJlcXVlc3RzIGFtb25nIGFsbCBpbnN0YW5jZXMgdmlhIHRoZSBgc2VydmVyVVJMYCwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkaXJlY3RBY2Nlc3M6ID9ib29sZWFuO1xuICAvKiBFbmFibGVzIHRoZSBkZWZhdWx0IGV4cHJlc3MgZXJyb3IgaGFuZGxlciBmb3IgYWxsIGVycm9yc1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlcjogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGdlbmVyYXRlZCBvYmplY3QgaWQncywgZGVmYXVsdCAxMFxuICA6REVGQVVMVDogMTAgKi9cbiAgb2JqZWN0SWRTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgcG9ydCB0byBydW4gdGhlIFBhcnNlU2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICA6RU5WOiBQT1JUXG4gIDpERUZBVUxUOiAxMzM3ICovXG4gIHBvcnQ6ID9udW1iZXI7XG4gIC8qIFRoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wXG4gIDpERUZBVUxUOiAwLjAuMC4wICovXG4gIGhvc3Q6ID9zdHJpbmc7XG4gIC8qIE1vdW50IHBhdGggZm9yIHRoZSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIC9wYXJzZVxuICA6REVGQVVMVDogL3BhcnNlICovXG4gIG1vdW50UGF0aDogP3N0cmluZztcbiAgLyogUnVuIHdpdGggY2x1c3Rlciwgb3B0aW9uYWxseSBzZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgZGVmYXVsdCB0byBvcy5jcHVzKCkubGVuZ3RoICovXG4gIGNsdXN0ZXI6ID9OdW1iZXJPckJvb2xlYW47XG4gIC8qIG1pZGRsZXdhcmUgZm9yIGV4cHJlc3Mgc2VydmVyLCBjYW4gYmUgc3RyaW5nIG9yIGZ1bmN0aW9uICovXG4gIG1pZGRsZXdhcmU6ID8oKCgpID0+IHZvaWQpIHwgc3RyaW5nKTtcbiAgLyogU3RhcnRzIHRoZSBsaXZlUXVlcnkgc2VydmVyICovXG4gIHN0YXJ0TGl2ZVF1ZXJ5U2VydmVyOiA/Ym9vbGVhbjtcbiAgLyogTGl2ZSBxdWVyeSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zICh3aWxsIHN0YXJ0IHRoZSBsaXZlUXVlcnkgc2VydmVyKSAqL1xuICBsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zOiA/TGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucztcbiAgLyogT3B0aW9ucyBmb3IgcmVxdWVzdCBpZGVtcG90ZW5jeSB0byBkZWR1cGxpY2F0ZSBpZGVudGljYWwgcmVxdWVzdHMgdGhhdCBtYXkgYmUgY2F1c2VkIGJ5IG5ldHdvcmsgaXNzdWVzLiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX0VYUEVSSU1FTlRBTF9JREVNUE9URU5DWV9PUFRJT05TXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBpZGVtcG90ZW5jeU9wdGlvbnM6ID9JZGVtcG90ZW5jeU9wdGlvbnM7XG4gIC8qIE9wdGlvbnMgZm9yIGZpbGUgdXBsb2Fkc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRklMRV9VUExPQURfT1BUSU9OU1xuICA6REVGQVVMVDoge30gKi9cbiAgZmlsZVVwbG9hZDogP0ZpbGVVcGxvYWRPcHRpb25zO1xuICAvKiBGdWxsIHBhdGggdG8geW91ciBHcmFwaFFMIGN1c3RvbSBzY2hlbWEuZ3JhcGhxbCBmaWxlICovXG4gIGdyYXBoUUxTY2hlbWE6ID9zdHJpbmc7XG4gIC8qIE1vdW50cyB0aGUgR3JhcGhRTCBlbmRwb2ludFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfTU9VTlRfR1JBUEhRTFxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbW91bnRHcmFwaFFMOiA/Ym9vbGVhbjtcbiAgLyogTW91bnQgcGF0aCBmb3IgdGhlIEdyYXBoUUwgZW5kcG9pbnQsIGRlZmF1bHRzIHRvIC9ncmFwaHFsXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9HUkFQSFFMX1BBVEhcbiAgOkRFRkFVTFQ6IC9ncmFwaHFsICovXG4gIGdyYXBoUUxQYXRoOiA/c3RyaW5nO1xuICAvKiBNb3VudHMgdGhlIEdyYXBoUUwgUGxheWdyb3VuZCAtIG5ldmVyIHVzZSB0aGlzIG9wdGlvbiBpbiBwcm9kdWN0aW9uXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9NT1VOVF9QTEFZR1JPVU5EXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBtb3VudFBsYXlncm91bmQ6ID9ib29sZWFuO1xuICAvKiBNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kLCBkZWZhdWx0cyB0byAvcGxheWdyb3VuZFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfUExBWUdST1VORF9QQVRIXG4gIDpERUZBVUxUOiAvcGxheWdyb3VuZCAqL1xuICBwbGF5Z3JvdW5kUGF0aDogP3N0cmluZztcbiAgLyogQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIHN0YXJ0ZWQgKi9cbiAgc2VydmVyU3RhcnRDb21wbGV0ZTogPyhlcnJvcjogP0Vycm9yKSA9PiB2b2lkO1xuICAvKiBEZWZpbmVkIHNjaGVtYVxuICA6RU5WOiBQQVJTRV9TRVJWRVJfU0NIRU1BXG4gICovXG4gIHNjaGVtYTogP1NjaGVtYU9wdGlvbnM7XG4gIC8qIENhbGxiYWNrIHdoZW4gc2VydmVyIGhhcyBjbG9zZWQgKi9cbiAgc2VydmVyQ2xvc2VDb21wbGV0ZTogPygpID0+IHZvaWQ7XG4gIC8qIFRoZSBzZWN1cml0eSBvcHRpb25zIHRvIGlkZW50aWZ5IGFuZCByZXBvcnQgd2VhayBzZWN1cml0eSBzZXR0aW5ncy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHNlY3VyaXR5OiA/U2VjdXJpdHlPcHRpb25zO1xuICAvKiBTZXQgdG8gdHJ1ZSBpZiBuZXcgdXNlcnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aG91dCBwdWJsaWMgcmVhZCBhbmQgd3JpdGUgYWNjZXNzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5mb3JjZVByaXZhdGVVc2VyczogP2Jvb2xlYW47XG4gIC8qIEFuIGFycmF5IG9mIGtleXMgYW5kIHZhbHVlcyB0aGF0IGFyZSBwcm9oaWJpdGVkIGluIGRhdGFiYXNlIHJlYWQgYW5kIHdyaXRlIHJlcXVlc3RzIHRvIHByZXZlbnQgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBvbmx5IGEga2V5IChge1wia2V5XCI6XCIuLi5cIn1gKSwgb25seSBhIHZhbHVlIChge1widmFsdWVcIjpcIi4uLlwifWApIG9yIGEga2V5LXZhbHVlIHBhaXIgKGB7XCJrZXlcIjpcIi4uLlwiLFwidmFsdWVcIjpcIi4uLlwifWApLiBUaGUgc3BlY2lmaWNhdGlvbiBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdHlwZXM6IGBib29sZWFuYCwgYG51bWVyaWNgIG9yIGBzdHJpbmdgLCB3aGVyZSBgc3RyaW5nYCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgcmVnZXggbm90YXRpb24uIFJlcXVlc3QgZGF0YSBpcyBkZWVwLXNjYW5uZWQgZm9yIG1hdGNoaW5nIGRlZmluaXRpb25zIHRvIGRldGVjdCBhbHNvIGFueSBuZXN0ZWQgb2NjdXJyZW5jZXMuIERlZmF1bHRzIGFyZSBwYXR0ZXJucyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgdXNlZCBpbiBtYWxpY2lvdXMgcmVxdWVzdHMuIFNldHRpbmcgdGhpcyBvcHRpb24gd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXR0ZXJucy5cbiAgOkRFRkFVTFQ6IFt7XCJrZXlcIjpcIl9ic29udHlwZVwiLFwidmFsdWVcIjpcIkNvZGVcIn0se1wia2V5XCI6XCJjb25zdHJ1Y3RvclwifSx7XCJrZXlcIjpcIl9fcHJvdG9fX1wifV0gKi9cbiAgcmVxdWVzdEtleXdvcmREZW55bGlzdDogPyhSZXF1ZXN0S2V5d29yZERlbnlsaXN0W10pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5T3B0aW9ucyB7XG4gIC8qIElzIHRydWUgaWYgUGFyc2UgU2VydmVyIHNob3VsZCBjaGVjayBmb3Igd2VhayBzZWN1cml0eSBzZXR0aW5ncy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUNoZWNrOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiB0aGUgc2VjdXJpdHkgY2hlY2sgcmVwb3J0IHNob3VsZCBiZSB3cml0dGVuIHRvIGxvZ3MuIFRoaXMgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCB0ZW1wb3JhcmlseSB0byBub3QgZXhwb3NlIHdlYWsgc2VjdXJpdHkgc2V0dGluZ3MgaW4gbG9ncy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUNoZWNrTG9nOiA/Ym9vbGVhbjtcbiAgLyogVGhlIHNlY3VyaXR5IGNoZWNrIGdyb3VwcyB0byBydW4uIFRoaXMgYWxsb3dzIHRvIGFkZCBjdXN0b20gc2VjdXJpdHkgY2hlY2tzIG9yIG92ZXJyaWRlIGV4aXN0aW5nIG9uZXMuIERlZmF1bHQgYXJlIHRoZSBncm91cHMgZGVmaW5lZCBpbiBgQ2hlY2tHcm91cHMuanNgLiAqL1xuICBjaGVja0dyb3VwczogPyhDaGVja0dyb3VwW10pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzT3B0aW9ucyB7XG4gIC8qIElzIHRydWUgaWYgdGhlIHBhZ2VzIHJvdXRlciBzaG91bGQgYmUgZW5hYmxlZDsgdGhpcyBpcyByZXF1aXJlZCBmb3IgYW55IG9mIHRoZSBwYWdlcyBvcHRpb25zIHRvIHRha2UgZWZmZWN0LiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZVJvdXRlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgcGFnZXMgc2hvdWxkIGJlIGxvY2FsaXplZDsgdGhpcyBoYXMgbm8gZWZmZWN0IG9uIGN1c3RvbSBwYWdlIHJlZGlyZWN0cy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUxvY2FsaXphdGlvbjogP2Jvb2xlYW47XG4gIC8qIFRoZSBwYXRoIHRvIHRoZSBKU09OIGZpbGUgZm9yIGxvY2FsaXphdGlvbjsgdGhlIHRyYW5zbGF0aW9ucyB3aWxsIGJlIHVzZWQgdG8gZmlsbCB0ZW1wbGF0ZSBwbGFjZWhvbGRlcnMgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUuICovXG4gIGxvY2FsaXphdGlvbkpzb25QYXRoOiA/c3RyaW5nO1xuICAvKiBUaGUgZmFsbGJhY2sgbG9jYWxlIGZvciBsb2NhbGl6YXRpb24gaWYgbm8gbWF0Y2hpbmcgdHJhbnNsYXRpb24gaXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBsb2NhbGUuIFRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHByb3ZpZGluZyB0cmFuc2xhdGlvbiByZXNvdXJjZXMgdmlhIEpTT04gZmlsZS5cbiAgOkRFRkFVTFQ6IGVuICovXG4gIGxvY2FsaXphdGlvbkZhbGxiYWNrTG9jYWxlOiA/c3RyaW5nO1xuICAvKiBUaGUgcGxhY2Vob2xkZXIga2V5cyBhbmQgdmFsdWVzIHdoaWNoIHdpbGwgYmUgZmlsbGVkIGluIHBhZ2VzOyB0aGlzIGNhbiBiZSBhIHNpbXBsZSBvYmplY3Qgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBsYWNlaG9sZGVyczogP09iamVjdDtcbiAgLyogSXMgdHJ1ZSBpZiByZXNwb25zZXMgc2hvdWxkIGFsd2F5cyBiZSByZWRpcmVjdHMgYW5kIG5ldmVyIGNvbnRlbnQsIGZhbHNlIGlmIHRoZSByZXNwb25zZSB0eXBlIHNob3VsZCBkZXBlbmQgb24gdGhlIHJlcXVlc3QgdHlwZSAoR0VUIHJlcXVlc3QgLT4gY29udGVudCByZXNwb25zZTsgUE9TVCByZXF1ZXN0IC0+IHJlZGlyZWN0IHJlc3BvbnNlKS5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGZvcmNlUmVkaXJlY3Q6ID9ib29sZWFuO1xuICAvKiBUaGUgcGF0aCB0byB0aGUgcGFnZXMgZGlyZWN0b3J5OyB0aGlzIGFsc28gZGVmaW5lcyB3aGVyZSB0aGUgc3RhdGljIGVuZHBvaW50ICcvYXBwcycgcG9pbnRzIHRvLiBEZWZhdWx0IGlzIHRoZSAnLi9wdWJsaWMvJyBkaXJlY3RvcnkuXG4gIDpERUZBVUxUOiAuL3B1YmxpYyAqL1xuICBwYWdlc1BhdGg6ID9zdHJpbmc7XG4gIC8qIFRoZSBBUEkgZW5kcG9pbnQgZm9yIHRoZSBwYWdlcy4gRGVmYXVsdCBpcyAnYXBwcycuXG4gIDpERUZBVUxUOiBhcHBzICovXG4gIHBhZ2VzRW5kcG9pbnQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkxzIHRvIHRoZSBjdXN0b20gcGFnZXMuXG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21VcmxzOiA/UGFnZXNDdXN0b21VcmxzT3B0aW9ucztcbiAgLyogVGhlIGN1c3RvbSByb3V0ZXMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICBjdXN0b21Sb3V0ZXM6ID8oUGFnZXNSb3V0ZVtdKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdlc1JvdXRlIHtcbiAgLyogVGhlIHJvdXRlIHBhdGguICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyogVGhlIHJvdXRlIG1ldGhvZCwgZS5nLiAnR0VUJyBvciAnUE9TVCcuICovXG4gIG1ldGhvZDogc3RyaW5nO1xuICAvKiBUaGUgcm91dGUgaGFuZGxlciB0aGF0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uLiAqL1xuICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzQ3VzdG9tVXJsc09wdGlvbnMge1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQuICovXG4gIHBhc3N3b3JkUmVzZXQ6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldCAtPiBsaW5rIGludmFsaWQuICovXG4gIHBhc3N3b3JkUmVzZXRMaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IHN1Y2Nlc3MuICovXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHN1Y2Nlc3MuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU3VjY2VzczogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIHNlbmQgZmFpbC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TZW5kRmFpbDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiByZXNlbmQgbGluayAtPiBzdWNjZXNzLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblNlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgaW52YWxpZC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25MaW5rSW52YWxpZDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIGVtYWlsIHZlcmlmaWNhdGlvbiAtPiBsaW5rIGV4cGlyZWQuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uTGlua0V4cGlyZWQ6ID9zdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tUGFnZXNPcHRpb25zIHtcbiAgLyogaW52YWxpZCBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkTGluazogP3N0cmluZztcbiAgLyogdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBmYWlsIHBhZ2UgcGF0aCAqL1xuICBsaW5rU2VuZEZhaWw6ID9zdHJpbmc7XG4gIC8qIGNob29zZSBwYXNzd29yZCBwYWdlIHBhdGggKi9cbiAgY2hvb3NlUGFzc3dvcmQ6ID9zdHJpbmc7XG4gIC8qIHZlcmlmaWNhdGlvbiBsaW5rIHNlbmQgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgbGlua1NlbmRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiB2ZXJpZnkgZW1haWwgc3VjY2VzcyBwYWdlIHBhdGggKi9cbiAgdmVyaWZ5RW1haWxTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBwYXNzd29yZCByZXNldCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICBwYXNzd29yZFJlc2V0U3VjY2VzczogP3N0cmluZztcbiAgLyogaW52YWxpZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZFZlcmlmaWNhdGlvbkxpbms6ID9zdHJpbmc7XG4gIC8qIGV4cGlyZWQgdmVyaWZpY2F0aW9uIGxpbmsgcGFnZSBwYXRoICovXG4gIGV4cGlyZWRWZXJpZmljYXRpb25MaW5rOiA/c3RyaW5nO1xuICAvKiBpbnZhbGlkIHBhc3N3b3JkIHJlc2V0IGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRQYXNzd29yZFJlc2V0TGluazogP3N0cmluZztcbiAgLyogZm9yIG1hc2tpbmcgdXNlci1mYWNpbmcgcGFnZXMgKi9cbiAgcGFyc2VGcmFtZVVSTDogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXZlUXVlcnlPcHRpb25zIHtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNsYXNzTmFtZXNcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0xJVkVRVUVSWV9DTEFTU05BTUVTICovXG4gIGNsYXNzTmFtZXM6ID8oc3RyaW5nW10pO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zICovXG4gIHJlZGlzT3B0aW9uczogP2FueTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMICovXG4gIHJlZGlzVVJMOiA/c3RyaW5nO1xuICAvKiBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXIgKi9cbiAgcHViU3ViQWRhcHRlcjogP0FkYXB0ZXI8UHViU3ViQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyICovXG4gIHdzc0FkYXB0ZXI6ID9BZGFwdGVyPFdTU0FkYXB0ZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVRdWVyeVNlcnZlck9wdGlvbnMge1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIGFwcElkIGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgYXBwSWQuKi9cbiAgYXBwSWQ6ID9zdHJpbmc7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgbWFzdGVyS2V5IGluIHVzZSBieSB5b3VyIFBhcnNlIFNlcnZlci4gSWYgeW91IGRlcGxveSB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciBhbG9uZ3NpZGUgUGFyc2UgU2VydmVyLCB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciB3aWxsIHRyeSB0byB1c2UgdGhlIHNhbWUgbWFzdGVyS2V5LiovXG4gIG1hc3RlcktleTogP3N0cmluZztcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBzZXJ2ZXJVUkwgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBzZXJ2ZXJVUkwuKi9cbiAgc2VydmVyVVJMOiA/c3RyaW5nO1xuICAvKiBBIEpTT04gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGEgd2hpdGVsaXN0IG9mIGtleXMuIEl0IGlzIHVzZWQgZm9yIHZhbGlkYXRpbmcgY2xpZW50cyB3aGVuIHRoZXkgdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMuKi9cbiAga2V5UGFpcnM6ID9hbnk7XG4gIC8qIE51bWJlciBvZiBtaWxsaXNlY29uZHMgYmV0d2VlbiBwaW5nL3BvbmcgZnJhbWVzLiBUaGUgV2ViU29ja2V0IHNlcnZlciBzZW5kcyBwaW5nL3BvbmcgZnJhbWVzIHRvIHRoZSBjbGllbnRzIHRvIGtlZXAgdGhlIFdlYlNvY2tldCBhbGl2ZS4gVGhpcyB2YWx1ZSBkZWZpbmVzIHRoZSBpbnRlcnZhbCBvZiB0aGUgcGluZy9wb25nIGZyYW1lIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnRzLCBkZWZhdWx0cyB0byAxMCAqIDEwMDAgbXMgKDEwIHMpLiovXG4gIHdlYnNvY2tldFRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIE51bWJlciBpbiBtaWxsaXNlY29uZHMuIFdoZW4gY2xpZW50cyBwcm92aWRlIHRoZSBzZXNzaW9uVG9rZW4gdG8gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIGZldGNoIGl0cyBQYXJzZVVzZXIncyBvYmplY3RJZCBmcm9tIHBhcnNlIHNlcnZlciBhbmQgc3RvcmUgaXQgaW4gdGhlIGNhY2hlLiBUaGUgdmFsdWUgZGVmaW5lcyB0aGUgZHVyYXRpb24gb2YgdGhlIGNhY2hlLiBDaGVjayB0aGUgZm9sbG93aW5nIFNlY3VyaXR5IHNlY3Rpb24gYW5kIG91ciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzLCBkZWZhdWx0cyB0byA1ICogMTAwMCBtcyAoNSBzZWNvbmRzKS4qL1xuICBjYWNoZVRpbWVvdXQ6ID9udW1iZXI7XG4gIC8qIFRoaXMgc3RyaW5nIGRlZmluZXMgdGhlIGxvZyBsZXZlbCBvZiB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gV2Ugc3VwcG9ydCBWRVJCT1NFLCBJTkZPLCBFUlJPUiwgTk9ORSwgZGVmYXVsdHMgdG8gSU5GTy4qL1xuICBsb2dMZXZlbDogP3N0cmluZztcbiAgLyogVGhlIHBvcnQgdG8gcnVuIHRoZSBMaXZlUXVlcnkgc2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICA6REVGQVVMVDogMTMzNyAqL1xuICBwb3J0OiA/bnVtYmVyO1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNPcHRpb25zICovXG4gIHJlZGlzT3B0aW9uczogP2FueTtcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IHJlZGlzVVJMICovXG4gIHJlZGlzVVJMOiA/c3RyaW5nO1xuICAvKiBMaXZlUXVlcnkgcHVic3ViIGFkYXB0ZXIgKi9cbiAgcHViU3ViQWRhcHRlcjogP0FkYXB0ZXI8UHViU3ViQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgV2ViU29ja2V0U2VydmVyICovXG4gIHdzc0FkYXB0ZXI6ID9BZGFwdGVyPFdTU0FkYXB0ZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW1wb3RlbmN5T3B0aW9ucyB7XG4gIC8qIEFuIGFycmF5IG9mIHBhdGhzIGZvciB3aGljaCB0aGUgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZC4gVGhlIG1vdW50IHBhdGggbXVzdCBub3QgYmUgaW5jbHVkZWQsIGZvciBleGFtcGxlIGluc3RlYWQgb2YgYC9wYXJzZS9mdW5jdGlvbnMvbXlGdW5jdGlvbmAgc3BlY2lmaXkgYGZ1bmN0aW9ucy9teUZ1bmN0aW9uYC4gVGhlIGVudHJpZXMgYXJlIGludGVycHJldGVkIGFzIHJlZ3VsYXIgZXhwcmVzc2lvbiwgZm9yIGV4YW1wbGUgYGZ1bmN0aW9ucy8uKmAgbWF0Y2hlcyBhbGwgZnVuY3Rpb25zLCBgam9icy8uKmAgbWF0Y2hlcyBhbGwgam9icywgYGNsYXNzZXMvLipgIG1hdGNoZXMgYWxsIGNsYXNzZXMsIGAuKmAgbWF0Y2hlcyBhbGwgcGF0aHMuXG4gIDpERUZBVUxUOiBbXSAqL1xuICBwYXRoczogPyhzdHJpbmdbXSk7XG4gIC8qIFRoZSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIGEgcmVxdWVzdCByZWNvcmQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIGRhdGFiYXNlLCBkZWZhdWx0cyB0byAzMDBzLlxuICA6REVGQVVMVDogMzAwICovXG4gIHR0bDogP251bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50TG9ja291dE9wdGlvbnMge1xuICAvKiBTZXQgdGhlIGR1cmF0aW9uIGluIG1pbnV0ZXMgdGhhdCBhIGxvY2tlZC1vdXQgYWNjb3VudCByZW1haW5zIGxvY2tlZCBvdXQgYmVmb3JlIGF1dG9tYXRpY2FsbHkgYmVjb21pbmcgdW5sb2NrZWQuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwMDBgLiAqL1xuICBkdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRoZSBudW1iZXIgb2YgZmFpbGVkIHNpZ24taW4gYXR0ZW1wdHMgdGhhdCB3aWxsIGNhdXNlIGEgdXNlciBhY2NvdW50IHRvIGJlIGxvY2tlZC4gSWYgdGhlIGFjY291bnQgaXMgbG9ja2VkLiBUaGUgYWNjb3VudCB3aWxsIHVubG9jayBhZnRlciB0aGUgZHVyYXRpb24gc2V0IGluIHRoZSBgZHVyYXRpb25gIG9wdGlvbiBoYXMgcGFzc2VkIGFuZCBubyBmdXJ0aGVyIGxvZ2luIGF0dGVtcHRzIGhhdmUgYmVlbiBtYWRlLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlIGdyZWF0ZXIgdGhhbiBgMGAgYW5kIGxlc3MgdGhhbiBgMTAwMGAuICovXG4gIHRocmVzaG9sZDogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCAgaWYgdGhlIGFjY291bnQgc2hvdWxkIGJlIHVubG9ja2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBwYXNzd29yZCByZXNldC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbnMgYGR1cmF0aW9uYCBhbmQgYHRocmVzaG9sZGAgdG8gYmUgc2V0LlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdW5sb2NrT25QYXNzd29yZFJlc2V0OiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXNzd29yZFBvbGljeU9wdGlvbnMge1xuICAvKiBTZXQgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB2YWxpZGF0aW9uIHBhdHRlcm4gYSBwYXNzd29yZCBtdXN0IG1hdGNoIHRvIGJlIGFjY2VwdGVkLlxuICA8YnI+PGJyPlxuICBJZiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYHZhbGlkYXRvckNhbGxiYWNrYCwgdGhlIHBhc3N3b3JkIG11c3QgcGFzcyBib3RoIHRvIGJlIGFjY2VwdGVkLiAqL1xuICB2YWxpZGF0b3JQYXR0ZXJuOiA/c3RyaW5nO1xuICAvKiAgICovXG4gIC8qIFNldCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGEgcGFzc3dvcmQgdG8gYmUgYWNjZXB0ZWQuXG4gIDxicj48YnI+XG4gIElmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yUGF0dGVybmAsIHRoZSBwYXNzd29yZCBtdXN0IHBhc3MgYm90aCB0byBiZSBhY2NlcHRlZC4gKi9cbiAgdmFsaWRhdG9yQ2FsbGJhY2s6ID8oKSA9PiB2b2lkO1xuICAvKiBTZXQgdGhlIGVycm9yIG1lc3NhZ2UgdG8gYmUgc2VudC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgUGFzc3dvcmQgZG9lcyBub3QgbWVldCB0aGUgUGFzc3dvcmQgUG9saWN5IHJlcXVpcmVtZW50cy5gICovXG4gIHZhbGlkYXRpb25FcnJvcjogP3N0cmluZztcbiAgLyogU2V0IHRvIGB0cnVlYCB0byBkaXNhbGxvdyB0aGUgdXNlcm5hbWUgYXMgcGFydCBvZiB0aGUgcGFzc3dvcmQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGRvTm90QWxsb3dVc2VybmFtZTogP2Jvb2xlYW47XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggYSBwYXNzd29yZCBleHBpcmVzLiBMb2dpbiBhdHRlbXB0cyBmYWlsIGlmIHRoZSB1c2VyIGRvZXMgbm90IHJlc2V0IHRoZSBwYXNzd29yZCBiZWZvcmUgZXhwaXJhdGlvbi4gKi9cbiAgbWF4UGFzc3dvcmRBZ2U6ID9udW1iZXI7XG4gIC8qIFNldCB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHBhc3N3b3JkIHRoYXQgd2lsbCBub3QgYmUgYWxsb3dlZCB0byBiZSBzZXQgYXMgbmV3IHBhc3N3b3JkLiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGAwYCwgbm8gcHJldmlvdXMgcGFzc3dvcmRzIHdpbGwgYmUgY29uc2lkZXJlZC5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSA+PSBgMGAgYW5kIDw9IGAyMGAuXG4gIDxicj5cbiAgRGVmYXVsdCBpcyBgMGAuXG4gICovXG4gIG1heFBhc3N3b3JkSGlzdG9yeTogP251bWJlcjtcbiAgLyogU2V0IHRoZSB2YWxpZGl0eSBkdXJhdGlvbiBvZiB0aGUgcGFzc3dvcmQgcmVzZXQgdG9rZW4gaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgdG9rZW4gZXhwaXJlcy4gVGhlIHRva2VuIGlzIHVzZWQgaW4gdGhlIGxpbmsgdGhhdCBpcyBzZXQgaW4gdGhlIGVtYWlsLiBBZnRlciB0aGUgdG9rZW4gZXhwaXJlcywgdGhlIGxpbmsgYmVjb21lcyBpbnZhbGlkIGFuZCBhIG5ldyBsaW5rIGhhcyB0byBiZSBzZW50LiBJZiB0aGUgb3B0aW9uIGlzIG5vdCBzZXQgb3Igc2V0IHRvIGB1bmRlZmluZWRgLCB0aGVuIHRoZSB0b2tlbiBuZXZlciBleHBpcmVzLlxuICA8YnI+PGJyPlxuICBGb3IgZXhhbXBsZSwgdG8gZXhwaXJlIHRoZSB0b2tlbiBhZnRlciAyIGhvdXJzLCBzZXQgYSB2YWx1ZSBvZiA3MjAwIHNlY29uZHMgKD0gNjAgc2Vjb25kcyAqIDYwIG1pbnV0ZXMgKiAyIGhvdXJzKS5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgdW5kZWZpbmVkYC5cbiAgKi9cbiAgcmVzZXRUb2tlblZhbGlkaXR5RHVyYXRpb246ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgYSBwYXNzd29yZCByZXNldCB0b2tlbiBzaG91bGQgYmUgcmV1c2VkIGluIGNhc2UgYW5vdGhlciB0b2tlbiBpcyByZXF1ZXN0ZWQgYnV0IHRoZXJlIGlzIGEgdG9rZW4gdGhhdCBpcyBzdGlsbCB2YWxpZCwgaS5lLiBoYXMgbm90IGV4cGlyZWQuIFRoaXMgYXZvaWRzIHRoZSBvZnRlbiBvYnNlcnZlZCBpc3N1ZSB0aGF0IGEgdXNlciByZXF1ZXN0cyBtdWx0aXBsZSBlbWFpbHMgYW5kIGRvZXMgbm90IGtub3cgd2hpY2ggbGluayBjb250YWlucyBhIHZhbGlkIHRva2VuIGJlY2F1c2UgZWFjaCBuZXdseSBnZW5lcmF0ZWQgdG9rZW4gd291bGQgaW52YWxpZGF0ZSB0aGUgcHJldmlvdXMgdG9rZW4uXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHJlc2V0VG9rZW5SZXVzZUlmVmFsaWQ6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVVcGxvYWRPcHRpb25zIHtcbiAgLyogIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFub255bW91cyB1c2Vycy5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZUZvckFub255bW91c1VzZXI6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIGZpbGUgdXBsb2FkIHNob3VsZCBiZSBhbGxvd2VkIGZvciBhdXRoZW50aWNhdGVkIHVzZXJzLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGFueW9uZSwgcmVnYXJkbGVzcyBvZiB1c2VyIGF1dGhlbnRpY2F0aW9uLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRm9yUHVibGljOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZU9wdGlvbnMge1xuICAvKiBFbmFibGVzIGRhdGFiYXNlIHJlYWwtdGltZSBob29rcyB0byB1cGRhdGUgc2luZ2xlIHNjaGVtYSBjYWNoZS4gU2V0IHRvIGB0cnVlYCBpZiB1c2luZyBtdWx0aXBsZSBQYXJzZSBTZXJ2ZXJzIGluc3RhbmNlcyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgZGF0YWJhc2UuIEZhaWxpbmcgdG8gZG8gc28gd2lsbCBjYXVzZSBhIHNjaGVtYSBjaGFuZ2UgdG8gbm90IHByb3BhZ2F0ZSB0byBhbGwgaW5zdGFuY2VzIGFuZCByZS1zeW5jaW5nIHdpbGwgb25seSBoYXBwZW4gd2hlbiB0aGUgaW5zdGFuY2VzIHJlc3RhcnQuIFRvIHVzZSB0aGlzIGZlYXR1cmUgd2l0aCBNb25nb0RCLCBhIHJlcGxpY2Egc2V0IGNsdXN0ZXIgd2l0aCBbY2hhbmdlIHN0cmVhbV0oaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC9jaGFuZ2VTdHJlYW1zLyNhdmFpbGFiaWxpdHkpIHN1cHBvcnQgaXMgcmVxdWlyZWQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVTY2hlbWFIb29rczogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aEFkYXB0ZXIge1xuICAvKiBJcyBgdHJ1ZWAgaWYgdGhlIGF1dGggYWRhcHRlciBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAgOkRFRkFVTFQ6IHRydWVcbiAgOkVOVjpcbiAgKi9cbiAgZW5hYmxlZDogP2Jvb2xlYW47XG59XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9PcHRpb25zL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0IHsgQW5hbHl0aWNzQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0FuYWx5dGljcy9BbmFseXRpY3NBZGFwdGVyJztcbmltcG9ydCB7IEZpbGVzQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0ZpbGVzL0ZpbGVzQWRhcHRlcic7XG5pbXBvcnQgeyBMb2dnZXJBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvTG9nZ2VyL0xvZ2dlckFkYXB0ZXInO1xuaW1wb3J0IHsgU3RvcmFnZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9TdG9yYWdlL1N0b3JhZ2VBZGFwdGVyJztcbmltcG9ydCB7IENhY2hlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0NhY2hlL0NhY2hlQWRhcHRlcic7XG5pbXBvcnQgeyBNYWlsQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0VtYWlsL01haWxBZGFwdGVyJztcbmltcG9ydCB7IFB1YlN1YkFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9QdWJTdWIvUHViU3ViQWRhcHRlcic7XG5pbXBvcnQgeyBXU1NBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvV2ViU29ja2V0U2VydmVyL1dTU0FkYXB0ZXInO1xuaW1wb3J0IHsgQ2hlY2tHcm91cCB9IGZyb20gJy4uL1NlY3VyaXR5L0NoZWNrR3JvdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYU9wdGlvbnMge1xuICAvKiBSZXN0IHJlcHJlc2VudGF0aW9uIG9uIFBhcnNlLlNjaGVtYSBodHRwczovL2RvY3MucGFyc2VwbGF0Zm9ybS5vcmcvcmVzdC9ndWlkZS8jYWRkaW5nLWEtc2NoZW1hXG4gIDpERUZBVUxUOiBbXSAqL1xuICBkZWZpbml0aW9uczogYW55O1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZXhpdCBpZiBzY2hlbWEgdXBkYXRlIGZhaWwuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBzdHJpY3Q6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciBzaG91bGQgZGVsZXRlIGFueSBmaWVsZHMgbm90IGRlZmluZWQgaW4gYSBzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGR1cmluZyBkZXZlbG9wbWVudC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGRlbGV0ZUV4dHJhRmllbGRzOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIHJlY3JlYXRlIGFueSBmaWVsZHMgdGhhdCBhcmUgZGlmZmVyZW50IGJldHdlZW4gdGhlIGN1cnJlbnQgZGF0YWJhc2Ugc2NoZW1hIGFuZCB0aGVzY2hlbWEgZGVmaW5pdGlvbi4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGR1cmluZyBkZXZlbG9wbWVudC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIHJlY3JlYXRlTW9kaWZpZWRGaWVsZHM6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIFBhcnNlIFNlcnZlciB3aWxsIHJlamVjdCBhbnkgYXR0ZW1wdHMgdG8gbW9kaWZ5IHRoZSBzY2hlbWEgd2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgbG9ja1NjaGVtYXM6ID9ib29sZWFuO1xuICAvKiBFeGVjdXRlIGEgY2FsbGJhY2sgYmVmb3JlIHJ1bm5pbmcgc2NoZW1hIG1pZ3JhdGlvbnMuICovXG4gIGJlZm9yZU1pZ3JhdGlvbjogPygpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAvKiBFeGVjdXRlIGEgY2FsbGJhY2sgYWZ0ZXIgcnVubmluZyBzY2hlbWEgbWlncmF0aW9ucy4gKi9cbiAgYWZ0ZXJNaWdyYXRpb246ID8oKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbn1cblxudHlwZSBBZGFwdGVyPFQ+ID0gc3RyaW5nIHwgYW55IHwgVDtcbnR5cGUgTnVtYmVyT3JCb29sZWFuID0gbnVtYmVyIHwgYm9vbGVhbjtcbnR5cGUgTnVtYmVyT3JTdHJpbmcgPSBudW1iZXIgfCBzdHJpbmc7XG50eXBlIFByb3RlY3RlZEZpZWxkcyA9IGFueTtcbnR5cGUgUmVxdWVzdEtleXdvcmREZW55bGlzdCA9IHtcbiAga2V5OiBzdHJpbmcgfCBhbnksXG4gIHZhbHVlOiBhbnksXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlU2VydmVyT3B0aW9ucyB7XG4gIC8qIFlvdXIgUGFyc2UgQXBwbGljYXRpb24gSURcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FQUExJQ0FUSU9OX0lEICovXG4gIGFwcElkOiBzdHJpbmc7XG4gIC8qIFlvdXIgUGFyc2UgTWFzdGVyIEtleSAqL1xuICBtYXN0ZXJLZXk6IHN0cmluZztcbiAgLyogVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy5cbiAgOkVOVjogUEFSU0VfU0VSVkVSX1VSTCAqL1xuICBzZXJ2ZXJVUkw6IHN0cmluZztcbiAgLyogUmVzdHJpY3QgbWFzdGVyS2V5IHRvIGJlIHVzZWQgYnkgb25seSB0aGVzZSBpcHMsIGRlZmF1bHRzIHRvIFtdIChhbGxvdyBhbGwgaXBzKVxuICA6REVGQVVMVDogW10gKi9cbiAgbWFzdGVyS2V5SXBzOiA/KHN0cmluZ1tdKTtcbiAgLyogU2V0cyB0aGUgYXBwIG5hbWUgKi9cbiAgYXBwTmFtZTogP3N0cmluZztcbiAgLyogQWRkIGhlYWRlcnMgdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyAqL1xuICBhbGxvd0hlYWRlcnM6ID8oc3RyaW5nW10pO1xuICAvKiBTZXRzIHRoZSBvcmlnaW4gdG8gQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luICovXG4gIGFsbG93T3JpZ2luOiA/c3RyaW5nO1xuICAvKiBBZGFwdGVyIG1vZHVsZSBmb3IgdGhlIGFuYWx5dGljcyAqL1xuICBhbmFseXRpY3NBZGFwdGVyOiA/QWRhcHRlcjxBbmFseXRpY3NBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBmaWxlcyBzdWItc3lzdGVtICovXG4gIGZpbGVzQWRhcHRlcjogP0FkYXB0ZXI8RmlsZXNBZGFwdGVyPjtcbiAgLyogQ29uZmlndXJhdGlvbiBmb3IgcHVzaCwgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jcHVzaC1ub3RpZmljYXRpb25zICovXG4gIHB1c2g6ID9hbnk7XG4gIC8qIENvbmZpZ3VyYXRpb24gZm9yIHB1c2ggc2NoZWR1bGluZywgZGVmYXVsdHMgdG8gZmFsc2UuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBzY2hlZHVsZWRQdXNoOiA/Ym9vbGVhbjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBsb2dnaW5nIHN1Yi1zeXN0ZW0gKi9cbiAgbG9nZ2VyQWRhcHRlcjogP0FkYXB0ZXI8TG9nZ2VyQWRhcHRlcj47XG4gIC8qIExvZyBhcyBzdHJ1Y3R1cmVkIEpTT04gb2JqZWN0c1xuICA6RU5WOiBKU09OX0xPR1MgKi9cbiAganNvbkxvZ3M6ID9ib29sZWFuO1xuICAvKiBGb2xkZXIgZm9yIHRoZSBsb2dzIChkZWZhdWx0cyB0byAnLi9sb2dzJyk7IHNldCB0byBudWxsIHRvIGRpc2FibGUgZmlsZSBiYXNlZCBsb2dnaW5nXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9MT0dTX0ZPTERFUlxuICA6REVGQVVMVDogLi9sb2dzICovXG4gIGxvZ3NGb2xkZXI6ID9zdHJpbmc7XG4gIC8qIFNldCB0aGUgbG9nZ2luZyB0byB2ZXJib3NlXG4gIDpFTlY6IFZFUkJPU0UgKi9cbiAgdmVyYm9zZTogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIGxldmVsIGZvciBsb2dzICovXG4gIGxvZ0xldmVsOiA/c3RyaW5nO1xuICAvKiBNYXhpbXVtIG51bWJlciBvZiBsb2dzIHRvIGtlZXAuIElmIG5vdCBzZXQsIG5vIGxvZ3Mgd2lsbCBiZSByZW1vdmVkLiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBmaWxlcyBvciBudW1iZXIgb2YgZGF5cy4gSWYgdXNpbmcgZGF5cywgYWRkICdkJyBhcyB0aGUgc3VmZml4LiAoZGVmYXVsdDogbnVsbCkgKi9cbiAgbWF4TG9nRmlsZXM6ID9OdW1iZXJPclN0cmluZztcbiAgLyogRGlzYWJsZXMgY29uc29sZSBvdXRwdXRcbiAgOkVOVjogU0lMRU5UICovXG4gIHNpbGVudDogP2Jvb2xlYW47XG4gIC8qIFRoZSBmdWxsIFVSSSB0byB5b3VyIGRhdGFiYXNlLiBTdXBwb3J0ZWQgZGF0YWJhc2VzIGFyZSBtb25nb2RiIG9yIHBvc3RncmVzLlxuICA6REVGQVVMVDogbW9uZ29kYjovL2xvY2FsaG9zdDoyNzAxNy9wYXJzZSAqL1xuICBkYXRhYmFzZVVSSTogc3RyaW5nO1xuICAvKiBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGRhdGFiYXNlIGNsaWVudFxuICA6RU5WOiBQQVJTRV9TRVJWRVJfREFUQUJBU0VfT1BUSU9OUyAqL1xuICBkYXRhYmFzZU9wdGlvbnM6ID9EYXRhYmFzZU9wdGlvbnM7XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciB0aGUgZGF0YWJhc2U7IGFueSBvcHRpb25zIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGRhdGFiYXNlIGNsaWVudC4gKi9cbiAgZGF0YWJhc2VBZGFwdGVyOiA/QWRhcHRlcjxTdG9yYWdlQWRhcHRlcj47XG4gIC8qIEZ1bGwgcGF0aCB0byB5b3VyIGNsb3VkIGNvZGUgbWFpbi5qcyAqL1xuICBjbG91ZDogP3N0cmluZztcbiAgLyogQSBjb2xsZWN0aW9uIHByZWZpeCBmb3IgdGhlIGNsYXNzZXNcbiAgOkRFRkFVTFQ6ICcnICovXG4gIGNvbGxlY3Rpb25QcmVmaXg6ID9zdHJpbmc7XG4gIC8qIEtleSBmb3IgaU9TLCBNYWNPUywgdHZPUyBjbGllbnRzICovXG4gIGNsaWVudEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciB0aGUgSmF2YXNjcmlwdCBTREsgKi9cbiAgamF2YXNjcmlwdEtleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBVbml0eSBhbmQgLk5ldCBTREsgKi9cbiAgZG90TmV0S2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIGVuY3J5cHRpbmcgeW91ciBmaWxlc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfRU5DUllQVElPTl9LRVkgKi9cbiAgZW5jcnlwdGlvbktleTogP3N0cmluZztcbiAgLyogS2V5IGZvciBSRVNUIGNhbGxzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9SRVNUX0FQSV9LRVkgKi9cbiAgcmVzdEFQSUtleTogP3N0cmluZztcbiAgLyogUmVhZC1vbmx5IGtleSwgd2hpY2ggaGFzIHRoZSBzYW1lIGNhcGFiaWxpdGllcyBhcyBNYXN0ZXJLZXkgd2l0aG91dCB3cml0ZXMgKi9cbiAgcmVhZE9ubHlNYXN0ZXJLZXk6ID9zdHJpbmc7XG4gIC8qIEtleSBzZW50IHdpdGggb3V0Z29pbmcgd2ViaG9vayBjYWxscyAqL1xuICB3ZWJob29rS2V5OiA/c3RyaW5nO1xuICAvKiBLZXkgZm9yIHlvdXIgZmlsZXMgKi9cbiAgZmlsZUtleTogP3N0cmluZztcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSB0aGUgYWRkaXRpb24gb2YgYSB1bmlxdWUgaGFzaCB0byB0aGUgZmlsZSBuYW1lc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfUFJFU0VSVkVfRklMRV9OQU1FXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBwcmVzZXJ2ZUZpbGVOYW1lOiA/Ym9vbGVhbjtcbiAgLyogUGVyc29uYWxseSBpZGVudGlmaWFibGUgaW5mb3JtYXRpb24gZmllbGRzIGluIHRoZSB1c2VyIHRhYmxlIHRoZSBzaG91bGQgYmUgcmVtb3ZlZCBmb3Igbm9uLWF1dGhvcml6ZWQgdXNlcnMuIERlcHJlY2F0ZWQgQHNlZSBwcm90ZWN0ZWRGaWVsZHMgKi9cbiAgdXNlclNlbnNpdGl2ZUZpZWxkczogPyhzdHJpbmdbXSk7XG4gIC8qIFByb3RlY3RlZCBmaWVsZHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCB3aXRoIGV4dHJhIHNlY3VyaXR5IHdoZW4gZmV0Y2hpbmcgZGV0YWlscy5cbiAgOkRFRkFVTFQ6IHtcIl9Vc2VyXCI6IHtcIipcIjogW1wiZW1haWxcIl19fSAqL1xuICBwcm90ZWN0ZWRGaWVsZHM6ID9Qcm90ZWN0ZWRGaWVsZHM7XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgYW5vbnltb3VzIHVzZXJzLCBkZWZhdWx0cyB0byB0cnVlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9FTkFCTEVfQU5PTl9VU0VSU1xuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBlbmFibGVBbm9ueW1vdXNVc2VyczogP2Jvb2xlYW47XG4gIC8qIEVuYWJsZSAob3IgZGlzYWJsZSkgY2xpZW50IGNsYXNzIGNyZWF0aW9uLCBkZWZhdWx0cyB0byB0cnVlXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9BTExPV19DTElFTlRfQ0xBU1NfQ1JFQVRJT05cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgYWxsb3dDbGllbnRDbGFzc0NyZWF0aW9uOiA/Ym9vbGVhbjtcbiAgLyogRW5hYmxlIChvciBkaXNhYmxlKSBjdXN0b20gb2JqZWN0SWRcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0FMTE9XX0NVU1RPTV9PQkpFQ1RfSURcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGFsbG93Q3VzdG9tT2JqZWN0SWQ6ID9ib29sZWFuO1xuICAvKiBDb25maWd1cmF0aW9uIGZvciB5b3VyIGF1dGhlbnRpY2F0aW9uIHByb3ZpZGVycywgYXMgc3RyaW5naWZpZWQgSlNPTi4gU2VlIGh0dHA6Ly9kb2NzLnBhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9ndWlkZS8jb2F1dGgtYW5kLTNyZC1wYXJ0eS1hdXRoZW50aWNhdGlvblxuICA6RU5WOiBQQVJTRV9TRVJWRVJfQVVUSF9QUk9WSURFUlMgKi9cbiAgYXV0aDogPyhBdXRoQWRhcHRlcltdKTtcbiAgLyogTWF4IGZpbGUgc2l6ZSBmb3IgdXBsb2FkcywgZGVmYXVsdHMgdG8gMjBtYlxuICA6REVGQVVMVDogMjBtYiAqL1xuICBtYXhVcGxvYWRTaXplOiA/c3RyaW5nO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIHJlcXVpcmUgdXNlcnMgdG8gdmVyaWZ5IHRoZWlyIGVtYWlsIGFkZHJlc3MgdG8gY29tcGxldGUgdGhlIHNpZ24tdXAgcHJvY2Vzcy5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgdmVyaWZ5VXNlckVtYWlsczogP2Jvb2xlYW47XG4gIC8qIFNldCB0byBgdHJ1ZWAgdG8gcHJldmVudCBhIHVzZXIgZnJvbSBsb2dnaW5nIGluIGlmIHRoZSBlbWFpbCBoYXMgbm90IHlldCBiZWVuIHZlcmlmaWVkIGFuZCBlbWFpbCB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQuXG4gIDxicj48YnI+XG4gIERlZmF1bHQgaXMgYGZhbHNlYC5cbiAgPGJyPlxuICBSZXF1aXJlcyBvcHRpb24gYHZlcmlmeVVzZXJFbWFpbHM6IHRydWVgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcHJldmVudExvZ2luV2l0aFVudmVyaWZpZWRFbWFpbDogP2Jvb2xlYW47XG4gIC8qIFNldCB0aGUgdmFsaWRpdHkgZHVyYXRpb24gb2YgdGhlIGVtYWlsIHZlcmlmaWNhdGlvbiB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuXG4gIDxicj48YnI+XG4gIEZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB1bmRlZmluZWRgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gICovXG4gIGVtYWlsVmVyaWZ5VG9rZW5WYWxpZGl0eUR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgIGlmIGEgZW1haWwgdmVyaWZpY2F0aW9uIHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+XG4gIFJlcXVpcmVzIG9wdGlvbiBgdmVyaWZ5VXNlckVtYWlsczogdHJ1ZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbWFpbFZlcmlmeVRva2VuUmV1c2VJZlZhbGlkOiA/Ym9vbGVhbjtcbiAgLyogVGhlIGFjY291bnQgbG9ja291dCBwb2xpY3kgZm9yIGZhaWxlZCBsb2dpbiBhdHRlbXB0cy4gKi9cbiAgYWNjb3VudExvY2tvdXQ6ID9BY2NvdW50TG9ja291dE9wdGlvbnM7XG4gIC8qIFRoZSBwYXNzd29yZCBwb2xpY3kgZm9yIGVuZm9yY2luZyBwYXNzd29yZCByZWxhdGVkIHJ1bGVzLiAqL1xuICBwYXNzd29yZFBvbGljeTogP1Bhc3N3b3JkUG9saWN5T3B0aW9ucztcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBjYWNoZSAqL1xuICBjYWNoZUFkYXB0ZXI6ID9BZGFwdGVyPENhY2hlQWRhcHRlcj47XG4gIC8qIEFkYXB0ZXIgbW9kdWxlIGZvciBlbWFpbCBzZW5kaW5nICovXG4gIGVtYWlsQWRhcHRlcjogP0FkYXB0ZXI8TWFpbEFkYXB0ZXI+O1xuICAvKiBQdWJsaWMgVVJMIHRvIHlvdXIgcGFyc2Ugc2VydmVyIHdpdGggaHR0cDovLyBvciBodHRwczovLy5cbiAgOkVOVjogUEFSU0VfUFVCTElDX1NFUlZFUl9VUkwgKi9cbiAgcHVibGljU2VydmVyVVJMOiA/c3RyaW5nO1xuICAvKiBUaGUgb3B0aW9ucyBmb3IgcGFnZXMgc3VjaCBhcyBwYXNzd29yZCByZXNldCBhbmQgZW1haWwgdmVyaWZpY2F0aW9uLiBDYXV0aW9uLCB0aGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWF5IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgcHJvZHVjdGlvbi5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIHBhZ2VzOiA/UGFnZXNPcHRpb25zO1xuICAvKiBjdXN0b20gcGFnZXMgZm9yIHBhc3N3b3JkIHZhbGlkYXRpb24gYW5kIHJlc2V0XG4gIDpERUZBVUxUOiB7fSAqL1xuICBjdXN0b21QYWdlczogP0N1c3RvbVBhZ2VzT3B0aW9ucztcbiAgLyogcGFyc2Utc2VydmVyJ3MgTGl2ZVF1ZXJ5IGNvbmZpZ3VyYXRpb24gb2JqZWN0ICovXG4gIGxpdmVRdWVyeTogP0xpdmVRdWVyeU9wdGlvbnM7XG4gIC8qIFNlc3Npb24gZHVyYXRpb24sIGluIHNlY29uZHMsIGRlZmF1bHRzIHRvIDEgeWVhclxuICA6REVGQVVMVDogMzE1MzYwMDAgKi9cbiAgc2Vzc2lvbkxlbmd0aDogP251bWJlcjtcbiAgLyogRGVmYXVsdCB2YWx1ZSBmb3IgbGltaXQgb3B0aW9uIG9uIHF1ZXJpZXMsIGRlZmF1bHRzIHRvIGAxMDBgLlxuICA6REVGQVVMVDogMTAwICovXG4gIGRlZmF1bHRMaW1pdDogP251bWJlcjtcbiAgLyogTWF4IHZhbHVlIGZvciBsaW1pdCBvcHRpb24gb24gcXVlcmllcywgZGVmYXVsdHMgdG8gdW5saW1pdGVkICovXG4gIG1heExpbWl0OiA/bnVtYmVyO1xuICAvKiBTZXRzIHdoZXRoZXIgd2Ugc2hvdWxkIGV4cGlyZSB0aGUgaW5hY3RpdmUgc2Vzc2lvbnMsIGRlZmF1bHRzIHRvIHRydWUuIElmIGZhbHNlLCBhbGwgbmV3IHNlc3Npb25zIGFyZSBjcmVhdGVkIHdpdGggbm8gZXhwaXJhdGlvbiBkYXRlLlxuICA6REVGQVVMVDogdHJ1ZSAqL1xuICBleHBpcmVJbmFjdGl2ZVNlc3Npb25zOiA/Ym9vbGVhbjtcbiAgLyogV2hlbiBhIHVzZXIgY2hhbmdlcyB0aGVpciBwYXNzd29yZCwgZWl0aGVyIHRocm91Z2ggdGhlIHJlc2V0IHBhc3N3b3JkIGVtYWlsIG9yIHdoaWxlIGxvZ2dlZCBpbiwgYWxsIHNlc3Npb25zIGFyZSByZXZva2VkIGlmIHRoaXMgaXMgdHJ1ZS4gU2V0IHRvIGZhbHNlIGlmIHlvdSBkb24ndCB3YW50IHRvIHJldm9rZSBzZXNzaW9ucy5cbiAgOkRFRkFVTFQ6IHRydWUgKi9cbiAgcmV2b2tlU2Vzc2lvbk9uUGFzc3dvcmRSZXNldDogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIFRUTCBmb3IgdGhlIGluIG1lbW9yeSBjYWNoZSAoaW4gbXMpLCBkZWZhdWx0cyB0byA1MDAwICg1IHNlY29uZHMpXG4gIDpERUZBVUxUOiA1MDAwICovXG4gIGNhY2hlVFRMOiA/bnVtYmVyO1xuICAvKiBTZXRzIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBpbiBtZW1vcnkgY2FjaGUsIGRlZmF1bHRzIHRvIDEwMDAwXG4gIDpERUZBVUxUOiAxMDAwMCAqL1xuICBjYWNoZU1heFNpemU6ID9udW1iZXI7XG4gIC8qIFNldCB0byBgdHJ1ZWAgaWYgUGFyc2UgcmVxdWVzdHMgd2l0aGluIHRoZSBzYW1lIE5vZGUuanMgZW52aXJvbm1lbnQgYXMgUGFyc2UgU2VydmVyIHNob3VsZCBiZSByb3V0ZWQgdG8gUGFyc2UgU2VydmVyIGRpcmVjdGx5IGluc3RlYWQgb2YgdmlhIHRoZSBIVFRQIGludGVyZmFjZS4gRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA8YnI+PGJyPlxuICBJZiBzZXQgdG8gYGZhbHNlYCB0aGVuIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgc2FtZSBOb2RlLmpzIGVudmlyb25tZW50IGFzIFBhcnNlIFNlcnZlciBhcmUgZXhlY3V0ZWQgYXMgSFRUUCByZXF1ZXN0cyBzZW50IHRvIFBhcnNlIFNlcnZlciB2aWEgdGhlIGBzZXJ2ZXJVUkxgLiBGb3IgZXhhbXBsZSwgYSBgUGFyc2UuUXVlcnlgIGluIENsb3VkIENvZGUgaXMgY2FsbGluZyBQYXJzZSBTZXJ2ZXIgdmlhIGEgSFRUUCByZXF1ZXN0LiBUaGUgc2VydmVyIGlzIGVzc2VudGlhbGx5IG1ha2luZyBhIEhUVFAgcmVxdWVzdCB0byBpdHNlbGYsIHVubmVjZXNzYXJpbHkgdXNpbmcgbmV0d29yayByZXNvdXJjZXMgc3VjaCBhcyBuZXR3b3JrIHBvcnRzLlxuICA8YnI+PGJyPlxuICDimqDvuI8gSW4gZW52aXJvbm1lbnRzIHdoZXJlIG11bHRpcGxlIFBhcnNlIFNlcnZlciBpbnN0YW5jZXMgcnVuIGJlaGluZCBhIGxvYWQgYmFsYW5jZXIgYW5kIFBhcnNlIHJlcXVlc3RzIHdpdGhpbiB0aGUgY3VycmVudCBOb2RlLmpzIGVudmlyb25tZW50IHNob3VsZCBiZSByb3V0ZWQgdmlhIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCBkaXN0cmlidXRlZCBhcyBIVFRQIHJlcXVlc3RzIGFtb25nIGFsbCBpbnN0YW5jZXMgdmlhIHRoZSBgc2VydmVyVVJMYCwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBkaXJlY3RBY2Nlc3M6ID9ib29sZWFuO1xuICAvKiBFbmFibGVzIHRoZSBkZWZhdWx0IGV4cHJlc3MgZXJyb3IgaGFuZGxlciBmb3IgYWxsIGVycm9yc1xuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlcjogP2Jvb2xlYW47XG4gIC8qIFNldHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGdlbmVyYXRlZCBvYmplY3QgaWQncywgZGVmYXVsdCAxMFxuICA6REVGQVVMVDogMTAgKi9cbiAgb2JqZWN0SWRTaXplOiA/bnVtYmVyO1xuICAvKiBUaGUgcG9ydCB0byBydW4gdGhlIFBhcnNlU2VydmVyLCBkZWZhdWx0cyB0byAxMzM3LlxuICA6RU5WOiBQT1JUXG4gIDpERUZBVUxUOiAxMzM3ICovXG4gIHBvcnQ6ID9udW1iZXI7XG4gIC8qIFRoZSBob3N0IHRvIHNlcnZlIFBhcnNlU2VydmVyIG9uLCBkZWZhdWx0cyB0byAwLjAuMC4wXG4gIDpERUZBVUxUOiAwLjAuMC4wICovXG4gIGhvc3Q6ID9zdHJpbmc7XG4gIC8qIE1vdW50IHBhdGggZm9yIHRoZSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIC9wYXJzZVxuICA6REVGQVVMVDogL3BhcnNlICovXG4gIG1vdW50UGF0aDogP3N0cmluZztcbiAgLyogUnVuIHdpdGggY2x1c3Rlciwgb3B0aW9uYWxseSBzZXQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgZGVmYXVsdCB0byBvcy5jcHVzKCkubGVuZ3RoICovXG4gIGNsdXN0ZXI6ID9OdW1iZXJPckJvb2xlYW47XG4gIC8qIG1pZGRsZXdhcmUgZm9yIGV4cHJlc3Mgc2VydmVyLCBjYW4gYmUgc3RyaW5nIG9yIGZ1bmN0aW9uICovXG4gIG1pZGRsZXdhcmU6ID8oKCgpID0+IHZvaWQpIHwgc3RyaW5nKTtcbiAgLyogVGhlIHRydXN0IHByb3h5IHNldHRpbmdzLiBJdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3Qgc2V0dXAgb2YgdGhlIHJldmVyc2UgcHJveHksIHNpbmNlIHRoaXMgc2V0dGluZyB3aWxsIHRydXN0IHZhbHVlcyBwcm92aWRlZCBpbiB0aGUgUGFyc2UgU2VydmVyIEFQSSByZXF1ZXN0LiBTZWUgdGhlIDxhIGhyZWY9XCJodHRwczovL2V4cHJlc3Nqcy5jb20vZW4vZ3VpZGUvYmVoaW5kLXByb3hpZXMuaHRtbFwiPmV4cHJlc3MgdHJ1c3QgcHJveHkgc2V0dGluZ3M8L2E+IGRvY3VtZW50YXRpb24uIERlZmF1bHRzIHRvIGBmYWxzZWAuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICB0cnVzdFByb3h5OiA/YW55O1xuICAvKiBTdGFydHMgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIgKi9cbiAgc3RhcnRMaXZlUXVlcnlTZXJ2ZXI6ID9ib29sZWFuO1xuICAvKiBMaXZlIHF1ZXJ5IHNlcnZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgKHdpbGwgc3RhcnQgdGhlIGxpdmVRdWVyeSBzZXJ2ZXIpICovXG4gIGxpdmVRdWVyeVNlcnZlck9wdGlvbnM6ID9MaXZlUXVlcnlTZXJ2ZXJPcHRpb25zO1xuICAvKiBPcHRpb25zIGZvciByZXF1ZXN0IGlkZW1wb3RlbmN5IHRvIGRlZHVwbGljYXRlIGlkZW50aWNhbCByZXF1ZXN0cyB0aGF0IG1heSBiZSBjYXVzZWQgYnkgbmV0d29yayBpc3N1ZXMuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICA6RU5WOiBQQVJTRV9TRVJWRVJfRVhQRVJJTUVOVEFMX0lERU1QT1RFTkNZX09QVElPTlNcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGlkZW1wb3RlbmN5T3B0aW9uczogP0lkZW1wb3RlbmN5T3B0aW9ucztcbiAgLyogT3B0aW9ucyBmb3IgZmlsZSB1cGxvYWRzXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9GSUxFX1VQTE9BRF9PUFRJT05TXG4gIDpERUZBVUxUOiB7fSAqL1xuICBmaWxlVXBsb2FkOiA/RmlsZVVwbG9hZE9wdGlvbnM7XG4gIC8qIEZ1bGwgcGF0aCB0byB5b3VyIEdyYXBoUUwgY3VzdG9tIHNjaGVtYS5ncmFwaHFsIGZpbGUgKi9cbiAgZ3JhcGhRTFNjaGVtYTogP3N0cmluZztcbiAgLyogTW91bnRzIHRoZSBHcmFwaFFMIGVuZHBvaW50XG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9NT1VOVF9HUkFQSFFMXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBtb3VudEdyYXBoUUw6ID9ib29sZWFuO1xuICAvKiBNb3VudCBwYXRoIGZvciB0aGUgR3JhcGhRTCBlbmRwb2ludCwgZGVmYXVsdHMgdG8gL2dyYXBocWxcbiAgOkVOVjogUEFSU0VfU0VSVkVSX0dSQVBIUUxfUEFUSFxuICA6REVGQVVMVDogL2dyYXBocWwgKi9cbiAgZ3JhcGhRTFBhdGg6ID9zdHJpbmc7XG4gIC8qIE1vdW50cyB0aGUgR3JhcGhRTCBQbGF5Z3JvdW5kIC0gbmV2ZXIgdXNlIHRoaXMgb3B0aW9uIGluIHByb2R1Y3Rpb25cbiAgOkVOVjogUEFSU0VfU0VSVkVSX01PVU5UX1BMQVlHUk9VTkRcbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIG1vdW50UGxheWdyb3VuZDogP2Jvb2xlYW47XG4gIC8qIE1vdW50IHBhdGggZm9yIHRoZSBHcmFwaFFMIFBsYXlncm91bmQsIGRlZmF1bHRzIHRvIC9wbGF5Z3JvdW5kXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9QTEFZR1JPVU5EX1BBVEhcbiAgOkRFRkFVTFQ6IC9wbGF5Z3JvdW5kICovXG4gIHBsYXlncm91bmRQYXRoOiA/c3RyaW5nO1xuICAvKiBDYWxsYmFjayB3aGVuIHNlcnZlciBoYXMgc3RhcnRlZCAqL1xuICBzZXJ2ZXJTdGFydENvbXBsZXRlOiA/KGVycm9yOiA/RXJyb3IpID0+IHZvaWQ7XG4gIC8qIERlZmluZWQgc2NoZW1hXG4gIDpFTlY6IFBBUlNFX1NFUlZFUl9TQ0hFTUFcbiAgKi9cbiAgc2NoZW1hOiA/U2NoZW1hT3B0aW9ucztcbiAgLyogQ2FsbGJhY2sgd2hlbiBzZXJ2ZXIgaGFzIGNsb3NlZCAqL1xuICBzZXJ2ZXJDbG9zZUNvbXBsZXRlOiA/KCkgPT4gdm9pZDtcbiAgLyogVGhlIHNlY3VyaXR5IG9wdGlvbnMgdG8gaWRlbnRpZnkgYW5kIHJlcG9ydCB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICA6REVGQVVMVDoge30gKi9cbiAgc2VjdXJpdHk6ID9TZWN1cml0eU9wdGlvbnM7XG4gIC8qIFNldCB0byB0cnVlIGlmIG5ldyB1c2VycyBzaG91bGQgYmUgY3JlYXRlZCB3aXRob3V0IHB1YmxpYyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmZvcmNlUHJpdmF0ZVVzZXJzOiA/Ym9vbGVhbjtcbiAgLyogQW4gYXJyYXkgb2Yga2V5cyBhbmQgdmFsdWVzIHRoYXQgYXJlIHByb2hpYml0ZWQgaW4gZGF0YWJhc2UgcmVhZCBhbmQgd3JpdGUgcmVxdWVzdHMgdG8gcHJldmVudCBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG9ubHkgYSBrZXkgKGB7XCJrZXlcIjpcIi4uLlwifWApLCBvbmx5IGEgdmFsdWUgKGB7XCJ2YWx1ZVwiOlwiLi4uXCJ9YCkgb3IgYSBrZXktdmFsdWUgcGFpciAoYHtcImtleVwiOlwiLi4uXCIsXCJ2YWx1ZVwiOlwiLi4uXCJ9YCkuIFRoZSBzcGVjaWZpY2F0aW9uIGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0eXBlczogYGJvb2xlYW5gLCBgbnVtZXJpY2Agb3IgYHN0cmluZ2AsIHdoZXJlIGBzdHJpbmdgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSByZWdleCBub3RhdGlvbi4gUmVxdWVzdCBkYXRhIGlzIGRlZXAtc2Nhbm5lZCBmb3IgbWF0Y2hpbmcgZGVmaW5pdGlvbnMgdG8gZGV0ZWN0IGFsc28gYW55IG5lc3RlZCBvY2N1cnJlbmNlcy4gRGVmYXVsdHMgYXJlIHBhdHRlcm5zIHRoYXQgYXJlIGxpa2VseSB0byBiZSB1c2VkIGluIG1hbGljaW91cyByZXF1ZXN0cy4gU2V0dGluZyB0aGlzIG9wdGlvbiB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhdHRlcm5zLlxuICA6REVGQVVMVDogW3tcImtleVwiOlwiX2Jzb250eXBlXCIsXCJ2YWx1ZVwiOlwiQ29kZVwifSx7XCJrZXlcIjpcImNvbnN0cnVjdG9yXCJ9LHtcImtleVwiOlwiX19wcm90b19fXCJ9XSAqL1xuICByZXF1ZXN0S2V5d29yZERlbnlsaXN0OiA/KFJlcXVlc3RLZXl3b3JkRGVueWxpc3RbXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlPcHRpb25zIHtcbiAgLyogSXMgdHJ1ZSBpZiBQYXJzZSBTZXJ2ZXIgc2hvdWxkIGNoZWNrIGZvciB3ZWFrIHNlY3VyaXR5IHNldHRpbmdzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ2hlY2s6ID9ib29sZWFuO1xuICAvKiBJcyB0cnVlIGlmIHRoZSBzZWN1cml0eSBjaGVjayByZXBvcnQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gbG9ncy4gVGhpcyBzaG91bGQgb25seSBiZSBlbmFibGVkIHRlbXBvcmFyaWx5IHRvIG5vdCBleHBvc2Ugd2VhayBzZWN1cml0eSBzZXR0aW5ncyBpbiBsb2dzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlQ2hlY2tMb2c6ID9ib29sZWFuO1xuICAvKiBUaGUgc2VjdXJpdHkgY2hlY2sgZ3JvdXBzIHRvIHJ1bi4gVGhpcyBhbGxvd3MgdG8gYWRkIGN1c3RvbSBzZWN1cml0eSBjaGVja3Mgb3Igb3ZlcnJpZGUgZXhpc3Rpbmcgb25lcy4gRGVmYXVsdCBhcmUgdGhlIGdyb3VwcyBkZWZpbmVkIGluIGBDaGVja0dyb3Vwcy5qc2AuICovXG4gIGNoZWNrR3JvdXBzOiA/KENoZWNrR3JvdXBbXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXNPcHRpb25zIHtcbiAgLyogSXMgdHJ1ZSBpZiB0aGUgcGFnZXMgcm91dGVyIHNob3VsZCBiZSBlbmFibGVkOyB0aGlzIGlzIHJlcXVpcmVkIGZvciBhbnkgb2YgdGhlIHBhZ2VzIG9wdGlvbnMgdG8gdGFrZSBlZmZlY3QuIENhdXRpb24sIHRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtYXkgbm90IGJlIGFwcHJvcHJpYXRlIGZvciBwcm9kdWN0aW9uLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlUm91dGVyOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBwYWdlcyBzaG91bGQgYmUgbG9jYWxpemVkOyB0aGlzIGhhcyBubyBlZmZlY3Qgb24gY3VzdG9tIHBhZ2UgcmVkaXJlY3RzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlTG9jYWxpemF0aW9uOiA/Ym9vbGVhbjtcbiAgLyogVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZSBmb3IgbG9jYWxpemF0aW9uOyB0aGUgdHJhbnNsYXRpb25zIHdpbGwgYmUgdXNlZCB0byBmaWxsIHRlbXBsYXRlIHBsYWNlaG9sZGVycyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZS4gKi9cbiAgbG9jYWxpemF0aW9uSnNvblBhdGg6ID9zdHJpbmc7XG4gIC8qIFRoZSBmYWxsYmFjayBsb2NhbGUgZm9yIGxvY2FsaXphdGlvbiBpZiBubyBtYXRjaGluZyB0cmFuc2xhdGlvbiBpcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuIGxvY2FsZS4gVGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gcHJvdmlkaW5nIHRyYW5zbGF0aW9uIHJlc291cmNlcyB2aWEgSlNPTiBmaWxlLlxuICA6REVGQVVMVDogZW4gKi9cbiAgbG9jYWxpemF0aW9uRmFsbGJhY2tMb2NhbGU6ID9zdHJpbmc7XG4gIC8qIFRoZSBwbGFjZWhvbGRlciBrZXlzIGFuZCB2YWx1ZXMgd2hpY2ggd2lsbCBiZSBmaWxsZWQgaW4gcGFnZXM7IHRoaXMgY2FuIGJlIGEgc2ltcGxlIG9iamVjdCBvciBhIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICA6REVGQVVMVDoge30gKi9cbiAgcGxhY2Vob2xkZXJzOiA/T2JqZWN0O1xuICAvKiBJcyB0cnVlIGlmIHJlc3BvbnNlcyBzaG91bGQgYWx3YXlzIGJlIHJlZGlyZWN0cyBhbmQgbmV2ZXIgY29udGVudCwgZmFsc2UgaWYgdGhlIHJlc3BvbnNlIHR5cGUgc2hvdWxkIGRlcGVuZCBvbiB0aGUgcmVxdWVzdCB0eXBlIChHRVQgcmVxdWVzdCAtPiBjb250ZW50IHJlc3BvbnNlOyBQT1NUIHJlcXVlc3QgLT4gcmVkaXJlY3QgcmVzcG9uc2UpLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZm9yY2VSZWRpcmVjdDogP2Jvb2xlYW47XG4gIC8qIFRoZSBwYXRoIHRvIHRoZSBwYWdlcyBkaXJlY3Rvcnk7IHRoaXMgYWxzbyBkZWZpbmVzIHdoZXJlIHRoZSBzdGF0aWMgZW5kcG9pbnQgJy9hcHBzJyBwb2ludHMgdG8uIERlZmF1bHQgaXMgdGhlICcuL3B1YmxpYy8nIGRpcmVjdG9yeS5cbiAgOkRFRkFVTFQ6IC4vcHVibGljICovXG4gIHBhZ2VzUGF0aDogP3N0cmluZztcbiAgLyogVGhlIEFQSSBlbmRwb2ludCBmb3IgdGhlIHBhZ2VzLiBEZWZhdWx0IGlzICdhcHBzJy5cbiAgOkRFRkFVTFQ6IGFwcHMgKi9cbiAgcGFnZXNFbmRwb2ludDogP3N0cmluZztcbiAgLyogVGhlIFVSTHMgdG8gdGhlIGN1c3RvbSBwYWdlcy5cbiAgOkRFRkFVTFQ6IHt9ICovXG4gIGN1c3RvbVVybHM6ID9QYWdlc0N1c3RvbVVybHNPcHRpb25zO1xuICAvKiBUaGUgY3VzdG9tIHJvdXRlcy5cbiAgOkRFRkFVTFQ6IFtdICovXG4gIGN1c3RvbVJvdXRlczogPyhQYWdlc1JvdXRlW10pO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VzUm91dGUge1xuICAvKiBUaGUgcm91dGUgcGF0aC4gKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKiBUaGUgcm91dGUgbWV0aG9kLCBlLmcuICdHRVQnIG9yICdQT1NUJy4gKi9cbiAgbWV0aG9kOiBzdHJpbmc7XG4gIC8qIFRoZSByb3V0ZSBoYW5kbGVyIHRoYXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24uICovXG4gIGhhbmRsZXI6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZXNDdXN0b21VcmxzT3B0aW9ucyB7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBwYXNzd29yZCByZXNldC4gKi9cbiAgcGFzc3dvcmRSZXNldDogP3N0cmluZztcbiAgLyogVGhlIFVSTCB0byB0aGUgY3VzdG9tIHBhZ2UgZm9yIHBhc3N3b3JkIHJlc2V0IC0+IGxpbmsgaW52YWxpZC4gKi9cbiAgcGFzc3dvcmRSZXNldExpbmtJbnZhbGlkOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgcGFzc3dvcmQgcmVzZXQgLT4gc3VjY2Vzcy4gKi9cbiAgcGFzc3dvcmRSZXNldFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gc3VjY2Vzcy4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25TdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgc2VuZCBmYWlsLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvblNlbmRGYWlsOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IHJlc2VuZCBsaW5rIC0+IHN1Y2Nlc3MuICovXG4gIGVtYWlsVmVyaWZpY2F0aW9uU2VuZFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIFRoZSBVUkwgdG8gdGhlIGN1c3RvbSBwYWdlIGZvciBlbWFpbCB2ZXJpZmljYXRpb24gLT4gbGluayBpbnZhbGlkLiAqL1xuICBlbWFpbFZlcmlmaWNhdGlvbkxpbmtJbnZhbGlkOiA/c3RyaW5nO1xuICAvKiBUaGUgVVJMIHRvIHRoZSBjdXN0b20gcGFnZSBmb3IgZW1haWwgdmVyaWZpY2F0aW9uIC0+IGxpbmsgZXhwaXJlZC4gKi9cbiAgZW1haWxWZXJpZmljYXRpb25MaW5rRXhwaXJlZDogP3N0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21QYWdlc09wdGlvbnMge1xuICAvKiBpbnZhbGlkIGxpbmsgcGFnZSBwYXRoICovXG4gIGludmFsaWRMaW5rOiA/c3RyaW5nO1xuICAvKiB2ZXJpZmljYXRpb24gbGluayBzZW5kIGZhaWwgcGFnZSBwYXRoICovXG4gIGxpbmtTZW5kRmFpbDogP3N0cmluZztcbiAgLyogY2hvb3NlIHBhc3N3b3JkIHBhZ2UgcGF0aCAqL1xuICBjaG9vc2VQYXNzd29yZDogP3N0cmluZztcbiAgLyogdmVyaWZpY2F0aW9uIGxpbmsgc2VuZCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICBsaW5rU2VuZFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIHZlcmlmeSBlbWFpbCBzdWNjZXNzIHBhZ2UgcGF0aCAqL1xuICB2ZXJpZnlFbWFpbFN1Y2Nlc3M6ID9zdHJpbmc7XG4gIC8qIHBhc3N3b3JkIHJlc2V0IHN1Y2Nlc3MgcGFnZSBwYXRoICovXG4gIHBhc3N3b3JkUmVzZXRTdWNjZXNzOiA/c3RyaW5nO1xuICAvKiBpbnZhbGlkIHZlcmlmaWNhdGlvbiBsaW5rIHBhZ2UgcGF0aCAqL1xuICBpbnZhbGlkVmVyaWZpY2F0aW9uTGluazogP3N0cmluZztcbiAgLyogZXhwaXJlZCB2ZXJpZmljYXRpb24gbGluayBwYWdlIHBhdGggKi9cbiAgZXhwaXJlZFZlcmlmaWNhdGlvbkxpbms6ID9zdHJpbmc7XG4gIC8qIGludmFsaWQgcGFzc3dvcmQgcmVzZXQgbGluayBwYWdlIHBhdGggKi9cbiAgaW52YWxpZFBhc3N3b3JkUmVzZXRMaW5rOiA/c3RyaW5nO1xuICAvKiBmb3IgbWFza2luZyB1c2VyLWZhY2luZyBwYWdlcyAqL1xuICBwYXJzZUZyYW1lVVJMOiA/c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpdmVRdWVyeU9wdGlvbnMge1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgY2xhc3NOYW1lc1xuICA6RU5WOiBQQVJTRV9TRVJWRVJfTElWRVFVRVJZX0NMQVNTTkFNRVMgKi9cbiAgY2xhc3NOYW1lczogPyhzdHJpbmdbXSk7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnMgKi9cbiAgcmVkaXNPcHRpb25zOiA/YW55O1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkwgKi9cbiAgcmVkaXNVUkw6ID9zdHJpbmc7XG4gIC8qIExpdmVRdWVyeSBwdWJzdWIgYWRhcHRlciAqL1xuICBwdWJTdWJBZGFwdGVyOiA/QWRhcHRlcjxQdWJTdWJBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBXZWJTb2NrZXRTZXJ2ZXIgKi9cbiAgd3NzQWRhcHRlcjogP0FkYXB0ZXI8V1NTQWRhcHRlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyB7XG4gIC8qIFRoaXMgc3RyaW5nIHNob3VsZCBtYXRjaCB0aGUgYXBwSWQgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBhcHBJZC4qL1xuICBhcHBJZDogP3N0cmluZztcbiAgLyogVGhpcyBzdHJpbmcgc2hvdWxkIG1hdGNoIHRoZSBtYXN0ZXJLZXkgaW4gdXNlIGJ5IHlvdXIgUGFyc2UgU2VydmVyLiBJZiB5b3UgZGVwbG95IHRoZSBMaXZlUXVlcnkgc2VydmVyIGFsb25nc2lkZSBQYXJzZSBTZXJ2ZXIsIHRoZSBMaXZlUXVlcnkgc2VydmVyIHdpbGwgdHJ5IHRvIHVzZSB0aGUgc2FtZSBtYXN0ZXJLZXkuKi9cbiAgbWFzdGVyS2V5OiA/c3RyaW5nO1xuICAvKiBUaGlzIHN0cmluZyBzaG91bGQgbWF0Y2ggdGhlIHNlcnZlclVSTCBpbiB1c2UgYnkgeW91ciBQYXJzZSBTZXJ2ZXIuIElmIHlvdSBkZXBsb3kgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgYWxvbmdzaWRlIFBhcnNlIFNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gdXNlIHRoZSBzYW1lIHNlcnZlclVSTC4qL1xuICBzZXJ2ZXJVUkw6ID9zdHJpbmc7XG4gIC8qIEEgSlNPTiBvYmplY3QgdGhhdCBzZXJ2ZXMgYXMgYSB3aGl0ZWxpc3Qgb2Yga2V5cy4gSXQgaXMgdXNlZCBmb3IgdmFsaWRhdGluZyBjbGllbnRzIHdoZW4gdGhleSB0cnkgdG8gY29ubmVjdCB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlci4gQ2hlY2sgdGhlIGZvbGxvd2luZyBTZWN1cml0eSBzZWN0aW9uIGFuZCBvdXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4qL1xuICBrZXlQYWlyczogP2FueTtcbiAgLyogTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHBpbmcvcG9uZyBmcmFtZXMuIFRoZSBXZWJTb2NrZXQgc2VydmVyIHNlbmRzIHBpbmcvcG9uZyBmcmFtZXMgdG8gdGhlIGNsaWVudHMgdG8ga2VlcCB0aGUgV2ViU29ja2V0IGFsaXZlLiBUaGlzIHZhbHVlIGRlZmluZXMgdGhlIGludGVydmFsIG9mIHRoZSBwaW5nL3BvbmcgZnJhbWUgZnJvbSB0aGUgc2VydmVyIHRvIGNsaWVudHMsIGRlZmF1bHRzIHRvIDEwICogMTAwMCBtcyAoMTAgcykuKi9cbiAgd2Vic29ja2V0VGltZW91dDogP251bWJlcjtcbiAgLyogTnVtYmVyIGluIG1pbGxpc2Vjb25kcy4gV2hlbiBjbGllbnRzIHByb3ZpZGUgdGhlIHNlc3Npb25Ub2tlbiB0byB0aGUgTGl2ZVF1ZXJ5IHNlcnZlciwgdGhlIExpdmVRdWVyeSBzZXJ2ZXIgd2lsbCB0cnkgdG8gZmV0Y2ggaXRzIFBhcnNlVXNlcidzIG9iamVjdElkIGZyb20gcGFyc2Ugc2VydmVyIGFuZCBzdG9yZSBpdCBpbiB0aGUgY2FjaGUuIFRoZSB2YWx1ZSBkZWZpbmVzIHRoZSBkdXJhdGlvbiBvZiB0aGUgY2FjaGUuIENoZWNrIHRoZSBmb2xsb3dpbmcgU2VjdXJpdHkgc2VjdGlvbiBhbmQgb3VyIHByb3RvY29sIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMsIGRlZmF1bHRzIHRvIDUgKiAxMDAwIG1zICg1IHNlY29uZHMpLiovXG4gIGNhY2hlVGltZW91dDogP251bWJlcjtcbiAgLyogVGhpcyBzdHJpbmcgZGVmaW5lcyB0aGUgbG9nIGxldmVsIG9mIHRoZSBMaXZlUXVlcnkgc2VydmVyLiBXZSBzdXBwb3J0IFZFUkJPU0UsIElORk8sIEVSUk9SLCBOT05FLCBkZWZhdWx0cyB0byBJTkZPLiovXG4gIGxvZ0xldmVsOiA/c3RyaW5nO1xuICAvKiBUaGUgcG9ydCB0byBydW4gdGhlIExpdmVRdWVyeSBzZXJ2ZXIsIGRlZmF1bHRzIHRvIDEzMzcuXG4gIDpERUZBVUxUOiAxMzM3ICovXG4gIHBvcnQ6ID9udW1iZXI7XG4gIC8qIHBhcnNlLXNlcnZlcidzIExpdmVRdWVyeSByZWRpc09wdGlvbnMgKi9cbiAgcmVkaXNPcHRpb25zOiA/YW55O1xuICAvKiBwYXJzZS1zZXJ2ZXIncyBMaXZlUXVlcnkgcmVkaXNVUkwgKi9cbiAgcmVkaXNVUkw6ID9zdHJpbmc7XG4gIC8qIExpdmVRdWVyeSBwdWJzdWIgYWRhcHRlciAqL1xuICBwdWJTdWJBZGFwdGVyOiA/QWRhcHRlcjxQdWJTdWJBZGFwdGVyPjtcbiAgLyogQWRhcHRlciBtb2R1bGUgZm9yIHRoZSBXZWJTb2NrZXRTZXJ2ZXIgKi9cbiAgd3NzQWRhcHRlcjogP0FkYXB0ZXI8V1NTQWRhcHRlcj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbXBvdGVuY3lPcHRpb25zIHtcbiAgLyogQW4gYXJyYXkgb2YgcGF0aHMgZm9yIHdoaWNoIHRoZSBmZWF0dXJlIHNob3VsZCBiZSBlbmFibGVkLiBUaGUgbW91bnQgcGF0aCBtdXN0IG5vdCBiZSBpbmNsdWRlZCwgZm9yIGV4YW1wbGUgaW5zdGVhZCBvZiBgL3BhcnNlL2Z1bmN0aW9ucy9teUZ1bmN0aW9uYCBzcGVjaWZpeSBgZnVuY3Rpb25zL215RnVuY3Rpb25gLiBUaGUgZW50cmllcyBhcmUgaW50ZXJwcmV0ZWQgYXMgcmVndWxhciBleHByZXNzaW9uLCBmb3IgZXhhbXBsZSBgZnVuY3Rpb25zLy4qYCBtYXRjaGVzIGFsbCBmdW5jdGlvbnMsIGBqb2JzLy4qYCBtYXRjaGVzIGFsbCBqb2JzLCBgY2xhc3Nlcy8uKmAgbWF0Y2hlcyBhbGwgY2xhc3NlcywgYC4qYCBtYXRjaGVzIGFsbCBwYXRocy5cbiAgOkRFRkFVTFQ6IFtdICovXG4gIHBhdGhzOiA/KHN0cmluZ1tdKTtcbiAgLyogVGhlIGR1cmF0aW9uIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggYSByZXF1ZXN0IHJlY29yZCBpcyBkaXNjYXJkZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGRlZmF1bHRzIHRvIDMwMHMuXG4gIDpERUZBVUxUOiAzMDAgKi9cbiAgdHRsOiA/bnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRMb2Nrb3V0T3B0aW9ucyB7XG4gIC8qIFNldCB0aGUgZHVyYXRpb24gaW4gbWludXRlcyB0aGF0IGEgbG9ja2VkLW91dCBhY2NvdW50IHJlbWFpbnMgbG9ja2VkIG91dCBiZWZvcmUgYXV0b21hdGljYWxseSBiZWNvbWluZyB1bmxvY2tlZC5cbiAgPGJyPjxicj5cbiAgVmFsaWQgdmFsdWVzIGFyZSBncmVhdGVyIHRoYW4gYDBgIGFuZCBsZXNzIHRoYW4gYDEwMDAwMGAuICovXG4gIGR1cmF0aW9uOiA/bnVtYmVyO1xuICAvKiBTZXQgdGhlIG51bWJlciBvZiBmYWlsZWQgc2lnbi1pbiBhdHRlbXB0cyB0aGF0IHdpbGwgY2F1c2UgYSB1c2VyIGFjY291bnQgdG8gYmUgbG9ja2VkLiBJZiB0aGUgYWNjb3VudCBpcyBsb2NrZWQuIFRoZSBhY2NvdW50IHdpbGwgdW5sb2NrIGFmdGVyIHRoZSBkdXJhdGlvbiBzZXQgaW4gdGhlIGBkdXJhdGlvbmAgb3B0aW9uIGhhcyBwYXNzZWQgYW5kIG5vIGZ1cnRoZXIgbG9naW4gYXR0ZW1wdHMgaGF2ZSBiZWVuIG1hZGUuXG4gIDxicj48YnI+XG4gIFZhbGlkIHZhbHVlcyBhcmUgZ3JlYXRlciB0aGFuIGAwYCBhbmQgbGVzcyB0aGFuIGAxMDAwYC4gKi9cbiAgdGhyZXNob2xkOiA/bnVtYmVyO1xuICAvKiBTZXQgdG8gYHRydWVgICBpZiB0aGUgYWNjb3VudCBzaG91bGQgYmUgdW5sb2NrZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIHBhc3N3b3JkIHJlc2V0LlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gIDxicj5cbiAgUmVxdWlyZXMgb3B0aW9ucyBgZHVyYXRpb25gIGFuZCBgdGhyZXNob2xkYCB0byBiZSBzZXQuXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICB1bmxvY2tPblBhc3N3b3JkUmVzZXQ6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3N3b3JkUG9saWN5T3B0aW9ucyB7XG4gIC8qIFNldCB0aGUgcmVndWxhciBleHByZXNzaW9uIHZhbGlkYXRpb24gcGF0dGVybiBhIHBhc3N3b3JkIG11c3QgbWF0Y2ggdG8gYmUgYWNjZXB0ZWQuXG4gIDxicj48YnI+XG4gIElmIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBgdmFsaWRhdG9yQ2FsbGJhY2tgLCB0aGUgcGFzc3dvcmQgbXVzdCBwYXNzIGJvdGggdG8gYmUgYWNjZXB0ZWQuICovXG4gIHZhbGlkYXRvclBhdHRlcm46ID9zdHJpbmc7XG4gIC8qICAgKi9cbiAgLyogU2V0IGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYSBwYXNzd29yZCB0byBiZSBhY2NlcHRlZC5cbiAgPGJyPjxicj5cbiAgSWYgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGB2YWxpZGF0b3JQYXR0ZXJuYCwgdGhlIHBhc3N3b3JkIG11c3QgcGFzcyBib3RoIHRvIGJlIGFjY2VwdGVkLiAqL1xuICB2YWxpZGF0b3JDYWxsYmFjazogPygpID0+IHZvaWQ7XG4gIC8qIFNldCB0aGUgZXJyb3IgbWVzc2FnZSB0byBiZSBzZW50LlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGBQYXNzd29yZCBkb2VzIG5vdCBtZWV0IHRoZSBQYXNzd29yZCBQb2xpY3kgcmVxdWlyZW1lbnRzLmAgKi9cbiAgdmFsaWRhdGlvbkVycm9yOiA/c3RyaW5nO1xuICAvKiBTZXQgdG8gYHRydWVgIHRvIGRpc2FsbG93IHRoZSB1c2VybmFtZSBhcyBwYXJ0IG9mIHRoZSBwYXNzd29yZC5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZG9Ob3RBbGxvd1VzZXJuYW1lOiA/Ym9vbGVhbjtcbiAgLyogU2V0IHRoZSBudW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCBhIHBhc3N3b3JkIGV4cGlyZXMuIExvZ2luIGF0dGVtcHRzIGZhaWwgaWYgdGhlIHVzZXIgZG9lcyBub3QgcmVzZXQgdGhlIHBhc3N3b3JkIGJlZm9yZSBleHBpcmF0aW9uLiAqL1xuICBtYXhQYXNzd29yZEFnZTogP251bWJlcjtcbiAgLyogU2V0IHRoZSBudW1iZXIgb2YgcHJldmlvdXMgcGFzc3dvcmQgdGhhdCB3aWxsIG5vdCBiZSBhbGxvd2VkIHRvIGJlIHNldCBhcyBuZXcgcGFzc3dvcmQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYDBgLCBubyBwcmV2aW91cyBwYXNzd29yZHMgd2lsbCBiZSBjb25zaWRlcmVkLlxuICA8YnI+PGJyPlxuICBWYWxpZCB2YWx1ZXMgYXJlID49IGAwYCBhbmQgPD0gYDIwYC5cbiAgPGJyPlxuICBEZWZhdWx0IGlzIGAwYC5cbiAgKi9cbiAgbWF4UGFzc3dvcmRIaXN0b3J5OiA/bnVtYmVyO1xuICAvKiBTZXQgdGhlIHZhbGlkaXR5IGR1cmF0aW9uIG9mIHRoZSBwYXNzd29yZCByZXNldCB0b2tlbiBpbiBzZWNvbmRzIGFmdGVyIHdoaWNoIHRoZSB0b2tlbiBleHBpcmVzLiBUaGUgdG9rZW4gaXMgdXNlZCBpbiB0aGUgbGluayB0aGF0IGlzIHNldCBpbiB0aGUgZW1haWwuIEFmdGVyIHRoZSB0b2tlbiBleHBpcmVzLCB0aGUgbGluayBiZWNvbWVzIGludmFsaWQgYW5kIGEgbmV3IGxpbmsgaGFzIHRvIGJlIHNlbnQuIElmIHRoZSBvcHRpb24gaXMgbm90IHNldCBvciBzZXQgdG8gYHVuZGVmaW5lZGAsIHRoZW4gdGhlIHRva2VuIG5ldmVyIGV4cGlyZXMuXG4gIDxicj48YnI+XG4gIEZvciBleGFtcGxlLCB0byBleHBpcmUgdGhlIHRva2VuIGFmdGVyIDIgaG91cnMsIHNldCBhIHZhbHVlIG9mIDcyMDAgc2Vjb25kcyAoPSA2MCBzZWNvbmRzICogNjAgbWludXRlcyAqIDIgaG91cnMpLlxuICA8YnI+PGJyPlxuICBEZWZhdWx0IGlzIGB1bmRlZmluZWRgLlxuICAqL1xuICByZXNldFRva2VuVmFsaWRpdHlEdXJhdGlvbjogP251bWJlcjtcbiAgLyogU2V0IHRvIGB0cnVlYCBpZiBhIHBhc3N3b3JkIHJlc2V0IHRva2VuIHNob3VsZCBiZSByZXVzZWQgaW4gY2FzZSBhbm90aGVyIHRva2VuIGlzIHJlcXVlc3RlZCBidXQgdGhlcmUgaXMgYSB0b2tlbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpLmUuIGhhcyBub3QgZXhwaXJlZC4gVGhpcyBhdm9pZHMgdGhlIG9mdGVuIG9ic2VydmVkIGlzc3VlIHRoYXQgYSB1c2VyIHJlcXVlc3RzIG11bHRpcGxlIGVtYWlscyBhbmQgZG9lcyBub3Qga25vdyB3aGljaCBsaW5rIGNvbnRhaW5zIGEgdmFsaWQgdG9rZW4gYmVjYXVzZSBlYWNoIG5ld2x5IGdlbmVyYXRlZCB0b2tlbiB3b3VsZCBpbnZhbGlkYXRlIHRoZSBwcmV2aW91cyB0b2tlbi5cbiAgPGJyPjxicj5cbiAgRGVmYXVsdCBpcyBgZmFsc2VgLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgcmVzZXRUb2tlblJldXNlSWZWYWxpZDogP2Jvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVVwbG9hZE9wdGlvbnMge1xuICAvKiAgSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW5vbnltb3VzIHVzZXJzLlxuICA6REVGQVVMVDogZmFsc2UgKi9cbiAgZW5hYmxlRm9yQW5vbnltb3VzVXNlcjogP2Jvb2xlYW47XG4gIC8qIElzIHRydWUgaWYgZmlsZSB1cGxvYWQgc2hvdWxkIGJlIGFsbG93ZWQgZm9yIGF1dGhlbnRpY2F0ZWQgdXNlcnMuXG4gIDpERUZBVUxUOiB0cnVlICovXG4gIGVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyOiA/Ym9vbGVhbjtcbiAgLyogSXMgdHJ1ZSBpZiBmaWxlIHVwbG9hZCBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYW55b25lLCByZWdhcmRsZXNzIG9mIHVzZXIgYXV0aGVudGljYXRpb24uXG4gIDpERUZBVUxUOiBmYWxzZSAqL1xuICBlbmFibGVGb3JQdWJsaWM6ID9ib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlT3B0aW9ucyB7XG4gIC8qIEVuYWJsZXMgZGF0YWJhc2UgcmVhbC10aW1lIGhvb2tzIHRvIHVwZGF0ZSBzaW5nbGUgc2NoZW1hIGNhY2hlLiBTZXQgdG8gYHRydWVgIGlmIHVzaW5nIG11bHRpcGxlIFBhcnNlIFNlcnZlcnMgaW5zdGFuY2VzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBkYXRhYmFzZS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIGNhdXNlIGEgc2NoZW1hIGNoYW5nZSB0byBub3QgcHJvcGFnYXRlIHRvIGFsbCBpbnN0YW5jZXMgYW5kIHJlLXN5bmNpbmcgd2lsbCBvbmx5IGhhcHBlbiB3aGVuIHRoZSBpbnN0YW5jZXMgcmVzdGFydC4gVG8gdXNlIHRoaXMgZmVhdHVyZSB3aXRoIE1vbmdvREIsIGEgcmVwbGljYSBzZXQgY2x1c3RlciB3aXRoIFtjaGFuZ2Ugc3RyZWFtXShodHRwczovL2RvY3MubW9uZ29kYi5jb20vbWFudWFsL2NoYW5nZVN0cmVhbXMvI2F2YWlsYWJpbGl0eSkgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgOkRFRkFVTFQ6IGZhbHNlICovXG4gIGVuYWJsZVNjaGVtYUhvb2tzOiA/Ym9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRoQWRhcHRlciB7XG4gIC8qIElzIGB0cnVlYCBpZiB0aGUgYXV0aCBhZGFwdGVyIGlzIGVuYWJsZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICA6REVGQVVMVDogdHJ1ZVxuICA6RU5WOlxuICAqL1xuICBlbmFibGVkOiA/Ym9vbGVhbjtcbn1cbiJdfQ==
@@ -342,6 +342,10 @@ class ParseServer {
342
342
  if (options.startLiveQueryServer || options.liveQueryServerOptions) {
343
343
  this.liveQueryServer = ParseServer.createLiveQueryServer(server, options.liveQueryServerOptions, options);
344
344
  }
345
+
346
+ if (options.trustProxy) {
347
+ app.set('trust proxy', options.trustProxy);
348
+ }
345
349
  /* istanbul ignore next */
346
350
 
347
351
 
@@ -529,4 +533,4 @@ function configureListeners(parseServer) {
529
533
 
530
534
  var _default = ParseServer;
531
535
  exports.default = _default;
532
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9QYXJzZVNlcnZlci5qcyJdLCJuYW1lcyI6WyJiYXRjaCIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiZXhwcmVzcyIsIm1pZGRsZXdhcmVzIiwiUGFyc2UiLCJwYXJzZSIsInBhdGgiLCJmcyIsImFkZFBhcnNlQ2xvdWQiLCJQYXJzZVNlcnZlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIkRlcHJlY2F0b3IiLCJzY2FuUGFyc2VTZXJ2ZXJPcHRpb25zIiwiaW5qZWN0RGVmYXVsdHMiLCJhcHBJZCIsIm1hc3RlcktleSIsImNsb3VkIiwic2VjdXJpdHkiLCJqYXZhc2NyaXB0S2V5Iiwic2VydmVyVVJMIiwic2VydmVyU3RhcnRDb21wbGV0ZSIsInNjaGVtYSIsImluaXRpYWxpemUiLCJhbGxDb250cm9sbGVycyIsImNvbnRyb2xsZXJzIiwiZ2V0Q29udHJvbGxlcnMiLCJsb2dnZXJDb250cm9sbGVyIiwiZGF0YWJhc2VDb250cm9sbGVyIiwiaG9va3NDb250cm9sbGVyIiwiY29uZmlnIiwiQ29uZmlnIiwicHV0IiwiT2JqZWN0IiwiYXNzaWduIiwibG9nZ2luZyIsInNldExvZ2dlciIsInBlcmZvcm1Jbml0aWFsaXphdGlvbiIsInRoZW4iLCJsb2FkIiwiRGVmaW5lZFNjaGVtYXMiLCJleGVjdXRlIiwiY2F0Y2giLCJlcnJvciIsImNvbnNvbGUiLCJwcm9jZXNzIiwiZXhpdCIsInJlc29sdmUiLCJjd2QiLCJlbmFibGVDaGVjayIsImVuYWJsZUNoZWNrTG9nIiwiQ2hlY2tSdW5uZXIiLCJydW4iLCJhcHAiLCJfYXBwIiwiaGFuZGxlU2h1dGRvd24iLCJwcm9taXNlcyIsImFkYXB0ZXIiLCJkYXRhYmFzZUFkYXB0ZXIiLCJwdXNoIiwiZmlsZUFkYXB0ZXIiLCJmaWxlc0NvbnRyb2xsZXIiLCJjYWNoZUFkYXB0ZXIiLCJjYWNoZUNvbnRyb2xsZXIiLCJsZW5ndGgiLCJQcm9taXNlIiwiYWxsIiwic2VydmVyQ2xvc2VDb21wbGV0ZSIsIm1heFVwbG9hZFNpemUiLCJkaXJlY3RBY2Nlc3MiLCJwYWdlcyIsImFwaSIsInVzZSIsImFsbG93Q3Jvc3NEb21haW4iLCJGaWxlc1JvdXRlciIsImV4cHJlc3NSb3V0ZXIiLCJyZXEiLCJyZXMiLCJqc29uIiwic3RhdHVzIiwidXJsZW5jb2RlZCIsImV4dGVuZGVkIiwiZW5hYmxlUm91dGVyIiwiUGFnZXNSb3V0ZXIiLCJQdWJsaWNBUElSb3V0ZXIiLCJ0eXBlIiwibGltaXQiLCJhbGxvd01ldGhvZE92ZXJyaWRlIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiYXBwUm91dGVyIiwicHJvbWlzZVJvdXRlciIsImhhbmRsZVBhcnNlRXJyb3JzIiwiZW52IiwiVEVTVElORyIsIm9uIiwiZXJyIiwiY29kZSIsInN0ZGVyciIsIndyaXRlIiwicG9ydCIsInZlcmlmeVNlcnZlclVybCIsIlBBUlNFX1NFUlZFUl9FTkFCTEVfRVhQRVJJTUVOVEFMX0RJUkVDVF9BQ0NFU1MiLCJDb3JlTWFuYWdlciIsInNldFJFU1RDb250cm9sbGVyIiwicm91dGVycyIsIkNsYXNzZXNSb3V0ZXIiLCJVc2Vyc1JvdXRlciIsIlNlc3Npb25zUm91dGVyIiwiUm9sZXNSb3V0ZXIiLCJBbmFseXRpY3NSb3V0ZXIiLCJJbnN0YWxsYXRpb25zUm91dGVyIiwiRnVuY3Rpb25zUm91dGVyIiwiU2NoZW1hc1JvdXRlciIsIlB1c2hSb3V0ZXIiLCJMb2dzUm91dGVyIiwiSUFQVmFsaWRhdGlvblJvdXRlciIsIkZlYXR1cmVzUm91dGVyIiwiR2xvYmFsQ29uZmlnUm91dGVyIiwiR3JhcGhRTFJvdXRlciIsIlB1cmdlUm91dGVyIiwiSG9va3NSb3V0ZXIiLCJDbG91ZENvZGVSb3V0ZXIiLCJBdWRpZW5jZXNSb3V0ZXIiLCJBZ2dyZWdhdGVSb3V0ZXIiLCJTZWN1cml0eVJvdXRlciIsInJvdXRlcyIsInJlZHVjZSIsIm1lbW8iLCJyb3V0ZXIiLCJjb25jYXQiLCJQcm9taXNlUm91dGVyIiwibW91bnRPbnRvIiwic3RhcnQiLCJjYWxsYmFjayIsIm1pZGRsZXdhcmUiLCJtb3VudFBhdGgiLCJtb3VudEdyYXBoUUwiLCJtb3VudFBsYXlncm91bmQiLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJ1bmRlZmluZWQiLCJncmFwaFFMU2NoZW1hIiwicmVhZEZpbGVTeW5jIiwicGFyc2VHcmFwaFFMU2VydmVyIiwiUGFyc2VHcmFwaFFMU2VydmVyIiwiZ3JhcGhRTFBhdGgiLCJwbGF5Z3JvdW5kUGF0aCIsImFwcGx5R3JhcGhRTCIsImFwcGx5UGxheWdyb3VuZCIsInNlcnZlciIsImxpc3RlbiIsImhvc3QiLCJzdGFydExpdmVRdWVyeVNlcnZlciIsImxpdmVRdWVyeVNlcnZlck9wdGlvbnMiLCJsaXZlUXVlcnlTZXJ2ZXIiLCJjcmVhdGVMaXZlUXVlcnlTZXJ2ZXIiLCJjb25maWd1cmVMaXN0ZW5lcnMiLCJleHByZXNzQXBwIiwicGFyc2VTZXJ2ZXIiLCJodHRwU2VydmVyIiwiY3JlYXRlU2VydmVyIiwiUGFyc2VMaXZlUXVlcnlTZXJ2ZXIiLCJyZXF1ZXN0IiwidXJsIiwicmVwbGFjZSIsInJlc3BvbnNlIiwiZGF0YSIsIndhcm4iLCJQYXJzZUNsb3VkIiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJhcHBsaWNhdGlvbklkIiwic2V0IiwibmV3VmFsIiwiY29uZmlndXJhYmxlIiwiQ2xvdWQiLCJnbG9iYWwiLCJrZXlzIiwiZGVmYXVsdHMiLCJmb3JFYWNoIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwicmVnZXgiLCJtYXRjaCIsInVzZXJTZW5zaXRpdmVGaWVsZHMiLCJBcnJheSIsImZyb20iLCJTZXQiLCJwcm90ZWN0ZWRGaWVsZHMiLCJfVXNlciIsImMiLCJjdXIiLCJyIiwidW5xIiwibWFzdGVyS2V5SXBzIiwic29ja2V0cyIsInNvY2tldCIsInNvY2tldElkIiwicmVtb3RlQWRkcmVzcyIsInJlbW90ZVBvcnQiLCJkZXN0cm95QWxpdmVDb25uZWN0aW9ucyIsImRlc3Ryb3kiLCJlIiwic3Rkb3V0IiwiY2xvc2UiXSwibWFw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QUFPLENBQUMrSixNQUFSLENBQWUxRyxLQUFmLENBQXFCLDZDQUFyQjtBQUNBdUcsSUFBQUEsdUJBQXVCO0FBQ3ZCckQsSUFBQUEsTUFBTSxDQUFDeUQsS0FBUDtBQUNBaEQsSUFBQUEsV0FBVyxDQUFDdEcsY0FBWjtBQUNELEdBTEQ7O0FBTUFWLEVBQUFBLE9BQU8sQ0FBQ2lELEVBQVIsQ0FBVyxTQUFYLEVBQXNCdkMsY0FBdEI7QUFDQVYsRUFBQUEsT0FBTyxDQUFDaUQsRUFBUixDQUFXLFFBQVgsRUFBcUJ2QyxjQUFyQjtBQUNEOztlQUVjOUMsVyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFBhcnNlU2VydmVyIC0gb3Blbi1zb3VyY2UgY29tcGF0aWJsZSBBUEkgU2VydmVyIGZvciBQYXJzZSBhcHBzXG5cbnZhciBiYXRjaCA9IHJlcXVpcmUoJy4vYmF0Y2gnKSxcbiAgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyksXG4gIGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJyksXG4gIG1pZGRsZXdhcmVzID0gcmVxdWlyZSgnLi9taWRkbGV3YXJlcycpLFxuICBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZSxcbiAgeyBwYXJzZSB9ID0gcmVxdWlyZSgnZ3JhcGhxbCcpLFxuICBwYXRoID0gcmVxdWlyZSgncGF0aCcpLFxuICBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbmltcG9ydCB7IFBhcnNlU2VydmVyT3B0aW9ucywgTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyB9IGZyb20gJy4vT3B0aW9ucyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cyc7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi9Db25maWcnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCByZXF1aXJlZFBhcmFtZXRlciBmcm9tICcuL3JlcXVpcmVkUGFyYW1ldGVyJztcbmltcG9ydCB7IEFuYWx5dGljc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9BbmFseXRpY3NSb3V0ZXInO1xuaW1wb3J0IHsgQ2xhc3Nlc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9DbGFzc2VzUm91dGVyJztcbmltcG9ydCB7IEZlYXR1cmVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0ZlYXR1cmVzUm91dGVyJztcbmltcG9ydCB7IEZpbGVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0ZpbGVzUm91dGVyJztcbmltcG9ydCB7IEZ1bmN0aW9uc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9GdW5jdGlvbnNSb3V0ZXInO1xuaW1wb3J0IHsgR2xvYmFsQ29uZmlnUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0dsb2JhbENvbmZpZ1JvdXRlcic7XG5pbXBvcnQgeyBHcmFwaFFMUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0dyYXBoUUxSb3V0ZXInO1xuaW1wb3J0IHsgSG9va3NSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvSG9va3NSb3V0ZXInO1xuaW1wb3J0IHsgSUFQVmFsaWRhdGlvblJvdXRlciB9IGZyb20gJy4vUm91dGVycy9JQVBWYWxpZGF0aW9uUm91dGVyJztcbmltcG9ydCB7IEluc3RhbGxhdGlvbnNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvSW5zdGFsbGF0aW9uc1JvdXRlcic7XG5pbXBvcnQgeyBMb2dzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0xvZ3NSb3V0ZXInO1xuaW1wb3J0IHsgUGFyc2VMaXZlUXVlcnlTZXJ2ZXIgfSBmcm9tICcuL0xpdmVRdWVyeS9QYXJzZUxpdmVRdWVyeVNlcnZlcic7XG5pbXBvcnQgeyBQYWdlc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9QYWdlc1JvdXRlcic7XG5pbXBvcnQgeyBQdWJsaWNBUElSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvUHVibGljQVBJUm91dGVyJztcbmltcG9ydCB7IFB1c2hSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvUHVzaFJvdXRlcic7XG5pbXBvcnQgeyBDbG91ZENvZGVSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvQ2xvdWRDb2RlUm91dGVyJztcbmltcG9ydCB7IFJvbGVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL1JvbGVzUm91dGVyJztcbmltcG9ydCB7IFNjaGVtYXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvU2NoZW1hc1JvdXRlcic7XG5pbXBvcnQgeyBTZXNzaW9uc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9TZXNzaW9uc1JvdXRlcic7XG5pbXBvcnQgeyBVc2Vyc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9Vc2Vyc1JvdXRlcic7XG5pbXBvcnQgeyBQdXJnZVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9QdXJnZVJvdXRlcic7XG5pbXBvcnQgeyBBdWRpZW5jZXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvQXVkaWVuY2VzUm91dGVyJztcbmltcG9ydCB7IEFnZ3JlZ2F0ZVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9BZ2dyZWdhdGVSb3V0ZXInO1xuaW1wb3J0IHsgUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlciB9IGZyb20gJy4vUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBjb250cm9sbGVycyBmcm9tICcuL0NvbnRyb2xsZXJzJztcbmltcG9ydCB7IFBhcnNlR3JhcGhRTFNlcnZlciB9IGZyb20gJy4vR3JhcGhRTC9QYXJzZUdyYXBoUUxTZXJ2ZXInO1xuaW1wb3J0IHsgU2VjdXJpdHlSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvU2VjdXJpdHlSb3V0ZXInO1xuaW1wb3J0IENoZWNrUnVubmVyIGZyb20gJy4vU2VjdXJpdHkvQ2hlY2tSdW5uZXInO1xuaW1wb3J0IERlcHJlY2F0b3IgZnJvbSAnLi9EZXByZWNhdG9yL0RlcHJlY2F0b3InO1xuaW1wb3J0IHsgRGVmaW5lZFNjaGVtYXMgfSBmcm9tICcuL1NjaGVtYU1pZ3JhdGlvbnMvRGVmaW5lZFNjaGVtYXMnO1xuXG4vLyBNdXRhdGUgdGhlIFBhcnNlIG9iamVjdCB0byBhZGQgdGhlIENsb3VkIENvZGUgaGFuZGxlcnNcbmFkZFBhcnNlQ2xvdWQoKTtcblxuLy8gUGFyc2VTZXJ2ZXIgd29ya3MgbGlrZSBhIGNvbnN0cnVjdG9yIG9mIGFuIGV4cHJlc3MgYXBwLlxuLy8gaHR0cHM6Ly9wYXJzZXBsYXRmb3JtLm9yZy9wYXJzZS1zZXJ2ZXIvYXBpL21hc3Rlci9QYXJzZVNlcnZlck9wdGlvbnMuaHRtbFxuY2xhc3MgUGFyc2VTZXJ2ZXIge1xuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7UGFyc2VTZXJ2ZXJPcHRpb25zfSBvcHRpb25zIHRoZSBwYXJzZSBzZXJ2ZXIgaW5pdGlhbGl6YXRpb24gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKSB7XG4gICAgLy8gU2NhbiBmb3IgZGVwcmVjYXRlZCBQYXJzZSBTZXJ2ZXIgb3B0aW9uc1xuICAgIERlcHJlY2F0b3Iuc2NhblBhcnNlU2VydmVyT3B0aW9ucyhvcHRpb25zKTtcbiAgICAvLyBTZXQgb3B0aW9uIGRlZmF1bHRzXG4gICAgaW5qZWN0RGVmYXVsdHMob3B0aW9ucyk7XG4gICAgY29uc3Qge1xuICAgICAgYXBwSWQgPSByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhbiBhcHBJZCEnKSxcbiAgICAgIG1hc3RlcktleSA9IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgbWFzdGVyS2V5IScpLFxuICAgICAgY2xvdWQsXG4gICAgICBzZWN1cml0eSxcbiAgICAgIGphdmFzY3JpcHRLZXksXG4gICAgICBzZXJ2ZXJVUkwgPSByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIHNlcnZlclVSTCEnKSxcbiAgICAgIHNlcnZlclN0YXJ0Q29tcGxldGUsXG4gICAgICBzY2hlbWEsXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbm9kZSBjbGllbnQgU0RLIGF1dG9tYXRpY2FsbHlcbiAgICBQYXJzZS5pbml0aWFsaXplKGFwcElkLCBqYXZhc2NyaXB0S2V5IHx8ICd1bnVzZWQnLCBtYXN0ZXJLZXkpO1xuICAgIFBhcnNlLnNlcnZlclVSTCA9IHNlcnZlclVSTDtcblxuICAgIGNvbnN0IGFsbENvbnRyb2xsZXJzID0gY29udHJvbGxlcnMuZ2V0Q29udHJvbGxlcnMob3B0aW9ucyk7XG5cbiAgICBjb25zdCB7IGxvZ2dlckNvbnRyb2xsZXIsIGRhdGFiYXNlQ29udHJvbGxlciwgaG9va3NDb250cm9sbGVyIH0gPSBhbGxDb250cm9sbGVycztcbiAgICB0aGlzLmNvbmZpZyA9IENvbmZpZy5wdXQoT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywgYWxsQ29udHJvbGxlcnMpKTtcblxuICAgIGxvZ2dpbmcuc2V0TG9nZ2VyKGxvZ2dlckNvbnRyb2xsZXIpO1xuXG4gICAgLy8gTm90ZTogVGVzdHMgd2lsbCBzdGFydCB0byBmYWlsIGlmIGFueSB2YWxpZGF0aW9uIGhhcHBlbnMgYWZ0ZXIgdGhpcyBpcyBjYWxsZWQuXG4gICAgZGF0YWJhc2VDb250cm9sbGVyXG4gICAgICAucGVyZm9ybUluaXRpYWxpemF0aW9uKClcbiAgICAgIC50aGVuKCgpID0+IGhvb2tzQ29udHJvbGxlci5sb2FkKCkpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChzY2hlbWEpIHtcbiAgICAgICAgICBhd2FpdCBuZXcgRGVmaW5lZFNjaGVtYXMoc2NoZW1hLCB0aGlzLmNvbmZpZykuZXhlY3V0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXJ2ZXJTdGFydENvbXBsZXRlKSB7XG4gICAgICAgICAgc2VydmVyU3RhcnRDb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaWYgKHNlcnZlclN0YXJ0Q29tcGxldGUpIHtcbiAgICAgICAgICBzZXJ2ZXJTdGFydENvbXBsZXRlKGVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKGNsb3VkKSB7XG4gICAgICBhZGRQYXJzZUNsb3VkKCk7XG4gICAgICBpZiAodHlwZW9mIGNsb3VkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNsb3VkKFBhcnNlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNsb3VkID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXF1aXJlKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjbG91ZCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgXCJhcmd1bWVudCAnY2xvdWQnIG11c3QgZWl0aGVyIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb25cIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2VjdXJpdHkgJiYgc2VjdXJpdHkuZW5hYmxlQ2hlY2sgJiYgc2VjdXJpdHkuZW5hYmxlQ2hlY2tMb2cpIHtcbiAgICAgIG5ldyBDaGVja1J1bm5lcihvcHRpb25zLnNlY3VyaXR5KS5ydW4oKTtcbiAgICB9XG4gIH1cblxuICBnZXQgYXBwKCkge1xuICAgIGlmICghdGhpcy5fYXBwKSB7XG4gICAgICB0aGlzLl9hcHAgPSBQYXJzZVNlcnZlci5hcHAodGhpcy5jb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYXBwO1xuICB9XG5cbiAgaGFuZGxlU2h1dGRvd24oKSB7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICBjb25zdCB7IGFkYXB0ZXI6IGRhdGFiYXNlQWRhcHRlciB9ID0gdGhpcy5jb25maWcuZGF0YWJhc2VDb250cm9sbGVyO1xuICAgIGlmIChkYXRhYmFzZUFkYXB0ZXIgJiYgdHlwZW9mIGRhdGFiYXNlQWRhcHRlci5oYW5kbGVTaHV0ZG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvbWlzZXMucHVzaChkYXRhYmFzZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24oKSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWRhcHRlcjogZmlsZUFkYXB0ZXIgfSA9IHRoaXMuY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICBpZiAoZmlsZUFkYXB0ZXIgJiYgdHlwZW9mIGZpbGVBZGFwdGVyLmhhbmRsZVNodXRkb3duID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGZpbGVBZGFwdGVyLmhhbmRsZVNodXRkb3duKCkpO1xuICAgIH1cbiAgICBjb25zdCB7IGFkYXB0ZXI6IGNhY2hlQWRhcHRlciB9ID0gdGhpcy5jb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgIGlmIChjYWNoZUFkYXB0ZXIgJiYgdHlwZW9mIGNhY2hlQWRhcHRlci5oYW5kbGVTaHV0ZG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvbWlzZXMucHVzaChjYWNoZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24oKSk7XG4gICAgfVxuICAgIHJldHVybiAocHJvbWlzZXMubGVuZ3RoID4gMCA/IFByb21pc2UuYWxsKHByb21pc2VzKSA6IFByb21pc2UucmVzb2x2ZSgpKS50aGVuKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5zZXJ2ZXJDbG9zZUNvbXBsZXRlKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLnNlcnZlckNsb3NlQ29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3RhdGljXG4gICAqIENyZWF0ZSBhbiBleHByZXNzIGFwcCBmb3IgdGhlIHBhcnNlIHNlcnZlclxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBsZXQgeW91IHNwZWNpZnkgdGhlIG1heFVwbG9hZFNpemUgd2hlbiBjcmVhdGluZyB0aGUgZXhwcmVzcyBhcHAgICovXG4gIHN0YXRpYyBhcHAob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbWF4VXBsb2FkU2l6ZSA9ICcyMG1iJywgYXBwSWQsIGRpcmVjdEFjY2VzcywgcGFnZXMgfSA9IG9wdGlvbnM7XG4gICAgLy8gVGhpcyBhcHAgc2VydmVzIHRoZSBQYXJzZSBBUEkgZGlyZWN0bHkuXG4gICAgLy8gSXQncyB0aGUgZXF1aXZhbGVudCBvZiBodHRwczovL2FwaS5wYXJzZS5jb20vMSBpbiB0aGUgaG9zdGVkIFBhcnNlIEFQSS5cbiAgICB2YXIgYXBpID0gZXhwcmVzcygpO1xuICAgIC8vYXBpLnVzZShcIi9hcHBzXCIsIGV4cHJlc3Muc3RhdGljKF9fZGlybmFtZSArIFwiL3B1YmxpY1wiKSk7XG4gICAgYXBpLnVzZShtaWRkbGV3YXJlcy5hbGxvd0Nyb3NzRG9tYWluKGFwcElkKSk7XG4gICAgLy8gRmlsZSBoYW5kbGluZyBuZWVkcyB0byBiZSBiZWZvcmUgZGVmYXVsdCBtaWRkbGV3YXJlcyBhcmUgYXBwbGllZFxuICAgIGFwaS51c2UoXG4gICAgICAnLycsXG4gICAgICBuZXcgRmlsZXNSb3V0ZXIoKS5leHByZXNzUm91dGVyKHtcbiAgICAgICAgbWF4VXBsb2FkU2l6ZTogbWF4VXBsb2FkU2l6ZSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGFwaS51c2UoJy9oZWFsdGgnLCBmdW5jdGlvbiAocmVxLCByZXMpIHtcbiAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgc3RhdHVzOiAnb2snLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhcGkudXNlKFxuICAgICAgJy8nLFxuICAgICAgYm9keVBhcnNlci51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IGZhbHNlIH0pLFxuICAgICAgcGFnZXMuZW5hYmxlUm91dGVyXG4gICAgICAgID8gbmV3IFBhZ2VzUm91dGVyKHBhZ2VzKS5leHByZXNzUm91dGVyKClcbiAgICAgICAgOiBuZXcgUHVibGljQVBJUm91dGVyKCkuZXhwcmVzc1JvdXRlcigpXG4gICAgKTtcblxuICAgIGFwaS51c2UoYm9keVBhcnNlci5qc29uKHsgdHlwZTogJyovKicsIGxpbWl0OiBtYXhVcGxvYWRTaXplIH0pKTtcbiAgICBhcGkudXNlKG1pZGRsZXdhcmVzLmFsbG93TWV0aG9kT3ZlcnJpZGUpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzKTtcblxuICAgIGNvbnN0IGFwcFJvdXRlciA9IFBhcnNlU2VydmVyLnByb21pc2VSb3V0ZXIoeyBhcHBJZCB9KTtcbiAgICBhcGkudXNlKGFwcFJvdXRlci5leHByZXNzUm91dGVyKCkpO1xuXG4gICAgYXBpLnVzZShtaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUVycm9ycyk7XG5cbiAgICAvLyBydW4gdGhlIGZvbGxvd2luZyB3aGVuIG5vdCB0ZXN0aW5nXG4gICAgaWYgKCFwcm9jZXNzLmVudi5URVNUSU5HKSB7XG4gICAgICAvL1RoaXMgY2F1c2VzIHRlc3RzIHRvIHNwZXcgc29tZSB1c2VsZXNzIHdhcm5pbmdzLCBzbyBkaXNhYmxlIGluIHRlc3RcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbicsIGVyciA9PiB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBRERSSU5VU0UnKSB7XG4gICAgICAgICAgLy8gdXNlci1mcmllbmRseSBtZXNzYWdlIGZvciB0aGlzIGNvbW1vbiBlcnJvclxuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBVbmFibGUgdG8gbGlzdGVuIG9uIHBvcnQgJHtlcnIucG9ydH0uIFRoZSBwb3J0IGlzIGFscmVhZHkgaW4gdXNlLmApO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gdmVyaWZ5IHRoZSBzZXJ2ZXIgdXJsIGFmdGVyIGEgJ21vdW50JyBldmVudCBpcyByZWNlaXZlZFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGFwaS5vbignbW91bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIFBhcnNlU2VydmVyLnZlcmlmeVNlcnZlclVybCgpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5QQVJTRV9TRVJWRVJfRU5BQkxFX0VYUEVSSU1FTlRBTF9ESVJFQ1RfQUNDRVNTID09PSAnMScgfHwgZGlyZWN0QWNjZXNzKSB7XG4gICAgICBQYXJzZS5Db3JlTWFuYWdlci5zZXRSRVNUQ29udHJvbGxlcihQYXJzZVNlcnZlclJFU1RDb250cm9sbGVyKGFwcElkLCBhcHBSb3V0ZXIpKTtcbiAgICB9XG4gICAgcmV0dXJuIGFwaTtcbiAgfVxuXG4gIHN0YXRpYyBwcm9taXNlUm91dGVyKHsgYXBwSWQgfSkge1xuICAgIGNvbnN0IHJvdXRlcnMgPSBbXG4gICAgICBuZXcgQ2xhc3Nlc1JvdXRlcigpLFxuICAgICAgbmV3IFVzZXJzUm91dGVyKCksXG4gICAgICBuZXcgU2Vzc2lvbnNSb3V0ZXIoKSxcbiAgICAgIG5ldyBSb2xlc1JvdXRlcigpLFxuICAgICAgbmV3IEFuYWx5dGljc1JvdXRlcigpLFxuICAgICAgbmV3IEluc3RhbGxhdGlvbnNSb3V0ZXIoKSxcbiAgICAgIG5ldyBGdW5jdGlvbnNSb3V0ZXIoKSxcbiAgICAgIG5ldyBTY2hlbWFzUm91dGVyKCksXG4gICAgICBuZXcgUHVzaFJvdXRlcigpLFxuICAgICAgbmV3IExvZ3NSb3V0ZXIoKSxcbiAgICAgIG5ldyBJQVBWYWxpZGF0aW9uUm91dGVyKCksXG4gICAgICBuZXcgRmVhdHVyZXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBHbG9iYWxDb25maWdSb3V0ZXIoKSxcbiAgICAgIG5ldyBHcmFwaFFMUm91dGVyKCksXG4gICAgICBuZXcgUHVyZ2VSb3V0ZXIoKSxcbiAgICAgIG5ldyBIb29rc1JvdXRlcigpLFxuICAgICAgbmV3IENsb3VkQ29kZVJvdXRlcigpLFxuICAgICAgbmV3IEF1ZGllbmNlc1JvdXRlcigpLFxuICAgICAgbmV3IEFnZ3JlZ2F0ZVJvdXRlcigpLFxuICAgICAgbmV3IFNlY3VyaXR5Um91dGVyKCksXG4gICAgXTtcblxuICAgIGNvbnN0IHJvdXRlcyA9IHJvdXRlcnMucmVkdWNlKChtZW1vLCByb3V0ZXIpID0+IHtcbiAgICAgIHJldHVybiBtZW1vLmNvbmNhdChyb3V0ZXIucm91dGVzKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBhcHBSb3V0ZXIgPSBuZXcgUHJvbWlzZVJvdXRlcihyb3V0ZXMsIGFwcElkKTtcblxuICAgIGJhdGNoLm1vdW50T250byhhcHBSb3V0ZXIpO1xuICAgIHJldHVybiBhcHBSb3V0ZXI7XG4gIH1cblxuICAvKipcbiAgICogc3RhcnRzIHRoZSBwYXJzZSBzZXJ2ZXIncyBleHByZXNzIGFwcFxuICAgKiBAcGFyYW0ge1BhcnNlU2VydmVyT3B0aW9uc30gb3B0aW9ucyB0byB1c2UgdG8gc3RhcnQgdGhlIHNlcnZlclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgc2VydmVyIGhhcyBzdGFydGVkXG4gICAqIEByZXR1cm5zIHtQYXJzZVNlcnZlcn0gdGhlIHBhcnNlIHNlcnZlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhcnQob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zLCBjYWxsYmFjazogPygpID0+IHZvaWQpIHtcbiAgICBjb25zdCBhcHAgPSBleHByZXNzKCk7XG4gICAgaWYgKG9wdGlvbnMubWlkZGxld2FyZSkge1xuICAgICAgbGV0IG1pZGRsZXdhcmU7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMubWlkZGxld2FyZSA9PSAnc3RyaW5nJykge1xuICAgICAgICBtaWRkbGV3YXJlID0gcmVxdWlyZShwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgb3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtaWRkbGV3YXJlID0gb3B0aW9ucy5taWRkbGV3YXJlOyAvLyB1c2UgYXMtaXMgbGV0IGV4cHJlc3MgZmFpbFxuICAgICAgfVxuICAgICAgYXBwLnVzZShtaWRkbGV3YXJlKTtcbiAgICB9XG5cbiAgICBhcHAudXNlKG9wdGlvbnMubW91bnRQYXRoLCB0aGlzLmFwcCk7XG5cbiAgICBpZiAob3B0aW9ucy5tb3VudEdyYXBoUUwgPT09IHRydWUgfHwgb3B0aW9ucy5tb3VudFBsYXlncm91bmQgPT09IHRydWUpIHtcbiAgICAgIGxldCBncmFwaFFMQ3VzdG9tVHlwZURlZnMgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZ3JhcGhRTFNjaGVtYSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gcGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZ3JhcGhRTFNjaGVtYSwgJ3V0ZjgnKSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2Ygb3B0aW9ucy5ncmFwaFFMU2NoZW1hID09PSAnb2JqZWN0JyB8fFxuICAgICAgICB0eXBlb2Ygb3B0aW9ucy5ncmFwaFFMU2NoZW1hID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gb3B0aW9ucy5ncmFwaFFMU2NoZW1hO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJzZUdyYXBoUUxTZXJ2ZXIgPSBuZXcgUGFyc2VHcmFwaFFMU2VydmVyKHRoaXMsIHtcbiAgICAgICAgZ3JhcGhRTFBhdGg6IG9wdGlvbnMuZ3JhcGhRTFBhdGgsXG4gICAgICAgIHBsYXlncm91bmRQYXRoOiBvcHRpb25zLnBsYXlncm91bmRQYXRoLFxuICAgICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnMsXG4gICAgICB9KTtcblxuICAgICAgaWYgKG9wdGlvbnMubW91bnRHcmFwaFFMKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNlcnZlci5hcHBseUdyYXBoUUwoYXBwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubW91bnRQbGF5Z3JvdW5kKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNlcnZlci5hcHBseVBsYXlncm91bmQoYXBwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzZXJ2ZXIgPSBhcHAubGlzdGVuKG9wdGlvbnMucG9ydCwgb3B0aW9ucy5ob3N0LCBjYWxsYmFjayk7XG4gICAgdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7XG5cbiAgICBpZiAob3B0aW9ucy5zdGFydExpdmVRdWVyeVNlcnZlciB8fCBvcHRpb25zLmxpdmVRdWVyeVNlcnZlck9wdGlvbnMpIHtcbiAgICAgIHRoaXMubGl2ZVF1ZXJ5U2VydmVyID0gUGFyc2VTZXJ2ZXIuY3JlYXRlTGl2ZVF1ZXJ5U2VydmVyKFxuICAgICAgICBzZXJ2ZXIsXG4gICAgICAgIG9wdGlvbnMubGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIXByb2Nlc3MuZW52LlRFU1RJTkcpIHtcbiAgICAgIGNvbmZpZ3VyZUxpc3RlbmVycyh0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5leHByZXNzQXBwID0gYXBwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUGFyc2VTZXJ2ZXIgYW5kIHN0YXJ0cyBpdC5cbiAgICogQHBhcmFtIHtQYXJzZVNlcnZlck9wdGlvbnN9IG9wdGlvbnMgdXNlZCB0byBzdGFydCB0aGUgc2VydmVyXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIGNhbGxlZCB3aGVuIHRoZSBzZXJ2ZXIgaGFzIHN0YXJ0ZWRcbiAgICogQHJldHVybnMge1BhcnNlU2VydmVyfSB0aGUgcGFyc2Ugc2VydmVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgc3RhcnQob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zLCBjYWxsYmFjazogPygpID0+IHZvaWQpIHtcbiAgICBjb25zdCBwYXJzZVNlcnZlciA9IG5ldyBQYXJzZVNlcnZlcihvcHRpb25zKTtcbiAgICByZXR1cm4gcGFyc2VTZXJ2ZXIuc3RhcnQob3B0aW9ucywgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gY3JlYXRlIGEgbGl2ZVF1ZXJ5IHNlcnZlclxuICAgKiBAc3RhdGljXG4gICAqIEBwYXJhbSB7U2VydmVyfSBodHRwU2VydmVyIGFuIG9wdGlvbmFsIGh0dHAgc2VydmVyIHRvIHBhc3NcbiAgICogQHBhcmFtIHtMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zfSBjb25maWcgb3B0aW9ucyBmb3IgdGhlIGxpdmVRdWVyeVNlcnZlclxuICAgKiBAcGFyYW0ge1BhcnNlU2VydmVyT3B0aW9uc30gb3B0aW9ucyBvcHRpb25zIGZvciB0aGUgUGFyc2VTZXJ2ZXJcbiAgICogQHJldHVybnMge1BhcnNlTGl2ZVF1ZXJ5U2VydmVyfSB0aGUgbGl2ZSBxdWVyeSBzZXJ2ZXIgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVMaXZlUXVlcnlTZXJ2ZXIoXG4gICAgaHR0cFNlcnZlcixcbiAgICBjb25maWc6IExpdmVRdWVyeVNlcnZlck9wdGlvbnMsXG4gICAgb3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zXG4gICkge1xuICAgIGlmICghaHR0cFNlcnZlciB8fCAoY29uZmlnICYmIGNvbmZpZy5wb3J0KSkge1xuICAgICAgdmFyIGFwcCA9IGV4cHJlc3MoKTtcbiAgICAgIGh0dHBTZXJ2ZXIgPSByZXF1aXJlKCdodHRwJykuY3JlYXRlU2VydmVyKGFwcCk7XG4gICAgICBodHRwU2VydmVyLmxpc3Rlbihjb25maWcucG9ydCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUGFyc2VMaXZlUXVlcnlTZXJ2ZXIoaHR0cFNlcnZlciwgY29uZmlnLCBvcHRpb25zKTtcbiAgfVxuXG4gIHN0YXRpYyB2ZXJpZnlTZXJ2ZXJVcmwoY2FsbGJhY2spIHtcbiAgICAvLyBwZXJmb3JtIGEgaGVhbHRoIGNoZWNrIG9uIHRoZSBzZXJ2ZXJVUkwgdmFsdWVcbiAgICBpZiAoUGFyc2Uuc2VydmVyVVJMKSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnLi9yZXF1ZXN0Jyk7XG4gICAgICByZXF1ZXN0KHsgdXJsOiBQYXJzZS5zZXJ2ZXJVUkwucmVwbGFjZSgvXFwvJC8sICcnKSArICcvaGVhbHRoJyB9KVxuICAgICAgICAuY2F0Y2gocmVzcG9uc2UgPT4gcmVzcG9uc2UpXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBjb25zdCBqc29uID0gcmVzcG9uc2UuZGF0YSB8fCBudWxsO1xuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCB8fCAhanNvbiB8fCAoanNvbiAmJiBqc29uLnN0YXR1cyAhPT0gJ29rJykpIHtcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgYFxcbldBUk5JTkcsIFVuYWJsZSB0byBjb25uZWN0IHRvICcke1BhcnNlLnNlcnZlclVSTH0nLmAgK1xuICAgICAgICAgICAgICAgIGAgQ2xvdWQgY29kZSBhbmQgcHVzaCBub3RpZmljYXRpb25zIG1heSBiZSB1bmF2YWlsYWJsZSFcXG5gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkUGFyc2VDbG91ZCgpIHtcbiAgY29uc3QgUGFyc2VDbG91ZCA9IHJlcXVpcmUoJy4vY2xvdWQtY29kZS9QYXJzZS5DbG91ZCcpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUGFyc2UsICdTZXJ2ZXInLCB7XG4gICAgZ2V0KCkge1xuICAgICAgcmV0dXJuIENvbmZpZy5nZXQoUGFyc2UuYXBwbGljYXRpb25JZCk7XG4gICAgfSxcbiAgICBzZXQobmV3VmFsKSB7XG4gICAgICBuZXdWYWwuYXBwSWQgPSBQYXJzZS5hcHBsaWNhdGlvbklkO1xuICAgICAgQ29uZmlnLnB1dChuZXdWYWwpO1xuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICB9KTtcbiAgT2JqZWN0LmFzc2lnbihQYXJzZS5DbG91ZCwgUGFyc2VDbG91ZCk7XG4gIGdsb2JhbC5QYXJzZSA9IFBhcnNlO1xufVxuXG5mdW5jdGlvbiBpbmplY3REZWZhdWx0cyhvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpIHtcbiAgT2JqZWN0LmtleXMoZGVmYXVsdHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCBrZXkpKSB7XG4gICAgICBvcHRpb25zW2tleV0gPSBkZWZhdWx0c1trZXldO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NlcnZlclVSTCcpKSB7XG4gICAgb3B0aW9ucy5zZXJ2ZXJVUkwgPSBgaHR0cDovL2xvY2FsaG9zdDoke29wdGlvbnMucG9ydH0ke29wdGlvbnMubW91bnRQYXRofWA7XG4gIH1cblxuICAvLyBSZXNlcnZlZCBDaGFyYWN0ZXJzXG4gIGlmIChvcHRpb25zLmFwcElkKSB7XG4gICAgY29uc3QgcmVnZXggPSAvWyEjJCUnKCkqKyYvOjs9P0BbXFxde31eLHw8Pl0vZztcbiAgICBpZiAob3B0aW9ucy5hcHBJZC5tYXRjaChyZWdleCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFxcbldBUk5JTkcsIGFwcElkIHRoYXQgY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzIGNhbiBjYXVzZSBpc3N1ZXMgd2hpbGUgdXNpbmcgd2l0aCB1cmxzLlxcbmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgaWYgKG9wdGlvbnMudXNlclNlbnNpdGl2ZUZpZWxkcykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAhcHJvY2Vzcy5lbnYuVEVTVElORyAmJlxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXFxuREVQUkVDQVRFRDogdXNlclNlbnNpdGl2ZUZpZWxkcyBoYXMgYmVlbiByZXBsYWNlZCBieSBwcm90ZWN0ZWRGaWVsZHMgYWxsb3dpbmcgdGhlIGFiaWxpdHkgdG8gcHJvdGVjdCBmaWVsZHMgaW4gYWxsIGNsYXNzZXMgd2l0aCBDTFAuIFxcbmBcbiAgICAgICk7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG5cbiAgICBjb25zdCB1c2VyU2Vuc2l0aXZlRmllbGRzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoWy4uLihkZWZhdWx0cy51c2VyU2Vuc2l0aXZlRmllbGRzIHx8IFtdKSwgLi4uKG9wdGlvbnMudXNlclNlbnNpdGl2ZUZpZWxkcyB8fCBbXSldKVxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHMgaXMgdW5zZXQsXG4gICAgLy8gaXQnbGwgYmUgYXNzaWduZWQgdGhlIGRlZmF1bHQgYWJvdmUuXG4gICAgLy8gSGVyZSwgcHJvdGVjdCBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHByb3RlY3RlZEZpZWxkc1xuICAgIC8vIGlzIHNldCwgYnV0IGRvZXNuJ3QgaGF2ZSBfVXNlci5cbiAgICBpZiAoISgnX1VzZXInIGluIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzKSkge1xuICAgICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHMgPSBPYmplY3QuYXNzaWduKHsgX1VzZXI6IFtdIH0sIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1snX1VzZXInXVsnKiddID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoWy4uLihvcHRpb25zLnByb3RlY3RlZEZpZWxkc1snX1VzZXInXVsnKiddIHx8IFtdKSwgLi4udXNlclNlbnNpdGl2ZUZpZWxkc10pXG4gICAgKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHByb3RlY3RlZEZpZWxkcyBvcHRpb25zIHdpdGggZGVmYXVsdHMuXG4gIE9iamVjdC5rZXlzKGRlZmF1bHRzLnByb3RlY3RlZEZpZWxkcykuZm9yRWFjaChjID0+IHtcbiAgICBjb25zdCBjdXIgPSBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1tjXTtcbiAgICBpZiAoIWN1cikge1xuICAgICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHNbY10gPSBkZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHNbY107XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGRlZmF1bHRzLnByb3RlY3RlZEZpZWxkc1tjXSkuZm9yRWFjaChyID0+IHtcbiAgICAgICAgY29uc3QgdW5xID0gbmV3IFNldChbXG4gICAgICAgICAgLi4uKG9wdGlvbnMucHJvdGVjdGVkRmllbGRzW2NdW3JdIHx8IFtdKSxcbiAgICAgICAgICAuLi5kZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHNbY11bcl0sXG4gICAgICAgIF0pO1xuICAgICAgICBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1tjXVtyXSA9IEFycmF5LmZyb20odW5xKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgb3B0aW9ucy5tYXN0ZXJLZXlJcHMgPSBBcnJheS5mcm9tKFxuICAgIG5ldyBTZXQob3B0aW9ucy5tYXN0ZXJLZXlJcHMuY29uY2F0KGRlZmF1bHRzLm1hc3RlcktleUlwcywgb3B0aW9ucy5tYXN0ZXJLZXlJcHMpKVxuICApO1xufVxuXG4vLyBUaG9zZSBjYW4ndCBiZSB0ZXN0ZWQgYXMgaXQgcmVxdWlyZXMgYSBzdWJwcm9jZXNzXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gY29uZmlndXJlTGlzdGVuZXJzKHBhcnNlU2VydmVyKSB7XG4gIGNvbnN0IHNlcnZlciA9IHBhcnNlU2VydmVyLnNlcnZlcjtcbiAgY29uc3Qgc29ja2V0cyA9IHt9O1xuICAvKiBDdXJyZW50bHksIGV4cHJlc3MgZG9lc24ndCBzaHV0IGRvd24gaW1tZWRpYXRlbHkgYWZ0ZXIgcmVjZWl2aW5nIFNJR0lOVC9TSUdURVJNIGlmIGl0IGhhcyBjbGllbnQgY29ubmVjdGlvbnMgdGhhdCBoYXZlbid0IHRpbWVkIG91dC4gKFRoaXMgaXMgYSBrbm93biBpc3N1ZSB3aXRoIG5vZGUgLSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvaXNzdWVzLzI2NDIpXG4gICAgVGhpcyBmdW5jdGlvbiwgYWxvbmcgd2l0aCBgZGVzdHJveUFsaXZlQ29ubmVjdGlvbnMoKWAsIGludGVuZCB0byBmaXggdGhpcyBiZWhhdmlvciBzdWNoIHRoYXQgcGFyc2Ugc2VydmVyIHdpbGwgY2xvc2UgYWxsIG9wZW4gY29ubmVjdGlvbnMgYW5kIGluaXRpYXRlIHRoZSBzaHV0ZG93biBwcm9jZXNzIGFzIHNvb24gYXMgaXQgcmVjZWl2ZXMgYSBTSUdJTlQvU0lHVEVSTSBzaWduYWwuICovXG4gIHNlcnZlci5vbignY29ubmVjdGlvbicsIHNvY2tldCA9PiB7XG4gICAgY29uc3Qgc29ja2V0SWQgPSBzb2NrZXQucmVtb3RlQWRkcmVzcyArICc6JyArIHNvY2tldC5yZW1vdGVQb3J0O1xuICAgIHNvY2tldHNbc29ja2V0SWRdID0gc29ja2V0O1xuICAgIHNvY2tldC5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgICBkZWxldGUgc29ja2V0c1tzb2NrZXRJZF07XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGRlc3Ryb3lBbGl2ZUNvbm5lY3Rpb25zID0gZnVuY3Rpb24gKCkge1xuICAgIGZvciAoY29uc3Qgc29ja2V0SWQgaW4gc29ja2V0cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc29ja2V0c1tzb2NrZXRJZF0uZGVzdHJveSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiAqL1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVTaHV0ZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnVGVybWluYXRpb24gc2lnbmFsIHJlY2VpdmVkLiBTaHV0dGluZyBkb3duLicpO1xuICAgIGRlc3Ryb3lBbGl2ZUNvbm5lY3Rpb25zKCk7XG4gICAgc2VydmVyLmNsb3NlKCk7XG4gICAgcGFyc2VTZXJ2ZXIuaGFuZGxlU2h1dGRvd24oKTtcbiAgfTtcbiAgcHJvY2Vzcy5vbignU0lHVEVSTScsIGhhbmRsZVNodXRkb3duKTtcbiAgcHJvY2Vzcy5vbignU0lHSU5UJywgaGFuZGxlU2h1dGRvd24pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBQYXJzZVNlcnZlcjtcbiJdfQ==
536
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9QYXJzZVNlcnZlci5qcyJdLCJuYW1lcyI6WyJiYXRjaCIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiZXhwcmVzcyIsIm1pZGRsZXdhcmVzIiwiUGFyc2UiLCJwYXJzZSIsInBhdGgiLCJmcyIsImFkZFBhcnNlQ2xvdWQiLCJQYXJzZVNlcnZlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIkRlcHJlY2F0b3IiLCJzY2FuUGFyc2VTZXJ2ZXJPcHRpb25zIiwiaW5qZWN0RGVmYXVsdHMiLCJhcHBJZCIsIm1hc3RlcktleSIsImNsb3VkIiwic2VjdXJpdHkiLCJqYXZhc2NyaXB0S2V5Iiwic2VydmVyVVJMIiwic2VydmVyU3RhcnRDb21wbGV0ZSIsInNjaGVtYSIsImluaXRpYWxpemUiLCJhbGxDb250cm9sbGVycyIsImNvbnRyb2xsZXJzIiwiZ2V0Q29udHJvbGxlcnMiLCJsb2dnZXJDb250cm9sbGVyIiwiZGF0YWJhc2VDb250cm9sbGVyIiwiaG9va3NDb250cm9sbGVyIiwiY29uZmlnIiwiQ29uZmlnIiwicHV0IiwiT2JqZWN0IiwiYXNzaWduIiwibG9nZ2luZyIsInNldExvZ2dlciIsInBlcmZvcm1Jbml0aWFsaXphdGlvbiIsInRoZW4iLCJsb2FkIiwiRGVmaW5lZFNjaGVtYXMiLCJleGVjdXRlIiwiY2F0Y2giLCJlcnJvciIsImNvbnNvbGUiLCJwcm9jZXNzIiwiZXhpdCIsInJlc29sdmUiLCJjd2QiLCJlbmFibGVDaGVjayIsImVuYWJsZUNoZWNrTG9nIiwiQ2hlY2tSdW5uZXIiLCJydW4iLCJhcHAiLCJfYXBwIiwiaGFuZGxlU2h1dGRvd24iLCJwcm9taXNlcyIsImFkYXB0ZXIiLCJkYXRhYmFzZUFkYXB0ZXIiLCJwdXNoIiwiZmlsZUFkYXB0ZXIiLCJmaWxlc0NvbnRyb2xsZXIiLCJjYWNoZUFkYXB0ZXIiLCJjYWNoZUNvbnRyb2xsZXIiLCJsZW5ndGgiLCJQcm9taXNlIiwiYWxsIiwic2VydmVyQ2xvc2VDb21wbGV0ZSIsIm1heFVwbG9hZFNpemUiLCJkaXJlY3RBY2Nlc3MiLCJwYWdlcyIsImFwaSIsInVzZSIsImFsbG93Q3Jvc3NEb21haW4iLCJGaWxlc1JvdXRlciIsImV4cHJlc3NSb3V0ZXIiLCJyZXEiLCJyZXMiLCJqc29uIiwic3RhdHVzIiwidXJsZW5jb2RlZCIsImV4dGVuZGVkIiwiZW5hYmxlUm91dGVyIiwiUGFnZXNSb3V0ZXIiLCJQdWJsaWNBUElSb3V0ZXIiLCJ0eXBlIiwibGltaXQiLCJhbGxvd01ldGhvZE92ZXJyaWRlIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiYXBwUm91dGVyIiwicHJvbWlzZVJvdXRlciIsImhhbmRsZVBhcnNlRXJyb3JzIiwiZW52IiwiVEVTVElORyIsIm9uIiwiZXJyIiwiY29kZSIsInN0ZGVyciIsIndyaXRlIiwicG9ydCIsInZlcmlmeVNlcnZlclVybCIsIlBBUlNFX1NFUlZFUl9FTkFCTEVfRVhQRVJJTUVOVEFMX0RJUkVDVF9BQ0NFU1MiLCJDb3JlTWFuYWdlciIsInNldFJFU1RDb250cm9sbGVyIiwicm91dGVycyIsIkNsYXNzZXNSb3V0ZXIiLCJVc2Vyc1JvdXRlciIsIlNlc3Npb25zUm91dGVyIiwiUm9sZXNSb3V0ZXIiLCJBbmFseXRpY3NSb3V0ZXIiLCJJbnN0YWxsYXRpb25zUm91dGVyIiwiRnVuY3Rpb25zUm91dGVyIiwiU2NoZW1hc1JvdXRlciIsIlB1c2hSb3V0ZXIiLCJMb2dzUm91dGVyIiwiSUFQVmFsaWRhdGlvblJvdXRlciIsIkZlYXR1cmVzUm91dGVyIiwiR2xvYmFsQ29uZmlnUm91dGVyIiwiR3JhcGhRTFJvdXRlciIsIlB1cmdlUm91dGVyIiwiSG9va3NSb3V0ZXIiLCJDbG91ZENvZGVSb3V0ZXIiLCJBdWRpZW5jZXNSb3V0ZXIiLCJBZ2dyZWdhdGVSb3V0ZXIiLCJTZWN1cml0eVJvdXRlciIsInJvdXRlcyIsInJlZHVjZSIsIm1lbW8iLCJyb3V0ZXIiLCJjb25jYXQiLCJQcm9taXNlUm91dGVyIiwibW91bnRPbnRvIiwic3RhcnQiLCJjYWxsYmFjayIsIm1pZGRsZXdhcmUiLCJtb3VudFBhdGgiLCJtb3VudEdyYXBoUUwiLCJtb3VudFBsYXlncm91bmQiLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJ1bmRlZmluZWQiLCJncmFwaFFMU2NoZW1hIiwicmVhZEZpbGVTeW5jIiwicGFyc2VHcmFwaFFMU2VydmVyIiwiUGFyc2VHcmFwaFFMU2VydmVyIiwiZ3JhcGhRTFBhdGgiLCJwbGF5Z3JvdW5kUGF0aCIsImFwcGx5R3JhcGhRTCIsImFwcGx5UGxheWdyb3VuZCIsInNlcnZlciIsImxpc3RlbiIsImhvc3QiLCJzdGFydExpdmVRdWVyeVNlcnZlciIsImxpdmVRdWVyeVNlcnZlck9wdGlvbnMiLCJsaXZlUXVlcnlTZXJ2ZXIiLCJjcmVhdGVMaXZlUXVlcnlTZXJ2ZXIiLCJ0cnVzdFByb3h5Iiwic2V0IiwiY29uZmlndXJlTGlzdGVuZXJzIiwiZXhwcmVzc0FwcCIsInBhcnNlU2VydmVyIiwiaHR0cFNlcnZlciIsImNyZWF0ZVNlcnZlciIsIlBhcnNlTGl2ZVF1ZXJ5U2VydmVyIiwicmVxdWVzdCIsInVybCIsInJlcGxhY2UiLCJyZXNwb25zZSIsImRhdGEiLCJ3YXJuIiwiUGFyc2VDbG91ZCIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiYXBwbGljYXRpb25JZCIsIm5ld1ZhbCIsImNvbmZpZ3VyYWJsZSIsIkNsb3VkIiwiZ2xvYmFsIiwia2V5cyIsImRlZmF1bHRzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlZ2V4IiwibWF0Y2giLCJ1c2VyU2Vuc2l0aXZlRmllbGRzIiwiQXJyYXkiLCJmcm9tIiwiU2V0IiwicHJvdGVjdGVkRmllbGRzIiwiX1VzZXIiLCJjIiwiY3VyIiwiciIsInVucSIsIm1hc3RlcktleUlwcyIsInNvY2tldHMiLCJzb2NrZXQiLCJzb2NrZXRJZCIsInJlbW90ZUFkZHJlc3MiLCJyZW1vdGVQb3J0IiwiZGVzdHJveUFsaXZlQ29ubmVjdGlvbnMiLCJkZXN0cm95IiwiZSIsInN0ZG91dCIsImNsb3NlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBV0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0FBOUNBO0FBRUEsSUFBSUEsS0FBSyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFuQjtBQUFBLElBQ0VDLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FEdEI7QUFBQSxJQUVFRSxPQUFPLEdBQUdGLE9BQU8sQ0FBQyxTQUFELENBRm5CO0FBQUEsSUFHRUcsV0FBVyxHQUFHSCxPQUFPLENBQUMsZUFBRCxDQUh2QjtBQUFBLElBSUVJLEtBQUssR0FBR0osT0FBTyxDQUFDLFlBQUQsQ0FBUCxDQUFzQkksS0FKaEM7QUFBQSxJQUtFO0FBQUVDLEVBQUFBO0FBQUYsSUFBWUwsT0FBTyxDQUFDLFNBQUQsQ0FMckI7QUFBQSxJQU1FTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxNQUFELENBTmhCO0FBQUEsSUFPRU8sRUFBRSxHQUFHUCxPQUFPLENBQUMsSUFBRCxDQVBkOztBQThDQTtBQUNBUSxhQUFhLEcsQ0FFYjtBQUNBOztBQUNBLE1BQU1DLFdBQU4sQ0FBa0I7QUFDaEI7QUFDRjtBQUNBO0FBQ0E7QUFDRUMsRUFBQUEsV0FBVyxDQUFDQyxPQUFELEVBQThCO0FBQ3ZDO0FBQ0FDLHdCQUFXQyxzQkFBWCxDQUFrQ0YsT0FBbEMsRUFGdUMsQ0FHdkM7OztBQUNBRyxJQUFBQSxjQUFjLENBQUNILE9BQUQsQ0FBZDtBQUNBLFVBQU07QUFDSkksTUFBQUEsS0FBSyxHQUFHLGdDQUFrQiw0QkFBbEIsQ0FESjtBQUVKQyxNQUFBQSxTQUFTLEdBQUcsZ0NBQWtCLCtCQUFsQixDQUZSO0FBR0pDLE1BQUFBLEtBSEk7QUFJSkMsTUFBQUEsUUFKSTtBQUtKQyxNQUFBQSxhQUxJO0FBTUpDLE1BQUFBLFNBQVMsR0FBRyxnQ0FBa0IsK0JBQWxCLENBTlI7QUFPSkMsTUFBQUEsbUJBUEk7QUFRSkMsTUFBQUE7QUFSSSxRQVNGWCxPQVRKLENBTHVDLENBZXZDOztBQUNBUCxJQUFBQSxLQUFLLENBQUNtQixVQUFOLENBQWlCUixLQUFqQixFQUF3QkksYUFBYSxJQUFJLFFBQXpDLEVBQW1ESCxTQUFuRDtBQUNBWixJQUFBQSxLQUFLLENBQUNnQixTQUFOLEdBQWtCQSxTQUFsQjtBQUVBLFVBQU1JLGNBQWMsR0FBR0MsV0FBVyxDQUFDQyxjQUFaLENBQTJCZixPQUEzQixDQUF2QjtBQUVBLFVBQU07QUFBRWdCLE1BQUFBLGdCQUFGO0FBQW9CQyxNQUFBQSxrQkFBcEI7QUFBd0NDLE1BQUFBO0FBQXhDLFFBQTRETCxjQUFsRTtBQUNBLFNBQUtNLE1BQUwsR0FBY0MsZ0JBQU9DLEdBQVAsQ0FBV0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQnZCLE9BQWxCLEVBQTJCYSxjQUEzQixDQUFYLENBQWQ7QUFFQVcsSUFBQUEsT0FBTyxDQUFDQyxTQUFSLENBQWtCVCxnQkFBbEIsRUF4QnVDLENBMEJ2Qzs7QUFDQUMsSUFBQUEsa0JBQWtCLENBQ2ZTLHFCQURILEdBRUdDLElBRkgsQ0FFUSxNQUFNVCxlQUFlLENBQUNVLElBQWhCLEVBRmQsRUFHR0QsSUFISCxDQUdRLFlBQVk7QUFDaEIsVUFBSWhCLE1BQUosRUFBWTtBQUNWLGNBQU0sSUFBSWtCLDhCQUFKLENBQW1CbEIsTUFBbkIsRUFBMkIsS0FBS1EsTUFBaEMsRUFBd0NXLE9BQXhDLEVBQU47QUFDRDs7QUFDRCxVQUFJcEIsbUJBQUosRUFBeUI7QUFDdkJBLFFBQUFBLG1CQUFtQjtBQUNwQjtBQUNGLEtBVkgsRUFXR3FCLEtBWEgsQ0FXU0MsS0FBSyxJQUFJO0FBQ2QsVUFBSXRCLG1CQUFKLEVBQXlCO0FBQ3ZCQSxRQUFBQSxtQkFBbUIsQ0FBQ3NCLEtBQUQsQ0FBbkI7QUFDRCxPQUZELE1BRU87QUFDTEMsUUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWNBLEtBQWQ7QUFDQUUsUUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNEO0FBQ0YsS0FsQkg7O0FBb0JBLFFBQUk3QixLQUFKLEVBQVc7QUFDVFQsTUFBQUEsYUFBYTs7QUFDYixVQUFJLE9BQU9TLEtBQVAsS0FBaUIsVUFBckIsRUFBaUM7QUFDL0JBLFFBQUFBLEtBQUssQ0FBQ2IsS0FBRCxDQUFMO0FBQ0QsT0FGRCxNQUVPLElBQUksT0FBT2EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUNwQ2pCLFFBQUFBLE9BQU8sQ0FBQ00sSUFBSSxDQUFDeUMsT0FBTCxDQUFhRixPQUFPLENBQUNHLEdBQVIsRUFBYixFQUE0Qi9CLEtBQTVCLENBQUQsQ0FBUDtBQUNELE9BRk0sTUFFQTtBQUNMLGNBQU0sd0RBQU47QUFDRDtBQUNGOztBQUVELFFBQUlDLFFBQVEsSUFBSUEsUUFBUSxDQUFDK0IsV0FBckIsSUFBb0MvQixRQUFRLENBQUNnQyxjQUFqRCxFQUFpRTtBQUMvRCxVQUFJQyxvQkFBSixDQUFnQnhDLE9BQU8sQ0FBQ08sUUFBeEIsRUFBa0NrQyxHQUFsQztBQUNEO0FBQ0Y7O0FBRU0sTUFBSEMsR0FBRyxHQUFHO0FBQ1IsUUFBSSxDQUFDLEtBQUtDLElBQVYsRUFBZ0I7QUFDZCxXQUFLQSxJQUFMLEdBQVk3QyxXQUFXLENBQUM0QyxHQUFaLENBQWdCLEtBQUt2QixNQUFyQixDQUFaO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLd0IsSUFBWjtBQUNEOztBQUVEQyxFQUFBQSxjQUFjLEdBQUc7QUFDZixVQUFNQyxRQUFRLEdBQUcsRUFBakI7QUFDQSxVQUFNO0FBQUVDLE1BQUFBLE9BQU8sRUFBRUM7QUFBWCxRQUErQixLQUFLNUIsTUFBTCxDQUFZRixrQkFBakQ7O0FBQ0EsUUFBSThCLGVBQWUsSUFBSSxPQUFPQSxlQUFlLENBQUNILGNBQXZCLEtBQTBDLFVBQWpFLEVBQTZFO0FBQzNFQyxNQUFBQSxRQUFRLENBQUNHLElBQVQsQ0FBY0QsZUFBZSxDQUFDSCxjQUFoQixFQUFkO0FBQ0Q7O0FBQ0QsVUFBTTtBQUFFRSxNQUFBQSxPQUFPLEVBQUVHO0FBQVgsUUFBMkIsS0FBSzlCLE1BQUwsQ0FBWStCLGVBQTdDOztBQUNBLFFBQUlELFdBQVcsSUFBSSxPQUFPQSxXQUFXLENBQUNMLGNBQW5CLEtBQXNDLFVBQXpELEVBQXFFO0FBQ25FQyxNQUFBQSxRQUFRLENBQUNHLElBQVQsQ0FBY0MsV0FBVyxDQUFDTCxjQUFaLEVBQWQ7QUFDRDs7QUFDRCxVQUFNO0FBQUVFLE1BQUFBLE9BQU8sRUFBRUs7QUFBWCxRQUE0QixLQUFLaEMsTUFBTCxDQUFZaUMsZUFBOUM7O0FBQ0EsUUFBSUQsWUFBWSxJQUFJLE9BQU9BLFlBQVksQ0FBQ1AsY0FBcEIsS0FBdUMsVUFBM0QsRUFBdUU7QUFDckVDLE1BQUFBLFFBQVEsQ0FBQ0csSUFBVCxDQUFjRyxZQUFZLENBQUNQLGNBQWIsRUFBZDtBQUNEOztBQUNELFdBQU8sQ0FBQ0MsUUFBUSxDQUFDUSxNQUFULEdBQWtCLENBQWxCLEdBQXNCQyxPQUFPLENBQUNDLEdBQVIsQ0FBWVYsUUFBWixDQUF0QixHQUE4Q1MsT0FBTyxDQUFDbEIsT0FBUixFQUEvQyxFQUFrRVQsSUFBbEUsQ0FBdUUsTUFBTTtBQUNsRixVQUFJLEtBQUtSLE1BQUwsQ0FBWXFDLG1CQUFoQixFQUFxQztBQUNuQyxhQUFLckMsTUFBTCxDQUFZcUMsbUJBQVo7QUFDRDtBQUNGLEtBSk0sQ0FBUDtBQUtEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7OztBQUNZLFNBQUhkLEdBQUcsQ0FBQzFDLE9BQUQsRUFBVTtBQUNsQixVQUFNO0FBQUV5RCxNQUFBQSxhQUFhLEdBQUcsTUFBbEI7QUFBMEJyRCxNQUFBQSxLQUExQjtBQUFpQ3NELE1BQUFBLFlBQWpDO0FBQStDQyxNQUFBQTtBQUEvQyxRQUF5RDNELE9BQS9ELENBRGtCLENBRWxCO0FBQ0E7O0FBQ0EsUUFBSTRELEdBQUcsR0FBR3JFLE9BQU8sRUFBakIsQ0FKa0IsQ0FLbEI7O0FBQ0FxRSxJQUFBQSxHQUFHLENBQUNDLEdBQUosQ0FBUXJFLFdBQVcsQ0FBQ3NFLGdCQUFaLENBQTZCMUQsS0FBN0IsQ0FBUixFQU5rQixDQU9sQjs7QUFDQXdELElBQUFBLEdBQUcsQ0FBQ0MsR0FBSixDQUNFLEdBREYsRUFFRSxJQUFJRSx3QkFBSixHQUFrQkMsYUFBbEIsQ0FBZ0M7QUFDOUJQLE1BQUFBLGFBQWEsRUFBRUE7QUFEZSxLQUFoQyxDQUZGO0FBT0FHLElBQUFBLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUIsVUFBVUksR0FBVixFQUFlQyxHQUFmLEVBQW9CO0FBQ3JDQSxNQUFBQSxHQUFHLENBQUNDLElBQUosQ0FBUztBQUNQQyxRQUFBQSxNQUFNLEVBQUU7QUFERCxPQUFUO0FBR0QsS0FKRDtBQU1BUixJQUFBQSxHQUFHLENBQUNDLEdBQUosQ0FDRSxHQURGLEVBRUV2RSxVQUFVLENBQUMrRSxVQUFYLENBQXNCO0FBQUVDLE1BQUFBLFFBQVEsRUFBRTtBQUFaLEtBQXRCLENBRkYsRUFHRVgsS0FBSyxDQUFDWSxZQUFOLEdBQ0ksSUFBSUMsd0JBQUosQ0FBZ0JiLEtBQWhCLEVBQXVCSyxhQUF2QixFQURKLEdBRUksSUFBSVMsZ0NBQUosR0FBc0JULGFBQXRCLEVBTE47QUFRQUosSUFBQUEsR0FBRyxDQUFDQyxHQUFKLENBQVF2RSxVQUFVLENBQUM2RSxJQUFYLENBQWdCO0FBQUVPLE1BQUFBLElBQUksRUFBRSxLQUFSO0FBQWVDLE1BQUFBLEtBQUssRUFBRWxCO0FBQXRCLEtBQWhCLENBQVI7QUFDQUcsSUFBQUEsR0FBRyxDQUFDQyxHQUFKLENBQVFyRSxXQUFXLENBQUNvRixtQkFBcEI7QUFDQWhCLElBQUFBLEdBQUcsQ0FBQ0MsR0FBSixDQUFRckUsV0FBVyxDQUFDcUYsa0JBQXBCO0FBRUEsVUFBTUMsU0FBUyxHQUFHaEYsV0FBVyxDQUFDaUYsYUFBWixDQUEwQjtBQUFFM0UsTUFBQUE7QUFBRixLQUExQixDQUFsQjtBQUNBd0QsSUFBQUEsR0FBRyxDQUFDQyxHQUFKLENBQVFpQixTQUFTLENBQUNkLGFBQVYsRUFBUjtBQUVBSixJQUFBQSxHQUFHLENBQUNDLEdBQUosQ0FBUXJFLFdBQVcsQ0FBQ3dGLGlCQUFwQixFQXBDa0IsQ0FzQ2xCOztBQUNBLFFBQUksQ0FBQzlDLE9BQU8sQ0FBQytDLEdBQVIsQ0FBWUMsT0FBakIsRUFBMEI7QUFDeEI7O0FBQ0E7QUFDQWhELE1BQUFBLE9BQU8sQ0FBQ2lELEVBQVIsQ0FBVyxtQkFBWCxFQUFnQ0MsR0FBRyxJQUFJO0FBQ3JDLFlBQUlBLEdBQUcsQ0FBQ0MsSUFBSixLQUFhLFlBQWpCLEVBQStCO0FBQzdCO0FBQ0FuRCxVQUFBQSxPQUFPLENBQUNvRCxNQUFSLENBQWVDLEtBQWYsQ0FBc0IsNEJBQTJCSCxHQUFHLENBQUNJLElBQUssK0JBQTFEO0FBQ0F0RCxVQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiO0FBQ0QsU0FKRCxNQUlPO0FBQ0wsZ0JBQU1pRCxHQUFOO0FBQ0Q7QUFDRixPQVJELEVBSHdCLENBWXhCOztBQUNBOztBQUNBeEIsTUFBQUEsR0FBRyxDQUFDdUIsRUFBSixDQUFPLE9BQVAsRUFBZ0IsWUFBWTtBQUMxQnJGLFFBQUFBLFdBQVcsQ0FBQzJGLGVBQVo7QUFDRCxPQUZEO0FBR0Q7O0FBQ0QsUUFBSXZELE9BQU8sQ0FBQytDLEdBQVIsQ0FBWVMsOENBQVosS0FBK0QsR0FBL0QsSUFBc0VoQyxZQUExRSxFQUF3RjtBQUN0RmpFLE1BQUFBLEtBQUssQ0FBQ2tHLFdBQU4sQ0FBa0JDLGlCQUFsQixDQUFvQywwREFBMEJ4RixLQUExQixFQUFpQzBFLFNBQWpDLENBQXBDO0FBQ0Q7O0FBQ0QsV0FBT2xCLEdBQVA7QUFDRDs7QUFFbUIsU0FBYm1CLGFBQWEsQ0FBQztBQUFFM0UsSUFBQUE7QUFBRixHQUFELEVBQVk7QUFDOUIsVUFBTXlGLE9BQU8sR0FBRyxDQUNkLElBQUlDLDRCQUFKLEVBRGMsRUFFZCxJQUFJQyx3QkFBSixFQUZjLEVBR2QsSUFBSUMsOEJBQUosRUFIYyxFQUlkLElBQUlDLHdCQUFKLEVBSmMsRUFLZCxJQUFJQyxnQ0FBSixFQUxjLEVBTWQsSUFBSUMsd0NBQUosRUFOYyxFQU9kLElBQUlDLGdDQUFKLEVBUGMsRUFRZCxJQUFJQyw0QkFBSixFQVJjLEVBU2QsSUFBSUMsc0JBQUosRUFUYyxFQVVkLElBQUlDLHNCQUFKLEVBVmMsRUFXZCxJQUFJQyx3Q0FBSixFQVhjLEVBWWQsSUFBSUMsOEJBQUosRUFaYyxFQWFkLElBQUlDLHNDQUFKLEVBYmMsRUFjZCxJQUFJQyw0QkFBSixFQWRjLEVBZWQsSUFBSUMsd0JBQUosRUFmYyxFQWdCZCxJQUFJQyx3QkFBSixFQWhCYyxFQWlCZCxJQUFJQyxnQ0FBSixFQWpCYyxFQWtCZCxJQUFJQyxnQ0FBSixFQWxCYyxFQW1CZCxJQUFJQyxnQ0FBSixFQW5CYyxFQW9CZCxJQUFJQyw4QkFBSixFQXBCYyxDQUFoQjtBQXVCQSxVQUFNQyxNQUFNLEdBQUdyQixPQUFPLENBQUNzQixNQUFSLENBQWUsQ0FBQ0MsSUFBRCxFQUFPQyxNQUFQLEtBQWtCO0FBQzlDLGFBQU9ELElBQUksQ0FBQ0UsTUFBTCxDQUFZRCxNQUFNLENBQUNILE1BQW5CLENBQVA7QUFDRCxLQUZjLEVBRVosRUFGWSxDQUFmO0FBSUEsVUFBTXBDLFNBQVMsR0FBRyxJQUFJeUMsc0JBQUosQ0FBa0JMLE1BQWxCLEVBQTBCOUcsS0FBMUIsQ0FBbEI7QUFFQWhCLElBQUFBLEtBQUssQ0FBQ29JLFNBQU4sQ0FBZ0IxQyxTQUFoQjtBQUNBLFdBQU9BLFNBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0UyQyxFQUFBQSxLQUFLLENBQUN6SCxPQUFELEVBQThCMEgsUUFBOUIsRUFBcUQ7QUFDeEQsVUFBTWhGLEdBQUcsR0FBR25ELE9BQU8sRUFBbkI7O0FBQ0EsUUFBSVMsT0FBTyxDQUFDMkgsVUFBWixFQUF3QjtBQUN0QixVQUFJQSxVQUFKOztBQUNBLFVBQUksT0FBTzNILE9BQU8sQ0FBQzJILFVBQWYsSUFBNkIsUUFBakMsRUFBMkM7QUFDekNBLFFBQUFBLFVBQVUsR0FBR3RJLE9BQU8sQ0FBQ00sSUFBSSxDQUFDeUMsT0FBTCxDQUFhRixPQUFPLENBQUNHLEdBQVIsRUFBYixFQUE0QnJDLE9BQU8sQ0FBQzJILFVBQXBDLENBQUQsQ0FBcEI7QUFDRCxPQUZELE1BRU87QUFDTEEsUUFBQUEsVUFBVSxHQUFHM0gsT0FBTyxDQUFDMkgsVUFBckIsQ0FESyxDQUM0QjtBQUNsQzs7QUFDRGpGLE1BQUFBLEdBQUcsQ0FBQ21CLEdBQUosQ0FBUThELFVBQVI7QUFDRDs7QUFFRGpGLElBQUFBLEdBQUcsQ0FBQ21CLEdBQUosQ0FBUTdELE9BQU8sQ0FBQzRILFNBQWhCLEVBQTJCLEtBQUtsRixHQUFoQzs7QUFFQSxRQUFJMUMsT0FBTyxDQUFDNkgsWUFBUixLQUF5QixJQUF6QixJQUFpQzdILE9BQU8sQ0FBQzhILGVBQVIsS0FBNEIsSUFBakUsRUFBdUU7QUFDckUsVUFBSUMscUJBQXFCLEdBQUdDLFNBQTVCOztBQUNBLFVBQUksT0FBT2hJLE9BQU8sQ0FBQ2lJLGFBQWYsS0FBaUMsUUFBckMsRUFBK0M7QUFDN0NGLFFBQUFBLHFCQUFxQixHQUFHckksS0FBSyxDQUFDRSxFQUFFLENBQUNzSSxZQUFILENBQWdCbEksT0FBTyxDQUFDaUksYUFBeEIsRUFBdUMsTUFBdkMsQ0FBRCxDQUE3QjtBQUNELE9BRkQsTUFFTyxJQUNMLE9BQU9qSSxPQUFPLENBQUNpSSxhQUFmLEtBQWlDLFFBQWpDLElBQ0EsT0FBT2pJLE9BQU8sQ0FBQ2lJLGFBQWYsS0FBaUMsVUFGNUIsRUFHTDtBQUNBRixRQUFBQSxxQkFBcUIsR0FBRy9ILE9BQU8sQ0FBQ2lJLGFBQWhDO0FBQ0Q7O0FBRUQsWUFBTUUsa0JBQWtCLEdBQUcsSUFBSUMsc0NBQUosQ0FBdUIsSUFBdkIsRUFBNkI7QUFDdERDLFFBQUFBLFdBQVcsRUFBRXJJLE9BQU8sQ0FBQ3FJLFdBRGlDO0FBRXREQyxRQUFBQSxjQUFjLEVBQUV0SSxPQUFPLENBQUNzSSxjQUY4QjtBQUd0RFAsUUFBQUE7QUFIc0QsT0FBN0IsQ0FBM0I7O0FBTUEsVUFBSS9ILE9BQU8sQ0FBQzZILFlBQVosRUFBMEI7QUFDeEJNLFFBQUFBLGtCQUFrQixDQUFDSSxZQUFuQixDQUFnQzdGLEdBQWhDO0FBQ0Q7O0FBRUQsVUFBSTFDLE9BQU8sQ0FBQzhILGVBQVosRUFBNkI7QUFDM0JLLFFBQUFBLGtCQUFrQixDQUFDSyxlQUFuQixDQUFtQzlGLEdBQW5DO0FBQ0Q7QUFDRjs7QUFFRCxVQUFNK0YsTUFBTSxHQUFHL0YsR0FBRyxDQUFDZ0csTUFBSixDQUFXMUksT0FBTyxDQUFDd0YsSUFBbkIsRUFBeUJ4RixPQUFPLENBQUMySSxJQUFqQyxFQUF1Q2pCLFFBQXZDLENBQWY7QUFDQSxTQUFLZSxNQUFMLEdBQWNBLE1BQWQ7O0FBRUEsUUFBSXpJLE9BQU8sQ0FBQzRJLG9CQUFSLElBQWdDNUksT0FBTyxDQUFDNkksc0JBQTVDLEVBQW9FO0FBQ2xFLFdBQUtDLGVBQUwsR0FBdUJoSixXQUFXLENBQUNpSixxQkFBWixDQUNyQk4sTUFEcUIsRUFFckJ6SSxPQUFPLENBQUM2SSxzQkFGYSxFQUdyQjdJLE9BSHFCLENBQXZCO0FBS0Q7O0FBQ0QsUUFBSUEsT0FBTyxDQUFDZ0osVUFBWixFQUF3QjtBQUN0QnRHLE1BQUFBLEdBQUcsQ0FBQ3VHLEdBQUosQ0FBUSxhQUFSLEVBQXVCakosT0FBTyxDQUFDZ0osVUFBL0I7QUFDRDtBQUNEOzs7QUFDQSxRQUFJLENBQUM5RyxPQUFPLENBQUMrQyxHQUFSLENBQVlDLE9BQWpCLEVBQTBCO0FBQ3hCZ0UsTUFBQUEsa0JBQWtCLENBQUMsSUFBRCxDQUFsQjtBQUNEOztBQUNELFNBQUtDLFVBQUwsR0FBa0J6RyxHQUFsQjtBQUNBLFdBQU8sSUFBUDtBQUNEO0FBRUQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDYyxTQUFMK0UsS0FBSyxDQUFDekgsT0FBRCxFQUE4QjBILFFBQTlCLEVBQXFEO0FBQy9ELFVBQU0wQixXQUFXLEdBQUcsSUFBSXRKLFdBQUosQ0FBZ0JFLE9BQWhCLENBQXBCO0FBQ0EsV0FBT29KLFdBQVcsQ0FBQzNCLEtBQVosQ0FBa0J6SCxPQUFsQixFQUEyQjBILFFBQTNCLENBQVA7QUFDRDtBQUVEO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUM4QixTQUFyQnFCLHFCQUFxQixDQUMxQk0sVUFEMEIsRUFFMUJsSSxNQUYwQixFQUcxQm5CLE9BSDBCLEVBSTFCO0FBQ0EsUUFBSSxDQUFDcUosVUFBRCxJQUFnQmxJLE1BQU0sSUFBSUEsTUFBTSxDQUFDcUUsSUFBckMsRUFBNEM7QUFDMUMsVUFBSTlDLEdBQUcsR0FBR25ELE9BQU8sRUFBakI7QUFDQThKLE1BQUFBLFVBQVUsR0FBR2hLLE9BQU8sQ0FBQyxNQUFELENBQVAsQ0FBZ0JpSyxZQUFoQixDQUE2QjVHLEdBQTdCLENBQWI7QUFDQTJHLE1BQUFBLFVBQVUsQ0FBQ1gsTUFBWCxDQUFrQnZILE1BQU0sQ0FBQ3FFLElBQXpCO0FBQ0Q7O0FBQ0QsV0FBTyxJQUFJK0QsMENBQUosQ0FBeUJGLFVBQXpCLEVBQXFDbEksTUFBckMsRUFBNkNuQixPQUE3QyxDQUFQO0FBQ0Q7O0FBRXFCLFNBQWZ5RixlQUFlLENBQUNpQyxRQUFELEVBQVc7QUFDL0I7QUFDQSxRQUFJakksS0FBSyxDQUFDZ0IsU0FBVixFQUFxQjtBQUNuQixZQUFNK0ksT0FBTyxHQUFHbkssT0FBTyxDQUFDLFdBQUQsQ0FBdkI7O0FBQ0FtSyxNQUFBQSxPQUFPLENBQUM7QUFBRUMsUUFBQUEsR0FBRyxFQUFFaEssS0FBSyxDQUFDZ0IsU0FBTixDQUFnQmlKLE9BQWhCLENBQXdCLEtBQXhCLEVBQStCLEVBQS9CLElBQXFDO0FBQTVDLE9BQUQsQ0FBUCxDQUNHM0gsS0FESCxDQUNTNEgsUUFBUSxJQUFJQSxRQURyQixFQUVHaEksSUFGSCxDQUVRZ0ksUUFBUSxJQUFJO0FBQ2hCLGNBQU14RixJQUFJLEdBQUd3RixRQUFRLENBQUNDLElBQVQsSUFBaUIsSUFBOUI7O0FBQ0EsWUFBSUQsUUFBUSxDQUFDdkYsTUFBVCxLQUFvQixHQUFwQixJQUEyQixDQUFDRCxJQUE1QixJQUFxQ0EsSUFBSSxJQUFJQSxJQUFJLENBQUNDLE1BQUwsS0FBZ0IsSUFBakUsRUFBd0U7QUFDdEU7QUFDQW5DLFVBQUFBLE9BQU8sQ0FBQzRILElBQVIsQ0FDRyxvQ0FBbUNwSyxLQUFLLENBQUNnQixTQUFVLElBQXBELEdBQ0csMERBRkw7QUFJQTs7QUFDQSxjQUFJaUgsUUFBSixFQUFjO0FBQ1pBLFlBQUFBLFFBQVEsQ0FBQyxLQUFELENBQVI7QUFDRDtBQUNGLFNBVkQsTUFVTztBQUNMLGNBQUlBLFFBQUosRUFBYztBQUNaQSxZQUFBQSxRQUFRLENBQUMsSUFBRCxDQUFSO0FBQ0Q7QUFDRjtBQUNGLE9BbkJIO0FBb0JEO0FBQ0Y7O0FBalVlOztBQW9VbEIsU0FBUzdILGFBQVQsR0FBeUI7QUFDdkIsUUFBTWlLLFVBQVUsR0FBR3pLLE9BQU8sQ0FBQywwQkFBRCxDQUExQjs7QUFDQWlDLEVBQUFBLE1BQU0sQ0FBQ3lJLGNBQVAsQ0FBc0J0SyxLQUF0QixFQUE2QixRQUE3QixFQUF1QztBQUNyQ3VLLElBQUFBLEdBQUcsR0FBRztBQUNKLGFBQU81SSxnQkFBTzRJLEdBQVAsQ0FBV3ZLLEtBQUssQ0FBQ3dLLGFBQWpCLENBQVA7QUFDRCxLQUhvQzs7QUFJckNoQixJQUFBQSxHQUFHLENBQUNpQixNQUFELEVBQVM7QUFDVkEsTUFBQUEsTUFBTSxDQUFDOUosS0FBUCxHQUFlWCxLQUFLLENBQUN3SyxhQUFyQjs7QUFDQTdJLHNCQUFPQyxHQUFQLENBQVc2SSxNQUFYO0FBQ0QsS0FQb0M7O0FBUXJDQyxJQUFBQSxZQUFZLEVBQUU7QUFSdUIsR0FBdkM7QUFVQTdJLEVBQUFBLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjOUIsS0FBSyxDQUFDMkssS0FBcEIsRUFBMkJOLFVBQTNCO0FBQ0FPLEVBQUFBLE1BQU0sQ0FBQzVLLEtBQVAsR0FBZUEsS0FBZjtBQUNEOztBQUVELFNBQVNVLGNBQVQsQ0FBd0JILE9BQXhCLEVBQXFEO0FBQ25Ec0IsRUFBQUEsTUFBTSxDQUFDZ0osSUFBUCxDQUFZQyxpQkFBWixFQUFzQkMsT0FBdEIsQ0FBOEJDLEdBQUcsSUFBSTtBQUNuQyxRQUFJLENBQUNuSixNQUFNLENBQUNvSixTQUFQLENBQWlCQyxjQUFqQixDQUFnQ0MsSUFBaEMsQ0FBcUM1SyxPQUFyQyxFQUE4Q3lLLEdBQTlDLENBQUwsRUFBeUQ7QUFDdkR6SyxNQUFBQSxPQUFPLENBQUN5SyxHQUFELENBQVAsR0FBZUYsa0JBQVNFLEdBQVQsQ0FBZjtBQUNEO0FBQ0YsR0FKRDs7QUFNQSxNQUFJLENBQUNuSixNQUFNLENBQUNvSixTQUFQLENBQWlCQyxjQUFqQixDQUFnQ0MsSUFBaEMsQ0FBcUM1SyxPQUFyQyxFQUE4QyxXQUE5QyxDQUFMLEVBQWlFO0FBQy9EQSxJQUFBQSxPQUFPLENBQUNTLFNBQVIsR0FBcUIsb0JBQW1CVCxPQUFPLENBQUN3RixJQUFLLEdBQUV4RixPQUFPLENBQUM0SCxTQUFVLEVBQXpFO0FBQ0QsR0FUa0QsQ0FXbkQ7OztBQUNBLE1BQUk1SCxPQUFPLENBQUNJLEtBQVosRUFBbUI7QUFDakIsVUFBTXlLLEtBQUssR0FBRywrQkFBZDs7QUFDQSxRQUFJN0ssT0FBTyxDQUFDSSxLQUFSLENBQWMwSyxLQUFkLENBQW9CRCxLQUFwQixDQUFKLEVBQWdDO0FBQzlCNUksTUFBQUEsT0FBTyxDQUFDNEgsSUFBUixDQUNHLDZGQURIO0FBR0Q7QUFDRixHQW5Ca0QsQ0FxQm5EOzs7QUFDQSxNQUFJN0osT0FBTyxDQUFDK0ssbUJBQVosRUFBaUM7QUFDL0I7QUFDQSxLQUFDN0ksT0FBTyxDQUFDK0MsR0FBUixDQUFZQyxPQUFiLElBQ0VqRCxPQUFPLENBQUM0SCxJQUFSLENBQ0csMklBREgsQ0FERjtBQUlBOztBQUVBLFVBQU1rQixtQkFBbUIsR0FBR0MsS0FBSyxDQUFDQyxJQUFOLENBQzFCLElBQUlDLEdBQUosQ0FBUSxDQUFDLElBQUlYLGtCQUFTUSxtQkFBVCxJQUFnQyxFQUFwQyxDQUFELEVBQTBDLElBQUkvSyxPQUFPLENBQUMrSyxtQkFBUixJQUErQixFQUFuQyxDQUExQyxDQUFSLENBRDBCLENBQTVCLENBUitCLENBWS9CO0FBQ0E7QUFDQTtBQUNBOztBQUNBLFFBQUksRUFBRSxXQUFXL0ssT0FBTyxDQUFDbUwsZUFBckIsQ0FBSixFQUEyQztBQUN6Q25MLE1BQUFBLE9BQU8sQ0FBQ21MLGVBQVIsR0FBMEI3SixNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUFFNkosUUFBQUEsS0FBSyxFQUFFO0FBQVQsT0FBZCxFQUE2QnBMLE9BQU8sQ0FBQ21MLGVBQXJDLENBQTFCO0FBQ0Q7O0FBRURuTCxJQUFBQSxPQUFPLENBQUNtTCxlQUFSLENBQXdCLE9BQXhCLEVBQWlDLEdBQWpDLElBQXdDSCxLQUFLLENBQUNDLElBQU4sQ0FDdEMsSUFBSUMsR0FBSixDQUFRLENBQUMsSUFBSWxMLE9BQU8sQ0FBQ21MLGVBQVIsQ0FBd0IsT0FBeEIsRUFBaUMsR0FBakMsS0FBeUMsRUFBN0MsQ0FBRCxFQUFtRCxHQUFHSixtQkFBdEQsQ0FBUixDQURzQyxDQUF4QztBQUdELEdBN0NrRCxDQStDbkQ7OztBQUNBekosRUFBQUEsTUFBTSxDQUFDZ0osSUFBUCxDQUFZQyxrQkFBU1ksZUFBckIsRUFBc0NYLE9BQXRDLENBQThDYSxDQUFDLElBQUk7QUFDakQsVUFBTUMsR0FBRyxHQUFHdEwsT0FBTyxDQUFDbUwsZUFBUixDQUF3QkUsQ0FBeEIsQ0FBWjs7QUFDQSxRQUFJLENBQUNDLEdBQUwsRUFBVTtBQUNSdEwsTUFBQUEsT0FBTyxDQUFDbUwsZUFBUixDQUF3QkUsQ0FBeEIsSUFBNkJkLGtCQUFTWSxlQUFULENBQXlCRSxDQUF6QixDQUE3QjtBQUNELEtBRkQsTUFFTztBQUNML0osTUFBQUEsTUFBTSxDQUFDZ0osSUFBUCxDQUFZQyxrQkFBU1ksZUFBVCxDQUF5QkUsQ0FBekIsQ0FBWixFQUF5Q2IsT0FBekMsQ0FBaURlLENBQUMsSUFBSTtBQUNwRCxjQUFNQyxHQUFHLEdBQUcsSUFBSU4sR0FBSixDQUFRLENBQ2xCLElBQUlsTCxPQUFPLENBQUNtTCxlQUFSLENBQXdCRSxDQUF4QixFQUEyQkUsQ0FBM0IsS0FBaUMsRUFBckMsQ0FEa0IsRUFFbEIsR0FBR2hCLGtCQUFTWSxlQUFULENBQXlCRSxDQUF6QixFQUE0QkUsQ0FBNUIsQ0FGZSxDQUFSLENBQVo7QUFJQXZMLFFBQUFBLE9BQU8sQ0FBQ21MLGVBQVIsQ0FBd0JFLENBQXhCLEVBQTJCRSxDQUEzQixJQUFnQ1AsS0FBSyxDQUFDQyxJQUFOLENBQVdPLEdBQVgsQ0FBaEM7QUFDRCxPQU5EO0FBT0Q7QUFDRixHQWJEO0FBZUF4TCxFQUFBQSxPQUFPLENBQUN5TCxZQUFSLEdBQXVCVCxLQUFLLENBQUNDLElBQU4sQ0FDckIsSUFBSUMsR0FBSixDQUFRbEwsT0FBTyxDQUFDeUwsWUFBUixDQUFxQm5FLE1BQXJCLENBQTRCaUQsa0JBQVNrQixZQUFyQyxFQUFtRHpMLE9BQU8sQ0FBQ3lMLFlBQTNELENBQVIsQ0FEcUIsQ0FBdkI7QUFHRCxDLENBRUQ7O0FBQ0E7OztBQUNBLFNBQVN2QyxrQkFBVCxDQUE0QkUsV0FBNUIsRUFBeUM7QUFDdkMsUUFBTVgsTUFBTSxHQUFHVyxXQUFXLENBQUNYLE1BQTNCO0FBQ0EsUUFBTWlELE9BQU8sR0FBRyxFQUFoQjtBQUNBO0FBQ0Y7O0FBQ0VqRCxFQUFBQSxNQUFNLENBQUN0RCxFQUFQLENBQVUsWUFBVixFQUF3QndHLE1BQU0sSUFBSTtBQUNoQyxVQUFNQyxRQUFRLEdBQUdELE1BQU0sQ0FBQ0UsYUFBUCxHQUF1QixHQUF2QixHQUE2QkYsTUFBTSxDQUFDRyxVQUFyRDtBQUNBSixJQUFBQSxPQUFPLENBQUNFLFFBQUQsQ0FBUCxHQUFvQkQsTUFBcEI7QUFDQUEsSUFBQUEsTUFBTSxDQUFDeEcsRUFBUCxDQUFVLE9BQVYsRUFBbUIsTUFBTTtBQUN2QixhQUFPdUcsT0FBTyxDQUFDRSxRQUFELENBQWQ7QUFDRCxLQUZEO0FBR0QsR0FORDs7QUFRQSxRQUFNRyx1QkFBdUIsR0FBRyxZQUFZO0FBQzFDLFNBQUssTUFBTUgsUUFBWCxJQUF1QkYsT0FBdkIsRUFBZ0M7QUFDOUIsVUFBSTtBQUNGQSxRQUFBQSxPQUFPLENBQUNFLFFBQUQsQ0FBUCxDQUFrQkksT0FBbEI7QUFDRCxPQUZELENBRUUsT0FBT0MsQ0FBUCxFQUFVO0FBQ1Y7QUFDRDtBQUNGO0FBQ0YsR0FSRDs7QUFVQSxRQUFNckosY0FBYyxHQUFHLFlBQVk7QUFDakNWLElBQUFBLE9BQU8sQ0FBQ2dLLE1BQVIsQ0FBZTNHLEtBQWYsQ0FBcUIsNkNBQXJCO0FBQ0F3RyxJQUFBQSx1QkFBdUI7QUFDdkJ0RCxJQUFBQSxNQUFNLENBQUMwRCxLQUFQO0FBQ0EvQyxJQUFBQSxXQUFXLENBQUN4RyxjQUFaO0FBQ0QsR0FMRDs7QUFNQVYsRUFBQUEsT0FBTyxDQUFDaUQsRUFBUixDQUFXLFNBQVgsRUFBc0J2QyxjQUF0QjtBQUNBVixFQUFBQSxPQUFPLENBQUNpRCxFQUFSLENBQVcsUUFBWCxFQUFxQnZDLGNBQXJCO0FBQ0Q7O2VBRWM5QyxXIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUGFyc2VTZXJ2ZXIgLSBvcGVuLXNvdXJjZSBjb21wYXRpYmxlIEFQSSBTZXJ2ZXIgZm9yIFBhcnNlIGFwcHNcblxudmFyIGJhdGNoID0gcmVxdWlyZSgnLi9iYXRjaCcpLFxuICBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKSxcbiAgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKSxcbiAgbWlkZGxld2FyZXMgPSByZXF1aXJlKCcuL21pZGRsZXdhcmVzJyksXG4gIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlLFxuICB7IHBhcnNlIH0gPSByZXF1aXJlKCdncmFwaHFsJyksXG4gIHBhdGggPSByZXF1aXJlKCdwYXRoJyksXG4gIGZzID0gcmVxdWlyZSgnZnMnKTtcblxuaW1wb3J0IHsgUGFyc2VTZXJ2ZXJPcHRpb25zLCBMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi9PcHRpb25zJztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRzJztcbmltcG9ydCAqIGFzIGxvZ2dpbmcgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IENvbmZpZyBmcm9tICcuL0NvbmZpZyc7XG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuL1Byb21pc2VSb3V0ZXInO1xuaW1wb3J0IHJlcXVpcmVkUGFyYW1ldGVyIGZyb20gJy4vcmVxdWlyZWRQYXJhbWV0ZXInO1xuaW1wb3J0IHsgQW5hbHl0aWNzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0FuYWx5dGljc1JvdXRlcic7XG5pbXBvcnQgeyBDbGFzc2VzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0NsYXNzZXNSb3V0ZXInO1xuaW1wb3J0IHsgRmVhdHVyZXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvRmVhdHVyZXNSb3V0ZXInO1xuaW1wb3J0IHsgRmlsZXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvRmlsZXNSb3V0ZXInO1xuaW1wb3J0IHsgRnVuY3Rpb25zUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0Z1bmN0aW9uc1JvdXRlcic7XG5pbXBvcnQgeyBHbG9iYWxDb25maWdSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvR2xvYmFsQ29uZmlnUm91dGVyJztcbmltcG9ydCB7IEdyYXBoUUxSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvR3JhcGhRTFJvdXRlcic7XG5pbXBvcnQgeyBIb29rc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9Ib29rc1JvdXRlcic7XG5pbXBvcnQgeyBJQVBWYWxpZGF0aW9uUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0lBUFZhbGlkYXRpb25Sb3V0ZXInO1xuaW1wb3J0IHsgSW5zdGFsbGF0aW9uc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9JbnN0YWxsYXRpb25zUm91dGVyJztcbmltcG9ydCB7IExvZ3NSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvTG9nc1JvdXRlcic7XG5pbXBvcnQgeyBQYXJzZUxpdmVRdWVyeVNlcnZlciB9IGZyb20gJy4vTGl2ZVF1ZXJ5L1BhcnNlTGl2ZVF1ZXJ5U2VydmVyJztcbmltcG9ydCB7IFBhZ2VzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL1BhZ2VzUm91dGVyJztcbmltcG9ydCB7IFB1YmxpY0FQSVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9QdWJsaWNBUElSb3V0ZXInO1xuaW1wb3J0IHsgUHVzaFJvdXRlciB9IGZyb20gJy4vUm91dGVycy9QdXNoUm91dGVyJztcbmltcG9ydCB7IENsb3VkQ29kZVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9DbG91ZENvZGVSb3V0ZXInO1xuaW1wb3J0IHsgUm9sZXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvUm9sZXNSb3V0ZXInO1xuaW1wb3J0IHsgU2NoZW1hc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9TY2hlbWFzUm91dGVyJztcbmltcG9ydCB7IFNlc3Npb25zUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL1Nlc3Npb25zUm91dGVyJztcbmltcG9ydCB7IFVzZXJzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL1VzZXJzUm91dGVyJztcbmltcG9ydCB7IFB1cmdlUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL1B1cmdlUm91dGVyJztcbmltcG9ydCB7IEF1ZGllbmNlc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9BdWRpZW5jZXNSb3V0ZXInO1xuaW1wb3J0IHsgQWdncmVnYXRlUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0FnZ3JlZ2F0ZVJvdXRlcic7XG5pbXBvcnQgeyBQYXJzZVNlcnZlclJFU1RDb250cm9sbGVyIH0gZnJvbSAnLi9QYXJzZVNlcnZlclJFU1RDb250cm9sbGVyJztcbmltcG9ydCAqIGFzIGNvbnRyb2xsZXJzIGZyb20gJy4vQ29udHJvbGxlcnMnO1xuaW1wb3J0IHsgUGFyc2VHcmFwaFFMU2VydmVyIH0gZnJvbSAnLi9HcmFwaFFML1BhcnNlR3JhcGhRTFNlcnZlcic7XG5pbXBvcnQgeyBTZWN1cml0eVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9TZWN1cml0eVJvdXRlcic7XG5pbXBvcnQgQ2hlY2tSdW5uZXIgZnJvbSAnLi9TZWN1cml0eS9DaGVja1J1bm5lcic7XG5pbXBvcnQgRGVwcmVjYXRvciBmcm9tICcuL0RlcHJlY2F0b3IvRGVwcmVjYXRvcic7XG5pbXBvcnQgeyBEZWZpbmVkU2NoZW1hcyB9IGZyb20gJy4vU2NoZW1hTWlncmF0aW9ucy9EZWZpbmVkU2NoZW1hcyc7XG5cbi8vIE11dGF0ZSB0aGUgUGFyc2Ugb2JqZWN0IHRvIGFkZCB0aGUgQ2xvdWQgQ29kZSBoYW5kbGVyc1xuYWRkUGFyc2VDbG91ZCgpO1xuXG4vLyBQYXJzZVNlcnZlciB3b3JrcyBsaWtlIGEgY29uc3RydWN0b3Igb2YgYW4gZXhwcmVzcyBhcHAuXG4vLyBodHRwczovL3BhcnNlcGxhdGZvcm0ub3JnL3BhcnNlLXNlcnZlci9hcGkvbWFzdGVyL1BhcnNlU2VydmVyT3B0aW9ucy5odG1sXG5jbGFzcyBQYXJzZVNlcnZlciB7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtQYXJzZVNlcnZlck9wdGlvbnN9IG9wdGlvbnMgdGhlIHBhcnNlIHNlcnZlciBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpIHtcbiAgICAvLyBTY2FuIGZvciBkZXByZWNhdGVkIFBhcnNlIFNlcnZlciBvcHRpb25zXG4gICAgRGVwcmVjYXRvci5zY2FuUGFyc2VTZXJ2ZXJPcHRpb25zKG9wdGlvbnMpO1xuICAgIC8vIFNldCBvcHRpb24gZGVmYXVsdHNcbiAgICBpbmplY3REZWZhdWx0cyhvcHRpb25zKTtcbiAgICBjb25zdCB7XG4gICAgICBhcHBJZCA9IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIGFwcElkIScpLFxuICAgICAgbWFzdGVyS2V5ID0gcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBtYXN0ZXJLZXkhJyksXG4gICAgICBjbG91ZCxcbiAgICAgIHNlY3VyaXR5LFxuICAgICAgamF2YXNjcmlwdEtleSxcbiAgICAgIHNlcnZlclVSTCA9IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgc2VydmVyVVJMIScpLFxuICAgICAgc2VydmVyU3RhcnRDb21wbGV0ZSxcbiAgICAgIHNjaGVtYSxcbiAgICB9ID0gb3B0aW9ucztcbiAgICAvLyBJbml0aWFsaXplIHRoZSBub2RlIGNsaWVudCBTREsgYXV0b21hdGljYWxseVxuICAgIFBhcnNlLmluaXRpYWxpemUoYXBwSWQsIGphdmFzY3JpcHRLZXkgfHwgJ3VudXNlZCcsIG1hc3RlcktleSk7XG4gICAgUGFyc2Uuc2VydmVyVVJMID0gc2VydmVyVVJMO1xuXG4gICAgY29uc3QgYWxsQ29udHJvbGxlcnMgPSBjb250cm9sbGVycy5nZXRDb250cm9sbGVycyhvcHRpb25zKTtcblxuICAgIGNvbnN0IHsgbG9nZ2VyQ29udHJvbGxlciwgZGF0YWJhc2VDb250cm9sbGVyLCBob29rc0NvbnRyb2xsZXIgfSA9IGFsbENvbnRyb2xsZXJzO1xuICAgIHRoaXMuY29uZmlnID0gQ29uZmlnLnB1dChPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCBhbGxDb250cm9sbGVycykpO1xuXG4gICAgbG9nZ2luZy5zZXRMb2dnZXIobG9nZ2VyQ29udHJvbGxlcik7XG5cbiAgICAvLyBOb3RlOiBUZXN0cyB3aWxsIHN0YXJ0IHRvIGZhaWwgaWYgYW55IHZhbGlkYXRpb24gaGFwcGVucyBhZnRlciB0aGlzIGlzIGNhbGxlZC5cbiAgICBkYXRhYmFzZUNvbnRyb2xsZXJcbiAgICAgIC5wZXJmb3JtSW5pdGlhbGl6YXRpb24oKVxuICAgICAgLnRoZW4oKCkgPT4gaG9va3NDb250cm9sbGVyLmxvYWQoKSlcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHNjaGVtYSkge1xuICAgICAgICAgIGF3YWl0IG5ldyBEZWZpbmVkU2NoZW1hcyhzY2hlbWEsIHRoaXMuY29uZmlnKS5leGVjdXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcnZlclN0YXJ0Q29tcGxldGUpIHtcbiAgICAgICAgICBzZXJ2ZXJTdGFydENvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAoc2VydmVyU3RhcnRDb21wbGV0ZSkge1xuICAgICAgICAgIHNlcnZlclN0YXJ0Q29tcGxldGUoZXJyb3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAoY2xvdWQpIHtcbiAgICAgIGFkZFBhcnNlQ2xvdWQoKTtcbiAgICAgIGlmICh0eXBlb2YgY2xvdWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2xvdWQoUGFyc2UpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY2xvdWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlcXVpcmUocGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGNsb3VkKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBcImFyZ3VtZW50ICdjbG91ZCcgbXVzdCBlaXRoZXIgYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzZWN1cml0eSAmJiBzZWN1cml0eS5lbmFibGVDaGVjayAmJiBzZWN1cml0eS5lbmFibGVDaGVja0xvZykge1xuICAgICAgbmV3IENoZWNrUnVubmVyKG9wdGlvbnMuc2VjdXJpdHkpLnJ1bigpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhcHAoKSB7XG4gICAgaWYgKCF0aGlzLl9hcHApIHtcbiAgICAgIHRoaXMuX2FwcCA9IFBhcnNlU2VydmVyLmFwcCh0aGlzLmNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hcHA7XG4gIH1cblxuICBoYW5kbGVTaHV0ZG93bigpIHtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgIGNvbnN0IHsgYWRhcHRlcjogZGF0YWJhc2VBZGFwdGVyIH0gPSB0aGlzLmNvbmZpZy5kYXRhYmFzZUNvbnRyb2xsZXI7XG4gICAgaWYgKGRhdGFiYXNlQWRhcHRlciAmJiB0eXBlb2YgZGF0YWJhc2VBZGFwdGVyLmhhbmRsZVNodXRkb3duID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGRhdGFiYXNlQWRhcHRlci5oYW5kbGVTaHV0ZG93bigpKTtcbiAgICB9XG4gICAgY29uc3QgeyBhZGFwdGVyOiBmaWxlQWRhcHRlciB9ID0gdGhpcy5jb25maWcuZmlsZXNDb250cm9sbGVyO1xuICAgIGlmIChmaWxlQWRhcHRlciAmJiB0eXBlb2YgZmlsZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb21pc2VzLnB1c2goZmlsZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24oKSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWRhcHRlcjogY2FjaGVBZGFwdGVyIH0gPSB0aGlzLmNvbmZpZy5jYWNoZUNvbnRyb2xsZXI7XG4gICAgaWYgKGNhY2hlQWRhcHRlciAmJiB0eXBlb2YgY2FjaGVBZGFwdGVyLmhhbmRsZVNodXRkb3duID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGNhY2hlQWRhcHRlci5oYW5kbGVTaHV0ZG93bigpKTtcbiAgICB9XG4gICAgcmV0dXJuIChwcm9taXNlcy5sZW5ndGggPiAwID8gUHJvbWlzZS5hbGwocHJvbWlzZXMpIDogUHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnLnNlcnZlckNsb3NlQ29tcGxldGUpIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2VydmVyQ2xvc2VDb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdGF0aWNcbiAgICogQ3JlYXRlIGFuIGV4cHJlc3MgYXBwIGZvciB0aGUgcGFyc2Ugc2VydmVyXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGxldCB5b3Ugc3BlY2lmeSB0aGUgbWF4VXBsb2FkU2l6ZSB3aGVuIGNyZWF0aW5nIHRoZSBleHByZXNzIGFwcCAgKi9cbiAgc3RhdGljIGFwcChvcHRpb25zKSB7XG4gICAgY29uc3QgeyBtYXhVcGxvYWRTaXplID0gJzIwbWInLCBhcHBJZCwgZGlyZWN0QWNjZXNzLCBwYWdlcyB9ID0gb3B0aW9ucztcbiAgICAvLyBUaGlzIGFwcCBzZXJ2ZXMgdGhlIFBhcnNlIEFQSSBkaXJlY3RseS5cbiAgICAvLyBJdCdzIHRoZSBlcXVpdmFsZW50IG9mIGh0dHBzOi8vYXBpLnBhcnNlLmNvbS8xIGluIHRoZSBob3N0ZWQgUGFyc2UgQVBJLlxuICAgIHZhciBhcGkgPSBleHByZXNzKCk7XG4gICAgLy9hcGkudXNlKFwiL2FwcHNcIiwgZXhwcmVzcy5zdGF0aWMoX19kaXJuYW1lICsgXCIvcHVibGljXCIpKTtcbiAgICBhcGkudXNlKG1pZGRsZXdhcmVzLmFsbG93Q3Jvc3NEb21haW4oYXBwSWQpKTtcbiAgICAvLyBGaWxlIGhhbmRsaW5nIG5lZWRzIHRvIGJlIGJlZm9yZSBkZWZhdWx0IG1pZGRsZXdhcmVzIGFyZSBhcHBsaWVkXG4gICAgYXBpLnVzZShcbiAgICAgICcvJyxcbiAgICAgIG5ldyBGaWxlc1JvdXRlcigpLmV4cHJlc3NSb3V0ZXIoe1xuICAgICAgICBtYXhVcGxvYWRTaXplOiBtYXhVcGxvYWRTaXplLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgYXBpLnVzZSgnL2hlYWx0aCcsIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICAgICAgcmVzLmpzb24oe1xuICAgICAgICBzdGF0dXM6ICdvaycsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGFwaS51c2UoXG4gICAgICAnLycsXG4gICAgICBib2R5UGFyc2VyLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSksXG4gICAgICBwYWdlcy5lbmFibGVSb3V0ZXJcbiAgICAgICAgPyBuZXcgUGFnZXNSb3V0ZXIocGFnZXMpLmV4cHJlc3NSb3V0ZXIoKVxuICAgICAgICA6IG5ldyBQdWJsaWNBUElSb3V0ZXIoKS5leHByZXNzUm91dGVyKClcbiAgICApO1xuXG4gICAgYXBpLnVzZShib2R5UGFyc2VyLmpzb24oeyB0eXBlOiAnKi8qJywgbGltaXQ6IG1heFVwbG9hZFNpemUgfSkpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuYWxsb3dNZXRob2RPdmVycmlkZSk7XG4gICAgYXBpLnVzZShtaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMpO1xuXG4gICAgY29uc3QgYXBwUm91dGVyID0gUGFyc2VTZXJ2ZXIucHJvbWlzZVJvdXRlcih7IGFwcElkIH0pO1xuICAgIGFwaS51c2UoYXBwUm91dGVyLmV4cHJlc3NSb3V0ZXIoKSk7XG5cbiAgICBhcGkudXNlKG1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlRXJyb3JzKTtcblxuICAgIC8vIHJ1biB0aGUgZm9sbG93aW5nIHdoZW4gbm90IHRlc3RpbmdcbiAgICBpZiAoIXByb2Nlc3MuZW52LlRFU1RJTkcpIHtcbiAgICAgIC8vVGhpcyBjYXVzZXMgdGVzdHMgdG8gc3BldyBzb21lIHVzZWxlc3Mgd2FybmluZ3MsIHNvIGRpc2FibGUgaW4gdGVzdFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyID0+IHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRUFERFJJTlVTRScpIHtcbiAgICAgICAgICAvLyB1c2VyLWZyaWVuZGx5IG1lc3NhZ2UgZm9yIHRoaXMgY29tbW9uIGVycm9yXG4gICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYFVuYWJsZSB0byBsaXN0ZW4gb24gcG9ydCAke2Vyci5wb3J0fS4gVGhlIHBvcnQgaXMgYWxyZWFkeSBpbiB1c2UuYCk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyB2ZXJpZnkgdGhlIHNlcnZlciB1cmwgYWZ0ZXIgYSAnbW91bnQnIGV2ZW50IGlzIHJlY2VpdmVkXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgYXBpLm9uKCdtb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgUGFyc2VTZXJ2ZXIudmVyaWZ5U2VydmVyVXJsKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52LlBBUlNFX1NFUlZFUl9FTkFCTEVfRVhQRVJJTUVOVEFMX0RJUkVDVF9BQ0NFU1MgPT09ICcxJyB8fCBkaXJlY3RBY2Nlc3MpIHtcbiAgICAgIFBhcnNlLkNvcmVNYW5hZ2VyLnNldFJFU1RDb250cm9sbGVyKFBhcnNlU2VydmVyUkVTVENvbnRyb2xsZXIoYXBwSWQsIGFwcFJvdXRlcikpO1xuICAgIH1cbiAgICByZXR1cm4gYXBpO1xuICB9XG5cbiAgc3RhdGljIHByb21pc2VSb3V0ZXIoeyBhcHBJZCB9KSB7XG4gICAgY29uc3Qgcm91dGVycyA9IFtcbiAgICAgIG5ldyBDbGFzc2VzUm91dGVyKCksXG4gICAgICBuZXcgVXNlcnNSb3V0ZXIoKSxcbiAgICAgIG5ldyBTZXNzaW9uc1JvdXRlcigpLFxuICAgICAgbmV3IFJvbGVzUm91dGVyKCksXG4gICAgICBuZXcgQW5hbHl0aWNzUm91dGVyKCksXG4gICAgICBuZXcgSW5zdGFsbGF0aW9uc1JvdXRlcigpLFxuICAgICAgbmV3IEZ1bmN0aW9uc1JvdXRlcigpLFxuICAgICAgbmV3IFNjaGVtYXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBQdXNoUm91dGVyKCksXG4gICAgICBuZXcgTG9nc1JvdXRlcigpLFxuICAgICAgbmV3IElBUFZhbGlkYXRpb25Sb3V0ZXIoKSxcbiAgICAgIG5ldyBGZWF0dXJlc1JvdXRlcigpLFxuICAgICAgbmV3IEdsb2JhbENvbmZpZ1JvdXRlcigpLFxuICAgICAgbmV3IEdyYXBoUUxSb3V0ZXIoKSxcbiAgICAgIG5ldyBQdXJnZVJvdXRlcigpLFxuICAgICAgbmV3IEhvb2tzUm91dGVyKCksXG4gICAgICBuZXcgQ2xvdWRDb2RlUm91dGVyKCksXG4gICAgICBuZXcgQXVkaWVuY2VzUm91dGVyKCksXG4gICAgICBuZXcgQWdncmVnYXRlUm91dGVyKCksXG4gICAgICBuZXcgU2VjdXJpdHlSb3V0ZXIoKSxcbiAgICBdO1xuXG4gICAgY29uc3Qgcm91dGVzID0gcm91dGVycy5yZWR1Y2UoKG1lbW8sIHJvdXRlcikgPT4ge1xuICAgICAgcmV0dXJuIG1lbW8uY29uY2F0KHJvdXRlci5yb3V0ZXMpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IGFwcFJvdXRlciA9IG5ldyBQcm9taXNlUm91dGVyKHJvdXRlcywgYXBwSWQpO1xuXG4gICAgYmF0Y2gubW91bnRPbnRvKGFwcFJvdXRlcik7XG4gICAgcmV0dXJuIGFwcFJvdXRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdGFydHMgdGhlIHBhcnNlIHNlcnZlcidzIGV4cHJlc3MgYXBwXG4gICAqIEBwYXJhbSB7UGFyc2VTZXJ2ZXJPcHRpb25zfSBvcHRpb25zIHRvIHVzZSB0byBzdGFydCB0aGUgc2VydmVyXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIGNhbGxlZCB3aGVuIHRoZSBzZXJ2ZXIgaGFzIHN0YXJ0ZWRcbiAgICogQHJldHVybnMge1BhcnNlU2VydmVyfSB0aGUgcGFyc2Ugc2VydmVyIGluc3RhbmNlXG4gICAqL1xuICBzdGFydChvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMsIGNhbGxiYWNrOiA/KCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcbiAgICBpZiAob3B0aW9ucy5taWRkbGV3YXJlKSB7XG4gICAgICBsZXQgbWlkZGxld2FyZTtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5taWRkbGV3YXJlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1pZGRsZXdhcmUgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pZGRsZXdhcmUgPSBvcHRpb25zLm1pZGRsZXdhcmU7IC8vIHVzZSBhcy1pcyBsZXQgZXhwcmVzcyBmYWlsXG4gICAgICB9XG4gICAgICBhcHAudXNlKG1pZGRsZXdhcmUpO1xuICAgIH1cblxuICAgIGFwcC51c2Uob3B0aW9ucy5tb3VudFBhdGgsIHRoaXMuYXBwKTtcblxuICAgIGlmIChvcHRpb25zLm1vdW50R3JhcGhRTCA9PT0gdHJ1ZSB8fCBvcHRpb25zLm1vdW50UGxheWdyb3VuZCA9PT0gdHJ1ZSkge1xuICAgICAgbGV0IGdyYXBoUUxDdXN0b21UeXBlRGVmcyA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5ncmFwaFFMU2NoZW1hID09PSAnc3RyaW5nJykge1xuICAgICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnMgPSBwYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0aW9ucy5ncmFwaFFMU2NoZW1hLCAndXRmOCcpKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiBvcHRpb25zLmdyYXBoUUxTY2hlbWEgPT09ICdvYmplY3QnIHx8XG4gICAgICAgIHR5cGVvZiBvcHRpb25zLmdyYXBoUUxTY2hlbWEgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnMgPSBvcHRpb25zLmdyYXBoUUxTY2hlbWE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcnNlR3JhcGhRTFNlcnZlciA9IG5ldyBQYXJzZUdyYXBoUUxTZXJ2ZXIodGhpcywge1xuICAgICAgICBncmFwaFFMUGF0aDogb3B0aW9ucy5ncmFwaFFMUGF0aCxcbiAgICAgICAgcGxheWdyb3VuZFBhdGg6IG9wdGlvbnMucGxheWdyb3VuZFBhdGgsXG4gICAgICAgIGdyYXBoUUxDdXN0b21UeXBlRGVmcyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3B0aW9ucy5tb3VudEdyYXBoUUwpIHtcbiAgICAgICAgcGFyc2VHcmFwaFFMU2VydmVyLmFwcGx5R3JhcGhRTChhcHApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5tb3VudFBsYXlncm91bmQpIHtcbiAgICAgICAgcGFyc2VHcmFwaFFMU2VydmVyLmFwcGx5UGxheWdyb3VuZChhcHApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNlcnZlciA9IGFwcC5saXN0ZW4ob3B0aW9ucy5wb3J0LCBvcHRpb25zLmhvc3QsIGNhbGxiYWNrKTtcbiAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcblxuICAgIGlmIChvcHRpb25zLnN0YXJ0TGl2ZVF1ZXJ5U2VydmVyIHx8IG9wdGlvbnMubGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucykge1xuICAgICAgdGhpcy5saXZlUXVlcnlTZXJ2ZXIgPSBQYXJzZVNlcnZlci5jcmVhdGVMaXZlUXVlcnlTZXJ2ZXIoXG4gICAgICAgIHNlcnZlcixcbiAgICAgICAgb3B0aW9ucy5saXZlUXVlcnlTZXJ2ZXJPcHRpb25zLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cnVzdFByb3h5KSB7XG4gICAgICBhcHAuc2V0KCd0cnVzdCBwcm94eScsIG9wdGlvbnMudHJ1c3RQcm94eSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFwcm9jZXNzLmVudi5URVNUSU5HKSB7XG4gICAgICBjb25maWd1cmVMaXN0ZW5lcnModGhpcyk7XG4gICAgfVxuICAgIHRoaXMuZXhwcmVzc0FwcCA9IGFwcDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFBhcnNlU2VydmVyIGFuZCBzdGFydHMgaXQuXG4gICAqIEBwYXJhbSB7UGFyc2VTZXJ2ZXJPcHRpb25zfSBvcHRpb25zIHVzZWQgdG8gc3RhcnQgdGhlIHNlcnZlclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgc2VydmVyIGhhcyBzdGFydGVkXG4gICAqIEByZXR1cm5zIHtQYXJzZVNlcnZlcn0gdGhlIHBhcnNlIHNlcnZlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIHN0YXJ0KG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucywgY2FsbGJhY2s6ID8oKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgcGFyc2VTZXJ2ZXIgPSBuZXcgUGFyc2VTZXJ2ZXIob3B0aW9ucyk7XG4gICAgcmV0dXJuIHBhcnNlU2VydmVyLnN0YXJ0KG9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSBhIGxpdmVRdWVyeSBzZXJ2ZXJcbiAgICogQHN0YXRpY1xuICAgKiBAcGFyYW0ge1NlcnZlcn0gaHR0cFNlcnZlciBhbiBvcHRpb25hbCBodHRwIHNlcnZlciB0byBwYXNzXG4gICAqIEBwYXJhbSB7TGl2ZVF1ZXJ5U2VydmVyT3B0aW9uc30gY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBsaXZlUXVlcnlTZXJ2ZXJcbiAgICogQHBhcmFtIHtQYXJzZVNlcnZlck9wdGlvbnN9IG9wdGlvbnMgb3B0aW9ucyBmb3IgdGhlIFBhcnNlU2VydmVyXG4gICAqIEByZXR1cm5zIHtQYXJzZUxpdmVRdWVyeVNlcnZlcn0gdGhlIGxpdmUgcXVlcnkgc2VydmVyIGluc3RhbmNlXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlTGl2ZVF1ZXJ5U2VydmVyKFxuICAgIGh0dHBTZXJ2ZXIsXG4gICAgY29uZmlnOiBMaXZlUXVlcnlTZXJ2ZXJPcHRpb25zLFxuICAgIG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9uc1xuICApIHtcbiAgICBpZiAoIWh0dHBTZXJ2ZXIgfHwgKGNvbmZpZyAmJiBjb25maWcucG9ydCkpIHtcbiAgICAgIHZhciBhcHAgPSBleHByZXNzKCk7XG4gICAgICBodHRwU2VydmVyID0gcmVxdWlyZSgnaHR0cCcpLmNyZWF0ZVNlcnZlcihhcHApO1xuICAgICAgaHR0cFNlcnZlci5saXN0ZW4oY29uZmlnLnBvcnQpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFBhcnNlTGl2ZVF1ZXJ5U2VydmVyKGh0dHBTZXJ2ZXIsIGNvbmZpZywgb3B0aW9ucyk7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5U2VydmVyVXJsKGNhbGxiYWNrKSB7XG4gICAgLy8gcGVyZm9ybSBhIGhlYWx0aCBjaGVjayBvbiB0aGUgc2VydmVyVVJMIHZhbHVlXG4gICAgaWYgKFBhcnNlLnNlcnZlclVSTCkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHJlcXVpcmUoJy4vcmVxdWVzdCcpO1xuICAgICAgcmVxdWVzdCh7IHVybDogUGFyc2Uuc2VydmVyVVJMLnJlcGxhY2UoL1xcLyQvLCAnJykgKyAnL2hlYWx0aCcgfSlcbiAgICAgICAgLmNhdGNoKHJlc3BvbnNlID0+IHJlc3BvbnNlKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgY29uc3QganNvbiA9IHJlc3BvbnNlLmRhdGEgfHwgbnVsbDtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDAgfHwgIWpzb24gfHwgKGpzb24gJiYganNvbi5zdGF0dXMgIT09ICdvaycpKSB7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBcXG5XQVJOSU5HLCBVbmFibGUgdG8gY29ubmVjdCB0byAnJHtQYXJzZS5zZXJ2ZXJVUkx9Jy5gICtcbiAgICAgICAgICAgICAgICBgIENsb3VkIGNvZGUgYW5kIHB1c2ggbm90aWZpY2F0aW9ucyBtYXkgYmUgdW5hdmFpbGFibGUhXFxuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFBhcnNlQ2xvdWQoKSB7XG4gIGNvbnN0IFBhcnNlQ2xvdWQgPSByZXF1aXJlKCcuL2Nsb3VkLWNvZGUvUGFyc2UuQ2xvdWQnKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBhcnNlLCAnU2VydmVyJywge1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBDb25maWcuZ2V0KFBhcnNlLmFwcGxpY2F0aW9uSWQpO1xuICAgIH0sXG4gICAgc2V0KG5ld1ZhbCkge1xuICAgICAgbmV3VmFsLmFwcElkID0gUGFyc2UuYXBwbGljYXRpb25JZDtcbiAgICAgIENvbmZpZy5wdXQobmV3VmFsKTtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfSk7XG4gIE9iamVjdC5hc3NpZ24oUGFyc2UuQ2xvdWQsIFBhcnNlQ2xvdWQpO1xuICBnbG9iYWwuUGFyc2UgPSBQYXJzZTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0RGVmYXVsdHMob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKSB7XG4gIE9iamVjdC5rZXlzKGRlZmF1bHRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywga2V5KSkge1xuICAgICAgb3B0aW9uc1trZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICdzZXJ2ZXJVUkwnKSkge1xuICAgIG9wdGlvbnMuc2VydmVyVVJMID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtvcHRpb25zLnBvcnR9JHtvcHRpb25zLm1vdW50UGF0aH1gO1xuICB9XG5cbiAgLy8gUmVzZXJ2ZWQgQ2hhcmFjdGVyc1xuICBpZiAob3B0aW9ucy5hcHBJZCkge1xuICAgIGNvbnN0IHJlZ2V4ID0gL1shIyQlJygpKismLzo7PT9AW1xcXXt9Xix8PD5dL2c7XG4gICAgaWYgKG9wdGlvbnMuYXBwSWQubWF0Y2gocmVnZXgpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBcXG5XQVJOSU5HLCBhcHBJZCB0aGF0IGNvbnRhaW5zIHNwZWNpYWwgY2hhcmFjdGVycyBjYW4gY2F1c2UgaXNzdWVzIHdoaWxlIHVzaW5nIHdpdGggdXJscy5cXG5gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gIGlmIChvcHRpb25zLnVzZXJTZW5zaXRpdmVGaWVsZHMpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gICAgIXByb2Nlc3MuZW52LlRFU1RJTkcgJiZcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFxcbkRFUFJFQ0FURUQ6IHVzZXJTZW5zaXRpdmVGaWVsZHMgaGFzIGJlZW4gcmVwbGFjZWQgYnkgcHJvdGVjdGVkRmllbGRzIGFsbG93aW5nIHRoZSBhYmlsaXR5IHRvIHByb3RlY3QgZmllbGRzIGluIGFsbCBjbGFzc2VzIHdpdGggQ0xQLiBcXG5gXG4gICAgICApO1xuICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuXG4gICAgY29uc3QgdXNlclNlbnNpdGl2ZUZpZWxkcyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFsuLi4oZGVmYXVsdHMudXNlclNlbnNpdGl2ZUZpZWxkcyB8fCBbXSksIC4uLihvcHRpb25zLnVzZXJTZW5zaXRpdmVGaWVsZHMgfHwgW10pXSlcbiAgICApO1xuXG4gICAgLy8gSWYgdGhlIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzIGlzIHVuc2V0LFxuICAgIC8vIGl0J2xsIGJlIGFzc2lnbmVkIHRoZSBkZWZhdWx0IGFib3ZlLlxuICAgIC8vIEhlcmUsIHByb3RlY3QgYWdhaW5zdCB0aGUgY2FzZSB3aGVyZSBwcm90ZWN0ZWRGaWVsZHNcbiAgICAvLyBpcyBzZXQsIGJ1dCBkb2Vzbid0IGhhdmUgX1VzZXIuXG4gICAgaWYgKCEoJ19Vc2VyJyBpbiBvcHRpb25zLnByb3RlY3RlZEZpZWxkcykpIHtcbiAgICAgIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzID0gT2JqZWN0LmFzc2lnbih7IF9Vc2VyOiBbXSB9LCBvcHRpb25zLnByb3RlY3RlZEZpZWxkcyk7XG4gICAgfVxuXG4gICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHNbJ19Vc2VyJ11bJyonXSA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KFsuLi4ob3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHNbJ19Vc2VyJ11bJyonXSB8fCBbXSksIC4uLnVzZXJTZW5zaXRpdmVGaWVsZHNdKVxuICAgICk7XG4gIH1cblxuICAvLyBNZXJnZSBwcm90ZWN0ZWRGaWVsZHMgb3B0aW9ucyB3aXRoIGRlZmF1bHRzLlxuICBPYmplY3Qua2V5cyhkZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHMpLmZvckVhY2goYyA9PiB7XG4gICAgY29uc3QgY3VyID0gb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHNbY107XG4gICAgaWYgKCFjdXIpIHtcbiAgICAgIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzW2NdID0gZGVmYXVsdHMucHJvdGVjdGVkRmllbGRzW2NdO1xuICAgIH0gZWxzZSB7XG4gICAgICBPYmplY3Qua2V5cyhkZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHNbY10pLmZvckVhY2gociA9PiB7XG4gICAgICAgIGNvbnN0IHVucSA9IG5ldyBTZXQoW1xuICAgICAgICAgIC4uLihvcHRpb25zLnByb3RlY3RlZEZpZWxkc1tjXVtyXSB8fCBbXSksXG4gICAgICAgICAgLi4uZGVmYXVsdHMucHJvdGVjdGVkRmllbGRzW2NdW3JdLFxuICAgICAgICBdKTtcbiAgICAgICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHNbY11bcl0gPSBBcnJheS5mcm9tKHVucSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIG9wdGlvbnMubWFzdGVyS2V5SXBzID0gQXJyYXkuZnJvbShcbiAgICBuZXcgU2V0KG9wdGlvbnMubWFzdGVyS2V5SXBzLmNvbmNhdChkZWZhdWx0cy5tYXN0ZXJLZXlJcHMsIG9wdGlvbnMubWFzdGVyS2V5SXBzKSlcbiAgKTtcbn1cblxuLy8gVGhvc2UgY2FuJ3QgYmUgdGVzdGVkIGFzIGl0IHJlcXVpcmVzIGEgc3VicHJvY2Vzc1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZUxpc3RlbmVycyhwYXJzZVNlcnZlcikge1xuICBjb25zdCBzZXJ2ZXIgPSBwYXJzZVNlcnZlci5zZXJ2ZXI7XG4gIGNvbnN0IHNvY2tldHMgPSB7fTtcbiAgLyogQ3VycmVudGx5LCBleHByZXNzIGRvZXNuJ3Qgc2h1dCBkb3duIGltbWVkaWF0ZWx5IGFmdGVyIHJlY2VpdmluZyBTSUdJTlQvU0lHVEVSTSBpZiBpdCBoYXMgY2xpZW50IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZW4ndCB0aW1lZCBvdXQuIChUaGlzIGlzIGEga25vd24gaXNzdWUgd2l0aCBub2RlIC0gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy8yNjQyKVxuICAgIFRoaXMgZnVuY3Rpb24sIGFsb25nIHdpdGggYGRlc3Ryb3lBbGl2ZUNvbm5lY3Rpb25zKClgLCBpbnRlbmQgdG8gZml4IHRoaXMgYmVoYXZpb3Igc3VjaCB0aGF0IHBhcnNlIHNlcnZlciB3aWxsIGNsb3NlIGFsbCBvcGVuIGNvbm5lY3Rpb25zIGFuZCBpbml0aWF0ZSB0aGUgc2h1dGRvd24gcHJvY2VzcyBhcyBzb29uIGFzIGl0IHJlY2VpdmVzIGEgU0lHSU5UL1NJR1RFUk0gc2lnbmFsLiAqL1xuICBzZXJ2ZXIub24oJ2Nvbm5lY3Rpb24nLCBzb2NrZXQgPT4ge1xuICAgIGNvbnN0IHNvY2tldElkID0gc29ja2V0LnJlbW90ZUFkZHJlc3MgKyAnOicgKyBzb2NrZXQucmVtb3RlUG9ydDtcbiAgICBzb2NrZXRzW3NvY2tldElkXSA9IHNvY2tldDtcbiAgICBzb2NrZXQub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgZGVsZXRlIHNvY2tldHNbc29ja2V0SWRdO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBkZXN0cm95QWxpdmVDb25uZWN0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKGNvbnN0IHNvY2tldElkIGluIHNvY2tldHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNvY2tldHNbc29ja2V0SWRdLmRlc3Ryb3koKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLyogKi9cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU2h1dGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1Rlcm1pbmF0aW9uIHNpZ25hbCByZWNlaXZlZC4gU2h1dHRpbmcgZG93bi4nKTtcbiAgICBkZXN0cm95QWxpdmVDb25uZWN0aW9ucygpO1xuICAgIHNlcnZlci5jbG9zZSgpO1xuICAgIHBhcnNlU2VydmVyLmhhbmRsZVNodXRkb3duKCk7XG4gIH07XG4gIHByb2Nlc3Mub24oJ1NJR1RFUk0nLCBoYW5kbGVTaHV0ZG93bik7XG4gIHByb2Nlc3Mub24oJ1NJR0lOVCcsIGhhbmRsZVNodXRkb3duKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFyc2VTZXJ2ZXI7XG4iXX0=
@@ -293,22 +293,7 @@ function handleParseHeaders(req, res, next) {
293
293
  }
294
294
 
295
295
  function getClientIp(req) {
296
- if (req.headers['x-forwarded-for']) {
297
- // try to get from x-forwared-for if it set (behind reverse proxy)
298
- return req.headers['x-forwarded-for'].split(',')[0];
299
- } else if (req.connection && req.connection.remoteAddress) {
300
- // no proxy, try getting from connection.remoteAddress
301
- return req.connection.remoteAddress;
302
- } else if (req.socket) {
303
- // try to get it from req.socket
304
- return req.socket.remoteAddress;
305
- } else if (req.connection && req.connection.socket) {
306
- // try to get it form the connection.socket
307
- return req.connection.socket.remoteAddress;
308
- } else {
309
- // if non above, fallback.
310
- return req.ip;
311
- }
296
+ return req.ip;
312
297
  }
313
298
 
314
299
  function httpAuth(req) {
@@ -526,4 +511,4 @@ function malformedContext(req, res) {
526
511
  error: 'Invalid object for context.'
527
512
  });
528
513
  }
529
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWRkbGV3YXJlcy5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX0FMTE9XRURfSEVBREVSUyIsImdldE1vdW50Rm9yUmVxdWVzdCIsInJlcSIsIm1vdW50UGF0aExlbmd0aCIsIm9yaWdpbmFsVXJsIiwibGVuZ3RoIiwidXJsIiwibW91bnRQYXRoIiwic2xpY2UiLCJwcm90b2NvbCIsImdldCIsImhhbmRsZVBhcnNlSGVhZGVycyIsInJlcyIsIm5leHQiLCJtb3VudCIsImNvbnRleHQiLCJKU09OIiwicGFyc2UiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJlIiwibWFsZm9ybWVkQ29udGV4dCIsImluZm8iLCJhcHBJZCIsInNlc3Npb25Ub2tlbiIsIm1hc3RlcktleSIsImluc3RhbGxhdGlvbklkIiwiY2xpZW50S2V5IiwiamF2YXNjcmlwdEtleSIsImRvdE5ldEtleSIsInJlc3RBUElLZXkiLCJjbGllbnRWZXJzaW9uIiwiYmFzaWNBdXRoIiwiaHR0cEF1dGgiLCJiYXNpY0F1dGhBcHBJZCIsIkFwcENhY2hlIiwiYm9keSIsIl9ub0JvZHkiLCJmaWxlVmlhSlNPTiIsIkJ1ZmZlciIsImludmFsaWRSZXF1ZXN0IiwiX1Jldm9jYWJsZVNlc3Npb24iLCJfQXBwbGljYXRpb25JZCIsIl9KYXZhU2NyaXB0S2V5IiwiX0NsaWVudFZlcnNpb24iLCJfSW5zdGFsbGF0aW9uSWQiLCJfU2Vzc2lvblRva2VuIiwiX01hc3RlcktleSIsIl9jb250ZXh0IiwiX0NvbnRlbnRUeXBlIiwiaGVhZGVycyIsImNsaWVudFNESyIsIkNsaWVudFNESyIsImZyb21TdHJpbmciLCJmaWxlRGF0YSIsImJhc2U2NCIsImZyb20iLCJjbGllbnRJcCIsImdldENsaWVudElwIiwiYXBwIiwiY29uZmlnIiwiQ29uZmlnIiwiaXAiLCJtYXN0ZXJLZXlJcHMiLCJpbmRleE9mIiwiaXNNYXN0ZXIiLCJhdXRoIiwiQXV0aCIsImlzUmVhZE9ubHlNYXN0ZXIiLCJyZWFkT25seU1hc3RlcktleSIsImlzUmVhZE9ubHkiLCJrZXlzIiwib25lS2V5Q29uZmlndXJlZCIsInNvbWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJvbmVLZXlNYXRjaGVzIiwidXNlckZyb21KV1QiLCJ1c2VyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbiIsImdldEF1dGhGb3JTZXNzaW9uVG9rZW4iLCJjYXRjaCIsImVycm9yIiwiUGFyc2UiLCJFcnJvciIsImxvZ2dlckNvbnRyb2xsZXIiLCJVTktOT1dOX0VSUk9SIiwic3BsaXQiLCJjb25uZWN0aW9uIiwicmVtb3RlQWRkcmVzcyIsInNvY2tldCIsImF1dGhvcml6YXRpb24iLCJoZWFkZXIiLCJhdXRoUHJlZml4IiwibWF0Y2giLCJ0b0xvd2VyQ2FzZSIsImVuY29kZWRBdXRoIiwic3Vic3RyaW5nIiwiY3JlZGVudGlhbHMiLCJkZWNvZGVCYXNlNjQiLCJqc0tleVByZWZpeCIsIm1hdGNoS2V5Iiwic3RyIiwiYWxsb3dDcm9zc0RvbWFpbiIsImFsbG93SGVhZGVycyIsImpvaW4iLCJhbGxvd09yaWdpbiIsIm1ldGhvZCIsInNlbmRTdGF0dXMiLCJhbGxvd01ldGhvZE92ZXJyaWRlIiwiX21ldGhvZCIsIm9yaWdpbmFsTWV0aG9kIiwiaGFuZGxlUGFyc2VFcnJvcnMiLCJlcnIiLCJsb2ciLCJkZWZhdWx0TG9nZ2VyIiwiZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlciIsImh0dHBTdGF0dXMiLCJjb2RlIiwiSU5URVJOQUxfU0VSVkVSX0VSUk9SIiwiT0JKRUNUX05PVF9GT1VORCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwicHJvY2VzcyIsImVudiIsIlRFU1RJTkciLCJzdGFjayIsImVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJlbmQiLCJwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyIsInJlcXVlc3QiLCJwcm9taXNlRW5zdXJlSWRlbXBvdGVuY3kiLCJkYXRhYmFzZSIsImFkYXB0ZXIiLCJNb25nb1N0b3JhZ2VBZGFwdGVyIiwiUG9zdGdyZXNTdG9yYWdlQWRhcHRlciIsInJlcXVlc3RJZCIsInBhdGhzIiwidHRsIiwiaWRlbXBvdGVuY3lPcHRpb25zIiwicmVxUGF0aCIsInBhdGgiLCJyZXBsYWNlIiwicmVnZXgiLCJSZWdFeHAiLCJjaGFyQXQiLCJleHBpcnlEYXRlIiwiRGF0ZSIsInNldFNlY29uZHMiLCJnZXRTZWNvbmRzIiwicmVzdCIsImNyZWF0ZSIsIm1hc3RlciIsInJlcUlkIiwiZXhwaXJlIiwiX2VuY29kZSIsIkRVUExJQ0FURV9WQUxVRSIsIkRVUExJQ0FURV9SRVFVRVNUIiwiSU5WQUxJRF9KU09OIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRU8sTUFBTUEsdUJBQXVCLEdBQ2xDLCtPQURLOzs7QUFHUCxNQUFNQyxrQkFBa0IsR0FBRyxVQUFVQyxHQUFWLEVBQWU7QUFDeEMsUUFBTUMsZUFBZSxHQUFHRCxHQUFHLENBQUNFLFdBQUosQ0FBZ0JDLE1BQWhCLEdBQXlCSCxHQUFHLENBQUNJLEdBQUosQ0FBUUQsTUFBekQ7QUFDQSxRQUFNRSxTQUFTLEdBQUdMLEdBQUcsQ0FBQ0UsV0FBSixDQUFnQkksS0FBaEIsQ0FBc0IsQ0FBdEIsRUFBeUJMLGVBQXpCLENBQWxCO0FBQ0EsU0FBT0QsR0FBRyxDQUFDTyxRQUFKLEdBQWUsS0FBZixHQUF1QlAsR0FBRyxDQUFDUSxHQUFKLENBQVEsTUFBUixDQUF2QixHQUF5Q0gsU0FBaEQ7QUFDRCxDQUpELEMsQ0FNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNJLGtCQUFULENBQTRCVCxHQUE1QixFQUFpQ1UsR0FBakMsRUFBc0NDLElBQXRDLEVBQTRDO0FBQ2pELE1BQUlDLEtBQUssR0FBR2Isa0JBQWtCLENBQUNDLEdBQUQsQ0FBOUI7QUFFQSxNQUFJYSxPQUFPLEdBQUcsRUFBZDs7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L0IsRUFBb0M7QUFDbENBLEVBQUFBLEdBQUcsQ0FBQ2tILE1BQUosQ0FBVyxHQUFYO0FBQ0FsSCxFQUFBQSxHQUFHLENBQUNtSCxJQUFKLENBQVM7QUFBRUosSUFBQUEsSUFBSSxFQUFFbkMsY0FBTUMsS0FBTixDQUFZMkUsWUFBcEI7QUFBa0M3RSxJQUFBQSxLQUFLLEVBQUU7QUFBekMsR0FBVDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEFwcENhY2hlIGZyb20gJy4vY2FjaGUnO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IGF1dGggZnJvbSAnLi9BdXRoJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi9Db25maWcnO1xuaW1wb3J0IENsaWVudFNESyBmcm9tICcuL0NsaWVudFNESyc7XG5pbXBvcnQgZGVmYXVsdExvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgcmVzdCBmcm9tICcuL3Jlc3QnO1xuaW1wb3J0IE1vbmdvU3RvcmFnZUFkYXB0ZXIgZnJvbSAnLi9BZGFwdGVycy9TdG9yYWdlL01vbmdvL01vbmdvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IFBvc3RncmVzU3RvcmFnZUFkYXB0ZXIgZnJvbSAnLi9BZGFwdGVycy9TdG9yYWdlL1Bvc3RncmVzL1Bvc3RncmVzU3RvcmFnZUFkYXB0ZXInO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BTExPV0VEX0hFQURFUlMgPVxuICAnWC1QYXJzZS1NYXN0ZXItS2V5LCBYLVBhcnNlLVJFU1QtQVBJLUtleSwgWC1QYXJzZS1KYXZhc2NyaXB0LUtleSwgWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCwgWC1QYXJzZS1DbGllbnQtVmVyc2lvbiwgWC1QYXJzZS1TZXNzaW9uLVRva2VuLCBYLVJlcXVlc3RlZC1XaXRoLCBYLVBhcnNlLVJldm9jYWJsZS1TZXNzaW9uLCBYLVBhcnNlLVJlcXVlc3QtSWQsIENvbnRlbnQtVHlwZSwgUHJhZ21hLCBDYWNoZS1Db250cm9sJztcblxuY29uc3QgZ2V0TW91bnRGb3JSZXF1ZXN0ID0gZnVuY3Rpb24gKHJlcSkge1xuICBjb25zdCBtb3VudFBhdGhMZW5ndGggPSByZXEub3JpZ2luYWxVcmwubGVuZ3RoIC0gcmVxLnVybC5sZW5ndGg7XG4gIGNvbnN0IG1vdW50UGF0aCA9IHJlcS5vcmlnaW5hbFVybC5zbGljZSgwLCBtb3VudFBhdGhMZW5ndGgpO1xuICByZXR1cm4gcmVxLnByb3RvY29sICsgJzovLycgKyByZXEuZ2V0KCdob3N0JykgKyBtb3VudFBhdGg7XG59O1xuXG4vLyBDaGVja3MgdGhhdCB0aGUgcmVxdWVzdCBpcyBhdXRob3JpemVkIGZvciB0aGlzIGFwcCBhbmQgY2hlY2tzIHVzZXJcbi8vIGF1dGggdG9vLlxuLy8gVGhlIGJvZHlwYXJzZXIgc2hvdWxkIHJ1biBiZWZvcmUgdGhpcyBtaWRkbGV3YXJlLlxuLy8gQWRkcyBpbmZvIHRvIHRoZSByZXF1ZXN0OlxuLy8gcmVxLmNvbmZpZyAtIHRoZSBDb25maWcgZm9yIHRoaXMgYXBwXG4vLyByZXEuYXV0aCAtIHRoZSBBdXRoIGZvciB0aGlzIHJlcXVlc3RcbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVQYXJzZUhlYWRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgdmFyIG1vdW50ID0gZ2V0TW91bnRGb3JSZXF1ZXN0KHJlcSk7XG5cbiAgbGV0IGNvbnRleHQgPSB7fTtcbiAgaWYgKHJlcS5nZXQoJ1gtUGFyc2UtQ2xvdWQtQ29udGV4dCcpICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgY29udGV4dCA9IEpTT04ucGFyc2UocmVxLmdldCgnWC1QYXJzZS1DbG91ZC1Db250ZXh0JykpO1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChjb250ZXh0KSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgICAgdGhyb3cgJ0NvbnRleHQgaXMgbm90IGFuIG9iamVjdCc7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG1hbGZvcm1lZENvbnRleHQocmVxLCByZXMpO1xuICAgIH1cbiAgfVxuICB2YXIgaW5mbyA9IHtcbiAgICBhcHBJZDogcmVxLmdldCgnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCcpLFxuICAgIHNlc3Npb25Ub2tlbjogcmVxLmdldCgnWC1QYXJzZS1TZXNzaW9uLVRva2VuJyksXG4gICAgbWFzdGVyS2V5OiByZXEuZ2V0KCdYLVBhcnNlLU1hc3Rlci1LZXknKSxcbiAgICBpbnN0YWxsYXRpb25JZDogcmVxLmdldCgnWC1QYXJzZS1JbnN0YWxsYXRpb24tSWQnKSxcbiAgICBjbGllbnRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtQ2xpZW50LUtleScpLFxuICAgIGphdmFzY3JpcHRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtSmF2YXNjcmlwdC1LZXknKSxcbiAgICBkb3ROZXRLZXk6IHJlcS5nZXQoJ1gtUGFyc2UtV2luZG93cy1LZXknKSxcbiAgICByZXN0QVBJS2V5OiByZXEuZ2V0KCdYLVBhcnNlLVJFU1QtQVBJLUtleScpLFxuICAgIGNsaWVudFZlcnNpb246IHJlcS5nZXQoJ1gtUGFyc2UtQ2xpZW50LVZlcnNpb24nKSxcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICB9O1xuXG4gIHZhciBiYXNpY0F1dGggPSBodHRwQXV0aChyZXEpO1xuXG4gIGlmIChiYXNpY0F1dGgpIHtcbiAgICB2YXIgYmFzaWNBdXRoQXBwSWQgPSBiYXNpY0F1dGguYXBwSWQ7XG4gICAgaWYgKEFwcENhY2hlLmdldChiYXNpY0F1dGhBcHBJZCkpIHtcbiAgICAgIGluZm8uYXBwSWQgPSBiYXNpY0F1dGhBcHBJZDtcbiAgICAgIGluZm8ubWFzdGVyS2V5ID0gYmFzaWNBdXRoLm1hc3RlcktleSB8fCBpbmZvLm1hc3RlcktleTtcbiAgICAgIGluZm8uamF2YXNjcmlwdEtleSA9IGJhc2ljQXV0aC5qYXZhc2NyaXB0S2V5IHx8IGluZm8uamF2YXNjcmlwdEtleTtcbiAgICB9XG4gIH1cblxuICBpZiAocmVxLmJvZHkpIHtcbiAgICAvLyBVbml0eSBTREsgc2VuZHMgYSBfbm9Cb2R5IGtleSB3aGljaCBuZWVkcyB0byBiZSByZW1vdmVkLlxuICAgIC8vIFVuY2xlYXIgYXQgdGhpcyBwb2ludCBpZiBhY3Rpb24gbmVlZHMgdG8gYmUgdGFrZW4uXG4gICAgZGVsZXRlIHJlcS5ib2R5Ll9ub0JvZHk7XG4gIH1cblxuICB2YXIgZmlsZVZpYUpTT04gPSBmYWxzZTtcblxuICBpZiAoIWluZm8uYXBwSWQgfHwgIUFwcENhY2hlLmdldChpbmZvLmFwcElkKSkge1xuICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCB0aGUgYXBwIGlkIG9uIHRoZSBib2R5LlxuICAgIGlmIChyZXEuYm9keSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgLy8gVGhlIG9ubHkgY2hhbmNlIHRvIGZpbmQgdGhlIGFwcCBpZCBpcyBpZiB0aGlzIGlzIGEgZmlsZVxuICAgICAgLy8gdXBsb2FkIHRoYXQgYWN0dWFsbHkgaXMgYSBKU09OIGJvZHkuIFNvIHRyeSB0byBwYXJzZSBpdC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJzZS1jb21tdW5pdHkvcGFyc2Utc2VydmVyL2lzc3Vlcy82NTg5XG4gICAgICAvLyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgdGhlIGNsaWVudCBpcyB0cnlpbmcgdG8gdXBsb2FkIGEgZmlsZSBidXQgZm9yZ290XG4gICAgICAvLyB0byBwcm92aWRlIHgtcGFyc2UtYXBwLWlkIGluIGhlYWRlciBhbmQgcGFyc2UgYSBiaW5hcnkgZmlsZSB3aWxsIGZhaWxcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcS5ib2R5ID0gSlNPTi5wYXJzZShyZXEuYm9keSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBpbnZhbGlkUmVxdWVzdChyZXEsIHJlcyk7XG4gICAgICB9XG4gICAgICBmaWxlVmlhSlNPTiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlcS5ib2R5KSB7XG4gICAgICBkZWxldGUgcmVxLmJvZHkuX1Jldm9jYWJsZVNlc3Npb247XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcmVxLmJvZHkgJiZcbiAgICAgIHJlcS5ib2R5Ll9BcHBsaWNhdGlvbklkICYmXG4gICAgICBBcHBDYWNoZS5nZXQocmVxLmJvZHkuX0FwcGxpY2F0aW9uSWQpICYmXG4gICAgICAoIWluZm8ubWFzdGVyS2V5IHx8IEFwcENhY2hlLmdldChyZXEuYm9keS5fQXBwbGljYXRpb25JZCkubWFzdGVyS2V5ID09PSBpbmZvLm1hc3RlcktleSlcbiAgICApIHtcbiAgICAgIGluZm8uYXBwSWQgPSByZXEuYm9keS5fQXBwbGljYXRpb25JZDtcbiAgICAgIGluZm8uamF2YXNjcmlwdEtleSA9IHJlcS5ib2R5Ll9KYXZhU2NyaXB0S2V5IHx8ICcnO1xuICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9BcHBsaWNhdGlvbklkO1xuICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9KYXZhU2NyaXB0S2V5O1xuICAgICAgLy8gVE9ETzogdGVzdCB0aGF0IHRoZSBSRVNUIEFQSSBmb3JtYXRzIGdlbmVyYXRlZCBieSB0aGUgb3RoZXJcbiAgICAgIC8vIFNES3MgYXJlIGhhbmRsZWQgb2tcbiAgICAgIGlmIChyZXEuYm9keS5fQ2xpZW50VmVyc2lvbikge1xuICAgICAgICBpbmZvLmNsaWVudFZlcnNpb24gPSByZXEuYm9keS5fQ2xpZW50VmVyc2lvbjtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9DbGllbnRWZXJzaW9uO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5ib2R5Ll9JbnN0YWxsYXRpb25JZCkge1xuICAgICAgICBpbmZvLmluc3RhbGxhdGlvbklkID0gcmVxLmJvZHkuX0luc3RhbGxhdGlvbklkO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX0luc3RhbGxhdGlvbklkO1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5ib2R5Ll9TZXNzaW9uVG9rZW4pIHtcbiAgICAgICAgaW5mby5zZXNzaW9uVG9rZW4gPSByZXEuYm9keS5fU2Vzc2lvblRva2VuO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX1Nlc3Npb25Ub2tlbjtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fTWFzdGVyS2V5KSB7XG4gICAgICAgIGluZm8ubWFzdGVyS2V5ID0gcmVxLmJvZHkuX01hc3RlcktleTtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9NYXN0ZXJLZXk7XG4gICAgICB9XG4gICAgICBpZiAocmVxLmJvZHkuX2NvbnRleHQpIHtcbiAgICAgICAgaWYgKHJlcS5ib2R5Ll9jb250ZXh0IGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgaW5mby5jb250ZXh0ID0gcmVxLmJvZHkuX2NvbnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGluZm8uY29udGV4dCA9IEpTT04ucGFyc2UocmVxLmJvZHkuX2NvbnRleHQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbmZvLmNvbnRleHQpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgICAgICAgICB0aHJvdyAnQ29udGV4dCBpcyBub3QgYW4gb2JqZWN0JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFsZm9ybWVkQ29udGV4dChyZXEsIHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSByZXEuYm9keS5fY29udGV4dDtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fQ29udGVudFR5cGUpIHtcbiAgICAgICAgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gcmVxLmJvZHkuX0NvbnRlbnRUeXBlO1xuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX0NvbnRlbnRUeXBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmZvLnNlc3Npb25Ub2tlbiAmJiB0eXBlb2YgaW5mby5zZXNzaW9uVG9rZW4gIT09ICdzdHJpbmcnKSB7XG4gICAgaW5mby5zZXNzaW9uVG9rZW4gPSBpbmZvLnNlc3Npb25Ub2tlbi50b1N0cmluZygpO1xuICB9XG5cbiAgaWYgKGluZm8uY2xpZW50VmVyc2lvbikge1xuICAgIGluZm8uY2xpZW50U0RLID0gQ2xpZW50U0RLLmZyb21TdHJpbmcoaW5mby5jbGllbnRWZXJzaW9uKTtcbiAgfVxuXG4gIGlmIChmaWxlVmlhSlNPTikge1xuICAgIHJlcS5maWxlRGF0YSA9IHJlcS5ib2R5LmZpbGVEYXRhO1xuICAgIC8vIFdlIG5lZWQgdG8gcmVwb3B1bGF0ZSByZXEuYm9keSB3aXRoIGEgYnVmZmVyXG4gICAgdmFyIGJhc2U2NCA9IHJlcS5ib2R5LmJhc2U2NDtcbiAgICByZXEuYm9keSA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICB9XG5cbiAgY29uc3QgY2xpZW50SXAgPSBnZXRDbGllbnRJcChyZXEpO1xuXG4gIGluZm8uYXBwID0gQXBwQ2FjaGUuZ2V0KGluZm8uYXBwSWQpO1xuICByZXEuY29uZmlnID0gQ29uZmlnLmdldChpbmZvLmFwcElkLCBtb3VudCk7XG4gIHJlcS5jb25maWcuaGVhZGVycyA9IHJlcS5oZWFkZXJzIHx8IHt9O1xuICByZXEuY29uZmlnLmlwID0gY2xpZW50SXA7XG4gIHJlcS5pbmZvID0gaW5mbztcblxuICBpZiAoXG4gICAgaW5mby5tYXN0ZXJLZXkgJiZcbiAgICByZXEuY29uZmlnLm1hc3RlcktleUlwcyAmJlxuICAgIHJlcS5jb25maWcubWFzdGVyS2V5SXBzLmxlbmd0aCAhPT0gMCAmJlxuICAgIHJlcS5jb25maWcubWFzdGVyS2V5SXBzLmluZGV4T2YoY2xpZW50SXApID09PSAtMVxuICApIHtcbiAgICByZXR1cm4gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpO1xuICB9XG5cbiAgdmFyIGlzTWFzdGVyID0gaW5mby5tYXN0ZXJLZXkgPT09IHJlcS5jb25maWcubWFzdGVyS2V5O1xuXG4gIGlmIChpc01hc3Rlcikge1xuICAgIHJlcS5hdXRoID0gbmV3IGF1dGguQXV0aCh7XG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgIGlzTWFzdGVyOiB0cnVlLFxuICAgIH0pO1xuICAgIG5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaXNSZWFkT25seU1hc3RlciA9IGluZm8ubWFzdGVyS2V5ID09PSByZXEuY29uZmlnLnJlYWRPbmx5TWFzdGVyS2V5O1xuICBpZiAoXG4gICAgdHlwZW9mIHJlcS5jb25maWcucmVhZE9ubHlNYXN0ZXJLZXkgIT0gJ3VuZGVmaW5lZCcgJiZcbiAgICByZXEuY29uZmlnLnJlYWRPbmx5TWFzdGVyS2V5ICYmXG4gICAgaXNSZWFkT25seU1hc3RlclxuICApIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogdHJ1ZSxcbiAgICAgIGlzUmVhZE9ubHk6IHRydWUsXG4gICAgfSk7XG4gICAgbmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENsaWVudCBrZXlzIGFyZSBub3QgcmVxdWlyZWQgaW4gcGFyc2Utc2VydmVyLCBidXQgaWYgYW55IGhhdmUgYmVlbiBjb25maWd1cmVkIGluIHRoZSBzZXJ2ZXIsIHZhbGlkYXRlIHRoZW1cbiAgLy8gIHRvIHByZXNlcnZlIG9yaWdpbmFsIGJlaGF2aW9yLlxuICBjb25zdCBrZXlzID0gWydjbGllbnRLZXknLCAnamF2YXNjcmlwdEtleScsICdkb3ROZXRLZXknLCAncmVzdEFQSUtleSddO1xuICBjb25zdCBvbmVLZXlDb25maWd1cmVkID0ga2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcmVxLmNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQ7XG4gIH0pO1xuICBjb25zdCBvbmVLZXlNYXRjaGVzID0ga2V5cy5zb21lKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcmVxLmNvbmZpZ1trZXldICE9PSB1bmRlZmluZWQgJiYgaW5mb1trZXldID09PSByZXEuY29uZmlnW2tleV07XG4gIH0pO1xuXG4gIGlmIChvbmVLZXlDb25maWd1cmVkICYmICFvbmVLZXlNYXRjaGVzKSB7XG4gICAgcmV0dXJuIGludmFsaWRSZXF1ZXN0KHJlcSwgcmVzKTtcbiAgfVxuXG4gIGlmIChyZXEudXJsID09ICcvbG9naW4nKSB7XG4gICAgZGVsZXRlIGluZm8uc2Vzc2lvblRva2VuO1xuICB9XG5cbiAgaWYgKHJlcS51c2VyRnJvbUpXVCkge1xuICAgIHJlcS5hdXRoID0gbmV3IGF1dGguQXV0aCh7XG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICAgIHVzZXI6IHJlcS51c2VyRnJvbUpXVCxcbiAgICB9KTtcbiAgICBuZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFpbmZvLnNlc3Npb25Ub2tlbikge1xuICAgIHJlcS5hdXRoID0gbmV3IGF1dGguQXV0aCh7XG4gICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICBpbnN0YWxsYXRpb25JZDogaW5mby5pbnN0YWxsYXRpb25JZCxcbiAgICAgIGlzTWFzdGVyOiBmYWxzZSxcbiAgICB9KTtcbiAgICBuZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gaGFuZGxlIHRoZSB1cGdyYWRlVG9SZXZvY2FibGVTZXNzaW9uIHBhdGggb24gaXQncyBvd25cbiAgICAgIGlmIChcbiAgICAgICAgaW5mby5zZXNzaW9uVG9rZW4gJiZcbiAgICAgICAgcmVxLnVybCA9PT0gJy91cGdyYWRlVG9SZXZvY2FibGVTZXNzaW9uJyAmJlxuICAgICAgICBpbmZvLnNlc3Npb25Ub2tlbi5pbmRleE9mKCdyOicpICE9IDBcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gYXV0aC5nZXRBdXRoRm9yTGVnYWN5U2Vzc2lvblRva2VuKHtcbiAgICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgICAgc2Vzc2lvblRva2VuOiBpbmZvLnNlc3Npb25Ub2tlbixcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYXV0aC5nZXRBdXRoRm9yU2Vzc2lvblRva2VuKHtcbiAgICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgICAgc2Vzc2lvblRva2VuOiBpbmZvLnNlc3Npb25Ub2tlbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAudGhlbihhdXRoID0+IHtcbiAgICAgIGlmIChhdXRoKSB7XG4gICAgICAgIHJlcS5hdXRoID0gYXV0aDtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUT0RPOiBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgZXJyb3Igc2NlbmFyaW8uXG4gICAgICAgIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlci5lcnJvcignZXJyb3IgZ2V0dGluZyBhdXRoIGZvciBzZXNzaW9uVG9rZW4nLCBlcnJvcik7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5VTktOT1dOX0VSUk9SLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudElwKHJlcSkge1xuICBpZiAocmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddKSB7XG4gICAgLy8gdHJ5IHRvIGdldCBmcm9tIHgtZm9yd2FyZWQtZm9yIGlmIGl0IHNldCAoYmVoaW5kIHJldmVyc2UgcHJveHkpXG4gICAgcmV0dXJuIHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXS5zcGxpdCgnLCcpWzBdO1xuICB9IGVsc2UgaWYgKHJlcS5jb25uZWN0aW9uICYmIHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3MpIHtcbiAgICAvLyBubyBwcm94eSwgdHJ5IGdldHRpbmcgZnJvbSBjb25uZWN0aW9uLnJlbW90ZUFkZHJlc3NcbiAgICByZXR1cm4gcmVxLmNvbm5lY3Rpb24ucmVtb3RlQWRkcmVzcztcbiAgfSBlbHNlIGlmIChyZXEuc29ja2V0KSB7XG4gICAgLy8gdHJ5IHRvIGdldCBpdCBmcm9tIHJlcS5zb2NrZXRcbiAgICByZXR1cm4gcmVxLnNvY2tldC5yZW1vdGVBZGRyZXNzO1xuICB9IGVsc2UgaWYgKHJlcS5jb25uZWN0aW9uICYmIHJlcS5jb25uZWN0aW9uLnNvY2tldCkge1xuICAgIC8vIHRyeSB0byBnZXQgaXQgZm9ybSB0aGUgY29ubmVjdGlvbi5zb2NrZXRcbiAgICByZXR1cm4gcmVxLmNvbm5lY3Rpb24uc29ja2V0LnJlbW90ZUFkZHJlc3M7XG4gIH0gZWxzZSB7XG4gICAgLy8gaWYgbm9uIGFib3ZlLCBmYWxsYmFjay5cbiAgICByZXR1cm4gcmVxLmlwO1xuICB9XG59XG5cbmZ1bmN0aW9uIGh0dHBBdXRoKHJlcSkge1xuICBpZiAoIShyZXEucmVxIHx8IHJlcSkuaGVhZGVycy5hdXRob3JpemF0aW9uKSByZXR1cm47XG5cbiAgdmFyIGhlYWRlciA9IChyZXEucmVxIHx8IHJlcSkuaGVhZGVycy5hdXRob3JpemF0aW9uO1xuICB2YXIgYXBwSWQsIG1hc3RlcktleSwgamF2YXNjcmlwdEtleTtcblxuICAvLyBwYXJzZSBoZWFkZXJcbiAgdmFyIGF1dGhQcmVmaXggPSAnYmFzaWMgJztcblxuICB2YXIgbWF0Y2ggPSBoZWFkZXIudG9Mb3dlckNhc2UoKS5pbmRleE9mKGF1dGhQcmVmaXgpO1xuXG4gIGlmIChtYXRjaCA9PSAwKSB7XG4gICAgdmFyIGVuY29kZWRBdXRoID0gaGVhZGVyLnN1YnN0cmluZyhhdXRoUHJlZml4Lmxlbmd0aCwgaGVhZGVyLmxlbmd0aCk7XG4gICAgdmFyIGNyZWRlbnRpYWxzID0gZGVjb2RlQmFzZTY0KGVuY29kZWRBdXRoKS5zcGxpdCgnOicpO1xuXG4gICAgaWYgKGNyZWRlbnRpYWxzLmxlbmd0aCA9PSAyKSB7XG4gICAgICBhcHBJZCA9IGNyZWRlbnRpYWxzWzBdO1xuICAgICAgdmFyIGtleSA9IGNyZWRlbnRpYWxzWzFdO1xuXG4gICAgICB2YXIganNLZXlQcmVmaXggPSAnamF2YXNjcmlwdC1rZXk9JztcblxuICAgICAgdmFyIG1hdGNoS2V5ID0ga2V5LmluZGV4T2YoanNLZXlQcmVmaXgpO1xuICAgICAgaWYgKG1hdGNoS2V5ID09IDApIHtcbiAgICAgICAgamF2YXNjcmlwdEtleSA9IGtleS5zdWJzdHJpbmcoanNLZXlQcmVmaXgubGVuZ3RoLCBrZXkubGVuZ3RoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1hc3RlcktleSA9IGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBhcHBJZDogYXBwSWQsIG1hc3RlcktleTogbWFzdGVyS2V5LCBqYXZhc2NyaXB0S2V5OiBqYXZhc2NyaXB0S2V5IH07XG59XG5cbmZ1bmN0aW9uIGRlY29kZUJhc2U2NChzdHIpIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvd0Nyb3NzRG9tYWluKGFwcElkKSB7XG4gIHJldHVybiAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KGFwcElkLCBnZXRNb3VudEZvclJlcXVlc3QocmVxKSk7XG4gICAgbGV0IGFsbG93SGVhZGVycyA9IERFRkFVTFRfQUxMT1dFRF9IRUFERVJTO1xuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmFsbG93SGVhZGVycykge1xuICAgICAgYWxsb3dIZWFkZXJzICs9IGAsICR7Y29uZmlnLmFsbG93SGVhZGVycy5qb2luKCcsICcpfWA7XG4gICAgfVxuICAgIGNvbnN0IGFsbG93T3JpZ2luID0gKGNvbmZpZyAmJiBjb25maWcuYWxsb3dPcmlnaW4pIHx8ICcqJztcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCBhbGxvd09yaWdpbik7XG4gICAgcmVzLmhlYWRlcignQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0aG9kcycsICdHRVQsUFVULFBPU1QsREVMRVRFLE9QVElPTlMnKTtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1IZWFkZXJzJywgYWxsb3dIZWFkZXJzKTtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1FeHBvc2UtSGVhZGVycycsICdYLVBhcnNlLUpvYi1TdGF0dXMtSWQsIFgtUGFyc2UtUHVzaC1TdGF0dXMtSWQnKTtcbiAgICAvLyBpbnRlcmNlcHQgT1BUSU9OUyBtZXRob2RcbiAgICBpZiAoJ09QVElPTlMnID09IHJlcS5tZXRob2QpIHtcbiAgICAgIHJlcy5zZW5kU3RhdHVzKDIwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxvd01ldGhvZE92ZXJyaWRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGlmIChyZXEubWV0aG9kID09PSAnUE9TVCcgJiYgcmVxLmJvZHkuX21ldGhvZCkge1xuICAgIHJlcS5vcmlnaW5hbE1ldGhvZCA9IHJlcS5tZXRob2Q7XG4gICAgcmVxLm1ldGhvZCA9IHJlcS5ib2R5Ll9tZXRob2Q7XG4gICAgZGVsZXRlIHJlcS5ib2R5Ll9tZXRob2Q7XG4gIH1cbiAgbmV4dCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUGFyc2VFcnJvcnMoZXJyLCByZXEsIHJlcywgbmV4dCkge1xuICBjb25zdCBsb2cgPSAocmVxLmNvbmZpZyAmJiByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIpIHx8IGRlZmF1bHRMb2dnZXI7XG4gIGlmIChlcnIgaW5zdGFuY2VvZiBQYXJzZS5FcnJvcikge1xuICAgIGlmIChyZXEuY29uZmlnICYmIHJlcS5jb25maWcuZW5hYmxlRXhwcmVzc0Vycm9ySGFuZGxlcikge1xuICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICB9XG4gICAgbGV0IGh0dHBTdGF0dXM7XG4gICAgLy8gVE9ETzogZmlsbCBvdXQgdGhpcyBtYXBwaW5nXG4gICAgc3dpdGNoIChlcnIuY29kZSkge1xuICAgICAgY2FzZSBQYXJzZS5FcnJvci5JTlRFUk5BTF9TRVJWRVJfRVJST1I6XG4gICAgICAgIGh0dHBTdGF0dXMgPSA1MDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EOlxuICAgICAgICBodHRwU3RhdHVzID0gNDA0O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGh0dHBTdGF0dXMgPSA0MDA7XG4gICAgfVxuICAgIHJlcy5zdGF0dXMoaHR0cFN0YXR1cyk7XG4gICAgcmVzLmpzb24oeyBjb2RlOiBlcnIuY29kZSwgZXJyb3I6IGVyci5tZXNzYWdlIH0pO1xuICAgIGxvZy5lcnJvcignUGFyc2UgZXJyb3I6ICcsIGVycik7XG4gIH0gZWxzZSBpZiAoZXJyLnN0YXR1cyAmJiBlcnIubWVzc2FnZSkge1xuICAgIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyk7XG4gICAgcmVzLmpzb24oeyBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgaWYgKCEocHJvY2VzcyAmJiBwcm9jZXNzLmVudi5URVNUSU5HKSkge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsb2cuZXJyb3IoJ1VuY2F1Z2h0IGludGVybmFsIHNlcnZlciBlcnJvci4nLCBlcnIsIGVyci5zdGFjayk7XG4gICAgcmVzLnN0YXR1cyg1MDApO1xuICAgIHJlcy5qc29uKHtcbiAgICAgIGNvZGU6IFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUixcbiAgICAgIG1lc3NhZ2U6ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3IuJyxcbiAgICB9KTtcbiAgICBpZiAoIShwcm9jZXNzICYmIHByb2Nlc3MuZW52LlRFU1RJTkcpKSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmZvcmNlTWFzdGVyS2V5QWNjZXNzKHJlcSwgcmVzLCBuZXh0KSB7XG4gIGlmICghcmVxLmF1dGguaXNNYXN0ZXIpIHtcbiAgICByZXMuc3RhdHVzKDQwMyk7XG4gICAgcmVzLmVuZCgne1wiZXJyb3JcIjpcInVuYXV0aG9yaXplZDogbWFzdGVyIGtleSBpcyByZXF1aXJlZFwifScpO1xuICAgIHJldHVybjtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyhyZXF1ZXN0KSB7XG4gIGlmICghcmVxdWVzdC5hdXRoLmlzTWFzdGVyKSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgICBlcnJvci5zdGF0dXMgPSA0MDM7XG4gICAgZXJyb3IubWVzc2FnZSA9ICd1bmF1dGhvcml6ZWQ6IG1hc3RlciBrZXkgaXMgcmVxdWlyZWQnO1xuICAgIHRocm93IGVycm9yO1xuICB9XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxuLyoqXG4gKiBEZWR1cGxpY2F0ZXMgYSByZXF1ZXN0IHRvIGVuc3VyZSBpZGVtcG90ZW5jeS4gRHVwbGljYXRlcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgcmVxdWVzdCBJRFxuICogaW4gdGhlIHJlcXVlc3QgaGVhZGVyLiBJZiBhIHJlcXVlc3QgaGFzIG5vIHJlcXVlc3QgSUQsIGl0IGlzIGV4ZWN1dGVkIGFueXdheS5cbiAqIEBwYXJhbSB7Kn0gcmVxIFRoZSByZXF1ZXN0IHRvIGV2YWx1YXRlLlxuICogQHJldHVybnMgUHJvbWlzZTx7fT5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VFbnN1cmVJZGVtcG90ZW5jeShyZXEpIHtcbiAgLy8gRW5hYmxlIGZlYXR1cmUgb25seSBmb3IgTW9uZ29EQlxuICBpZiAoXG4gICAgIShcbiAgICAgIHJlcS5jb25maWcuZGF0YWJhc2UuYWRhcHRlciBpbnN0YW5jZW9mIE1vbmdvU3RvcmFnZUFkYXB0ZXIgfHxcbiAgICAgIHJlcS5jb25maWcuZGF0YWJhc2UuYWRhcHRlciBpbnN0YW5jZW9mIFBvc3RncmVzU3RvcmFnZUFkYXB0ZXJcbiAgICApXG4gICkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuICAvLyBHZXQgcGFyYW1ldGVyc1xuICBjb25zdCBjb25maWcgPSByZXEuY29uZmlnO1xuICBjb25zdCByZXF1ZXN0SWQgPSAoKHJlcSB8fCB7fSkuaGVhZGVycyB8fCB7fSlbJ3gtcGFyc2UtcmVxdWVzdC1pZCddO1xuICBjb25zdCB7IHBhdGhzLCB0dGwgfSA9IGNvbmZpZy5pZGVtcG90ZW5jeU9wdGlvbnM7XG4gIGlmICghcmVxdWVzdElkIHx8ICFjb25maWcuaWRlbXBvdGVuY3lPcHRpb25zKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIC8vIFJlcXVlc3QgcGF0aCBtYXkgY29udGFpbiB0cmFpbGluZyBzbGFzaGVzLCBkZXBlbmRpbmcgb24gdGhlIG9yaWdpbmFsIHJlcXVlc3QsIHNvIHJlbW92ZVxuICAvLyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNwZWNpZnkgcGF0aHMgaW4gdGhlIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgcmVxUGF0aCA9IHJlcS5wYXRoLnJlcGxhY2UoL15cXC98XFwvJC8sICcnKTtcbiAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgaWRlbXBvdGVuY3kgaXMgZW5hYmxlZCBmb3IgY3VycmVudCByZXF1ZXN0IHBhdGhcbiAgbGV0IG1hdGNoID0gZmFsc2U7XG4gIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgIC8vIEFzc3VtZSBvbmUgd2FudHMgYSBwYXRoIHRvIGFsd2F5cyBtYXRjaCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gcHJldmVudCBhbnkgbWlzdGFrZXNcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAocGF0aC5jaGFyQXQoMCkgPT09ICdeJyA/IHBhdGggOiAnXicgKyBwYXRoKTtcbiAgICBpZiAocmVxUGF0aC5tYXRjaChyZWdleCkpIHtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIC8vIFRyeSB0byBzdG9yZSByZXF1ZXN0XG4gIGNvbnN0IGV4cGlyeURhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnNldFNlY29uZHMobmV3IERhdGUoKS5nZXRTZWNvbmRzKCkgKyB0dGwpKTtcbiAgcmV0dXJuIHJlc3RcbiAgICAuY3JlYXRlKGNvbmZpZywgYXV0aC5tYXN0ZXIoY29uZmlnKSwgJ19JZGVtcG90ZW5jeScsIHtcbiAgICAgIHJlcUlkOiByZXF1ZXN0SWQsXG4gICAgICBleHBpcmU6IFBhcnNlLl9lbmNvZGUoZXhwaXJ5RGF0ZSksXG4gICAgfSlcbiAgICAuY2F0Y2goZSA9PiB7XG4gICAgICBpZiAoZS5jb2RlID09IFBhcnNlLkVycm9yLkRVUExJQ0FURV9WQUxVRSkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRFVQTElDQVRFX1JFUVVFU1QsICdEdXBsaWNhdGUgcmVxdWVzdCcpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpIHtcbiAgcmVzLnN0YXR1cyg0MDMpO1xuICByZXMuZW5kKCd7XCJlcnJvclwiOlwidW5hdXRob3JpemVkXCJ9Jyk7XG59XG5cbmZ1bmN0aW9uIG1hbGZvcm1lZENvbnRleHQocmVxLCByZXMpIHtcbiAgcmVzLnN0YXR1cyg0MDApO1xuICByZXMuanNvbih7IGNvZGU6IFBhcnNlLkVycm9yLklOVkFMSURfSlNPTiwgZXJyb3I6ICdJbnZhbGlkIG9iamVjdCBmb3IgY29udGV4dC4nIH0pO1xufVxuIl19
514
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWRkbGV3YXJlcy5qcyJdLCJuYW1lcyI6WyJERUZBVUxUX0FMTE9XRURfSEVBREVSUyIsImdldE1vdW50Rm9yUmVxdWVzdCIsInJlcSIsIm1vdW50UGF0aExlbmd0aCIsIm9yaWdpbmFsVXJsIiwibGVuZ3RoIiwidXJsIiwibW91bnRQYXRoIiwic2xpY2UiLCJwcm90b2NvbCIsImdldCIsImhhbmRsZVBhcnNlSGVhZGVycyIsInJlcyIsIm5leHQiLCJtb3VudCIsImNvbnRleHQiLCJKU09OIiwicGFyc2UiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJlIiwibWFsZm9ybWVkQ29udGV4dCIsImluZm8iLCJhcHBJZCIsInNlc3Npb25Ub2tlbiIsIm1hc3RlcktleSIsImluc3RhbGxhdGlvbklkIiwiY2xpZW50S2V5IiwiamF2YXNjcmlwdEtleSIsImRvdE5ldEtleSIsInJlc3RBUElLZXkiLCJjbGllbnRWZXJzaW9uIiwiYmFzaWNBdXRoIiwiaHR0cEF1dGgiLCJiYXNpY0F1dGhBcHBJZCIsIkFwcENhY2hlIiwiYm9keSIsIl9ub0JvZHkiLCJmaWxlVmlhSlNPTiIsIkJ1ZmZlciIsImludmFsaWRSZXF1ZXN0IiwiX1Jldm9jYWJsZVNlc3Npb24iLCJfQXBwbGljYXRpb25JZCIsIl9KYXZhU2NyaXB0S2V5IiwiX0NsaWVudFZlcnNpb24iLCJfSW5zdGFsbGF0aW9uSWQiLCJfU2Vzc2lvblRva2VuIiwiX01hc3RlcktleSIsIl9jb250ZXh0IiwiX0NvbnRlbnRUeXBlIiwiaGVhZGVycyIsImNsaWVudFNESyIsIkNsaWVudFNESyIsImZyb21TdHJpbmciLCJmaWxlRGF0YSIsImJhc2U2NCIsImZyb20iLCJjbGllbnRJcCIsImdldENsaWVudElwIiwiYXBwIiwiY29uZmlnIiwiQ29uZmlnIiwiaXAiLCJtYXN0ZXJLZXlJcHMiLCJpbmRleE9mIiwiaXNNYXN0ZXIiLCJhdXRoIiwiQXV0aCIsImlzUmVhZE9ubHlNYXN0ZXIiLCJyZWFkT25seU1hc3RlcktleSIsImlzUmVhZE9ubHkiLCJrZXlzIiwib25lS2V5Q29uZmlndXJlZCIsInNvbWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJvbmVLZXlNYXRjaGVzIiwidXNlckZyb21KV1QiLCJ1c2VyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbiIsImdldEF1dGhGb3JTZXNzaW9uVG9rZW4iLCJjYXRjaCIsImVycm9yIiwiUGFyc2UiLCJFcnJvciIsImxvZ2dlckNvbnRyb2xsZXIiLCJVTktOT1dOX0VSUk9SIiwiYXV0aG9yaXphdGlvbiIsImhlYWRlciIsImF1dGhQcmVmaXgiLCJtYXRjaCIsInRvTG93ZXJDYXNlIiwiZW5jb2RlZEF1dGgiLCJzdWJzdHJpbmciLCJjcmVkZW50aWFscyIsImRlY29kZUJhc2U2NCIsInNwbGl0IiwianNLZXlQcmVmaXgiLCJtYXRjaEtleSIsInN0ciIsImFsbG93Q3Jvc3NEb21haW4iLCJhbGxvd0hlYWRlcnMiLCJqb2luIiwiYWxsb3dPcmlnaW4iLCJtZXRob2QiLCJzZW5kU3RhdHVzIiwiYWxsb3dNZXRob2RPdmVycmlkZSIsIl9tZXRob2QiLCJvcmlnaW5hbE1ldGhvZCIsImhhbmRsZVBhcnNlRXJyb3JzIiwiZXJyIiwibG9nIiwiZGVmYXVsdExvZ2dlciIsImVuYWJsZUV4cHJlc3NFcnJvckhhbmRsZXIiLCJodHRwU3RhdHVzIiwiY29kZSIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsIk9CSkVDVF9OT1RfRk9VTkQiLCJzdGF0dXMiLCJqc29uIiwibWVzc2FnZSIsInByb2Nlc3MiLCJlbnYiLCJURVNUSU5HIiwic3RhY2siLCJlbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiZW5kIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJyZXF1ZXN0IiwicHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5IiwiZGF0YWJhc2UiLCJhZGFwdGVyIiwiTW9uZ29TdG9yYWdlQWRhcHRlciIsIlBvc3RncmVzU3RvcmFnZUFkYXB0ZXIiLCJyZXF1ZXN0SWQiLCJwYXRocyIsInR0bCIsImlkZW1wb3RlbmN5T3B0aW9ucyIsInJlcVBhdGgiLCJwYXRoIiwicmVwbGFjZSIsInJlZ2V4IiwiUmVnRXhwIiwiY2hhckF0IiwiZXhwaXJ5RGF0ZSIsIkRhdGUiLCJzZXRTZWNvbmRzIiwiZ2V0U2Vjb25kcyIsInJlc3QiLCJjcmVhdGUiLCJtYXN0ZXIiLCJyZXFJZCIsImV4cGlyZSIsIl9lbmNvZGUiLCJEVVBMSUNBVEVfVkFMVUUiLCJEVVBMSUNBVEVfUkVRVUVTVCIsIklOVkFMSURfSlNPTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVPLE1BQU1BLHVCQUF1QixHQUNsQywrT0FESzs7O0FBR1AsTUFBTUMsa0JBQWtCLEdBQUcsVUFBVUMsR0FBVixFQUFlO0FBQ3hDLFFBQU1DLGVBQWUsR0FBR0QsR0FBRyxDQUFDRSxXQUFKLENBQWdCQyxNQUFoQixHQUF5QkgsR0FBRyxDQUFDSSxHQUFKLENBQVFELE1BQXpEO0FBQ0EsUUFBTUUsU0FBUyxHQUFHTCxHQUFHLENBQUNFLFdBQUosQ0FBZ0JJLEtBQWhCLENBQXNCLENBQXRCLEVBQXlCTCxlQUF6QixDQUFsQjtBQUNBLFNBQU9ELEdBQUcsQ0FBQ08sUUFBSixHQUFlLEtBQWYsR0FBdUJQLEdBQUcsQ0FBQ1EsR0FBSixDQUFRLE1BQVIsQ0FBdkIsR0FBeUNILFNBQWhEO0FBQ0QsQ0FKRCxDLENBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxTQUFTSSxrQkFBVCxDQUE0QlQsR0FBNUIsRUFBaUNVLEdBQWpDLEVBQXNDQyxJQUF0QyxFQUE0QztBQUNqRCxNQUFJQyxLQUFLLEdBQUdiLGtCQUFrQixDQUFDQyxHQUFELENBQTlCO0FBRUEsTUFBSWEsT0FBTyxHQUFHLEVBQWQ7O0FBQ0EsTUFBSWIsR0FBRyxDQUFDUSxHQUFKLENBQVEsdUJBQVIs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QyxjQUFNQyxLQUFOLENBQVlzRSxlQUExQixFQUEyQztBQUN6QyxZQUFNLElBQUl2RSxjQUFNQyxLQUFWLENBQWdCRCxjQUFNQyxLQUFOLENBQVl1RSxpQkFBNUIsRUFBK0MsbUJBQS9DLENBQU47QUFDRDs7QUFDRCxVQUFNMUksQ0FBTjtBQUNELEdBVkksQ0FBUDtBQVdEOztBQUVELFNBQVNvQixjQUFULENBQXdCeEMsR0FBeEIsRUFBNkJVLEdBQTdCLEVBQWtDO0FBQ2hDQSxFQUFBQSxHQUFHLENBQUMrRyxNQUFKLENBQVcsR0FBWDtBQUNBL0csRUFBQUEsR0FBRyxDQUFDdUgsR0FBSixDQUFRLDBCQUFSO0FBQ0Q7O0FBRUQsU0FBUzVHLGdCQUFULENBQTBCckIsR0FBMUIsRUFBK0JVLEdBQS9CLEVBQW9DO0FBQ2xDQSxFQUFBQSxHQUFHLENBQUMrRyxNQUFKLENBQVcsR0FBWDtBQUNBL0csRUFBQUEsR0FBRyxDQUFDZ0gsSUFBSixDQUFTO0FBQUVKLElBQUFBLElBQUksRUFBRWhDLGNBQU1DLEtBQU4sQ0FBWXdFLFlBQXBCO0FBQWtDMUUsSUFBQUEsS0FBSyxFQUFFO0FBQXpDLEdBQVQ7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBcHBDYWNoZSBmcm9tICcuL2NhY2hlJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBhdXRoIGZyb20gJy4vQXV0aCc7XG5pbXBvcnQgQ29uZmlnIGZyb20gJy4vQ29uZmlnJztcbmltcG9ydCBDbGllbnRTREsgZnJvbSAnLi9DbGllbnRTREsnO1xuaW1wb3J0IGRlZmF1bHRMb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHJlc3QgZnJvbSAnLi9yZXN0JztcbmltcG9ydCBNb25nb1N0b3JhZ2VBZGFwdGVyIGZyb20gJy4vQWRhcHRlcnMvU3RvcmFnZS9Nb25nby9Nb25nb1N0b3JhZ2VBZGFwdGVyJztcbmltcG9ydCBQb3N0Z3Jlc1N0b3JhZ2VBZGFwdGVyIGZyb20gJy4vQWRhcHRlcnMvU3RvcmFnZS9Qb3N0Z3Jlcy9Qb3N0Z3Jlc1N0b3JhZ2VBZGFwdGVyJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQUxMT1dFRF9IRUFERVJTID1cbiAgJ1gtUGFyc2UtTWFzdGVyLUtleSwgWC1QYXJzZS1SRVNULUFQSS1LZXksIFgtUGFyc2UtSmF2YXNjcmlwdC1LZXksIFgtUGFyc2UtQXBwbGljYXRpb24tSWQsIFgtUGFyc2UtQ2xpZW50LVZlcnNpb24sIFgtUGFyc2UtU2Vzc2lvbi1Ub2tlbiwgWC1SZXF1ZXN0ZWQtV2l0aCwgWC1QYXJzZS1SZXZvY2FibGUtU2Vzc2lvbiwgWC1QYXJzZS1SZXF1ZXN0LUlkLCBDb250ZW50LVR5cGUsIFByYWdtYSwgQ2FjaGUtQ29udHJvbCc7XG5cbmNvbnN0IGdldE1vdW50Rm9yUmVxdWVzdCA9IGZ1bmN0aW9uIChyZXEpIHtcbiAgY29uc3QgbW91bnRQYXRoTGVuZ3RoID0gcmVxLm9yaWdpbmFsVXJsLmxlbmd0aCAtIHJlcS51cmwubGVuZ3RoO1xuICBjb25zdCBtb3VudFBhdGggPSByZXEub3JpZ2luYWxVcmwuc2xpY2UoMCwgbW91bnRQYXRoTGVuZ3RoKTtcbiAgcmV0dXJuIHJlcS5wcm90b2NvbCArICc6Ly8nICsgcmVxLmdldCgnaG9zdCcpICsgbW91bnRQYXRoO1xufTtcblxuLy8gQ2hlY2tzIHRoYXQgdGhlIHJlcXVlc3QgaXMgYXV0aG9yaXplZCBmb3IgdGhpcyBhcHAgYW5kIGNoZWNrcyB1c2VyXG4vLyBhdXRoIHRvby5cbi8vIFRoZSBib2R5cGFyc2VyIHNob3VsZCBydW4gYmVmb3JlIHRoaXMgbWlkZGxld2FyZS5cbi8vIEFkZHMgaW5mbyB0byB0aGUgcmVxdWVzdDpcbi8vIHJlcS5jb25maWcgLSB0aGUgQ29uZmlnIGZvciB0aGlzIGFwcFxuLy8gcmVxLmF1dGggLSB0aGUgQXV0aCBmb3IgdGhpcyByZXF1ZXN0XG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUGFyc2VIZWFkZXJzKHJlcSwgcmVzLCBuZXh0KSB7XG4gIHZhciBtb3VudCA9IGdldE1vdW50Rm9yUmVxdWVzdChyZXEpO1xuXG4gIGxldCBjb250ZXh0ID0ge307XG4gIGlmIChyZXEuZ2V0KCdYLVBhcnNlLUNsb3VkLUNvbnRleHQnKSAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnRleHQgPSBKU09OLnBhcnNlKHJlcS5nZXQoJ1gtUGFyc2UtQ2xvdWQtQ29udGV4dCcpKTtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoY29udGV4dCkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICAgIHRocm93ICdDb250ZXh0IGlzIG5vdCBhbiBvYmplY3QnO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBtYWxmb3JtZWRDb250ZXh0KHJlcSwgcmVzKTtcbiAgICB9XG4gIH1cbiAgdmFyIGluZm8gPSB7XG4gICAgYXBwSWQ6IHJlcS5nZXQoJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnKSxcbiAgICBzZXNzaW9uVG9rZW46IHJlcS5nZXQoJ1gtUGFyc2UtU2Vzc2lvbi1Ub2tlbicpLFxuICAgIG1hc3RlcktleTogcmVxLmdldCgnWC1QYXJzZS1NYXN0ZXItS2V5JyksXG4gICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5nZXQoJ1gtUGFyc2UtSW5zdGFsbGF0aW9uLUlkJyksXG4gICAgY2xpZW50S2V5OiByZXEuZ2V0KCdYLVBhcnNlLUNsaWVudC1LZXknKSxcbiAgICBqYXZhc2NyaXB0S2V5OiByZXEuZ2V0KCdYLVBhcnNlLUphdmFzY3JpcHQtS2V5JyksXG4gICAgZG90TmV0S2V5OiByZXEuZ2V0KCdYLVBhcnNlLVdpbmRvd3MtS2V5JyksXG4gICAgcmVzdEFQSUtleTogcmVxLmdldCgnWC1QYXJzZS1SRVNULUFQSS1LZXknKSxcbiAgICBjbGllbnRWZXJzaW9uOiByZXEuZ2V0KCdYLVBhcnNlLUNsaWVudC1WZXJzaW9uJyksXG4gICAgY29udGV4dDogY29udGV4dCxcbiAgfTtcblxuICB2YXIgYmFzaWNBdXRoID0gaHR0cEF1dGgocmVxKTtcblxuICBpZiAoYmFzaWNBdXRoKSB7XG4gICAgdmFyIGJhc2ljQXV0aEFwcElkID0gYmFzaWNBdXRoLmFwcElkO1xuICAgIGlmIChBcHBDYWNoZS5nZXQoYmFzaWNBdXRoQXBwSWQpKSB7XG4gICAgICBpbmZvLmFwcElkID0gYmFzaWNBdXRoQXBwSWQ7XG4gICAgICBpbmZvLm1hc3RlcktleSA9IGJhc2ljQXV0aC5tYXN0ZXJLZXkgfHwgaW5mby5tYXN0ZXJLZXk7XG4gICAgICBpbmZvLmphdmFzY3JpcHRLZXkgPSBiYXNpY0F1dGguamF2YXNjcmlwdEtleSB8fCBpbmZvLmphdmFzY3JpcHRLZXk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHJlcS5ib2R5KSB7XG4gICAgLy8gVW5pdHkgU0RLIHNlbmRzIGEgX25vQm9keSBrZXkgd2hpY2ggbmVlZHMgdG8gYmUgcmVtb3ZlZC5cbiAgICAvLyBVbmNsZWFyIGF0IHRoaXMgcG9pbnQgaWYgYWN0aW9uIG5lZWRzIHRvIGJlIHRha2VuLlxuICAgIGRlbGV0ZSByZXEuYm9keS5fbm9Cb2R5O1xuICB9XG5cbiAgdmFyIGZpbGVWaWFKU09OID0gZmFsc2U7XG5cbiAgaWYgKCFpbmZvLmFwcElkIHx8ICFBcHBDYWNoZS5nZXQoaW5mby5hcHBJZCkpIHtcbiAgICAvLyBTZWUgaWYgd2UgY2FuIGZpbmQgdGhlIGFwcCBpZCBvbiB0aGUgYm9keS5cbiAgICBpZiAocmVxLmJvZHkgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgIC8vIFRoZSBvbmx5IGNoYW5jZSB0byBmaW5kIHRoZSBhcHAgaWQgaXMgaWYgdGhpcyBpcyBhIGZpbGVcbiAgICAgIC8vIHVwbG9hZCB0aGF0IGFjdHVhbGx5IGlzIGEgSlNPTiBib2R5LiBTbyB0cnkgdG8gcGFyc2UgaXQuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGFyc2UtY29tbXVuaXR5L3BhcnNlLXNlcnZlci9pc3N1ZXMvNjU4OVxuICAgICAgLy8gSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0IHRoZSBjbGllbnQgaXMgdHJ5aW5nIHRvIHVwbG9hZCBhIGZpbGUgYnV0IGZvcmdvdFxuICAgICAgLy8gdG8gcHJvdmlkZSB4LXBhcnNlLWFwcC1pZCBpbiBoZWFkZXIgYW5kIHBhcnNlIGEgYmluYXJ5IGZpbGUgd2lsbCBmYWlsXG4gICAgICB0cnkge1xuICAgICAgICByZXEuYm9keSA9IEpTT04ucGFyc2UocmVxLmJvZHkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gaW52YWxpZFJlcXVlc3QocmVxLCByZXMpO1xuICAgICAgfVxuICAgICAgZmlsZVZpYUpTT04gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyZXEuYm9keSkge1xuICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9SZXZvY2FibGVTZXNzaW9uO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHJlcS5ib2R5ICYmXG4gICAgICByZXEuYm9keS5fQXBwbGljYXRpb25JZCAmJlxuICAgICAgQXBwQ2FjaGUuZ2V0KHJlcS5ib2R5Ll9BcHBsaWNhdGlvbklkKSAmJlxuICAgICAgKCFpbmZvLm1hc3RlcktleSB8fCBBcHBDYWNoZS5nZXQocmVxLmJvZHkuX0FwcGxpY2F0aW9uSWQpLm1hc3RlcktleSA9PT0gaW5mby5tYXN0ZXJLZXkpXG4gICAgKSB7XG4gICAgICBpbmZvLmFwcElkID0gcmVxLmJvZHkuX0FwcGxpY2F0aW9uSWQ7XG4gICAgICBpbmZvLmphdmFzY3JpcHRLZXkgPSByZXEuYm9keS5fSmF2YVNjcmlwdEtleSB8fCAnJztcbiAgICAgIGRlbGV0ZSByZXEuYm9keS5fQXBwbGljYXRpb25JZDtcbiAgICAgIGRlbGV0ZSByZXEuYm9keS5fSmF2YVNjcmlwdEtleTtcbiAgICAgIC8vIFRPRE86IHRlc3QgdGhhdCB0aGUgUkVTVCBBUEkgZm9ybWF0cyBnZW5lcmF0ZWQgYnkgdGhlIG90aGVyXG4gICAgICAvLyBTREtzIGFyZSBoYW5kbGVkIG9rXG4gICAgICBpZiAocmVxLmJvZHkuX0NsaWVudFZlcnNpb24pIHtcbiAgICAgICAgaW5mby5jbGllbnRWZXJzaW9uID0gcmVxLmJvZHkuX0NsaWVudFZlcnNpb247XG4gICAgICAgIGRlbGV0ZSByZXEuYm9keS5fQ2xpZW50VmVyc2lvbjtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fSW5zdGFsbGF0aW9uSWQpIHtcbiAgICAgICAgaW5mby5pbnN0YWxsYXRpb25JZCA9IHJlcS5ib2R5Ll9JbnN0YWxsYXRpb25JZDtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9JbnN0YWxsYXRpb25JZDtcbiAgICAgIH1cbiAgICAgIGlmIChyZXEuYm9keS5fU2Vzc2lvblRva2VuKSB7XG4gICAgICAgIGluZm8uc2Vzc2lvblRva2VuID0gcmVxLmJvZHkuX1Nlc3Npb25Ub2tlbjtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9TZXNzaW9uVG9rZW47XG4gICAgICB9XG4gICAgICBpZiAocmVxLmJvZHkuX01hc3RlcktleSkge1xuICAgICAgICBpbmZvLm1hc3RlcktleSA9IHJlcS5ib2R5Ll9NYXN0ZXJLZXk7XG4gICAgICAgIGRlbGV0ZSByZXEuYm9keS5fTWFzdGVyS2V5O1xuICAgICAgfVxuICAgICAgaWYgKHJlcS5ib2R5Ll9jb250ZXh0KSB7XG4gICAgICAgIGlmIChyZXEuYm9keS5fY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgIGluZm8uY29udGV4dCA9IHJlcS5ib2R5Ll9jb250ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpbmZvLmNvbnRleHQgPSBKU09OLnBhcnNlKHJlcS5ib2R5Ll9jb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5mby5jb250ZXh0KSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgICAgICAgICAgdGhyb3cgJ0NvbnRleHQgaXMgbm90IGFuIG9iamVjdCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1hbGZvcm1lZENvbnRleHQocmVxLCByZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgcmVxLmJvZHkuX2NvbnRleHQ7XG4gICAgICB9XG4gICAgICBpZiAocmVxLmJvZHkuX0NvbnRlbnRUeXBlKSB7XG4gICAgICAgIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9IHJlcS5ib2R5Ll9Db250ZW50VHlwZTtcbiAgICAgICAgZGVsZXRlIHJlcS5ib2R5Ll9Db250ZW50VHlwZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGludmFsaWRSZXF1ZXN0KHJlcSwgcmVzKTtcbiAgICB9XG4gIH1cblxuICBpZiAoaW5mby5zZXNzaW9uVG9rZW4gJiYgdHlwZW9mIGluZm8uc2Vzc2lvblRva2VuICE9PSAnc3RyaW5nJykge1xuICAgIGluZm8uc2Vzc2lvblRva2VuID0gaW5mby5zZXNzaW9uVG9rZW4udG9TdHJpbmcoKTtcbiAgfVxuXG4gIGlmIChpbmZvLmNsaWVudFZlcnNpb24pIHtcbiAgICBpbmZvLmNsaWVudFNESyA9IENsaWVudFNESy5mcm9tU3RyaW5nKGluZm8uY2xpZW50VmVyc2lvbik7XG4gIH1cblxuICBpZiAoZmlsZVZpYUpTT04pIHtcbiAgICByZXEuZmlsZURhdGEgPSByZXEuYm9keS5maWxlRGF0YTtcbiAgICAvLyBXZSBuZWVkIHRvIHJlcG9wdWxhdGUgcmVxLmJvZHkgd2l0aCBhIGJ1ZmZlclxuICAgIHZhciBiYXNlNjQgPSByZXEuYm9keS5iYXNlNjQ7XG4gICAgcmVxLmJvZHkgPSBCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKTtcbiAgfVxuXG4gIGNvbnN0IGNsaWVudElwID0gZ2V0Q2xpZW50SXAocmVxKTtcblxuICBpbmZvLmFwcCA9IEFwcENhY2hlLmdldChpbmZvLmFwcElkKTtcbiAgcmVxLmNvbmZpZyA9IENvbmZpZy5nZXQoaW5mby5hcHBJZCwgbW91bnQpO1xuICByZXEuY29uZmlnLmhlYWRlcnMgPSByZXEuaGVhZGVycyB8fCB7fTtcbiAgcmVxLmNvbmZpZy5pcCA9IGNsaWVudElwO1xuICByZXEuaW5mbyA9IGluZm87XG5cbiAgaWYgKFxuICAgIGluZm8ubWFzdGVyS2V5ICYmXG4gICAgcmVxLmNvbmZpZy5tYXN0ZXJLZXlJcHMgJiZcbiAgICByZXEuY29uZmlnLm1hc3RlcktleUlwcy5sZW5ndGggIT09IDAgJiZcbiAgICByZXEuY29uZmlnLm1hc3RlcktleUlwcy5pbmRleE9mKGNsaWVudElwKSA9PT0gLTFcbiAgKSB7XG4gICAgcmV0dXJuIGludmFsaWRSZXF1ZXN0KHJlcSwgcmVzKTtcbiAgfVxuXG4gIHZhciBpc01hc3RlciA9IGluZm8ubWFzdGVyS2V5ID09PSByZXEuY29uZmlnLm1hc3RlcktleTtcblxuICBpZiAoaXNNYXN0ZXIpIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogdHJ1ZSxcbiAgICB9KTtcbiAgICBuZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIGlzUmVhZE9ubHlNYXN0ZXIgPSBpbmZvLm1hc3RlcktleSA9PT0gcmVxLmNvbmZpZy5yZWFkT25seU1hc3RlcktleTtcbiAgaWYgKFxuICAgIHR5cGVvZiByZXEuY29uZmlnLnJlYWRPbmx5TWFzdGVyS2V5ICE9ICd1bmRlZmluZWQnICYmXG4gICAgcmVxLmNvbmZpZy5yZWFkT25seU1hc3RlcktleSAmJlxuICAgIGlzUmVhZE9ubHlNYXN0ZXJcbiAgKSB7XG4gICAgcmVxLmF1dGggPSBuZXcgYXV0aC5BdXRoKHtcbiAgICAgIGNvbmZpZzogcmVxLmNvbmZpZyxcbiAgICAgIGluc3RhbGxhdGlvbklkOiBpbmZvLmluc3RhbGxhdGlvbklkLFxuICAgICAgaXNNYXN0ZXI6IHRydWUsXG4gICAgICBpc1JlYWRPbmx5OiB0cnVlLFxuICAgIH0pO1xuICAgIG5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBDbGllbnQga2V5cyBhcmUgbm90IHJlcXVpcmVkIGluIHBhcnNlLXNlcnZlciwgYnV0IGlmIGFueSBoYXZlIGJlZW4gY29uZmlndXJlZCBpbiB0aGUgc2VydmVyLCB2YWxpZGF0ZSB0aGVtXG4gIC8vICB0byBwcmVzZXJ2ZSBvcmlnaW5hbCBiZWhhdmlvci5cbiAgY29uc3Qga2V5cyA9IFsnY2xpZW50S2V5JywgJ2phdmFzY3JpcHRLZXknLCAnZG90TmV0S2V5JywgJ3Jlc3RBUElLZXknXTtcbiAgY29uc3Qgb25lS2V5Q29uZmlndXJlZCA9IGtleXMuc29tZShmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHJlcS5jb25maWdba2V5XSAhPT0gdW5kZWZpbmVkO1xuICB9KTtcbiAgY29uc3Qgb25lS2V5TWF0Y2hlcyA9IGtleXMuc29tZShmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHJlcS5jb25maWdba2V5XSAhPT0gdW5kZWZpbmVkICYmIGluZm9ba2V5XSA9PT0gcmVxLmNvbmZpZ1trZXldO1xuICB9KTtcblxuICBpZiAob25lS2V5Q29uZmlndXJlZCAmJiAhb25lS2V5TWF0Y2hlcykge1xuICAgIHJldHVybiBpbnZhbGlkUmVxdWVzdChyZXEsIHJlcyk7XG4gIH1cblxuICBpZiAocmVxLnVybCA9PSAnL2xvZ2luJykge1xuICAgIGRlbGV0ZSBpbmZvLnNlc3Npb25Ub2tlbjtcbiAgfVxuXG4gIGlmIChyZXEudXNlckZyb21KV1QpIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgICB1c2VyOiByZXEudXNlckZyb21KV1QsXG4gICAgfSk7XG4gICAgbmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghaW5mby5zZXNzaW9uVG9rZW4pIHtcbiAgICByZXEuYXV0aCA9IG5ldyBhdXRoLkF1dGgoe1xuICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IGluZm8uaW5zdGFsbGF0aW9uSWQsXG4gICAgICBpc01hc3RlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgbmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIC8vIGhhbmRsZSB0aGUgdXBncmFkZVRvUmV2b2NhYmxlU2Vzc2lvbiBwYXRoIG9uIGl0J3Mgb3duXG4gICAgICBpZiAoXG4gICAgICAgIGluZm8uc2Vzc2lvblRva2VuICYmXG4gICAgICAgIHJlcS51cmwgPT09ICcvdXBncmFkZVRvUmV2b2NhYmxlU2Vzc2lvbicgJiZcbiAgICAgICAgaW5mby5zZXNzaW9uVG9rZW4uaW5kZXhPZigncjonKSAhPSAwXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGF1dGguZ2V0QXV0aEZvckxlZ2FjeVNlc3Npb25Ub2tlbih7XG4gICAgICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgICAgIGluc3RhbGxhdGlvbklkOiBpbmZvLmluc3RhbGxhdGlvbklkLFxuICAgICAgICAgIHNlc3Npb25Ub2tlbjogaW5mby5zZXNzaW9uVG9rZW4sXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGF1dGguZ2V0QXV0aEZvclNlc3Npb25Ub2tlbih7XG4gICAgICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgICAgIGluc3RhbGxhdGlvbklkOiBpbmZvLmluc3RhbGxhdGlvbklkLFxuICAgICAgICAgIHNlc3Npb25Ub2tlbjogaW5mby5zZXNzaW9uVG9rZW4sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pXG4gICAgLnRoZW4oYXV0aCA9PiB7XG4gICAgICBpZiAoYXV0aCkge1xuICAgICAgICByZXEuYXV0aCA9IGF1dGg7XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBQYXJzZS5FcnJvcikge1xuICAgICAgICBuZXh0KGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVE9ETzogRGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGVycm9yIHNjZW5hcmlvLlxuICAgICAgICByZXEuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIuZXJyb3IoJ2Vycm9yIGdldHRpbmcgYXV0aCBmb3Igc2Vzc2lvblRva2VuJywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuVU5LTk9XTl9FUlJPUiwgZXJyb3IpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRJcChyZXEpIHtcbiAgcmV0dXJuIHJlcS5pcDtcbn1cblxuZnVuY3Rpb24gaHR0cEF1dGgocmVxKSB7XG4gIGlmICghKHJlcS5yZXEgfHwgcmVxKS5oZWFkZXJzLmF1dGhvcml6YXRpb24pIHJldHVybjtcblxuICB2YXIgaGVhZGVyID0gKHJlcS5yZXEgfHwgcmVxKS5oZWFkZXJzLmF1dGhvcml6YXRpb247XG4gIHZhciBhcHBJZCwgbWFzdGVyS2V5LCBqYXZhc2NyaXB0S2V5O1xuXG4gIC8vIHBhcnNlIGhlYWRlclxuICB2YXIgYXV0aFByZWZpeCA9ICdiYXNpYyAnO1xuXG4gIHZhciBtYXRjaCA9IGhlYWRlci50b0xvd2VyQ2FzZSgpLmluZGV4T2YoYXV0aFByZWZpeCk7XG5cbiAgaWYgKG1hdGNoID09IDApIHtcbiAgICB2YXIgZW5jb2RlZEF1dGggPSBoZWFkZXIuc3Vic3RyaW5nKGF1dGhQcmVmaXgubGVuZ3RoLCBoZWFkZXIubGVuZ3RoKTtcbiAgICB2YXIgY3JlZGVudGlhbHMgPSBkZWNvZGVCYXNlNjQoZW5jb2RlZEF1dGgpLnNwbGl0KCc6Jyk7XG5cbiAgICBpZiAoY3JlZGVudGlhbHMubGVuZ3RoID09IDIpIHtcbiAgICAgIGFwcElkID0gY3JlZGVudGlhbHNbMF07XG4gICAgICB2YXIga2V5ID0gY3JlZGVudGlhbHNbMV07XG5cbiAgICAgIHZhciBqc0tleVByZWZpeCA9ICdqYXZhc2NyaXB0LWtleT0nO1xuXG4gICAgICB2YXIgbWF0Y2hLZXkgPSBrZXkuaW5kZXhPZihqc0tleVByZWZpeCk7XG4gICAgICBpZiAobWF0Y2hLZXkgPT0gMCkge1xuICAgICAgICBqYXZhc2NyaXB0S2V5ID0ga2V5LnN1YnN0cmluZyhqc0tleVByZWZpeC5sZW5ndGgsIGtleS5sZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFzdGVyS2V5ID0ga2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGFwcElkOiBhcHBJZCwgbWFzdGVyS2V5OiBtYXN0ZXJLZXksIGphdmFzY3JpcHRLZXk6IGphdmFzY3JpcHRLZXkgfTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlQmFzZTY0KHN0cikge1xuICByZXR1cm4gQnVmZmVyLmZyb20oc3RyLCAnYmFzZTY0JykudG9TdHJpbmcoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG93Q3Jvc3NEb21haW4oYXBwSWQpIHtcbiAgcmV0dXJuIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IENvbmZpZy5nZXQoYXBwSWQsIGdldE1vdW50Rm9yUmVxdWVzdChyZXEpKTtcbiAgICBsZXQgYWxsb3dIZWFkZXJzID0gREVGQVVMVF9BTExPV0VEX0hFQURFUlM7XG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuYWxsb3dIZWFkZXJzKSB7XG4gICAgICBhbGxvd0hlYWRlcnMgKz0gYCwgJHtjb25maWcuYWxsb3dIZWFkZXJzLmpvaW4oJywgJyl9YDtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dPcmlnaW4gPSAoY29uZmlnICYmIGNvbmZpZy5hbGxvd09yaWdpbikgfHwgJyonO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbicsIGFsbG93T3JpZ2luKTtcbiAgICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCxQVVQsUE9TVCxERUxFVEUsT1BUSU9OUycpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCBhbGxvd0hlYWRlcnMpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUV4cG9zZS1IZWFkZXJzJywgJ1gtUGFyc2UtSm9iLVN0YXR1cy1JZCwgWC1QYXJzZS1QdXNoLVN0YXR1cy1JZCcpO1xuICAgIC8vIGludGVyY2VwdCBPUFRJT05TIG1ldGhvZFxuICAgIGlmICgnT1BUSU9OUycgPT0gcmVxLm1ldGhvZCkge1xuICAgICAgcmVzLnNlbmRTdGF0dXMoMjAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCgpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsbG93TWV0aG9kT3ZlcnJpZGUocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKHJlcS5tZXRob2QgPT09ICdQT1NUJyAmJiByZXEuYm9keS5fbWV0aG9kKSB7XG4gICAgcmVxLm9yaWdpbmFsTWV0aG9kID0gcmVxLm1ldGhvZDtcbiAgICByZXEubWV0aG9kID0gcmVxLmJvZHkuX21ldGhvZDtcbiAgICBkZWxldGUgcmVxLmJvZHkuX21ldGhvZDtcbiAgfVxuICBuZXh0KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVQYXJzZUVycm9ycyhlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XG4gIGNvbnN0IGxvZyA9IChyZXEuY29uZmlnICYmIHJlcS5jb25maWcubG9nZ2VyQ29udHJvbGxlcikgfHwgZGVmYXVsdExvZ2dlcjtcbiAgaWYgKGVyciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgaWYgKHJlcS5jb25maWcgJiYgcmVxLmNvbmZpZy5lbmFibGVFeHByZXNzRXJyb3JIYW5kbGVyKSB7XG4gICAgICByZXR1cm4gbmV4dChlcnIpO1xuICAgIH1cbiAgICBsZXQgaHR0cFN0YXR1cztcbiAgICAvLyBUT0RPOiBmaWxsIG91dCB0aGlzIG1hcHBpbmdcbiAgICBzd2l0Y2ggKGVyci5jb2RlKSB7XG4gICAgICBjYXNlIFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUjpcbiAgICAgICAgaHR0cFN0YXR1cyA9IDUwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQ6XG4gICAgICAgIGh0dHBTdGF0dXMgPSA0MDQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaHR0cFN0YXR1cyA9IDQwMDtcbiAgICB9XG4gICAgcmVzLnN0YXR1cyhodHRwU3RhdHVzKTtcbiAgICByZXMuanNvbih7IGNvZGU6IGVyci5jb2RlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgbG9nLmVycm9yKCdQYXJzZSBlcnJvcjogJywgZXJyKTtcbiAgfSBlbHNlIGlmIChlcnIuc3RhdHVzICYmIGVyci5tZXNzYWdlKSB7XG4gICAgcmVzLnN0YXR1cyhlcnIuc3RhdHVzKTtcbiAgICByZXMuanNvbih7IGVycm9yOiBlcnIubWVzc2FnZSB9KTtcbiAgICBpZiAoIShwcm9jZXNzICYmIHByb2Nlc3MuZW52LlRFU1RJTkcpKSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxvZy5lcnJvcignVW5jYXVnaHQgaW50ZXJuYWwgc2VydmVyIGVycm9yLicsIGVyciwgZXJyLnN0YWNrKTtcbiAgICByZXMuc3RhdHVzKDUwMCk7XG4gICAgcmVzLmpzb24oe1xuICAgICAgY29kZTogUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLFxuICAgICAgbWVzc2FnZTogJ0ludGVybmFsIHNlcnZlciBlcnJvci4nLFxuICAgIH0pO1xuICAgIGlmICghKHByb2Nlc3MgJiYgcHJvY2Vzcy5lbnYuVEVTVElORykpIHtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MocmVxLCByZXMsIG5leHQpIHtcbiAgaWYgKCFyZXEuYXV0aC5pc01hc3Rlcikge1xuICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICByZXMuZW5kKCd7XCJlcnJvclwiOlwidW5hdXRob3JpemVkOiBtYXN0ZXIga2V5IGlzIHJlcXVpcmVkXCJ9Jyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIG5leHQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzKHJlcXVlc3QpIHtcbiAgaWYgKCFyZXF1ZXN0LmF1dGguaXNNYXN0ZXIpIHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgIGVycm9yLnN0YXR1cyA9IDQwMztcbiAgICBlcnJvci5tZXNzYWdlID0gJ3VuYXV0aG9yaXplZDogbWFzdGVyIGtleSBpcyByZXF1aXJlZCc7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG4vKipcbiAqIERlZHVwbGljYXRlcyBhIHJlcXVlc3QgdG8gZW5zdXJlIGlkZW1wb3RlbmN5LiBEdXBsaWNhdGVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSByZXF1ZXN0IElEXG4gKiBpbiB0aGUgcmVxdWVzdCBoZWFkZXIuIElmIGEgcmVxdWVzdCBoYXMgbm8gcmVxdWVzdCBJRCwgaXQgaXMgZXhlY3V0ZWQgYW55d2F5LlxuICogQHBhcmFtIHsqfSByZXEgVGhlIHJlcXVlc3QgdG8gZXZhbHVhdGUuXG4gKiBAcmV0dXJucyBQcm9taXNlPHt9PlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZUVuc3VyZUlkZW1wb3RlbmN5KHJlcSkge1xuICAvLyBFbmFibGUgZmVhdHVyZSBvbmx5IGZvciBNb25nb0RCXG4gIGlmIChcbiAgICAhKFxuICAgICAgcmVxLmNvbmZpZy5kYXRhYmFzZS5hZGFwdGVyIGluc3RhbmNlb2YgTW9uZ29TdG9yYWdlQWRhcHRlciB8fFxuICAgICAgcmVxLmNvbmZpZy5kYXRhYmFzZS5hZGFwdGVyIGluc3RhbmNlb2YgUG9zdGdyZXNTdG9yYWdlQWRhcHRlclxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9XG4gIC8vIEdldCBwYXJhbWV0ZXJzXG4gIGNvbnN0IGNvbmZpZyA9IHJlcS5jb25maWc7XG4gIGNvbnN0IHJlcXVlc3RJZCA9ICgocmVxIHx8IHt9KS5oZWFkZXJzIHx8IHt9KVsneC1wYXJzZS1yZXF1ZXN0LWlkJ107XG4gIGNvbnN0IHsgcGF0aHMsIHR0bCB9ID0gY29uZmlnLmlkZW1wb3RlbmN5T3B0aW9ucztcbiAgaWYgKCFyZXF1ZXN0SWQgfHwgIWNvbmZpZy5pZGVtcG90ZW5jeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbiAgLy8gUmVxdWVzdCBwYXRoIG1heSBjb250YWluIHRyYWlsaW5nIHNsYXNoZXMsIGRlcGVuZGluZyBvbiB0aGUgb3JpZ2luYWwgcmVxdWVzdCwgc28gcmVtb3ZlXG4gIC8vIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3BlY2lmeSBwYXRocyBpbiB0aGUgY29uZmlndXJhdGlvblxuICBjb25zdCByZXFQYXRoID0gcmVxLnBhdGgucmVwbGFjZSgvXlxcL3xcXC8kLywgJycpO1xuICAvLyBEZXRlcm1pbmUgd2hldGhlciBpZGVtcG90ZW5jeSBpcyBlbmFibGVkIGZvciBjdXJyZW50IHJlcXVlc3QgcGF0aFxuICBsZXQgbWF0Y2ggPSBmYWxzZTtcbiAgZm9yIChjb25zdCBwYXRoIG9mIHBhdGhzKSB7XG4gICAgLy8gQXNzdW1lIG9uZSB3YW50cyBhIHBhdGggdG8gYWx3YXlzIG1hdGNoIGZyb20gdGhlIGJlZ2lubmluZyB0byBwcmV2ZW50IGFueSBtaXN0YWtlc1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXRoLmNoYXJBdCgwKSA9PT0gJ14nID8gcGF0aCA6ICdeJyArIHBhdGgpO1xuICAgIGlmIChyZXFQYXRoLm1hdGNoKHJlZ2V4KSkge1xuICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cbiAgLy8gVHJ5IHRvIHN0b3JlIHJlcXVlc3RcbiAgY29uc3QgZXhwaXJ5RGF0ZSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0U2Vjb25kcyhuZXcgRGF0ZSgpLmdldFNlY29uZHMoKSArIHR0bCkpO1xuICByZXR1cm4gcmVzdFxuICAgIC5jcmVhdGUoY29uZmlnLCBhdXRoLm1hc3Rlcihjb25maWcpLCAnX0lkZW1wb3RlbmN5Jywge1xuICAgICAgcmVxSWQ6IHJlcXVlc3RJZCxcbiAgICAgIGV4cGlyZTogUGFyc2UuX2VuY29kZShleHBpcnlEYXRlKSxcbiAgICB9KVxuICAgIC5jYXRjaChlID0+IHtcbiAgICAgIGlmIChlLmNvZGUgPT0gUGFyc2UuRXJyb3IuRFVQTElDQVRFX1ZBTFVFKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5EVVBMSUNBVEVfUkVRVUVTVCwgJ0R1cGxpY2F0ZSByZXF1ZXN0Jyk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBpbnZhbGlkUmVxdWVzdChyZXEsIHJlcykge1xuICByZXMuc3RhdHVzKDQwMyk7XG4gIHJlcy5lbmQoJ3tcImVycm9yXCI6XCJ1bmF1dGhvcml6ZWRcIn0nKTtcbn1cblxuZnVuY3Rpb24gbWFsZm9ybWVkQ29udGV4dChyZXEsIHJlcykge1xuICByZXMuc3RhdHVzKDQwMCk7XG4gIHJlcy5qc29uKHsgY29kZTogUGFyc2UuRXJyb3IuSU5WQUxJRF9KU09OLCBlcnJvcjogJ0ludmFsaWQgb2JqZWN0IGZvciBjb250ZXh0LicgfSk7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "5.4.0",
3
+ "version": "5.4.1",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {