@rio-cloud/cdk-v2-constructs 4.6.0 → 4.8.0

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.
@@ -132,7 +132,7 @@ function addDatadogSidecar(props) {
132
132
  DD_SITE: props.datadogSite,
133
133
  DD_TAGS: getTagsEnvironmentVariableValue({ ...props, accountId, region, containerType: 'datadog-sidecar' }),
134
134
  ECS_FARGATE: 'true',
135
- DD_COLLECT_GCE_TAGS: 'false',
135
+ DD_CLOUD_PROVIDER_METADATA: 'aws',
136
136
  },
137
137
  // see https://github.com/DataDog/datadog-agent/blob/master/Dockerfiles/agent/amd64/Dockerfile#L171-L172
138
138
  healthCheck: {
@@ -273,7 +273,6 @@ function setupLogging(props) {
273
273
  }
274
274
  exports.setupLogging = setupLogging;
275
275
  function ensureLoggingAndMonitoringAreReadyBeforeServiceStarts(rioFargateService) {
276
- var _a;
277
276
  rioFargateService.serviceContainerDefinition.addContainerDependencies({
278
277
  container: rioFargateService.datadogSideCarContainerDefinition,
279
278
  condition: ecs.ContainerDependencyCondition.HEALTHY,
@@ -283,7 +282,7 @@ function ensureLoggingAndMonitoringAreReadyBeforeServiceStarts(rioFargateService
283
282
  container: rioFargateService.logRouterContainerDefinition,
284
283
  condition: ecs.ContainerDependencyCondition.START,
285
284
  });
286
- if (((_a = rioFargateService.datadogSideCarContainerDefinition.logDriverConfig) === null || _a === void 0 ? void 0 : _a.logDriver) === 'awsfirelens') {
285
+ if (rioFargateService.datadogSideCarContainerDefinition.logDriverConfig?.logDriver === 'awsfirelens') {
287
286
  rioFargateService.datadogSideCarContainerDefinition.addContainerDependencies({
288
287
  container: rioFargateService.logRouterContainerDefinition,
289
288
  condition: ecs.ContainerDependencyCondition.START,
@@ -292,4 +291,4 @@ function ensureLoggingAndMonitoringAreReadyBeforeServiceStarts(rioFargateService
292
291
  }
293
292
  }
294
293
  exports.ensureLoggingAndMonitoringAreReadyBeforeServiceStarts = ensureLoggingAndMonitoringAreReadyBeforeServiceStarts;
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL2RhdGFkb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWtEO0FBQ2xELDJDQUEyQztBQUMzQyxpREFBaUQ7QUFDakQsNkNBQTZDO0FBRzdDLCtEQUE4RTtBQUU5RTs7R0FFRztBQUNILE1BQWEsT0FBTztJQUVYLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FDbkQsS0FBZ0IsRUFDaEIsS0FBYSxFQUNiLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixXQUFtQixFQUNuQixRQUFnQixFQUNoQixjQUFzQixFQUN0QixjQUFrRDtRQUVsRCxPQUFPLHVDQUF1QyxDQUFDO1lBQzdDLEtBQUs7WUFDTCxLQUFLO1lBQ0wsV0FBVztZQUNYLE9BQU87WUFDUCxXQUFXO1lBQ1gsUUFBUTtZQUNSLGNBQWM7WUFDZCxjQUFjO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxPQUFlO1FBQ3RGLE9BQU8sc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDN0IsS0FBZ0IsRUFDaEIsY0FBa0MsRUFDbEMsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsS0FBYSxFQUNiLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixzQkFBNEMsRUFDNUMsV0FBbUIsRUFDbkIsa0JBQXNDLEVBQ3RDLHVCQUFpQyxFQUNqQyxHQUFXLEVBQ1gsY0FBc0IsRUFDdEIsU0FBa0IsRUFDbEIsWUFBb0IsRUFDcEIsY0FBa0Q7UUFHbEQsT0FBTyxpQkFBaUIsQ0FBQztZQUN2QixLQUFLO1lBQ0wsY0FBYztZQUNkLFdBQVc7WUFDWCxRQUFRO1lBQ1IsY0FBYztZQUNkLEtBQUs7WUFDTCxXQUFX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SSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUMxRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO2FBQ3ZDLENBQUMsQ0FBQztZQUNILE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQzVCLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDakMsUUFBUSxFQUFFLHdCQUF3QjthQUNuQyxDQUFDLENBQUM7S0FDTjtBQUNILENBQUM7QUE5RkQsb0NBOEZDO0FBRUQsU0FBZ0IscURBQXFELENBQUMsaUJBQW9DOztJQUV4RyxpQkFBaUIsQ0FBQywwQkFBMEIsQ0FBQyx3QkFBd0IsQ0FBQztRQUNwRSxTQUFTLEVBQUUsaUJBQWlCLENBQUMsaUNBQWlDO1FBQzlELFNBQVMsRUFBRSxHQUFHLENBQUMsNEJBQTRCLENBQUMsT0FBTztLQUNwRCxDQUFDLENBQUM7SUFFSCxJQUFJLGlCQUFpQixDQUFDLDRCQUE0QixFQUFFO1FBQ2xELGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDO1lBQ3BFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyw0QkFBNEI7WUFDekQsU0FBUyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksT0FBQSxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLDBDQUFFLFNBQVMsTUFBSyxhQUFhLEVBQUU7WUFDcEcsaUJBQWlCLENBQUMsaUNBQWlDLENBQUMsd0JBQXdCLENBQUM7Z0JBQzNFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyw0QkFBNEI7Z0JBQ3pELFNBQVMsRUFBRSxHQUFHLENBQUMsNEJBQTRCLENBQUMsS0FBSzthQUNsRCxDQUFDLENBQUM7U0FDSjtLQUNGO0FBQ0gsQ0FBQztBQXBCRCxzSEFvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgRHVyYXRpb24sIEZuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFEb2dMb2dnaW5nTW9kZSwgUmlvRmFyZ2F0ZVNlcnZpY2UgfSBmcm9tICcuL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIE1vdmVkIG91dCBzdGF0aWMgbWV0aG9kcyBhbmQgaW1wb3JvdmVkIHNpZ25hdHVyZS4gVXNlIG5hbWVkIGltcG9ydCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgRGF0YURvZyB7XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBzdGFnZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkLFxuICApOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgIHNjb3BlLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyhzdGFnZTogc3RyaW5nLCBzZXJ2aWNlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgICByZXR1cm4gZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyh7IHN0YWdlLCBzZXJ2aWNlTmFtZSwgdmVyc2lvbiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkRGF0YWRvZ1NpZGVjYXIoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uLFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHN0YWdlOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXIsXG4gICAgZGF0YWRvZ1NpdGU6IHN0cmluZyxcbiAgICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZSxcbiAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTogc3RyaW5nW10sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgICBlc3NlbnRpYWw6IGJvb2xlYW4sXG4gICAgY29udGFpbmVyVGFnOiBzdHJpbmcsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IGVjcy5Db250YWluZXJEZWZpbml0aW9uIHtcblxuICAgIHJldHVybiBhZGREYXRhZG9nU2lkZWNhcih7XG4gICAgICBzY29wZSxcbiAgICAgIHRhc2tEZWZpbml0aW9uLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBkYXRhZG9nTG9nZ2luZ01vZGUsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZSxcbiAgICAgIGNwdSxcbiAgICAgIG1lbW9yeUxpbWl0TWlCLFxuICAgICAgZXNzZW50aWFsLFxuICAgICAgY29udGFpbmVyVGFnLFxuICAgICAgYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFkZEZpcmVMZW5zTG9nUm91dGVyKFxuICAgIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb24sXG4gICAgY3B1OiBudW1iZXIsXG4gICAgbWVtb3J5TGltaXRNaUI6IG51bWJlcixcbiAgKTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuICAgIHJldHVybiBhZGRGaXJlTGVuc0xvZ1JvdXRlcih7IHRhc2tEZWZpbml0aW9uLCBjcHUsIG1lbW9yeUxpbWl0TWlCIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZXR1cExvZ2dpbmcoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBhY2NvdW50TmFtZTogc3RyaW5nLFxuICAgIHRlYW1OYW1lOiBzdHJpbmcsXG4gICAgdGVhbUlkZW50aWZpZXI6IHN0cmluZyxcbiAgICBzdGFnZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdmVyc2lvbjogc3RyaW5nLFxuICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXI6IHNzbS5JU3RyaW5nUGFyYW1ldGVyLFxuICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogRGF0YURvZ0xvZ2dpbmdNb2RlLFxuICAgIGRhdGFkb2dTaXRlOiBzdHJpbmcsXG4gICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcicsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IGVjcy5Mb2dEcml2ZXIge1xuXG4gICAgcmV0dXJuIHNldHVwTG9nZ2luZyh7XG4gICAgICBzY29wZSxcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIHN0YWdlLFxuICAgICAgc2VydmljZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcixcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZSxcbiAgICAgIGRhdGFkb2dTaXRlLFxuICAgICAgY29udGFpbmVyVHlwZSxcbiAgICAgIGFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyhyaW9GYXJnYXRlU2VydmljZTogUmlvRmFyZ2F0ZVNlcnZpY2UpIHtcbiAgICBlbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyhyaW9GYXJnYXRlU2VydmljZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wczoge1xuICBzY29wZTogQ29uc3RydWN0O1xuICBzdGFnZTogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuXG4gIGNvbnN0IHsgYWNjb3VudDogYWNjb3VudElkLCByZWdpb24gfSA9IFN0YWNrLm9mKHByb3BzLnNjb3BlKTtcblxuICByZXR1cm4ge1xuICAgIC8vIHVuaWZpZWQgdGFnZ2luZywgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2dldHRpbmdfc3RhcnRlZC90YWdnaW5nL3VuaWZpZWRfc2VydmljZV90YWdnaW5nLz90YWI9ZWNzXG4gICAgRERfRU5WOiBwcm9wcy5zdGFnZSxcbiAgICBERF9TRVJWSUNFOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICBERF9WRVJTSU9OOiBwcm9wcy52ZXJzaW9uLFxuICAgIC8vIEFQTSBhbmQgdHJhY2luZywgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL3RyYWNpbmcvc2V0dXBfb3ZlcnZpZXcvc2V0dXAvamF2YS8/dGFiPWNvbnRhaW5lcnNcbiAgICBERF9MT0dTX0lOSkVDVElPTjogJ3RydWUnLFxuICAgIEREX1NFUlZJQ0VfTUFQUElORzogZ2V0QXBtU2VydmljZU1hcHBpbmdFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUocHJvcHMuc2VydmljZU5hbWUpLFxuICAgIEREX1RBR1M6IGdldFRhZ3NFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBjb250YWluZXJUeXBlOiAnc2VydmljZScsXG4gICAgICBhY2NvdW50SWQsXG4gICAgICByZWdpb24sXG4gICAgfSksXG4gICAgRERfVFJBQ0VfU0FNUExFX1JBVEU6ICcxLjAnLCAvLyBzZWUgaHR0cHM6Ly9kZHRyYWNlLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS9jb25maWd1cmF0aW9uLmh0bWxcbiAgfTtcbn1cblxuLy8gd2UgYWRkIGFsbCBwb3NzaWJsZSBzZXJ2aWNlIG1hcHBpbmdzIGhlcmUgZXZlbiBpZiBub3QgdXNlZCBpbiBhIHBhcnRpY3VsYXIgc2VydmljZSB0byBnZXQgZ2xvYmFsbHkgdW5pcXVlIG5hbWVzXG5mdW5jdGlvbiBnZXRBcG1TZXJ2aWNlTWFwcGluZ0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZShzZXJ2aWNlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblxuICBjb25zdCBzZXJ2aWNlTWFwcGluZyA9IHtcbiAgICAnZGF0YWJhc2UnOiBgJHtzZXJ2aWNlTmFtZX0tYXVyb3JhYCxcbiAgICAnamF2YS1hd3Mtc2RrJzogYCR7c2VydmljZU5hbWV9LWF3cy1zZGtgLFxuICAgICdrYWZrYSc6IGAke3NlcnZpY2VOYW1lfS1rYWZrYWAsXG4gICAgJ215c3FsJzogYCR7c2VydmljZU5hbWV9LWF1cm9yYWAsXG4gICAgJ3JlZGlzJzogYCR7c2VydmljZU5hbWV9LXJlZGlzYCxcbiAgfTtcblxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoc2VydmljZU1hcHBpbmcpXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiR7dmFsdWV9YClcbiAgICAuam9pbignLCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmFyZ2F0ZURvY2tlckxhYmVscyhwcm9wczoge3N0YWdlOiBzdHJpbmc7IHNlcnZpY2VOYW1lOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZ30pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgcmV0dXJuIHtcbiAgICAnY29tLmRhdGFkb2docS50YWdzLmVudic6IHByb3BzLnN0YWdlLFxuICAgICdjb20uZGF0YWRvZ2hxLnRhZ3Muc2VydmljZSc6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICdjb20uZGF0YWRvZ2hxLnRhZ3MudmVyc2lvbic6IHByb3BzLnZlcnNpb24sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXRhZG9nU2lkZWNhcihwcm9wczoge1xuICBzY29wZTogQ29uc3RydWN0O1xuICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uO1xuICBhY2NvdW50TmFtZTogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBzdGFnZTogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXI6IHNzbS5JU3RyaW5nUGFyYW1ldGVyO1xuICBkYXRhZG9nU2l0ZTogc3RyaW5nO1xuICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZTtcbiAgYXBtR2V0UmVzb3VyY2VzVG9JZ25vcmU6IHN0cmluZ1tdO1xuICBjcHU6IG51bWJlcjtcbiAgbWVtb3J5TGltaXRNaUI6IG51bWJlcjtcbiAgZXNzZW50aWFsOiBib29sZWFuO1xuICBjb250YWluZXJUYWc6IHN0cmluZztcbiAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQ7XG59KTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuXG4gIGNvbnN0IHsgYWNjb3VudDogYWNjb3VudElkLCByZWdpb24gfSA9IFN0YWNrLm9mKHByb3BzLnNjb3BlKTtcbiAgY29uc3QgZGF0YWRvZ1NpZGVjYXIgPSBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRDb250YWluZXIoJ2RhdGFkb2ctYWdlbnQnLCB7XG4gICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkoYHB1YmxpYy5lY3IuYXdzL2RhdGFkb2cvYWdlbnQ6JHtwcm9wcy5jb250YWluZXJUYWd9YCksXG4gICAgbG9nZ2luZzogc2V0dXBMb2dnaW5nKHsgLi4ucHJvcHMsIGNvbnRhaW5lclR5cGU6ICdkYXRhZG9nLXNpZGVjYXInIH0pLFxuICAgIGNwdTogcHJvcHMuY3B1LFxuICAgIG1lbW9yeUxpbWl0TWlCOiBwcm9wcy5tZW1vcnlMaW1pdE1pQixcbiAgICBlbnZpcm9ubWVudDoge1xuICAgICAgLy8gdW5pZmllZCB0YWdnaW5nLCBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vZ2V0dGluZ19zdGFydGVkL3RhZ2dpbmcvdW5pZmllZF9zZXJ2aWNlX3RhZ2dpbmcvP3RhYj1lY3NcbiAgICAgIEREX0VOVjogcHJvcHMuc3RhZ2UsXG4gICAgICBERF9TRVJWSUNFOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIEREX1ZFUlNJT046IHByb3BzLnZlcnNpb24sXG4gICAgICAvLyBBUE0gYW5kIHRyYWNpbmcgc2VlIGh0dHBzOi8vZG9jcy5kYXRhZG9naHEuY29tL2FnZW50L2RvY2tlci9hcG0vP3RhYj1saW51eFxuICAgICAgRERfQVBNX0VOQUJMRUQ6ICd0cnVlJyxcbiAgICAgIEREX0FQTV9JR05PUkVfUkVTT1VSQ0VTOiBwcm9wcy5hcG1HZXRSZXNvdXJjZXNUb0lnbm9yZVxuICAgICAgICAubWFwKChhcG1HZXRSZXNvdXJjZVRvSWdub3JlKSA9PiBgR0VUICR7YXBtR2V0UmVzb3VyY2VUb0lnbm9yZX1gKVxuICAgICAgICAuam9pbignLCcpLFxuICAgICAgLy8gZ2VuZXJhbCBzZXR0aW5nc1xuICAgICAgRERfU0lURTogcHJvcHMuZGF0YWRvZ1NpdGUsXG4gICAgICBERF9UQUdTOiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHsgLi4ucHJvcHMsIGFjY291bnRJZCwgcmVnaW9uLCBjb250YWluZXJUeXBlOiAnZGF0YWRvZy1zaWRlY2FyJyB9KSxcbiAgICAgIEVDU19GQVJHQVRFOiAndHJ1ZScsXG4gICAgICBERF9DT0xMRUNUX0dDRV9UQUdTOiAnZmFsc2UnLFxuICAgIH0sXG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXRhRG9nL2RhdGFkb2ctYWdlbnQvYmxvYi9tYXN0ZXIvRG9ja2VyZmlsZXMvYWdlbnQvYW1kNjQvRG9ja2VyZmlsZSNMMTcxLUwxNzJcbiAgICBoZWFsdGhDaGVjazoge1xuICAgICAgc3RhcnRQZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMiksXG4gICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgcmV0cmllczogMixcbiAgICAgIGNvbW1hbmQ6IFsnQ01ELVNIRUxMJywgJy9wcm9iZS5zaCddLFxuICAgIH0sXG4gICAgc2VjcmV0czoge1xuICAgICAgRERfQVBJX0tFWTogZWNzLlNlY3JldC5mcm9tU3NtUGFyYW1ldGVyKHByb3BzLmRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIpLFxuICAgIH0sXG4gICAgZXNzZW50aWFsOiBwcm9wcy5lc3NlbnRpYWwsXG4gIH0pO1xuXG4gIGRhdGFkb2dTaWRlY2FyLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgY29udGFpbmVyUG9ydDogODEyNSxcbiAgICBwcm90b2NvbDogZWNzLlByb3RvY29sLlVEUCxcbiAgfSk7XG5cbiAgZGF0YWRvZ1NpZGVjYXIuYWRkUG9ydE1hcHBpbmdzKHtcbiAgICBjb250YWluZXJQb3J0OiA4MTI2LFxuICAgIHByb3RvY29sOiBlY3MuUHJvdG9jb2wuVENQLFxuICB9KTtcblxuICByZXR1cm4gZGF0YWRvZ1NpZGVjYXI7XG59XG5cbmZ1bmN0aW9uIGdldFRhZ3NFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUocHJvcHM6IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBzdGFnZTogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInIHwgJ2ZsdWVudC1iaXQnO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiBzdHJpbmcge1xuXG4gIGNvbnN0IHNlcGFyYXRvciA9IGRldGVybWluZVNlcGFyYXRvcihwcm9wcy5jb250YWluZXJUeXBlKTtcblxuICBjb25zdCB0YWdzID0ge1xuICAgIC8vIHVuaWZpZWQgdGFnZ2luZ1xuICAgIC8vIG92ZXJyaWRkZW4gYnkgZGVkaWNhdGVkIHNldHRpbmdzIChlbnZpcm9ubWVudCB2YXJpYWJsZXMvdGFncylcbiAgICAvLyBkdXBsaWNhdGVkIGhlcmUgdG8gZW5zdXJlIHRoZXkgYXJlIHVzZWQgKGFuZCBzb21ldGltZXMsIG5vdCBhbGwgdGhyZWUgdmFsdWVzIGFyZSBzdXBwb3J0ZWQpXG4gICAgZW52OiBwcm9wcy5zdGFnZSxcbiAgICBzZXJ2aWNlOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgIC8vIGFjY291bnQvdGVhbSBzcGVjaWZpYyBwYXJ0c1xuICAgIGFjY291bnRfaWQ6IHByb3BzLmFjY291bnRJZCxcbiAgICBhY2NvdW50X25hbWU6IHByb3BzLmFjY291bnROYW1lLFxuICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgIHRlYW06IHByb3BzLnRlYW1OYW1lLFxuICAgIHRlYW1faWRlbnRpZmllcjogcHJvcHMudGVhbUlkZW50aWZpZXIsXG4gIH07XG4gIHJldHVybiBPYmplY3QuZW50cmllcyh7IC4uLnRhZ3MsIC4uLnByb3BzLmFkZGl0aW9uYWxUYWdzIH0pXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiR7dmFsdWV9YClcbiAgICAuam9pbihzZXBhcmF0b3IpO1xufVxuXG5mdW5jdGlvbiBkZXRlcm1pbmVTZXBhcmF0b3IoY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcicgfCAnZmx1ZW50LWJpdCcpIHtcbiAgaWYgKGNvbnRhaW5lclR5cGUgPT09ICdkYXRhZG9nLXNpZGVjYXInKSB7XG4gICAgcmV0dXJuICcgJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJywnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRGaXJlTGVuc0xvZ1JvdXRlcihwcm9wczoge1xuICB0YXNrRGVmaW5pdGlvbjogZWNzLlRhc2tEZWZpbml0aW9uO1xuICBjcHU6IG51bWJlcjtcbiAgbWVtb3J5TGltaXRNaUI6IG51bWJlcjtcbn0pOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbiB7XG5cbiAgcmV0dXJuIHByb3BzLnRhc2tEZWZpbml0aW9uLmFkZEZpcmVsZW5zTG9nUm91dGVyKCdmaXJlbGVucy1sb2ctcm91dGVyJywge1xuICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KCdwdWJsaWMuZWNyLmF3cy9hd3Mtb2JzZXJ2YWJpbGl0eS9hd3MtZm9yLWZsdWVudC1iaXQ6c3RhYmxlJyksXG4gICAgZmlyZWxlbnNDb25maWc6IHtcbiAgICAgIHR5cGU6IGVjcy5GaXJlbGVuc0xvZ1JvdXRlclR5cGUuRkxVRU5UQklULFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBjb25maWdGaWxlVHlwZTogZWNzLkZpcmVsZW5zQ29uZmlnRmlsZVR5cGUuRklMRSxcbiAgICAgICAgY29uZmlnRmlsZVZhbHVlOiAnL2ZsdWVudC1iaXQvY29uZmlncy9wYXJzZS1qc29uLmNvbmYnLFxuICAgICAgICBlbmFibGVFQ1NMb2dNZXRhZGF0YTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjcHU6IHByb3BzLmNwdSxcbiAgICBtZW1vcnlMaW1pdE1pQjogcHJvcHMubWVtb3J5TGltaXRNaUIsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBMb2dnaW5nKHByb3BzOiB7XG4gIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXI7XG4gIGRhdGFkb2dMb2dnaW5nTW9kZTogRGF0YURvZ0xvZ2dpbmdNb2RlO1xuICBkYXRhZG9nU2l0ZTogc3RyaW5nO1xuICBjb250YWluZXJUeXBlOiAnc2VydmljZScgfCAnZGF0YWRvZy1zaWRlY2FyJztcbiAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQ7XG59KTogZWNzLkxvZ0RyaXZlciB7XG5cbiAgbGV0IGxvZ0dyb3VwTmFtZTogc3RyaW5nO1xuICBsZXQgbG9nR3JvdXBJZDogc3RyaW5nO1xuICBsZXQgY29udGFpbmVyVHlwZUNhbWVsQ2FzZTtcblxuICBzd2l0Y2ggKHByb3BzLmNvbnRhaW5lclR5cGUpIHtcblxuICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgbG9nR3JvdXBJZCA9ICdMb2dHcm91cEZvclNlcnZpY2UnO1xuICAgICAgbG9nR3JvdXBOYW1lID0gcHJvcHMuc2VydmljZU5hbWU7XG4gICAgICBjb250YWluZXJUeXBlQ2FtZWxDYXNlID0gJ1NlcnZpY2UnO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdkYXRhZG9nLXNpZGVjYXInOlxuICAgICAgbG9nR3JvdXBJZCA9ICdMb2dHcm91cEZvckRhdGFkb2dTaWRlY2FyJztcbiAgICAgIGxvZ0dyb3VwTmFtZSA9IGAke3Byb3BzLnNlcnZpY2VOYW1lfS0ke3Byb3BzLmNvbnRhaW5lclR5cGV9YDtcbiAgICAgIGNvbnRhaW5lclR5cGVDYW1lbENhc2UgPSAnRGF0YWRvZ1NpZGVjYXInO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCB7IGFjY291bnQ6IGFjY291bnRJZCwgcmVnaW9uIH0gPSBTdGFjay5vZihwcm9wcy5zY29wZSk7XG5cbiAgc3dpdGNoIChwcm9wcy5kYXRhZG9nTG9nZ2luZ01vZGUpIHtcblxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlM6XG4gICAgICAvLyBUT0RPIGNhbiB3ZSB1c2UgYHNlY3JldE9wdGlvbnNgIGhlcmUgYXMgd2VsbCwgZS5nLiBhcyBpbiBodHRwczovL2dpdGh1Yi5jb20vYXdzLXNhbXBsZXMvYW1hem9uLWVjcy1maXJlbGVucy1leGFtcGxlcy9ibG9iL21haW5saW5lL2V4YW1wbGVzL2ZsdWVudC1iaXQvZGF0YWRvZy90YXNrLWRlZmluaXRpb24uanNvbiNMMzMtTDM2XG4gICAgICAvLyBQcm9iYWJseSBub3QsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzgxNzRcbiAgICAgIHJldHVybiBlY3MuTG9nRHJpdmVycy5maXJlbGVucyh7XG4gICAgICAgIC8vIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9pbnRlZ3JhdGlvbnMvZmx1ZW50Yml0LyNjb25maWd1cmF0aW9uLXBhcmFtZXRlcnNcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIE5hbWU6ICdkYXRhZG9nJyxcbiAgICAgICAgICBNYXRjaDogJyonLFxuICAgICAgICAgIEhvc3Q6IGBodHRwLWludGFrZS5sb2dzLiR7cHJvcHMuZGF0YWRvZ1NpdGV9YCxcbiAgICAgICAgICBUTFM6ICdvbicsXG4gICAgICAgICAgYXBpa2V5OiBwcm9wcy5kYXRhZG9nQXBpS2V5UGFyYW1ldGVyLnN0cmluZ1ZhbHVlLFxuICAgICAgICAgIGNvbXByZXNzOiAnZ3ppcCcsXG4gICAgICAgICAgZGRfc2VydmljZTogbG9nR3JvdXBOYW1lLFxuICAgICAgICAgIGRkX3NvdXJjZTogJ3Jpby1mYXJnYXRlJyxcbiAgICAgICAgICBkZF9tZXNzYWdlX2tleTogJ2xvZycsXG4gICAgICAgICAgZGRfdGFnczogZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZSh7IC4uLnByb3BzLCBhY2NvdW50SWQsIHJlZ2lvbiwgY29udGFpbmVyVHlwZTogJ2ZsdWVudC1iaXQnIH0pLFxuICAgICAgICAgIHByb3ZpZGVyOiAnZWNzJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgY2FzZSBEYXRhRG9nTG9nZ2luZ01vZGUuRk9SV0FSREVSX0xBTUJEQTpcbiAgICAgIGNvbnN0IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSA9IG5ldyBsb2dzLkxvZ0dyb3VwKHByb3BzLnNjb3BlLCBsb2dHcm91cElkLCB7XG4gICAgICAgIGxvZ0dyb3VwTmFtZSxcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGxvZ0ZvcndhcmRlckxhbWJkYUFybiA9IEZuLmltcG9ydFZhbHVlKCdjdXN0b20tcmVzb3VyY2UtZGF0YWRvZy1sb2dmb3J3YXJkZXItZnVuY3Rpb24tYXJuJyk7XG4gICAgICBjb25zdCBjZm5QZXJtaXNzaW9uID0gbmV3IGxhbWJkYS5DZm5QZXJtaXNzaW9uKHByb3BzLnNjb3BlLCBgTG9nRm9yd2FyZGVyUGVybWlzc2lvbiR7Y29udGFpbmVyVHlwZUNhbWVsQ2FzZX1gLCB7XG4gICAgICAgIGFjdGlvbjogJ2xhbWJkYTpJbnZva2VGdW5jdGlvbicsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogbG9nRm9yd2FyZGVyTGFtYmRhQXJuLFxuICAgICAgICBwcmluY2lwYWw6IGBsb2dzLiR7cmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgc291cmNlQXJuOiBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEubG9nR3JvdXBBcm4sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGNmblN1YnNjcmlwdGlvbkZpbHRlciA9IG5ldyBsb2dzLkNmblN1YnNjcmlwdGlvbkZpbHRlcihcbiAgICAgICAgcHJvcHMuc2NvcGUsXG4gICAgICAgIGBMb2dGb3J3YXJkZXJTdWJzY3JpcHRpb25GaWx0ZXIke2NvbnRhaW5lclR5cGVDYW1lbENhc2V9YCxcbiAgICAgICAge1xuICAgICAgICAgIGRlc3RpbmF0aW9uQXJuOiBsb2dGb3J3YXJkZXJMYW1iZGFBcm4sXG4gICAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgICAgbG9nR3JvdXBOYW1lOiBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEubG9nR3JvdXBOYW1lLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIGNmblN1YnNjcmlwdGlvbkZpbHRlci5hZGREZXBlbmRzT24oY2ZuUGVybWlzc2lvbik7XG4gICAgICByZXR1cm4gZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMuY29udGFpbmVyVHlwZSxcbiAgICAgICAgbG9nR3JvdXA6IGxvZ0dyb3VwRm9yRm9yd2FyZGluZ0xhbWJkYSxcbiAgICAgIH0pO1xuXG4gICAgY2FzZSBEYXRhRG9nTG9nZ2luZ01vZGUuTk9ORTpcbiAgICAgIGNvbnN0IGxvZ0dyb3VwSW5DbG91ZHdhdGNoT25seSA9IG5ldyBsb2dzLkxvZ0dyb3VwKHByb3BzLnNjb3BlLCBsb2dHcm91cElkLCB7XG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZWNzLkxvZ0RyaXZlcnMuYXdzTG9ncyh7XG4gICAgICAgIHN0cmVhbVByZWZpeDogcHJvcHMuY29udGFpbmVyVHlwZSxcbiAgICAgICAgbG9nR3JvdXA6IGxvZ0dyb3VwSW5DbG91ZHdhdGNoT25seSxcbiAgICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVMb2dnaW5nQW5kTW9uaXRvcmluZ0FyZVJlYWR5QmVmb3JlU2VydmljZVN0YXJ0cyhyaW9GYXJnYXRlU2VydmljZTogUmlvRmFyZ2F0ZVNlcnZpY2UpOiB2b2lkIHtcblxuICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgIGNvbnRhaW5lcjogcmlvRmFyZ2F0ZVNlcnZpY2UuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uSEVBTFRIWSxcbiAgfSk7XG5cbiAgaWYgKHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24pIHtcbiAgICByaW9GYXJnYXRlU2VydmljZS5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgY29udGFpbmVyOiByaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgICAgY29uZGl0aW9uOiBlY3MuQ29udGFpbmVyRGVwZW5kZW5jeUNvbmRpdGlvbi5TVEFSVCxcbiAgICB9KTtcblxuICAgIGlmIChyaW9GYXJnYXRlU2VydmljZS5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24ubG9nRHJpdmVyQ29uZmlnPy5sb2dEcml2ZXIgPT09ICdhd3NmaXJlbGVucycpIHtcbiAgICAgIHJpb0ZhcmdhdGVTZXJ2aWNlLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbi5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgICBjb250YWluZXI6IHJpb0ZhcmdhdGVTZXJ2aWNlLmxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24sXG4gICAgICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uU1RBUlQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL2RhdGFkb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWtEO0FBQ2xELDJDQUEyQztBQUMzQyxpREFBaUQ7QUFDakQsNkNBQTZDO0FBRzdDLCtEQUE4RTtBQUU5RTs7R0FFRztBQUNILE1BQWEsT0FBTztJQUVYLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FDbkQsS0FBZ0IsRUFDaEIsS0FBYSxFQUNiLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixXQUFtQixFQUNuQixRQUFnQixFQUNoQixjQUFzQixFQUN0QixjQUFrRDtRQUVsRCxPQUFPLHVDQUF1QyxDQUFDO1lBQzdDLEtBQUs7WUFDTCxLQUFLO1lBQ0wsV0FBVztZQUNYLE9BQU87WUFDUCxXQUFXO1lBQ1gsUUFBUTtZQUNSLGNBQWM7WUFDZCxjQUFjO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxPQUFlO1FBQ3RGLE9BQU8sc0JBQXNCLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDN0IsS0FBZ0IsRUFDaEIsY0FBa0MsRUFDbEMsV0FBbUIsRUFDbkIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsS0FBYSxFQUNiLFdBQW1CLEVBQ25CLE9BQWUsRUFDZixzQkFBNEMsRUFDNUMsV0FBbUIsRUFDbkIsa0JBQXNDLEVBQ3RDLHVCQUFpQyxFQUNqQyxHQUFXLEVBQ1gsY0FBc0IsRUFDdEIsU0FBa0IsRUFDbEIsWUFBb0IsRUFDcEIsY0FBa0Q7UUFHbEQsT0FBTyxpQkFBaUIsQ0FBQztZQUN2QixLQUFLO1lBQ0wsY0FBYztZQUNkLFdBQVc7WUFDWCxRQUFRO1lBQ1IsY0FBYztZQUNkLEtBQUs7WUFDTCxXQUFX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SSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUMxRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO2FBQ3ZDLENBQUMsQ0FBQztZQUNILE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQzVCLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDakMsUUFBUSxFQUFFLHdCQUF3QjthQUNuQyxDQUFDLENBQUM7S0FDTjtBQUNILENBQUM7QUE5RkQsb0NBOEZDO0FBRUQsU0FBZ0IscURBQXFELENBQUMsaUJBQW9DO0lBRXhHLGlCQUFpQixDQUFDLDBCQUEwQixDQUFDLHdCQUF3QixDQUFDO1FBQ3BFLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxpQ0FBaUM7UUFDOUQsU0FBUyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPO0tBQ3BELENBQUMsQ0FBQztJQUVILElBQUksaUJBQWlCLENBQUMsNEJBQTRCLEVBQUU7UUFDbEQsaUJBQWlCLENBQUMsMEJBQTBCLENBQUMsd0JBQXdCLENBQUM7WUFDcEUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLDRCQUE0QjtZQUN6RCxTQUFTLEVBQUUsR0FBRyxDQUFDLDRCQUE0QixDQUFDLEtBQUs7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyxlQUFlLEVBQUUsU0FBUyxLQUFLLGFBQWEsRUFBRTtZQUNwRyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyx3QkFBd0IsQ0FBQztnQkFDM0UsU0FBUyxFQUFFLGlCQUFpQixDQUFDLDRCQUE0QjtnQkFDekQsU0FBUyxFQUFFLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLO2FBQ2xELENBQUMsQ0FBQztTQUNKO0tBQ0Y7QUFDSCxDQUFDO0FBcEJELHNIQW9CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBEdXJhdGlvbiwgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YURvZ0xvZ2dpbmdNb2RlLCBSaW9GYXJnYXRlU2VydmljZSB9IGZyb20gJy4vcmlvLWZhcmdhdGUtc2VydmljZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgTW92ZWQgb3V0IHN0YXRpYyBtZXRob2RzIGFuZCBpbXBvcm92ZWQgc2lnbmF0dXJlLiBVc2UgbmFtZWQgaW1wb3J0IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhRG9nIHtcblxuICBwdWJsaWMgc3RhdGljIGdldEZhcmdhdGVDb250YWluZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHN0YWdlOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgYWNjb3VudE5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIHRlYW1JZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQsXG4gICk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBnZXRGYXJnYXRlQ29udGFpbmVyRW52aXJvbm1lbnRWYXJpYWJsZXMoe1xuICAgICAgc2NvcGUsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGFjY291bnROYW1lLFxuICAgICAgdGVhbU5hbWUsXG4gICAgICB0ZWFtSWRlbnRpZmllcixcbiAgICAgIGFkZGl0aW9uYWxUYWdzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRGYXJnYXRlRG9ja2VyTGFiZWxzKHN0YWdlOiBzdHJpbmcsIHNlcnZpY2VOYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiBnZXRGYXJnYXRlRG9ja2VyTGFiZWxzKHsgc3RhZ2UsIHNlcnZpY2VOYW1lLCB2ZXJzaW9uIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhZGREYXRhZG9nU2lkZWNhcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb24sXG4gICAgYWNjb3VudE5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIHRlYW1JZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgc3RhZ2U6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyOiBzc20uSVN0cmluZ1BhcmFtZXRlcixcbiAgICBkYXRhZG9nU2l0ZTogc3RyaW5nLFxuICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogRGF0YURvZ0xvZ2dpbmdNb2RlLFxuICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlOiBzdHJpbmdbXSxcbiAgICBjcHU6IG51bWJlcixcbiAgICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyLFxuICAgIGVzc2VudGlhbDogYm9vbGVhbixcbiAgICBjb250YWluZXJUYWc6IHN0cmluZyxcbiAgICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZCxcbiAgKTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuXG4gICAgcmV0dXJuIGFkZERhdGFkb2dTaWRlY2FyKHtcbiAgICAgIHNjb3BlLFxuICAgICAgdGFza0RlZmluaXRpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZSxcbiAgICAgIGFwbUdldFJlc291cmNlc1RvSWdub3JlLFxuICAgICAgY3B1LFxuICAgICAgbWVtb3J5TGltaXRNaUIsXG4gICAgICBlc3NlbnRpYWwsXG4gICAgICBjb250YWluZXJUYWcsXG4gICAgICBhZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkRmlyZUxlbnNMb2dSb3V0ZXIoXG4gICAgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvbixcbiAgICBjcHU6IG51bWJlcixcbiAgICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyLFxuICApOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIGFkZEZpcmVMZW5zTG9nUm91dGVyKHsgdGFza0RlZmluaXRpb24sIGNwdSwgbWVtb3J5TGltaXRNaUIgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldHVwTG9nZ2luZyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGFjY291bnROYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nLFxuICAgIHN0YWdlOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXIsXG4gICAgZGF0YWRvZ0xvZ2dpbmdNb2RlOiBEYXRhRG9nTG9nZ2luZ01vZGUsXG4gICAgZGF0YWRvZ1NpdGU6IHN0cmluZyxcbiAgICBjb250YWluZXJUeXBlOiAnc2VydmljZScgfCAnZGF0YWRvZy1zaWRlY2FyJyxcbiAgICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZCxcbiAgKTogZWNzLkxvZ0RyaXZlciB7XG5cbiAgICByZXR1cm4gc2V0dXBMb2dnaW5nKHtcbiAgICAgIHNjb3BlLFxuICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB0ZWFtTmFtZSxcbiAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgc3RhZ2UsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBkYXRhZG9nQXBpS2V5UGFyYW1ldGVyLFxuICAgICAgZGF0YWRvZ0xvZ2dpbmdNb2RlLFxuICAgICAgZGF0YWRvZ1NpdGUsXG4gICAgICBjb250YWluZXJUeXBlLFxuICAgICAgYWRkaXRpb25hbFRhZ3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHJpb0ZhcmdhdGVTZXJ2aWNlOiBSaW9GYXJnYXRlU2VydmljZSkge1xuICAgIGVuc3VyZUxvZ2dpbmdBbmRNb25pdG9yaW5nQXJlUmVhZHlCZWZvcmVTZXJ2aWNlU3RhcnRzKHJpb0ZhcmdhdGVTZXJ2aWNlKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzOiB7XG4gIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgYWNjb3VudE5hbWU6IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQ7XG59KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG5cbiAgY29uc3QgeyBhY2NvdW50OiBhY2NvdW50SWQsIHJlZ2lvbiB9ID0gU3RhY2sub2YocHJvcHMuc2NvcGUpO1xuXG4gIHJldHVybiB7XG4gICAgLy8gdW5pZmllZCB0YWdnaW5nLCBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vZ2V0dGluZ19zdGFydGVkL3RhZ2dpbmcvdW5pZmllZF9zZXJ2aWNlX3RhZ2dpbmcvP3RhYj1lY3NcbiAgICBERF9FTlY6IHByb3BzLnN0YWdlLFxuICAgIEREX1NFUlZJQ0U6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgIEREX1ZFUlNJT046IHByb3BzLnZlcnNpb24sXG4gICAgLy8gQVBNIGFuZCB0cmFjaW5nLCBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vdHJhY2luZy9zZXR1cF9vdmVydmlldy9zZXR1cC9qYXZhLz90YWI9Y29udGFpbmVyc1xuICAgIEREX0xPR1NfSU5KRUNUSU9OOiAndHJ1ZScsXG4gICAgRERfU0VSVklDRV9NQVBQSU5HOiBnZXRBcG1TZXJ2aWNlTWFwcGluZ0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZShwcm9wcy5zZXJ2aWNlTmFtZSksXG4gICAgRERfVEFHUzogZ2V0VGFnc0Vudmlyb25tZW50VmFyaWFibGVWYWx1ZSh7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyxcbiAgICAgIGFjY291bnRJZCxcbiAgICAgIHJlZ2lvbixcbiAgICB9KSxcbiAgICBERF9UUkFDRV9TQU1QTEVfUkFURTogJzEuMCcsIC8vIHNlZSBodHRwczovL2RkdHJhY2UucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlL2NvbmZpZ3VyYXRpb24uaHRtbFxuICB9O1xufVxuXG4vLyB3ZSBhZGQgYWxsIHBvc3NpYmxlIHNlcnZpY2UgbWFwcGluZ3MgaGVyZSBldmVuIGlmIG5vdCB1c2VkIGluIGEgcGFydGljdWxhciBzZXJ2aWNlIHRvIGdldCBnbG9iYWxseSB1bmlxdWUgbmFtZXNcbmZ1bmN0aW9uIGdldEFwbVNlcnZpY2VNYXBwaW5nRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHNlcnZpY2VOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gIGNvbnN0IHNlcnZpY2VNYXBwaW5nID0ge1xuICAgICdkYXRhYmFzZSc6IGAke3NlcnZpY2VOYW1lfS1hdXJvcmFgLFxuICAgICdqYXZhLWF3cy1zZGsnOiBgJHtzZXJ2aWNlTmFtZX0tYXdzLXNka2AsXG4gICAgJ2thZmthJzogYCR7c2VydmljZU5hbWV9LWthZmthYCxcbiAgICAnbXlzcWwnOiBgJHtzZXJ2aWNlTmFtZX0tYXVyb3JhYCxcbiAgICAncmVkaXMnOiBgJHtzZXJ2aWNlTmFtZX0tcmVkaXNgLFxuICB9O1xuXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhzZXJ2aWNlTWFwcGluZylcbiAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06JHt2YWx1ZX1gKVxuICAgIC5qb2luKCcsJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGYXJnYXRlRG9ja2VyTGFiZWxzKHByb3BzOiB7c3RhZ2U6IHN0cmluZzsgc2VydmljZU5hbWU6IHN0cmluZzsgdmVyc2lvbjogc3RyaW5nfSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICByZXR1cm4ge1xuICAgICdjb20uZGF0YWRvZ2hxLnRhZ3MuZW52JzogcHJvcHMuc3RhZ2UsXG4gICAgJ2NvbS5kYXRhZG9naHEudGFncy5zZXJ2aWNlJzogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgJ2NvbS5kYXRhZG9naHEudGFncy52ZXJzaW9uJzogcHJvcHMudmVyc2lvbixcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZERhdGFkb2dTaWRlY2FyKHByb3BzOiB7XG4gIHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb247XG4gIGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHRlYW1OYW1lOiBzdHJpbmc7XG4gIHRlYW1JZGVudGlmaWVyOiBzdHJpbmc7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZGF0YWRvZ0FwaUtleVBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXI7XG4gIGRhdGFkb2dTaXRlOiBzdHJpbmc7XG4gIGRhdGFkb2dMb2dnaW5nTW9kZTogRGF0YURvZ0xvZ2dpbmdNb2RlO1xuICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTogc3RyaW5nW107XG4gIGNwdTogbnVtYmVyO1xuICBtZW1vcnlMaW1pdE1pQjogbnVtYmVyO1xuICBlc3NlbnRpYWw6IGJvb2xlYW47XG4gIGNvbnRhaW5lclRhZzogc3RyaW5nO1xuICBhZGRpdGlvbmFsVGFnczogeyBbazogc3RyaW5nXTogc3RyaW5nfSB8IHVuZGVmaW5lZDtcbn0pOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbiB7XG5cbiAgY29uc3QgeyBhY2NvdW50OiBhY2NvdW50SWQsIHJlZ2lvbiB9ID0gU3RhY2sub2YocHJvcHMuc2NvcGUpO1xuICBjb25zdCBkYXRhZG9nU2lkZWNhciA9IHByb3BzLnRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignZGF0YWRvZy1hZ2VudCcsIHtcbiAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeShgcHVibGljLmVjci5hd3MvZGF0YWRvZy9hZ2VudDoke3Byb3BzLmNvbnRhaW5lclRhZ31gKSxcbiAgICBsb2dnaW5nOiBzZXR1cExvZ2dpbmcoeyAuLi5wcm9wcywgY29udGFpbmVyVHlwZTogJ2RhdGFkb2ctc2lkZWNhcicgfSksXG4gICAgY3B1OiBwcm9wcy5jcHUsXG4gICAgbWVtb3J5TGltaXRNaUI6IHByb3BzLm1lbW9yeUxpbWl0TWlCLFxuICAgIGVudmlyb25tZW50OiB7XG4gICAgICAvLyB1bmlmaWVkIHRhZ2dpbmcsIHNlZSBodHRwczovL2RvY3MuZGF0YWRvZ2hxLmNvbS9nZXR0aW5nX3N0YXJ0ZWQvdGFnZ2luZy91bmlmaWVkX3NlcnZpY2VfdGFnZ2luZy8/dGFiPWVjc1xuICAgICAgRERfRU5WOiBwcm9wcy5zdGFnZSxcbiAgICAgIEREX1NFUlZJQ0U6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgRERfVkVSU0lPTjogcHJvcHMudmVyc2lvbixcbiAgICAgIC8vIEFQTSBhbmQgdHJhY2luZyBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vYWdlbnQvZG9ja2VyL2FwbS8/dGFiPWxpbnV4XG4gICAgICBERF9BUE1fRU5BQkxFRDogJ3RydWUnLFxuICAgICAgRERfQVBNX0lHTk9SRV9SRVNPVVJDRVM6IHByb3BzLmFwbUdldFJlc291cmNlc1RvSWdub3JlXG4gICAgICAgIC5tYXAoKGFwbUdldFJlc291cmNlVG9JZ25vcmUpID0+IGBHRVQgJHthcG1HZXRSZXNvdXJjZVRvSWdub3JlfWApXG4gICAgICAgIC5qb2luKCcsJyksXG4gICAgICAvLyBnZW5lcmFsIHNldHRpbmdzXG4gICAgICBERF9TSVRFOiBwcm9wcy5kYXRhZG9nU2l0ZSxcbiAgICAgIEREX1RBR1M6IGdldFRhZ3NFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoeyAuLi5wcm9wcywgYWNjb3VudElkLCByZWdpb24sIGNvbnRhaW5lclR5cGU6ICdkYXRhZG9nLXNpZGVjYXInIH0pLFxuICAgICAgRUNTX0ZBUkdBVEU6ICd0cnVlJyxcbiAgICAgIEREX0NMT1VEX1BST1ZJREVSX01FVEFEQVRBOiAnYXdzJyxcbiAgICB9LFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vRGF0YURvZy9kYXRhZG9nLWFnZW50L2Jsb2IvbWFzdGVyL0RvY2tlcmZpbGVzL2FnZW50L2FtZDY0L0RvY2tlcmZpbGUjTDE3MS1MMTcyXG4gICAgaGVhbHRoQ2hlY2s6IHtcbiAgICAgIHN0YXJ0UGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDIpLFxuICAgICAgaW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgIHJldHJpZXM6IDIsXG4gICAgICBjb21tYW5kOiBbJ0NNRC1TSEVMTCcsICcvcHJvYmUuc2gnXSxcbiAgICB9LFxuICAgIHNlY3JldHM6IHtcbiAgICAgIEREX0FQSV9LRVk6IGVjcy5TZWNyZXQuZnJvbVNzbVBhcmFtZXRlcihwcm9wcy5kYXRhZG9nQXBpS2V5UGFyYW1ldGVyKSxcbiAgICB9LFxuICAgIGVzc2VudGlhbDogcHJvcHMuZXNzZW50aWFsLFxuICB9KTtcblxuICBkYXRhZG9nU2lkZWNhci5hZGRQb3J0TWFwcGluZ3Moe1xuICAgIGNvbnRhaW5lclBvcnQ6IDgxMjUsXG4gICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5VRFAsXG4gIH0pO1xuXG4gIGRhdGFkb2dTaWRlY2FyLmFkZFBvcnRNYXBwaW5ncyh7XG4gICAgY29udGFpbmVyUG9ydDogODEyNixcbiAgICBwcm90b2NvbDogZWNzLlByb3RvY29sLlRDUCxcbiAgfSk7XG5cbiAgcmV0dXJuIGRhdGFkb2dTaWRlY2FyO1xufVxuXG5mdW5jdGlvbiBnZXRUYWdzRW52aXJvbm1lbnRWYXJpYWJsZVZhbHVlKHByb3BzOiB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xuICBhY2NvdW50TmFtZTogc3RyaW5nO1xuICByZWdpb246IHN0cmluZztcbiAgdGVhbU5hbWU6IHN0cmluZztcbiAgdGVhbUlkZW50aWZpZXI6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjb250YWluZXJUeXBlOiAnc2VydmljZScgfCAnZGF0YWRvZy1zaWRlY2FyJyB8ICdmbHVlbnQtYml0JztcbiAgYWRkaXRpb25hbFRhZ3M6IHsgW2s6IHN0cmluZ106IHN0cmluZ30gfCB1bmRlZmluZWQ7XG59KTogc3RyaW5nIHtcblxuICBjb25zdCBzZXBhcmF0b3IgPSBkZXRlcm1pbmVTZXBhcmF0b3IocHJvcHMuY29udGFpbmVyVHlwZSk7XG5cbiAgY29uc3QgdGFncyA9IHtcbiAgICAvLyB1bmlmaWVkIHRhZ2dpbmdcbiAgICAvLyBvdmVycmlkZGVuIGJ5IGRlZGljYXRlZCBzZXR0aW5ncyAoZW52aXJvbm1lbnQgdmFyaWFibGVzL3RhZ3MpXG4gICAgLy8gZHVwbGljYXRlZCBoZXJlIHRvIGVuc3VyZSB0aGV5IGFyZSB1c2VkIChhbmQgc29tZXRpbWVzLCBub3QgYWxsIHRocmVlIHZhbHVlcyBhcmUgc3VwcG9ydGVkKVxuICAgIGVudjogcHJvcHMuc3RhZ2UsXG4gICAgc2VydmljZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgdmVyc2lvbjogcHJvcHMudmVyc2lvbixcbiAgICAvLyBhY2NvdW50L3RlYW0gc3BlY2lmaWMgcGFydHNcbiAgICBhY2NvdW50X2lkOiBwcm9wcy5hY2NvdW50SWQsXG4gICAgYWNjb3VudF9uYW1lOiBwcm9wcy5hY2NvdW50TmFtZSxcbiAgICByZWdpb246IHByb3BzLnJlZ2lvbixcbiAgICB0ZWFtOiBwcm9wcy50ZWFtTmFtZSxcbiAgICB0ZWFtX2lkZW50aWZpZXI6IHByb3BzLnRlYW1JZGVudGlmaWVyLFxuICB9O1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoeyAuLi50YWdzLCAuLi5wcm9wcy5hZGRpdGlvbmFsVGFncyB9KVxuICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fToke3ZhbHVlfWApXG4gICAgLmpvaW4oc2VwYXJhdG9yKTtcbn1cblxuZnVuY3Rpb24gZGV0ZXJtaW5lU2VwYXJhdG9yKGNvbnRhaW5lclR5cGU6ICdzZXJ2aWNlJyB8ICdkYXRhZG9nLXNpZGVjYXInIHwgJ2ZsdWVudC1iaXQnKSB7XG4gIGlmIChjb250YWluZXJUeXBlID09PSAnZGF0YWRvZy1zaWRlY2FyJykge1xuICAgIHJldHVybiAnICc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICcsJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkRmlyZUxlbnNMb2dSb3V0ZXIocHJvcHM6IHtcbiAgdGFza0RlZmluaXRpb246IGVjcy5UYXNrRGVmaW5pdGlvbjtcbiAgY3B1OiBudW1iZXI7XG4gIG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG59KTogZWNzLkNvbnRhaW5lckRlZmluaXRpb24ge1xuXG4gIHJldHVybiBwcm9wcy50YXNrRGVmaW5pdGlvbi5hZGRGaXJlbGVuc0xvZ1JvdXRlcignZmlyZWxlbnMtbG9nLXJvdXRlcicsIHtcbiAgICBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21SZWdpc3RyeSgncHVibGljLmVjci5hd3MvYXdzLW9ic2VydmFiaWxpdHkvYXdzLWZvci1mbHVlbnQtYml0OnN0YWJsZScpLFxuICAgIGZpcmVsZW5zQ29uZmlnOiB7XG4gICAgICB0eXBlOiBlY3MuRmlyZWxlbnNMb2dSb3V0ZXJUeXBlLkZMVUVOVEJJVCxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgY29uZmlnRmlsZVR5cGU6IGVjcy5GaXJlbGVuc0NvbmZpZ0ZpbGVUeXBlLkZJTEUsXG4gICAgICAgIGNvbmZpZ0ZpbGVWYWx1ZTogJy9mbHVlbnQtYml0L2NvbmZpZ3MvcGFyc2UtanNvbi5jb25mJyxcbiAgICAgICAgZW5hYmxlRUNTTG9nTWV0YWRhdGE6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY3B1OiBwcm9wcy5jcHUsXG4gICAgbWVtb3J5TGltaXRNaUI6IHByb3BzLm1lbW9yeUxpbWl0TWlCLFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwTG9nZ2luZyhwcm9wczoge1xuICBzY29wZTogQ29uc3RydWN0O1xuICBhY2NvdW50TmFtZTogc3RyaW5nO1xuICB0ZWFtTmFtZTogc3RyaW5nO1xuICB0ZWFtSWRlbnRpZmllcjogc3RyaW5nO1xuICBzdGFnZTogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXI6IHNzbS5JU3RyaW5nUGFyYW1ldGVyO1xuICBkYXRhZG9nTG9nZ2luZ01vZGU6IERhdGFEb2dMb2dnaW5nTW9kZTtcbiAgZGF0YWRvZ1NpdGU6IHN0cmluZztcbiAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnIHwgJ2RhdGFkb2ctc2lkZWNhcic7XG4gIGFkZGl0aW9uYWxUYWdzOiB7IFtrOiBzdHJpbmddOiBzdHJpbmd9IHwgdW5kZWZpbmVkO1xufSk6IGVjcy5Mb2dEcml2ZXIge1xuXG4gIGxldCBsb2dHcm91cE5hbWU6IHN0cmluZztcbiAgbGV0IGxvZ0dyb3VwSWQ6IHN0cmluZztcbiAgbGV0IGNvbnRhaW5lclR5cGVDYW1lbENhc2U7XG5cbiAgc3dpdGNoIChwcm9wcy5jb250YWluZXJUeXBlKSB7XG5cbiAgICBjYXNlICdzZXJ2aWNlJzpcbiAgICAgIGxvZ0dyb3VwSWQgPSAnTG9nR3JvdXBGb3JTZXJ2aWNlJztcbiAgICAgIGxvZ0dyb3VwTmFtZSA9IHByb3BzLnNlcnZpY2VOYW1lO1xuICAgICAgY29udGFpbmVyVHlwZUNhbWVsQ2FzZSA9ICdTZXJ2aWNlJztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZGF0YWRvZy1zaWRlY2FyJzpcbiAgICAgIGxvZ0dyb3VwSWQgPSAnTG9nR3JvdXBGb3JEYXRhZG9nU2lkZWNhcic7XG4gICAgICBsb2dHcm91cE5hbWUgPSBgJHtwcm9wcy5zZXJ2aWNlTmFtZX0tJHtwcm9wcy5jb250YWluZXJUeXBlfWA7XG4gICAgICBjb250YWluZXJUeXBlQ2FtZWxDYXNlID0gJ0RhdGFkb2dTaWRlY2FyJztcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgY29uc3QgeyBhY2NvdW50OiBhY2NvdW50SWQsIHJlZ2lvbiB9ID0gU3RhY2sub2YocHJvcHMuc2NvcGUpO1xuXG4gIHN3aXRjaCAocHJvcHMuZGF0YWRvZ0xvZ2dpbmdNb2RlKSB7XG5cbiAgICBjYXNlIERhdGFEb2dMb2dnaW5nTW9kZS5BV1NfRklSRV9MRU5TOlxuICAgICAgLy8gVE9ETyBjYW4gd2UgdXNlIGBzZWNyZXRPcHRpb25zYCBoZXJlIGFzIHdlbGwsIGUuZy4gYXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL2F3cy1zYW1wbGVzL2FtYXpvbi1lY3MtZmlyZWxlbnMtZXhhbXBsZXMvYmxvYi9tYWlubGluZS9leGFtcGxlcy9mbHVlbnQtYml0L2RhdGFkb2cvdGFzay1kZWZpbml0aW9uLmpzb24jTDMzLUwzNlxuICAgICAgLy8gUHJvYmFibHkgbm90LCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy84MTc0XG4gICAgICByZXR1cm4gZWNzLkxvZ0RyaXZlcnMuZmlyZWxlbnMoe1xuICAgICAgICAvLyBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2ZsdWVudGJpdC8jY29uZmlndXJhdGlvbi1wYXJhbWV0ZXJzXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBOYW1lOiAnZGF0YWRvZycsXG4gICAgICAgICAgTWF0Y2g6ICcqJyxcbiAgICAgICAgICBIb3N0OiBgaHR0cC1pbnRha2UubG9ncy4ke3Byb3BzLmRhdGFkb2dTaXRlfWAsXG4gICAgICAgICAgVExTOiAnb24nLFxuICAgICAgICAgIGFwaWtleTogcHJvcHMuZGF0YWRvZ0FwaUtleVBhcmFtZXRlci5zdHJpbmdWYWx1ZSxcbiAgICAgICAgICBjb21wcmVzczogJ2d6aXAnLFxuICAgICAgICAgIGRkX3NlcnZpY2U6IGxvZ0dyb3VwTmFtZSxcbiAgICAgICAgICBkZF9zb3VyY2U6ICdyaW8tZmFyZ2F0ZScsXG4gICAgICAgICAgZGRfbWVzc2FnZV9rZXk6ICdsb2cnLFxuICAgICAgICAgIGRkX3RhZ3M6IGdldFRhZ3NFbnZpcm9ubWVudFZhcmlhYmxlVmFsdWUoeyAuLi5wcm9wcywgYWNjb3VudElkLCByZWdpb24sIGNvbnRhaW5lclR5cGU6ICdmbHVlbnQtYml0JyB9KSxcbiAgICAgICAgICBwcm92aWRlcjogJ2VjcycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLkZPUldBUkRFUl9MQU1CREE6XG4gICAgICBjb25zdCBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEgPSBuZXcgbG9ncy5Mb2dHcm91cChwcm9wcy5zY29wZSwgbG9nR3JvdXBJZCwge1xuICAgICAgICBsb2dHcm91cE5hbWUsXG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBsb2dGb3J3YXJkZXJMYW1iZGFBcm4gPSBGbi5pbXBvcnRWYWx1ZSgnY3VzdG9tLXJlc291cmNlLWRhdGFkb2ctbG9nZm9yd2FyZGVyLWZ1bmN0aW9uLWFybicpO1xuICAgICAgY29uc3QgY2ZuUGVybWlzc2lvbiA9IG5ldyBsYW1iZGEuQ2ZuUGVybWlzc2lvbihwcm9wcy5zY29wZSwgYExvZ0ZvcndhcmRlclBlcm1pc3Npb24ke2NvbnRhaW5lclR5cGVDYW1lbENhc2V9YCwge1xuICAgICAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IGxvZ0ZvcndhcmRlckxhbWJkYUFybixcbiAgICAgICAgcHJpbmNpcGFsOiBgbG9ncy4ke3JlZ2lvbn0uYW1hem9uYXdzLmNvbWAsXG4gICAgICAgIHNvdXJjZUFybjogbG9nR3JvdXBGb3JGb3J3YXJkaW5nTGFtYmRhLmxvZ0dyb3VwQXJuLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBjZm5TdWJzY3JpcHRpb25GaWx0ZXIgPSBuZXcgbG9ncy5DZm5TdWJzY3JpcHRpb25GaWx0ZXIoXG4gICAgICAgIHByb3BzLnNjb3BlLFxuICAgICAgICBgTG9nRm9yd2FyZGVyU3Vic2NyaXB0aW9uRmlsdGVyJHtjb250YWluZXJUeXBlQ2FtZWxDYXNlfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXN0aW5hdGlvbkFybjogbG9nRm9yd2FyZGVyTGFtYmRhQXJuLFxuICAgICAgICAgIGZpbHRlclBhdHRlcm46ICcnLFxuICAgICAgICAgIGxvZ0dyb3VwTmFtZTogbG9nR3JvdXBGb3JGb3J3YXJkaW5nTGFtYmRhLmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgICBjZm5TdWJzY3JpcHRpb25GaWx0ZXIuYWRkRGVwZW5kc09uKGNmblBlcm1pc3Npb24pO1xuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmF3c0xvZ3Moe1xuICAgICAgICBzdHJlYW1QcmVmaXg6IHByb3BzLmNvbnRhaW5lclR5cGUsXG4gICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cEZvckZvcndhcmRpbmdMYW1iZGEsXG4gICAgICB9KTtcblxuICAgIGNhc2UgRGF0YURvZ0xvZ2dpbmdNb2RlLk5PTkU6XG4gICAgICBjb25zdCBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHkgPSBuZXcgbG9ncy5Mb2dHcm91cChwcm9wcy5zY29wZSwgbG9nR3JvdXBJZCwge1xuICAgICAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVjcy5Mb2dEcml2ZXJzLmF3c0xvZ3Moe1xuICAgICAgICBzdHJlYW1QcmVmaXg6IHByb3BzLmNvbnRhaW5lclR5cGUsXG4gICAgICAgIGxvZ0dyb3VwOiBsb2dHcm91cEluQ2xvdWR3YXRjaE9ubHksXG4gICAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHMocmlvRmFyZ2F0ZVNlcnZpY2U6IFJpb0ZhcmdhdGVTZXJ2aWNlKTogdm9pZCB7XG5cbiAgcmlvRmFyZ2F0ZVNlcnZpY2Uuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkQ29udGFpbmVyRGVwZW5kZW5jaWVzKHtcbiAgICBjb250YWluZXI6IHJpb0ZhcmdhdGVTZXJ2aWNlLmRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbixcbiAgICBjb25kaXRpb246IGVjcy5Db250YWluZXJEZXBlbmRlbmN5Q29uZGl0aW9uLkhFQUxUSFksXG4gIH0pO1xuXG4gIGlmIChyaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uKSB7XG4gICAgcmlvRmFyZ2F0ZVNlcnZpY2Uuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkQ29udGFpbmVyRGVwZW5kZW5jaWVzKHtcbiAgICAgIGNvbnRhaW5lcjogcmlvRmFyZ2F0ZVNlcnZpY2UubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbixcbiAgICAgIGNvbmRpdGlvbjogZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uU1RBUlQsXG4gICAgfSk7XG5cbiAgICBpZiAocmlvRmFyZ2F0ZVNlcnZpY2UuZGF0YWRvZ1NpZGVDYXJDb250YWluZXJEZWZpbml0aW9uLmxvZ0RyaXZlckNvbmZpZz8ubG9nRHJpdmVyID09PSAnYXdzZmlyZWxlbnMnKSB7XG4gICAgICByaW9GYXJnYXRlU2VydmljZS5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24uYWRkQ29udGFpbmVyRGVwZW5kZW5jaWVzKHtcbiAgICAgICAgY29udGFpbmVyOiByaW9GYXJnYXRlU2VydmljZS5sb2dSb3V0ZXJDb250YWluZXJEZWZpbml0aW9uLFxuICAgICAgICBjb25kaXRpb246IGVjcy5Db250YWluZXJEZXBlbmRlbmN5Q29uZGl0aW9uLlNUQVJULFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -36,7 +36,6 @@ var DataDogLoggingMode;
36
36
  })(DataDogLoggingMode = exports.DataDogLoggingMode || (exports.DataDogLoggingMode = {}));
37
37
  class RioFargateService extends constructs.Construct {
38
38
  constructor(scope, id, props) {
39
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
40
39
  super(scope, id);
41
40
  this.DEFAULT_APM_GET_ENDPOINTS_TO_IGNORE = [];
42
41
  this.DEFAULT_DATADOG_SIDECAR_CPU = 64;
@@ -51,17 +50,17 @@ class RioFargateService extends constructs.Construct {
51
50
  this.LOG_ROUTER_MEMORY_LIMIT_MIB = 64;
52
51
  const { loadBalancerOptions, vpc, cluster, fargateOptions, datadogOptions, serviceName, containerDefinitionOption, stage, version, frameworks, } = props;
53
52
  this.node.addValidation(new DenyListedKeyValidator(RioFargateService.DD_ENV_DENY_LIST, props.containerDefinitionOption.environment, it => `Environment ${it} is not allowed to be set. This value will be inferred from the account or other properties.`));
54
- this.node.addValidation(new DenyListedKeyValidator(RioFargateService.DD_TAG_DENY_LIST, (_b = props.datadogOptions) === null || _b === void 0 ? void 0 : _b.additionalTags, it => `Tag ${it} is not allowed to be set. This value will be inferred from the account or other properties.`));
53
+ this.node.addValidation(new DenyListedKeyValidator(RioFargateService.DD_TAG_DENY_LIST, props.datadogOptions?.additionalTags, it => `Tag ${it} is not allowed to be set. This value will be inferred from the account or other properties.`));
55
54
  this.node.addValidation(new ClusterVpcValidator(props.vpc, props.cluster));
56
- const fargateCluster = cluster !== null && cluster !== void 0 ? cluster : new ecs.Cluster(this, 'Cluster', {
55
+ const fargateCluster = cluster ?? new ecs.Cluster(this, 'Cluster', {
57
56
  vpc: vpc,
58
57
  });
59
58
  this.taskDefinition = new ecs.FargateTaskDefinition(this, 'TaskDefinition', {
60
59
  cpu: fargateOptions.cpu,
61
60
  memoryLimitMiB: fargateOptions.memoryLimitMiB,
62
61
  runtimePlatform: {
63
- cpuArchitecture: (_d = (_c = fargateOptions.runtimePlatform) === null || _c === void 0 ? void 0 : _c.cpuArchitecture) !== null && _d !== void 0 ? _d : ecs.CpuArchitecture.X86_64,
64
- operatingSystemFamily: (_f = (_e = fargateOptions.runtimePlatform) === null || _e === void 0 ? void 0 : _e.operatingSystemFamily) !== null && _f !== void 0 ? _f : ecs.OperatingSystemFamily.LINUX,
62
+ cpuArchitecture: fargateOptions.runtimePlatform?.cpuArchitecture ?? ecs.CpuArchitecture.X86_64,
63
+ operatingSystemFamily: fargateOptions.runtimePlatform?.operatingSystemFamily ?? ecs.OperatingSystemFamily.LINUX,
65
64
  },
66
65
  });
67
66
  const accountName = ssm.StringParameter.fromStringParameterName(this, 'AccountName', '/config/account/name').stringValue;
@@ -69,11 +68,11 @@ class RioFargateService extends constructs.Construct {
69
68
  const teamIdentifier = ssm.StringParameter.fromStringParameterName(this, 'TeamIdentifier', '/config/team/identifier').stringValue;
70
69
  const datadogSite = ssm.StringParameter.fromStringParameterName(this, 'DatadogSite', '/rio/config/datadog-integration/site').stringValue;
71
70
  const datadogApiKeyParameter = ssm.StringParameter.fromStringParameterName(this, 'DatadogApiKey', '/rio/config/datadog-integration/api-key');
72
- const datadogSidecarCpu = (_g = datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.cpu) !== null && _g !== void 0 ? _g : this.DEFAULT_DATADOG_SIDECAR_CPU;
73
- const datadogSidecarMemoryMiB = (_h = datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.memoryLimitMiB) !== null && _h !== void 0 ? _h : this.DEFAULT_DATADOG_SIDECAR_MEMORY_LIMIT_MIB;
74
- const datadogSidecarEssential = (_j = datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.datadogSidecarEssential) !== null && _j !== void 0 ? _j : this.DEFAULT_DATADOG_SIDECAR_ESSENTIAL;
75
- const loggingModeForService = (_k = datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.loggingModeForService) !== null && _k !== void 0 ? _k : this.DEFAULT_LOGGING_MODE_FOR_SERVICE;
76
- const loggingModeForDatadogAgent = (_l = datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.loggingModeForDatadogAgent) !== null && _l !== void 0 ? _l : this.DEFAULT_LOGGING_MODE_FOR_DATADOG_SIDECAR;
71
+ const datadogSidecarCpu = datadogOptions?.cpu ?? this.DEFAULT_DATADOG_SIDECAR_CPU;
72
+ const datadogSidecarMemoryMiB = datadogOptions?.memoryLimitMiB ?? this.DEFAULT_DATADOG_SIDECAR_MEMORY_LIMIT_MIB;
73
+ const datadogSidecarEssential = datadogOptions?.datadogSidecarEssential ?? this.DEFAULT_DATADOG_SIDECAR_ESSENTIAL;
74
+ const loggingModeForService = datadogOptions?.loggingModeForService ?? this.DEFAULT_LOGGING_MODE_FOR_SERVICE;
75
+ const loggingModeForDatadogAgent = datadogOptions?.loggingModeForDatadogAgent ?? this.DEFAULT_LOGGING_MODE_FOR_DATADOG_SIDECAR;
77
76
  const fireLensLogRouterRequired = loggingModeForService === DataDogLoggingMode.AWS_FIRE_LENS ||
78
77
  loggingModeForDatadogAgent === DataDogLoggingMode.AWS_FIRE_LENS;
79
78
  let serviceContainerCpuUnits;
@@ -99,7 +98,7 @@ class RioFargateService extends constructs.Construct {
99
98
  accountName,
100
99
  teamName,
101
100
  teamIdentifier,
102
- additionalTags: datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.additionalTags,
101
+ additionalTags: datadogOptions?.additionalTags,
103
102
  }),
104
103
  ...containerDefinitionOption.environment,
105
104
  },
@@ -119,11 +118,11 @@ class RioFargateService extends constructs.Construct {
119
118
  datadogLoggingMode: loggingModeForService,
120
119
  datadogSite,
121
120
  containerType: 'service',
122
- additionalTags: datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.additionalTags,
121
+ additionalTags: datadogOptions?.additionalTags,
123
122
  }),
124
123
  secrets: containerDefinitionOption.secrets,
125
124
  });
126
- if (frameworks === null || frameworks === void 0 ? void 0 : frameworks.includes(Framework.SPRING)) {
125
+ if (frameworks?.includes(Framework.SPRING)) {
127
126
  spring_1.Spring.allowParameterStoreAccessForSpringCloudAws(this, serviceName, this.taskDefinition.taskRole);
128
127
  spring_1.Spring.allowSecretsManagerAccessForSpringCloudAws(this, serviceName, this.taskDefinition.taskRole);
129
128
  }
@@ -146,12 +145,12 @@ class RioFargateService extends constructs.Construct {
146
145
  datadogApiKeyParameter,
147
146
  datadogSite,
148
147
  datadogLoggingMode: loggingModeForDatadogAgent,
149
- apmGetResourcesToIgnore: (_m = datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.apmGetEndpointsToIgnore) !== null && _m !== void 0 ? _m : this.DEFAULT_APM_GET_ENDPOINTS_TO_IGNORE,
148
+ apmGetResourcesToIgnore: datadogOptions?.apmGetEndpointsToIgnore ?? this.DEFAULT_APM_GET_ENDPOINTS_TO_IGNORE,
150
149
  cpu: datadogSidecarCpu,
151
150
  memoryLimitMiB: datadogSidecarMemoryMiB,
152
151
  essential: datadogSidecarEssential,
153
- containerTag: (_p = (_o = props.datadogOptions) === null || _o === void 0 ? void 0 : _o.datadogSidecarTag) !== null && _p !== void 0 ? _p : this.DEFAULT_DATADOG_SIDECAR_TAG,
154
- additionalTags: datadogOptions === null || datadogOptions === void 0 ? void 0 : datadogOptions.additionalTags,
152
+ containerTag: props.datadogOptions?.datadogSidecarTag ?? this.DEFAULT_DATADOG_SIDECAR_TAG,
153
+ additionalTags: datadogOptions?.additionalTags,
155
154
  });
156
155
  datadog.ensureLoggingAndMonitoringAreReadyBeforeServiceStarts(this);
157
156
  const loadBalancerOptionsForFargateService = loadBalancerOptions
@@ -163,7 +162,7 @@ class RioFargateService extends constructs.Construct {
163
162
  circuitBreaker: { rollback: true },
164
163
  maxHealthyPercent: 200,
165
164
  minHealthyPercent: 100,
166
- desiredCount: fargateOptions === null || fargateOptions === void 0 ? void 0 : fargateOptions.desiredCount,
165
+ desiredCount: fargateOptions?.desiredCount,
167
166
  ...loadBalancerOptionsForFargateService,
168
167
  propagateTags: ecs.PropagatedTagSource.SERVICE,
169
168
  });
@@ -181,8 +180,8 @@ class RioFargateService extends constructs.Construct {
181
180
  targetType: elbv2.TargetType.IP,
182
181
  targets: [this.service],
183
182
  healthCheck: loadBalancerOptions.healthCheck,
184
- slowStart: (_r = (_q = props.loadBalancerOptions) === null || _q === void 0 ? void 0 : _q.slowStart) !== null && _r !== void 0 ? _r : this.DEFAULT_SLOW_START,
185
- deregistrationDelay: (_t = (_s = props.loadBalancerOptions) === null || _s === void 0 ? void 0 : _s.deregistrationDelay) !== null && _t !== void 0 ? _t : this.DEFAULT_DEREGISTRATION_DELAY,
183
+ slowStart: props.loadBalancerOptions?.slowStart ?? this.DEFAULT_SLOW_START,
184
+ deregistrationDelay: props.loadBalancerOptions?.deregistrationDelay ?? this.DEFAULT_DEREGISTRATION_DELAY,
186
185
  });
187
186
  loadBalancerOptions.listenerRules.forEach(({ priority, conditions }) => {
188
187
  loadBalancerOptions.listener.addTargetGroups(`Priority${priority}ListenerRule`, {
@@ -246,4 +245,4 @@ class ClusterVpcValidator {
246
245
  return result;
247
246
  }
248
247
  }
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL3Jpby1mYXJnYXRlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLHFDQUFxQztBQUNyQyxxQ0FBa0M7QUE4RGxDLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILDZDQUFNLENBQUE7QUFDUixDQUFDLEVBTFcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFLcEI7QUFvT0QsSUFBWSxrQkFpQlg7QUFqQkQsV0FBWSxrQkFBa0I7SUFDNUI7OztPQUdHO0lBQ0gsNkVBQWEsQ0FBQTtJQUViOzs7T0FHRztJQUNILG1GQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsMkRBQUksQ0FBQTtBQUNOLENBQUMsRUFqQlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFpQjdCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQTJDekQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUE2Qjs7UUFDaEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQXZCRix3Q0FBbUMsR0FBYSxFQUFFLENBQUM7UUFDbkQsZ0NBQTJCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLDZDQUF3QyxHQUFHLEdBQUcsQ0FBQztRQUMvQyxzQ0FBaUMsR0FBRyxJQUFJLENBQUM7UUFDekMscUNBQWdDLEdBQUcsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUM7UUFDdkUsNkNBQXdDLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1FBQ25FLGlDQUE0QixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZE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SCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUVELE1BQU0sbUJBQW1CO0lBQ3ZCLFlBQ21CLEdBQWEsRUFDYixPQUFzQjtRQUR0QixRQUFHLEdBQUgsR0FBRyxDQUFVO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUN0QyxDQUFDO0lBRUosUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0NBQW9DLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLDhDQUE4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzdJO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBkYXRhZG9nIGZyb20gJy4vZGF0YWRvZyc7XG5pbXBvcnQgeyBTcHJpbmcgfSBmcm9tICcuL3NwcmluZyc7XG5cbi8qKlxuICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSaW9GYXJnYXRlU2VydmljZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZnJhbWV3b3Jrcy5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1ld29ya3M/OiBGcmFtZXdvcmtbXTtcblxuICAvKipcbiAgICogVGhlIFZQQyBvZiB0aGUgc2VydmljZSdzIGVjcy5DbHVzdGVyIGlmIG5vIGNsdXN0ZXIgaXMgZXhwbGljaXRseSBwYXNzZWQgYXMgcHJvcC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSBGYXJnYXRlIGNsdXN0ZXIgdG8gcnVuIHRoZSBzZXJ2aWNlIGluLlxuICAgKiBJZiBub3QgbnVsbCwgdGhlIGNsdXN0ZXIudnBjIE1VU1QgbWF0Y2ggdGhlIHZwYyBwcm92aWRlZCBhcyBkaXJlY3QgYXJndW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ3JlYXRlIGEgbmV3IEZhcmdhdGUgY2x1c3RlciB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGRlZmluaXRpb24gb3B0aW9ucyBsaWtlIGltYWdlLCBjcHUsIG1lbW9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb246IENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFyZ2F0ZU9wdGlvbnM6IEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBMb2FkYmFsYW5jZXIgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlck9wdGlvbnM/OiBMb2FkQmFsYW5jZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhZG9nIGludGVncmF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHM7XG59XG5cbmV4cG9ydCBlbnVtIEZyYW1ld29yayB7XG4gIC8qKlxuICAgKiBTcHJpbmcgRnJhbWV3b3JrLCBTcHJpbmcgQm9vdCwgYW5kIFNwcmluZyBDbG91ZCBBV1MuXG4gICAqL1xuICBTUFJJTkcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGltYWdlIHVzZWQgdG8gc3RhcnQgYSBjb250YWluZXIuXG4gICAqXG4gICAqIFRoaXMgc3RyaW5nIGlzIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgRG9ja2VyIGRhZW1vbi5cbiAgICogSW1hZ2VzIGluIHRoZSBEb2NrZXIgSHViIHJlZ2lzdHJ5IGFyZSBhdmFpbGFibGUgYnkgZGVmYXVsdC5cbiAgICogT3RoZXIgcmVwb3NpdG9yaWVzIGFyZSBzcGVjaWZpZWQgd2l0aCBlaXRoZXIgcmVwb3NpdG9yeS11cmwvaW1hZ2U6dGFnIG9yIHJlcG9zaXRvcnktdXJsL2ltYWdlQGRpZ2VzdC5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBTb21lIERhdGFkb2cgc3BlY2lmaWMgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSBzZXQsXG4gICAqIGJlY2F1c2UgdGhleSBhcmUgc2V0IGF1dG9tYXRpY2FsbHkgb3IgY29tcHV0ZWQgZnJvbSBvdGhlciBhdHRyaWJ1dGVzLlxuICAgKiBUaGVzZSBhcmU6XG4gICAqICogRERfRU5WOiBTZXQgc2FtZSBhcyBwcm9wIHN0YWdlXG4gICAqICogRERfU0VSVklDRTogU2V0IHNhbWUgYXMgcHJvcCBzZXJ2aWNlTmFtZVxuICAgKiAqIEREX1ZFUlNJT046IFNldCBzYW1lIGFzIHByb3AgdmVyc2lvblxuICAgKiAqIEREX1RBR1M6IFNldCBzYW1lIGFzIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzI2FkZGl0aW9uYWxUYWdzXG4gICAqICogRERfTE9HU19JTkpFQ1RJT046IHRydWVcbiAgICogT3RoZXIgRERfLXByZWZpeGVkIHZhaWFibGUgbWF5IGJlIGFkZGVkIHRvIHRoaXMgbGlzdC5cbiAgICpcbiAgICogT3RoZXIgRW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBieSBkZWZhdWx0IGFyZSBvdmVyd3JpdHRlbiBpZiBwYXNzZWQuXG4gICAqIFRoZXNlIGFyZTpcbiAgICogKiBERF9TRVJWSUNFX01BUFBJTkc6IGRhdGFiYXNlOmZhcmdhdGUtd2ViLWFwcC1hdXJvcmEsamF2YS1hd3Mtc2RrOmZhcmdhdGUtd2ViLWFwcC1hd3Mtc2RrLGthZmthOmZhcmdhdGUtd2ViLWFwcC1rYWZrYSxteXNxbDpmYXJnYXRlLXdlYi1hcHAtYXVyb3JhXG4gICAqICogRERfVFJBQ0VfU0FNUExFX1JBVEU6IDEuMFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBlY3MuU2VjcmV0IH07XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFsdGggY2hlY2sgY29tbWFuZCBhbmQgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSGVhbHRoIGNoZWNrIGNvbmZpZ3VyYXRpb24gZnJvbSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVjaz86IGVjcy5IZWFsdGhDaGVjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNwdSB1bml0cyB1c2VkIGJ5IHRoZSB0YXNrLiBGb3IgdGFza3MgdXNpbmcgdGhlIEZhcmdhdGUgbGF1bmNoIHR5cGUsXG4gICAqIHRoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHlvdSBtdXN0IHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXMsXG4gICAqIHdoaWNoIGRldGVybWluZXMgeW91ciByYW5nZSBvZiB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBtZW1vcnkgcGFyYW1ldGVyOlxuICAgKlxuICAgKiAyNTYgKC4yNSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiA1MTIgKDAuNSBHQiksIDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKVxuICAgKlxuICAgKiA1MTIgKC41IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpXG4gICAqXG4gICAqIDEwMjQgKDEgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKSwgNTEyMCAoNSBHQiksIDYxNDQgKDYgR0IpLCA3MTY4ICg3IEdCKSwgODE5MiAoOCBHQilcbiAgICpcbiAgICogMjA0OCAoMiB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDQwOTYgKDQgR0IpIGFuZCAxNjM4NCAoMTYgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcbiAgICpcbiAgICogNDA5NiAoNCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDgxOTIgKDggR0IpIGFuZCAzMDcyMCAoMzAgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcbiAgICpcbiAgICogQGRlZmF1bHQgNTEyXG4gICAqL1xuICByZWFkb25seSBjcHU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCAoaW4gTWlCKSBvZiBtZW1vcnkgdXNlZCBieSB0aGUgdGFzay4gRm9yIHRhc2tzIHVzaW5nIHRoZSBGYXJnYXRlIGxhdW5jaCB0eXBlLFxuICAgKiB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCB5b3UgbXVzdCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzLCB3aGljaCBkZXRlcm1pbmVzIHlvdXIgcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzIGZvciB0aGUgY3B1IHBhcmFtZXRlcjpcbiAgICpcbiAgICogNTEyICgwLjUgR0IpLCAxMDI0ICgxIEdCKSwgMjA0OCAoMiBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogMjU2ICguMjUgdkNQVSlcbiAgICpcbiAgICogMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpLCAzMDcyICgzIEdCKSwgNDA5NiAoNCBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogNTEyICguNSB2Q1BVKVxuICAgKlxuICAgKiAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpLCA1MTIwICg1IEdCKSwgNjE0NCAoNiBHQiksIDcxNjggKDcgR0IpLCA4MTkyICg4IEdCKSAtIEF2YWlsYWJsZSBjcHUgdmFsdWVzOiAxMDI0ICgxIHZDUFUpXG4gICAqXG4gICAqIEJldHdlZW4gNDA5NiAoNCBHQikgYW5kIDE2Mzg0ICgxNiBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKSAtIEF2YWlsYWJsZSBjcHUgdmFsdWVzOiAyMDQ4ICgyIHZDUFUpXG4gICAqXG4gICAqIEJldHdlZW4gODE5MiAoOCBHQikgYW5kIDMwNzIwICgzMCBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKSAtIEF2YWlsYWJsZSBjcHUgdmFsdWVzOiA0MDk2ICg0IHZDUFUpXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMjRcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlc2lyZWQgY291bnQgb2YgcnVubmluZyB0YXNrc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFdoZW4gY3JlYXRpbmcgdGhlIHNlcnZpY2UsIGRlZmF1bHQgaXMgMTsgd2hlbiB1cGRhdGluZyB0aGUgc2VydmljZSwgZGVmYXVsdCB1c2VzXG4gICAqIHRoZSBjdXJyZW50IHRhc2sgbnVtYmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzaXJlZENvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IHlvdXIgdGFzayBkZWZpbml0aW9ucyBhcmUgcnVubmluZyBvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2luZyBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYIGFuZCBlY3MuQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZVBsYXRmb3JtPzogZWNzLlJ1bnRpbWVQbGF0Zm9ybTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5lclJ1bGUge1xuICByZWFkb25seSBwcmlvcml0eTogbnVtYmVyO1xuXG4gIHJlYWRvbmx5IGNvbmRpdGlvbnM6IGVsYnYyLkxpc3RlbmVyQ29uZGl0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaXN0ZW5lciBmb3IgYW4gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXI6IGVsYnYyLklBcHBsaWNhdGlvbkxpc3RlbmVyO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBwYXRoIHBhdHRlcm5zIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgcmVxdWVzdCBVUkwuXG4gICAqIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBzdHJpbmcgaXMgMTI4IGNoYXJhY3RlcnMuXG4gICAqIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLlxuICAgKiBUaGUgZm9sbG93aW5nIHdpbGRjYXJkIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZDogKiAobWF0Y2hlcyAwIG9yIG1vcmUgY2hhcmFjdGVycykgYW5kID8gKG1hdGNoZXMgZXhhY3RseSAxIGNoYXJhY3RlcikuXG4gICAqXG4gICAqIFVwZGF0ZSByZXF1aXJlczogTm8gaW50ZXJydXB0aW9uXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclJ1bGVzOiBMaXN0ZW5lclJ1bGVbXTtcblxuICAvKipcbiAgICogIEhlYWx0aCBjaGVjayBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhbHRoQ2hlY2s6IGVsYnYyLkhlYWx0aENoZWNrO1xuXG4gIC8qKlxuICAgKiAgSGVhbHRoIGNoZWNrIGdyYWNlIHBlcmlvZC5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRpbWUgcGVyaW9kIGR1cmluZyB3aGljaCB0aGUgbG9hZCBiYWxhbmNlciBzZW5kcyBhIG5ld2x5IHJlZ2lzdGVyZWQgdGFyZ2V0IGEgbGluZWFybHkgaW5jcmVhc2luZyBzaGFyZSBvZiB0aGUgdHJhZmZpYyB0byB0aGUgdGFyZ2V0IGdyb3VwLlxuXG4gICAqVGhlIHJhbmdlIGlzIDMwLTkwMCBzZWNvbmRzICgxNSBtaW51dGVzKS5cblxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgKi9cbiAgcmVhZG9ubHkgc2xvd1N0YXJ0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgZm9yIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgdG8gd2FpdCBiZWZvcmUgZGVyZWdpc3RlcmluZyBhIHRhcmdldC5cblxuICAgKiBUaGUgcmFuZ2UgaXMgMC0zNjAwIHNlY29uZHMuXG5cbiAgICogQGRlZmF1bHQgNVxuICAqL1xuICByZWFkb25seSBkZXJlZ2lzdHJhdGlvbkRlbGF5PzogY2RrLkR1cmF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBDUFUgdW5pdHMgdG8gcmVzZXJ2ZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSA2NFxuICAgKi9cbiAgcmVhZG9ubHkgY3B1PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IChpbiBNaUIpIG9mIG1lbW9yeSB0byBwcmVzZW50IHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIElmIHlvdXIgY29udGFpbmVyIGF0dGVtcHRzIHRvIGV4Y2VlZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgdGhlIGNvbnRhaW5lclxuICAgKiBpcyB0ZXJtaW5hdGVkLlxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgbWVtb3J5TGltaXRNaUIgYW5kIG1lbW9yeVJlc2VydmF0aW9uTWlCIGlzIHJlcXVpcmVkIGZvciBub24tRmFyZ2F0ZSBzZXJ2aWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxMjhcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nZ2luZyBtb2RlIGZvciB0aGUgc2VydmljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2luZyB0aGUgRGF0YWRvZyBsb2cgZm9yd2FyZGVyIGxhbWJkYSBwcm92aWRlZCBieSB0aGUgZGF0YWRvZy1pbnRlZ3JhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdNb2RlRm9yU2VydmljZT86IERhdGFEb2dMb2dnaW5nTW9kZTtcblxuICAvKipcbiAgICogVGhlIGxvZ2dpbmcgbW9kZSBmb3IgdGhlIERhdGFkb2cgYWdlbnQgc2lkZWNhci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBsb2dzIGluIERhdGFkb2csIENsb3Vkd2F0Y2ggb25seS5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50PzogRGF0YURvZ0xvZ2dpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBHRVQgZW5kcG9pbnRzIHRvIGlnbm9yZSBpbiBEYXRhZG9nJ3MgQVBNIG92ZXJ2aWV3LiBUaGlzIGlzIHVzZWZ1bCB0byBmaWx0ZXIgb3V0IGFsbCBoZWFsdGggY2hlY2sgY2FsbHMuXG5cbiAgICAqIEBkZWZhdWx0IC0gTm8gZW5kcG9pbnRzIGFyZSBpZ25vcmVkLlxuICAgICovXG4gIHJlYWRvbmx5IGFwbUdldEVuZHBvaW50c1RvSWdub3JlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBpZiB0aGUgRGF0YWRvZyBhZ2VudCBzaWRlY2FyIGlzIG1hcmtlZCBhcyBlc3NlbnRpYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgZG9ja2VyIGltYWdlIHRhZyBmb3IgZGF0YWRvZyBzaWRlY2FyXG4gICAqIEBkZWZhdWx0IC0gJ2xhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlY2FyVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgYWRkaXRpb25hbCB0YWdzLCB3aGljaCBhcmUgYXBwZW5kZWQgdG8gdGhlIGRlZmF1bHRzLFxuICAgKiBXaGVuIHlvdSBkZWZpbmUgY3VzdG9tIHRhZ3Mgd2Ugd291bGQgYmUgZ2xhZCBpZiB5b3UgY29udGFjdCB1cy5cbiAgICogV2Ugd291bGQgbGlrZSB0byBsZWFybiBhYm91dCB5b3VyIHVzZSBjYXNlcy5cbiAgICpcbiAgICogRGVmYXVsdCB0YWdzIGFyZSBub3QgYWxsb3dlZCB0byBiZSBvdmVycmlkZGVuIVxuICAgKlxuICAgKiBEZWZhdWx0cyBhcmU6XG4gICAqICogZW52OiBTZXQgdG8gUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcyNzdGFnZSBwcm9wXG4gICAqICogc2VydmljZTogU2V0IHRvIFJpb0ZhcmdhdGVTZXJ2aWNlUHJvcHMjc2VydmljZU5hbWUgcHJvcFxuICAgKiAqIHZlcnNpb246IFNldCB0byBSaW9GYXJnYXRlU2VydmljZVByb3BzI3ZlcnNpb24gcHJvcFxuICAgKiAqIGFjY291bnRfaWQ6JHthY2NvdW50SUR9XG4gICAqICogYWNjb3VudF9uYW1lOiR7YWNjb3VudE5hbWV9XG4gICAqICogcmVnaW9uOiR7QVdTUmVnaW9ufVxuICAgKiAqIHRlYW06JHt0ZWFtTmFtZSBmcm9tIHNzbSBwYXJhbSAvY29uZmlnL3RlYW0vbmFtZX1cbiAgICogKiB0ZWFtX2lkZW50aWZpZXI6JHt0ZWFtSWRlbnRpZmllciBmcm9tIHNzbSBwYXJhbSAvY29uZmlnL3RlYW0vaWRlbnRpZmllcn1cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGVudW0gRGF0YURvZ0xvZ2dpbmdNb2RlIHtcbiAgLyoqXG4gICAqIEZvcndhcmQgbG9ncyBkaXJlY3RseSB0byBEYXRhZG9nIHVzaW5nIEFXUyBGaXJlTGVucyBhcyBsb2cgcm91dGVyLFxuICAgKiBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2Vjc19mYXJnYXRlLz90YWI9Zmx1ZW50Yml0YW5kZmlyZWxlbnMjbG9nLWNvbGxlY3Rpb24uXG4gICAqL1xuICBBV1NfRklSRV9MRU5TLFxuXG4gIC8qKlxuICAgKiBTdG9yZSBsb2dzIGluIEFXUyBDbG91ZHdhdGNoIGFuZCB1c2UgdGhlIERhdGFkb2cgbG9nIGZvcndhcmRlciBsYW1iZGEgdG8gZm9yd2FyZCB0aGUgbG9ncyB0byBEYXRhZG9nLFxuICAgKiBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2Vjc19mYXJnYXRlLz90YWI9bG9nZHJpdmVyI2xvZy1jb2xsZWN0aW9uLlxuICAgKi9cbiAgRk9SV0FSREVSX0xBTUJEQSxcblxuICAvKipcbiAgICogT25seSBsb2cgdG8gQVdTIENsb3Vkd2F0Y2ggd2l0aG91dCBmb3J3YXJkaW5nIHRoZSBsb2dzIHRvIERhdGFkb2cuXG4gICAqL1xuICBOT05FLFxufVxuXG5leHBvcnQgY2xhc3MgUmlvRmFyZ2F0ZVNlcnZpY2UgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEREX0VOVl9ERU5ZX0xJU1QgPSBbXG4gICAgJ0REX0VOVicsXG4gICAgJ0REX1RBR1MnLFxuICAgICdERF9TRVJWSUNFJyxcbiAgICAnRERfVkVSU0lPTicsXG4gICAgJ0REX0xPR1NfSU5KRUNUSU9OJyxcbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9UQUdfREVOWV9MSVNUID0gW1xuICAgICdlbnYnLFxuICAgICdzZXJ2aWNlJyxcbiAgICAndmVyc2lvbicsXG4gICAgJ2FjY291bnRfaWQnLFxuICAgICdhY2NvdW50X25hbWUnLFxuICAgICdyZWdpb24nLFxuICAgICd0ZWFtJyxcbiAgICAndGVhbV9pZGVudGlmaWVyJyxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX01FTU9SWV9MSU1JVF9NSUIgPSAxMjg7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRSA9IERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPSBEYXRhRG9nTG9nZ2luZ01vZGUuTk9ORTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZID0gY2RrLkR1cmF0aW9uLnNlY29uZHMoNSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9TTE9XX1NUQVJUID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRyA9ICdsYXRlc3QnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgTE9HX1JPVVRFUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIgPSA2NDtcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSB0YXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cHx1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLFxuICAgICAgdnBjLFxuICAgICAgY2x1c3RlcixcbiAgICAgIGZhcmdhdGVPcHRpb25zLFxuICAgICAgZGF0YWRvZ09wdGlvbnMsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24sXG4gICAgICBzdGFnZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBmcmFtZXdvcmtzLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2UuRERfRU5WX0RFTllfTElTVCxcbiAgICAgIHByb3BzLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICBpdCA9PiBgRW52aXJvbm1lbnQgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgKSk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICBSaW9GYXJnYXRlU2VydmljZS5ERF9UQUdfREVOWV9MSVNULFxuICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgaXQgPT4gYFRhZyAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICApKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBDbHVzdGVyVnBjVmFsaWRhdG9yKFxuICAgICAgcHJvcHMudnBjLFxuICAgICAgcHJvcHMuY2x1c3RlcixcbiAgICApKTtcblxuICAgIGNvbnN0IGZhcmdhdGVDbHVzdGVyID0gY2x1c3RlciA/PyBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0NsdXN0ZXInLCB7XG4gICAgICB2cGM6IHZwYyxcbiAgICB9KTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24odGhpcywgJ1Rhc2tEZWZpbml0aW9uJywge1xuICAgICAgY3B1OiBmYXJnYXRlT3B0aW9ucy5jcHUsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/LmNwdUFyY2hpdGVjdHVyZSA/PyBlY3MuQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgICAgb3BlcmF0aW5nU3lzdGVtRmFtaWx5OiBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/Lm9wZXJhdGluZ1N5c3RlbUZhbWlseSA/PyBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBhY2NvdW50TmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgJ0FjY291bnROYW1lJywgJy9jb25maWcvYWNjb3VudC9uYW1lJykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbU5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtTmFtZScsICcvY29uZmlnL3RlYW0vbmFtZScpLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnVGVhbUlkZW50aWZpZXInLCAnL2NvbmZpZy90ZWFtL2lkZW50aWZpZXInKS5zdHJpbmdWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFkb2dTaXRlID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnRGF0YWRvZ1NpdGUnLCAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9zaXRlJykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgZGF0YWRvZ0FwaUtleVBhcmFtZXRlciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgJ0RhdGFkb2dBcGlLZXknLCAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9hcGkta2V5Jyk7XG5cbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckNwdSA9IGRhdGFkb2dPcHRpb25zPy5jcHUgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFU7XG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIgPSBkYXRhZG9nT3B0aW9ucz8ubWVtb3J5TGltaXRNaUIgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID0gZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuXG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID0gZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yU2VydmljZSA/PyB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9TRVJWSUNFO1xuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID0gZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID8/IHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUjtcbiAgICBjb25zdCBmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkID1cbiAgICAgIGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlMgfHxcbiAgICAgIGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUztcblxuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHM7XG4gICAgbGV0IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQjtcblxuICAgIGlmIChmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkKSB7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMgPSBmYXJnYXRlT3B0aW9ucy5jcHUgLSBkYXRhZG9nU2lkZWNhckNwdSAtIHRoaXMuTE9HX1JPVVRFUl9DUFU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPSBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCIC0gdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID0gZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKHNlcnZpY2VOYW1lLCB7XG4gICAgICBpbWFnZTogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5pbWFnZSxcbiAgICAgIGNwdTogc2VydmljZUNvbnRhaW5lckNwdVVuaXRzLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgfSxcbiAgICAgIGRvY2tlckxhYmVsczoge1xuICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICB9LFxuICAgICAgaGVhbHRoQ2hlY2s6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaGVhbHRoQ2hlY2ssXG4gICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgIHNjb3BlLFxuICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICBzdGFnZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgfSksXG4gICAgICBzZWNyZXRzOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLnNlY3JldHMsXG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWV3b3Jrcz8uaW5jbHVkZXMoRnJhbWV3b3JrLlNQUklORykpIHtcbiAgICAgIFNwcmluZy5hbGxvd1BhcmFtZXRlclN0b3JlQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3ModGhpcywgc2VydmljZU5hbWUsIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuICAgICAgU3ByaW5nLmFsbG93U2VjcmV0c01hbmFnZXJBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyh0aGlzLCBzZXJ2aWNlTmFtZSwgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiB0aGlzLkxPR19ST1VURVJfQ1BVLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24gPSBkYXRhZG9nLmFkZERhdGFkb2dTaWRlY2FyKHtcbiAgICAgIHNjb3BlLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTogZGF0YWRvZ09wdGlvbnM/LmFwbUdldEVuZHBvaW50c1RvSWdub3JlID8/IHRoaXMuREVGQVVMVF9BUE1fR0VUX0VORFBPSU5UU19UT19JR05PUkUsXG4gICAgICBjcHU6IGRhdGFkb2dTaWRlY2FyQ3B1LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCLFxuICAgICAgZXNzZW50aWFsOiBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCxcbiAgICAgIGNvbnRhaW5lclRhZzogcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyVGFnID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHLCAvLyBUaGVzZSBhcmUgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLFxuICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcblxuICAgIGRhdGFkb2cuZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHModGhpcyk7XG5cbiAgICBjb25zdCBsb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UgPSBsb2FkQmFsYW5jZXJPcHRpb25zXG4gICAgICA/IHsgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZDogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVja0dyYWNlUGVyaW9kIH1cbiAgICAgIDoge307XG5cbiAgICB0aGlzLnNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsICdTZXJ2aWNlJywge1xuICAgICAgY2x1c3RlcjogZmFyZ2F0ZUNsdXN0ZXIsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGNpcmN1aXRCcmVha2VyOiB7IHJvbGxiYWNrOiB0cnVlIH0sXG4gICAgICBtYXhIZWFsdGh5UGVyY2VudDogMjAwLFxuICAgICAgbWluSGVhbHRoeVBlcmNlbnQ6IDEwMCxcbiAgICAgIGRlc2lyZWRDb3VudDogZmFyZ2F0ZU9wdGlvbnM/LmRlc2lyZWRDb3VudCxcbiAgICAgIC4uLmxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSxcbiAgICAgIHByb3BhZ2F0ZVRhZ3M6IGVjcy5Qcm9wYWdhdGVkVGFnU291cmNlLlNFUlZJQ0UsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5zZXJ2aWNlLmNvbm5lY3Rpb25zO1xuXG4gICAgaWYgKGxvYWRCYWxhbmNlck9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGFpbmVyUG9ydCA9IDQ0MztcbiAgICAgIHRoaXMuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgY29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5UQ1AsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCh0aGlzLCAnVGFyZ2V0R3JvdXAnLCB7XG4gICAgICAgIHZwYzogdnBjLFxuICAgICAgICBwb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICBzbG93U3RhcnQ6IHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/PyB0aGlzLkRFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVksXG4gICAgICB9KTtcblxuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLnRhcmdldEdyb3VwIGFzIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBdLFxuICAgICAgICAgIHByaW9yaXR5OiBwcmlvcml0eSxcbiAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVueUxpc3Q6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGljdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VHZW5lcmF0b3I6IChrZXlOYW1lOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGljdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmRlbnlMaXN0LmZvckVhY2goa2V5TmFtZSA9PiB7XG4gICAgICBpZiAodGhpcy5kaWN0ICYmIGtleU5hbWUgaW4gdGhpcy5kaWN0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWVzc2FnZUdlbmVyYXRvcihrZXlOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIENsdXN0ZXJWcGNWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcixcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5jbHVzdGVyICYmIHRoaXMuY2x1c3Rlci52cGMudnBjSWQgIT09IHRoaXMudnBjLnZwY0lkKSB7XG4gICAgICByZXN1bHQucHVzaChgVGhlIFZQQyBwcm92aWRlZCBpbiB0aGUgY2x1c3RlciAoJHt0aGlzLmNsdXN0ZXIudnBjLm5vZGUuaWR9KSBNVVNUIG1hdGNoIHRoZSBWUEMgcHJvdmlkZWQgYXMgYXJndW1lbnQgKCR7dGhpcy52cGMubm9kZS5pZH0pLmApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlvLWZhcmdhdGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYXJnYXRlL3Jpby1mYXJnYXRlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MseUNBQXlDO0FBQ3pDLHFDQUFxQztBQUNyQyxxQ0FBa0M7QUE4RGxDLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILDZDQUFNLENBQUE7QUFDUixDQUFDLEVBTFcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFLcEI7QUFvT0QsSUFBWSxrQkFpQlg7QUFqQkQsV0FBWSxrQkFBa0I7SUFDNUI7OztPQUdHO0lBQ0gsNkVBQWEsQ0FBQTtJQUViOzs7T0FHRztJQUNILG1GQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsMkRBQUksQ0FBQTtBQUNOLENBQUMsRUFqQlcsa0JBQWtCLEdBQWxCLDBCQUFrQixLQUFsQiwwQkFBa0IsUUFpQjdCO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxVQUFVLENBQUMsU0FBUztJQTJDekQsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBdkJGLHdDQUFtQyxHQUFhLEVBQUUsQ0FBQztRQUNuRCxnQ0FBMkIsR0FBRyxFQUFFLENBQUM7UUFDakMsNkNBQXdDLEdBQUcsR0FBRyxDQUFDO1FBQy9DLHNDQUFpQyxHQUFHLElBQUksQ0FBQztRQUN6QyxxQ0FBZ0MsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RSw2Q0FBd0MsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDbkUsaUNBQTRCLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQs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SyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0NBQW9DLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLDhDQUE4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzdJO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBkYXRhZG9nIGZyb20gJy4vZGF0YWRvZyc7XG5pbXBvcnQgeyBTcHJpbmcgfSBmcm9tICcuL3NwcmluZyc7XG5cbi8qKlxuICogRmFyZ2F0ZSBUYXNrIERlZmluaXRpb24gUHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSaW9GYXJnYXRlU2VydmljZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBzdGFnZSBvZiB0aGUgc2VydmljZSwgZS5nLiAncHJvZCcuXG4gICAqL1xuICByZWFkb25seSBzdGFnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTmFtZSBvZiB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJ2aWNlLCBlLmcuIHRoZSBnaXQgaGFzaCBvZiB0aGUgY29ycmVzcG9uZGluZyBjb21taXQuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmcmFtZXdvcmtzIGluIHVzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZnJhbWV3b3Jrcy5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1ld29ya3M/OiBGcmFtZXdvcmtbXTtcblxuICAvKipcbiAgICogVGhlIFZQQyBvZiB0aGUgc2VydmljZSdzIGVjcy5DbHVzdGVyIGlmIG5vIGNsdXN0ZXIgaXMgZXhwbGljaXRseSBwYXNzZWQgYXMgcHJvcC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFRoZSBGYXJnYXRlIGNsdXN0ZXIgdG8gcnVuIHRoZSBzZXJ2aWNlIGluLlxuICAgKiBJZiBub3QgbnVsbCwgdGhlIGNsdXN0ZXIudnBjIE1VU1QgbWF0Y2ggdGhlIHZwYyBwcm92aWRlZCBhcyBkaXJlY3QgYXJndW1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ3JlYXRlIGEgbmV3IEZhcmdhdGUgY2x1c3RlciB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcjtcblxuICAvKipcbiAgICogQ29udGFpbmVyIGRlZmluaXRpb24gb3B0aW9ucyBsaWtlIGltYWdlLCBjcHUsIG1lbW9yeS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb246IENvbnRhaW5lckRlZmluaXRpb25PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBGYXJnYXRlIFRhc2sgRGVmaW5pdGlvbiBQcm9wZXJ0aWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFyZ2F0ZU9wdGlvbnM6IEZhcmdhdGVUYXNrRGVmaW5pdGlvblByb3BzO1xuXG4gIC8qKlxuICAgKiBMb2FkYmFsYW5jZXIgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlck9wdGlvbnM/OiBMb2FkQmFsYW5jZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBEYXRhZG9nIGludGVncmF0aW9uIHByb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dPcHRpb25zPzogRGF0YWRvZ0ludGVncmF0aW9uUHJvcHM7XG59XG5cbmV4cG9ydCBlbnVtIEZyYW1ld29yayB7XG4gIC8qKlxuICAgKiBTcHJpbmcgRnJhbWV3b3JrLCBTcHJpbmcgQm9vdCwgYW5kIFNwcmluZyBDbG91ZCBBV1MuXG4gICAqL1xuICBTUFJJTkcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGltYWdlIHVzZWQgdG8gc3RhcnQgYSBjb250YWluZXIuXG4gICAqXG4gICAqIFRoaXMgc3RyaW5nIGlzIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgRG9ja2VyIGRhZW1vbi5cbiAgICogSW1hZ2VzIGluIHRoZSBEb2NrZXIgSHViIHJlZ2lzdHJ5IGFyZSBhdmFpbGFibGUgYnkgZGVmYXVsdC5cbiAgICogT3RoZXIgcmVwb3NpdG9yaWVzIGFyZSBzcGVjaWZpZWQgd2l0aCBlaXRoZXIgcmVwb3NpdG9yeS11cmwvaW1hZ2U6dGFnIG9yIHJlcG9zaXRvcnktdXJsL2ltYWdlQGRpZ2VzdC5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBTb21lIERhdGFkb2cgc3BlY2lmaWMgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3QgYWxsb3dlZCB0byBiZSBzZXQsXG4gICAqIGJlY2F1c2UgdGhleSBhcmUgc2V0IGF1dG9tYXRpY2FsbHkgb3IgY29tcHV0ZWQgZnJvbSBvdGhlciBhdHRyaWJ1dGVzLlxuICAgKiBUaGVzZSBhcmU6XG4gICAqICogRERfRU5WOiBTZXQgc2FtZSBhcyBwcm9wIHN0YWdlXG4gICAqICogRERfU0VSVklDRTogU2V0IHNhbWUgYXMgcHJvcCBzZXJ2aWNlTmFtZVxuICAgKiAqIEREX1ZFUlNJT046IFNldCBzYW1lIGFzIHByb3AgdmVyc2lvblxuICAgKiAqIEREX1RBR1M6IFNldCBzYW1lIGFzIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzI2FkZGl0aW9uYWxUYWdzXG4gICAqICogRERfTE9HU19JTkpFQ1RJT046IHRydWVcbiAgICogT3RoZXIgRERfLXByZWZpeGVkIHZhaWFibGUgbWF5IGJlIGFkZGVkIHRvIHRoaXMgbGlzdC5cbiAgICpcbiAgICogT3RoZXIgRW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBieSBkZWZhdWx0IGFyZSBvdmVyd3JpdHRlbiBpZiBwYXNzZWQuXG4gICAqIFRoZXNlIGFyZTpcbiAgICogKiBERF9TRVJWSUNFX01BUFBJTkc6IGRhdGFiYXNlOmZhcmdhdGUtd2ViLWFwcC1hdXJvcmEsamF2YS1hd3Mtc2RrOmZhcmdhdGUtd2ViLWFwcC1hd3Mtc2RrLGthZmthOmZhcmdhdGUtd2ViLWFwcC1rYWZrYSxteXNxbDpmYXJnYXRlLXdlYi1hcHAtYXVyb3JhXG4gICAqICogRERfVFJBQ0VfU0FNUExFX1JBVEU6IDEuMFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNlY3JldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBlY3MuU2VjcmV0IH07XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFsdGggY2hlY2sgY29tbWFuZCBhbmQgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSGVhbHRoIGNoZWNrIGNvbmZpZ3VyYXRpb24gZnJvbSBjb250YWluZXIuXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVjaz86IGVjcy5IZWFsdGhDaGVjaztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYXJnYXRlVGFza0RlZmluaXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGNwdSB1bml0cyB1c2VkIGJ5IHRoZSB0YXNrLiBGb3IgdGFza3MgdXNpbmcgdGhlIEZhcmdhdGUgbGF1bmNoIHR5cGUsXG4gICAqIHRoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHlvdSBtdXN0IHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXMsXG4gICAqIHdoaWNoIGRldGVybWluZXMgeW91ciByYW5nZSBvZiB2YWxpZCB2YWx1ZXMgZm9yIHRoZSBtZW1vcnkgcGFyYW1ldGVyOlxuICAgKlxuICAgKiAyNTYgKC4yNSB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiA1MTIgKDAuNSBHQiksIDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKVxuICAgKlxuICAgKiA1MTIgKC41IHZDUFUpIC0gQXZhaWxhYmxlIG1lbW9yeSB2YWx1ZXM6IDEwMjQgKDEgR0IpLCAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpXG4gICAqXG4gICAqIDEwMjQgKDEgdkNQVSkgLSBBdmFpbGFibGUgbWVtb3J5IHZhbHVlczogMjA0OCAoMiBHQiksIDMwNzIgKDMgR0IpLCA0MDk2ICg0IEdCKSwgNTEyMCAoNSBHQiksIDYxNDQgKDYgR0IpLCA3MTY4ICg3IEdCKSwgODE5MiAoOCBHQilcbiAgICpcbiAgICogMjA0OCAoMiB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDQwOTYgKDQgR0IpIGFuZCAxNjM4NCAoMTYgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcbiAgICpcbiAgICogNDA5NiAoNCB2Q1BVKSAtIEF2YWlsYWJsZSBtZW1vcnkgdmFsdWVzOiBCZXR3ZWVuIDgxOTIgKDggR0IpIGFuZCAzMDcyMCAoMzAgR0IpIGluIGluY3JlbWVudHMgb2YgMTAyNCAoMSBHQilcbiAgICpcbiAgICogQGRlZmF1bHQgNTEyXG4gICAqL1xuICByZWFkb25seSBjcHU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCAoaW4gTWlCKSBvZiBtZW1vcnkgdXNlZCBieSB0aGUgdGFzay4gRm9yIHRhc2tzIHVzaW5nIHRoZSBGYXJnYXRlIGxhdW5jaCB0eXBlLFxuICAgKiB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCB5b3UgbXVzdCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzLCB3aGljaCBkZXRlcm1pbmVzIHlvdXIgcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzIGZvciB0aGUgY3B1IHBhcmFtZXRlcjpcbiAgICpcbiAgICogNTEyICgwLjUgR0IpLCAxMDI0ICgxIEdCKSwgMjA0OCAoMiBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogMjU2ICguMjUgdkNQVSlcbiAgICpcbiAgICogMTAyNCAoMSBHQiksIDIwNDggKDIgR0IpLCAzMDcyICgzIEdCKSwgNDA5NiAoNCBHQikgLSBBdmFpbGFibGUgY3B1IHZhbHVlczogNTEyICguNSB2Q1BVKVxuICAgKlxuICAgKiAyMDQ4ICgyIEdCKSwgMzA3MiAoMyBHQiksIDQwOTYgKDQgR0IpLCA1MTIwICg1IEdCKSwgNjE0NCAoNiBHQiksIDcxNjggKDcgR0IpLCA4MTkyICg4IEdCKSAtIEF2YWlsYWJsZSBjcHUgdmFsdWVzOiAxMDI0ICgxIHZDUFUpXG4gICAqXG4gICAqIEJldHdlZW4gNDA5NiAoNCBHQikgYW5kIDE2Mzg0ICgxNiBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKSAtIEF2YWlsYWJsZSBjcHUgdmFsdWVzOiAyMDQ4ICgyIHZDUFUpXG4gICAqXG4gICAqIEJldHdlZW4gODE5MiAoOCBHQikgYW5kIDMwNzIwICgzMCBHQikgaW4gaW5jcmVtZW50cyBvZiAxMDI0ICgxIEdCKSAtIEF2YWlsYWJsZSBjcHUgdmFsdWVzOiA0MDk2ICg0IHZDUFUpXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMjRcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlc2lyZWQgY291bnQgb2YgcnVubmluZyB0YXNrc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFdoZW4gY3JlYXRpbmcgdGhlIHNlcnZpY2UsIGRlZmF1bHQgaXMgMTsgd2hlbiB1cGRhdGluZyB0aGUgc2VydmljZSwgZGVmYXVsdCB1c2VzXG4gICAqIHRoZSBjdXJyZW50IHRhc2sgbnVtYmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzaXJlZENvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW5nIHN5c3RlbSB0aGF0IHlvdXIgdGFzayBkZWZpbml0aW9ucyBhcmUgcnVubmluZyBvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2luZyBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYIGFuZCBlY3MuQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZVBsYXRmb3JtPzogZWNzLlJ1bnRpbWVQbGF0Zm9ybTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5lclJ1bGUge1xuICByZWFkb25seSBwcmlvcml0eTogbnVtYmVyO1xuXG4gIHJlYWRvbmx5IGNvbmRpdGlvbnM6IGVsYnYyLkxpc3RlbmVyQ29uZGl0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBMaXN0ZW5lciBmb3IgYW4gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXI6IGVsYnYyLklBcHBsaWNhdGlvbkxpc3RlbmVyO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBwYXRoIHBhdHRlcm5zIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGUgcmVxdWVzdCBVUkwuXG4gICAqIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBzdHJpbmcgaXMgMTI4IGNoYXJhY3RlcnMuXG4gICAqIFRoZSBjb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLlxuICAgKiBUaGUgZm9sbG93aW5nIHdpbGRjYXJkIGNoYXJhY3RlcnMgYXJlIHN1cHBvcnRlZDogKiAobWF0Y2hlcyAwIG9yIG1vcmUgY2hhcmFjdGVycykgYW5kID8gKG1hdGNoZXMgZXhhY3RseSAxIGNoYXJhY3RlcikuXG4gICAqXG4gICAqIFVwZGF0ZSByZXF1aXJlczogTm8gaW50ZXJydXB0aW9uXG4gICAqL1xuICByZWFkb25seSBsaXN0ZW5lclJ1bGVzOiBMaXN0ZW5lclJ1bGVbXTtcblxuICAvKipcbiAgICogIEhlYWx0aCBjaGVjayBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhbHRoQ2hlY2s6IGVsYnYyLkhlYWx0aENoZWNrO1xuXG4gIC8qKlxuICAgKiAgSGVhbHRoIGNoZWNrIGdyYWNlIHBlcmlvZC5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHRpbWUgcGVyaW9kIGR1cmluZyB3aGljaCB0aGUgbG9hZCBiYWxhbmNlciBzZW5kcyBhIG5ld2x5IHJlZ2lzdGVyZWQgdGFyZ2V0IGEgbGluZWFybHkgaW5jcmVhc2luZyBzaGFyZSBvZiB0aGUgdHJhZmZpYyB0byB0aGUgdGFyZ2V0IGdyb3VwLlxuXG4gICAqVGhlIHJhbmdlIGlzIDMwLTkwMCBzZWNvbmRzICgxNSBtaW51dGVzKS5cblxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgKi9cbiAgcmVhZG9ubHkgc2xvd1N0YXJ0PzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgZm9yIEVsYXN0aWMgTG9hZCBCYWxhbmNpbmcgdG8gd2FpdCBiZWZvcmUgZGVyZWdpc3RlcmluZyBhIHRhcmdldC5cblxuICAgKiBUaGUgcmFuZ2UgaXMgMC0zNjAwIHNlY29uZHMuXG5cbiAgICogQGRlZmF1bHQgNVxuICAqL1xuICByZWFkb25seSBkZXJlZ2lzdHJhdGlvbkRlbGF5PzogY2RrLkR1cmF0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dJbnRlZ3JhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBDUFUgdW5pdHMgdG8gcmVzZXJ2ZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSA2NFxuICAgKi9cbiAgcmVhZG9ubHkgY3B1PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IChpbiBNaUIpIG9mIG1lbW9yeSB0byBwcmVzZW50IHRvIHRoZSBjb250YWluZXIuXG4gICAqXG4gICAqIElmIHlvdXIgY29udGFpbmVyIGF0dGVtcHRzIHRvIGV4Y2VlZCB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgdGhlIGNvbnRhaW5lclxuICAgKiBpcyB0ZXJtaW5hdGVkLlxuICAgKlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgbWVtb3J5TGltaXRNaUIgYW5kIG1lbW9yeVJlc2VydmF0aW9uTWlCIGlzIHJlcXVpcmVkIGZvciBub24tRmFyZ2F0ZSBzZXJ2aWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxMjhcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nZ2luZyBtb2RlIGZvciB0aGUgc2VydmljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2luZyB0aGUgRGF0YWRvZyBsb2cgZm9yd2FyZGVyIGxhbWJkYSBwcm92aWRlZCBieSB0aGUgZGF0YWRvZy1pbnRlZ3JhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdNb2RlRm9yU2VydmljZT86IERhdGFEb2dMb2dnaW5nTW9kZTtcblxuICAvKipcbiAgICogVGhlIGxvZ2dpbmcgbW9kZSBmb3IgdGhlIERhdGFkb2cgYWdlbnQgc2lkZWNhci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBsb2dzIGluIERhdGFkb2csIENsb3Vkd2F0Y2ggb25seS5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50PzogRGF0YURvZ0xvZ2dpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBHRVQgZW5kcG9pbnRzIHRvIGlnbm9yZSBpbiBEYXRhZG9nJ3MgQVBNIG92ZXJ2aWV3LiBUaGlzIGlzIHVzZWZ1bCB0byBmaWx0ZXIgb3V0IGFsbCBoZWFsdGggY2hlY2sgY2FsbHMuXG5cbiAgICAqIEBkZWZhdWx0IC0gTm8gZW5kcG9pbnRzIGFyZSBpZ25vcmVkLlxuICAgICovXG4gIHJlYWRvbmx5IGFwbUdldEVuZHBvaW50c1RvSWdub3JlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBpZiB0aGUgRGF0YWRvZyBhZ2VudCBzaWRlY2FyIGlzIG1hcmtlZCBhcyBlc3NlbnRpYWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ29uZmlndXJlcyB0aGUgZG9ja2VyIGltYWdlIHRhZyBmb3IgZGF0YWRvZyBzaWRlY2FyXG4gICAqIEBkZWZhdWx0IC0gJ2xhdGVzdCdcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlY2FyVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgYWRkaXRpb25hbCB0YWdzLCB3aGljaCBhcmUgYXBwZW5kZWQgdG8gdGhlIGRlZmF1bHRzLFxuICAgKiBXaGVuIHlvdSBkZWZpbmUgY3VzdG9tIHRhZ3Mgd2Ugd291bGQgYmUgZ2xhZCBpZiB5b3UgY29udGFjdCB1cy5cbiAgICogV2Ugd291bGQgbGlrZSB0byBsZWFybiBhYm91dCB5b3VyIHVzZSBjYXNlcy5cbiAgICpcbiAgICogRGVmYXVsdCB0YWdzIGFyZSBub3QgYWxsb3dlZCB0byBiZSBvdmVycmlkZGVuIVxuICAgKlxuICAgKiBEZWZhdWx0cyBhcmU6XG4gICAqICogZW52OiBTZXQgdG8gUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcyNzdGFnZSBwcm9wXG4gICAqICogc2VydmljZTogU2V0IHRvIFJpb0ZhcmdhdGVTZXJ2aWNlUHJvcHMjc2VydmljZU5hbWUgcHJvcFxuICAgKiAqIHZlcnNpb246IFNldCB0byBSaW9GYXJnYXRlU2VydmljZVByb3BzI3ZlcnNpb24gcHJvcFxuICAgKiAqIGFjY291bnRfaWQ6JHthY2NvdW50SUR9XG4gICAqICogYWNjb3VudF9uYW1lOiR7YWNjb3VudE5hbWV9XG4gICAqICogcmVnaW9uOiR7QVdTUmVnaW9ufVxuICAgKiAqIHRlYW06JHt0ZWFtTmFtZSBmcm9tIHNzbSBwYXJhbSAvY29uZmlnL3RlYW0vbmFtZX1cbiAgICogKiB0ZWFtX2lkZW50aWZpZXI6JHt0ZWFtSWRlbnRpZmllciBmcm9tIHNzbSBwYXJhbSAvY29uZmlnL3RlYW0vaWRlbnRpZmllcn1cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGVudW0gRGF0YURvZ0xvZ2dpbmdNb2RlIHtcbiAgLyoqXG4gICAqIEZvcndhcmQgbG9ncyBkaXJlY3RseSB0byBEYXRhZG9nIHVzaW5nIEFXUyBGaXJlTGVucyBhcyBsb2cgcm91dGVyLFxuICAgKiBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2Vjc19mYXJnYXRlLz90YWI9Zmx1ZW50Yml0YW5kZmlyZWxlbnMjbG9nLWNvbGxlY3Rpb24uXG4gICAqL1xuICBBV1NfRklSRV9MRU5TLFxuXG4gIC8qKlxuICAgKiBTdG9yZSBsb2dzIGluIEFXUyBDbG91ZHdhdGNoIGFuZCB1c2UgdGhlIERhdGFkb2cgbG9nIGZvcndhcmRlciBsYW1iZGEgdG8gZm9yd2FyZCB0aGUgbG9ncyB0byBEYXRhZG9nLFxuICAgKiBzZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2Vjc19mYXJnYXRlLz90YWI9bG9nZHJpdmVyI2xvZy1jb2xsZWN0aW9uLlxuICAgKi9cbiAgRk9SV0FSREVSX0xBTUJEQSxcblxuICAvKipcbiAgICogT25seSBsb2cgdG8gQVdTIENsb3Vkd2F0Y2ggd2l0aG91dCBmb3J3YXJkaW5nIHRoZSBsb2dzIHRvIERhdGFkb2cuXG4gICAqL1xuICBOT05FLFxufVxuXG5leHBvcnQgY2xhc3MgUmlvRmFyZ2F0ZVNlcnZpY2UgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCBpbXBsZW1lbnRzIGVjMi5JQ29ubmVjdGFibGUge1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEREX0VOVl9ERU5ZX0xJU1QgPSBbXG4gICAgJ0REX0VOVicsXG4gICAgJ0REX1RBR1MnLFxuICAgICdERF9TRVJWSUNFJyxcbiAgICAnRERfVkVSU0lPTicsXG4gICAgJ0REX0xPR1NfSU5KRUNUSU9OJyxcbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERF9UQUdfREVOWV9MSVNUID0gW1xuICAgICdlbnYnLFxuICAgICdzZXJ2aWNlJyxcbiAgICAndmVyc2lvbicsXG4gICAgJ2FjY291bnRfaWQnLFxuICAgICdhY2NvdW50X25hbWUnLFxuICAgICdyZWdpb24nLFxuICAgICd0ZWFtJyxcbiAgICAndGVhbV9pZGVudGlmaWVyJyxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfQVBNX0dFVF9FTkRQT0lOVFNfVE9fSUdOT1JFOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX0NQVSA9IDY0O1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX01FTU9SWV9MSU1JVF9NSUIgPSAxMjg7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0xPR0dJTkdfTU9ERV9GT1JfU0VSVklDRSA9IERhdGFEb2dMb2dnaW5nTW9kZS5GT1JXQVJERVJfTEFNQkRBO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9EQVRBRE9HX1NJREVDQVIgPSBEYXRhRG9nTG9nZ2luZ01vZGUuTk9ORTtcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0RFUkVHSVNUUkFUSU9OX0RFTEFZID0gY2RrLkR1cmF0aW9uLnNlY29uZHMoNSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9TTE9XX1NUQVJUID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFUQURPR19TSURFQ0FSX1RBRyA9ICdsYXRlc3QnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgTE9HX1JPVVRFUl9DUFUgPSA2NDtcbiAgcHJpdmF0ZSByZWFkb25seSBMT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIgPSA2NDtcblxuICByZWFkb25seSBzZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGRhdGFkb2dTaWRlQ2FyQ29udGFpbmVyRGVmaW5pdGlvbjogZWNzLkNvbnRhaW5lckRlZmluaXRpb247XG4gIHJlYWRvbmx5IGxvZ1JvdXRlckNvbnRhaW5lckRlZmluaXRpb24/OiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbjtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb247XG5cbiAgcmVhZG9ubHkgY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucztcbiAgcmVhZG9ubHkgc2VydmljZTogZWNzLkZhcmdhdGVTZXJ2aWNlO1xuICByZWFkb25seSB0YXJnZXRHcm91cDogZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cHx1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmlvRmFyZ2F0ZVNlcnZpY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLFxuICAgICAgdnBjLFxuICAgICAgY2x1c3RlcixcbiAgICAgIGZhcmdhdGVPcHRpb25zLFxuICAgICAgZGF0YWRvZ09wdGlvbnMsXG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24sXG4gICAgICBzdGFnZSxcbiAgICAgIHZlcnNpb24sXG4gICAgICBmcmFtZXdvcmtzLFxuICAgIH0gPSBwcm9wcztcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yKFxuICAgICAgUmlvRmFyZ2F0ZVNlcnZpY2UuRERfRU5WX0RFTllfTElTVCxcbiAgICAgIHByb3BzLmNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uZW52aXJvbm1lbnQsXG4gICAgICBpdCA9PiBgRW52aXJvbm1lbnQgJHtpdH0gaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0LiBUaGlzIHZhbHVlIHdpbGwgYmUgaW5mZXJyZWQgZnJvbSB0aGUgYWNjb3VudCBvciBvdGhlciBwcm9wZXJ0aWVzLmAsXG4gICAgKSk7XG4gICAgdGhpcy5ub2RlLmFkZFZhbGlkYXRpb24obmV3IERlbnlMaXN0ZWRLZXlWYWxpZGF0b3IoXG4gICAgICBSaW9GYXJnYXRlU2VydmljZS5ERF9UQUdfREVOWV9MSVNULFxuICAgICAgcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgaXQgPT4gYFRhZyAke2l0fSBpcyBub3QgYWxsb3dlZCB0byBiZSBzZXQuIFRoaXMgdmFsdWUgd2lsbCBiZSBpbmZlcnJlZCBmcm9tIHRoZSBhY2NvdW50IG9yIG90aGVyIHByb3BlcnRpZXMuYCxcbiAgICApKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKG5ldyBDbHVzdGVyVnBjVmFsaWRhdG9yKFxuICAgICAgcHJvcHMudnBjLFxuICAgICAgcHJvcHMuY2x1c3RlcixcbiAgICApKTtcblxuICAgIGNvbnN0IGZhcmdhdGVDbHVzdGVyID0gY2x1c3RlciA/PyBuZXcgZWNzLkNsdXN0ZXIodGhpcywgJ0NsdXN0ZXInLCB7XG4gICAgICB2cGM6IHZwYyxcbiAgICB9KTtcbiAgICB0aGlzLnRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5GYXJnYXRlVGFza0RlZmluaXRpb24odGhpcywgJ1Rhc2tEZWZpbml0aW9uJywge1xuICAgICAgY3B1OiBmYXJnYXRlT3B0aW9ucy5jcHUsXG4gICAgICBtZW1vcnlMaW1pdE1pQjogZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIsXG4gICAgICBydW50aW1lUGxhdGZvcm06IHtcbiAgICAgICAgY3B1QXJjaGl0ZWN0dXJlOiBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/LmNwdUFyY2hpdGVjdHVyZSA/PyBlY3MuQ3B1QXJjaGl0ZWN0dXJlLlg4Nl82NCxcbiAgICAgICAgb3BlcmF0aW5nU3lzdGVtRmFtaWx5OiBmYXJnYXRlT3B0aW9ucy5ydW50aW1lUGxhdGZvcm0/Lm9wZXJhdGluZ1N5c3RlbUZhbWlseSA/PyBlY3MuT3BlcmF0aW5nU3lzdGVtRmFtaWx5LkxJTlVYLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCBhY2NvdW50TmFtZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgJ0FjY291bnROYW1lJywgJy9jb25maWcvYWNjb3VudC9uYW1lJykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbU5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtTmFtZScsICcvY29uZmlnL3RlYW0vbmFtZScpLnN0cmluZ1ZhbHVlO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnVGVhbUlkZW50aWZpZXInLCAnL2NvbmZpZy90ZWFtL2lkZW50aWZpZXInKS5zdHJpbmdWYWx1ZTtcblxuICAgIGNvbnN0IGRhdGFkb2dTaXRlID0gc3NtLlN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnRGF0YWRvZ1NpdGUnLCAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9zaXRlJykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgZGF0YWRvZ0FwaUtleVBhcmFtZXRlciA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUodGhpcywgJ0RhdGFkb2dBcGlLZXknLCAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9hcGkta2V5Jyk7XG5cbiAgICBjb25zdCBkYXRhZG9nU2lkZWNhckNwdSA9IGRhdGFkb2dPcHRpb25zPy5jcHUgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9DUFU7XG4gICAgY29uc3QgZGF0YWRvZ1NpZGVjYXJNZW1vcnlNaUIgPSBkYXRhZG9nT3B0aW9ucz8ubWVtb3J5TGltaXRNaUIgPz8gdGhpcy5ERUZBVUxUX0RBVEFET0dfU0lERUNBUl9NRU1PUllfTElNSVRfTUlCO1xuICAgIGNvbnN0IGRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID0gZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyRXNzZW50aWFsID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfRVNTRU5USUFMO1xuXG4gICAgY29uc3QgbG9nZ2luZ01vZGVGb3JTZXJ2aWNlID0gZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yU2VydmljZSA/PyB0aGlzLkRFRkFVTFRfTE9HR0lOR19NT0RFX0ZPUl9TRVJWSUNFO1xuICAgIGNvbnN0IGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID0gZGF0YWRvZ09wdGlvbnM/LmxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID8/IHRoaXMuREVGQVVMVF9MT0dHSU5HX01PREVfRk9SX0RBVEFET0dfU0lERUNBUjtcbiAgICBjb25zdCBmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkID1cbiAgICAgIGxvZ2dpbmdNb2RlRm9yU2VydmljZSA9PT0gRGF0YURvZ0xvZ2dpbmdNb2RlLkFXU19GSVJFX0xFTlMgfHxcbiAgICAgIGxvZ2dpbmdNb2RlRm9yRGF0YWRvZ0FnZW50ID09PSBEYXRhRG9nTG9nZ2luZ01vZGUuQVdTX0ZJUkVfTEVOUztcblxuICAgIGxldCBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHM7XG4gICAgbGV0IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQjtcblxuICAgIGlmIChmaXJlTGVuc0xvZ1JvdXRlclJlcXVpcmVkKSB7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyQ3B1VW5pdHMgPSBmYXJnYXRlT3B0aW9ucy5jcHUgLSBkYXRhZG9nU2lkZWNhckNwdSAtIHRoaXMuTE9HX1JPVVRFUl9DUFU7XG4gICAgICBzZXJ2aWNlQ29udGFpbmVyTWVtb3J5TGltaXRNaUIgPSBmYXJnYXRlT3B0aW9ucy5tZW1vcnlMaW1pdE1pQiAtIGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCIC0gdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcnZpY2VDb250YWluZXJDcHVVbml0cyA9IGZhcmdhdGVPcHRpb25zLmNwdSAtIGRhdGFkb2dTaWRlY2FyQ3B1O1xuICAgICAgc2VydmljZUNvbnRhaW5lck1lbW9yeUxpbWl0TWlCID0gZmFyZ2F0ZU9wdGlvbnMubWVtb3J5TGltaXRNaUIgLSBkYXRhZG9nU2lkZWNhck1lbW9yeU1pQjtcbiAgICB9XG4gICAgdGhpcy5zZXJ2aWNlQ29udGFpbmVyRGVmaW5pdGlvbiA9IHRoaXMudGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKHNlcnZpY2VOYW1lLCB7XG4gICAgICBpbWFnZTogY29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbi5pbWFnZSxcbiAgICAgIGNwdTogc2VydmljZUNvbnRhaW5lckNwdVVuaXRzLFxuICAgICAgbWVtb3J5TGltaXRNaUI6IHNlcnZpY2VDb250YWluZXJNZW1vcnlMaW1pdE1pQixcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLmRhdGFkb2cuZ2V0RmFyZ2F0ZUNvbnRhaW5lckVudmlyb25tZW50VmFyaWFibGVzKHtcbiAgICAgICAgICBzY29wZTogdGhpcyxcbiAgICAgICAgICBzdGFnZSxcbiAgICAgICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgIGFjY291bnROYW1lLFxuICAgICAgICAgIHRlYW1OYW1lLFxuICAgICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICAgIGFkZGl0aW9uYWxUYWdzOiBkYXRhZG9nT3B0aW9ucz8uYWRkaXRpb25hbFRhZ3MsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi5jb250YWluZXJEZWZpbml0aW9uT3B0aW9uLmVudmlyb25tZW50LFxuICAgICAgfSxcbiAgICAgIGRvY2tlckxhYmVsczoge1xuICAgICAgICAuLi5kYXRhZG9nLmdldEZhcmdhdGVEb2NrZXJMYWJlbHMoeyBzdGFnZSwgc2VydmljZU5hbWUsIHZlcnNpb24gfSksXG4gICAgICB9LFxuICAgICAgaGVhbHRoQ2hlY2s6IGNvbnRhaW5lckRlZmluaXRpb25PcHRpb24uaGVhbHRoQ2hlY2ssXG4gICAgICBsb2dnaW5nOiBkYXRhZG9nLnNldHVwTG9nZ2luZyh7XG4gICAgICAgIHNjb3BlLFxuICAgICAgICBhY2NvdW50TmFtZSxcbiAgICAgICAgdGVhbU5hbWUsXG4gICAgICAgIHRlYW1JZGVudGlmaWVyLFxuICAgICAgICBzdGFnZSxcbiAgICAgICAgc2VydmljZU5hbWUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JTZXJ2aWNlLFxuICAgICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgICAgY29udGFpbmVyVHlwZTogJ3NlcnZpY2UnLFxuICAgICAgICBhZGRpdGlvbmFsVGFnczogZGF0YWRvZ09wdGlvbnM/LmFkZGl0aW9uYWxUYWdzLFxuICAgICAgfSksXG4gICAgICBzZWNyZXRzOiBjb250YWluZXJEZWZpbml0aW9uT3B0aW9uLnNlY3JldHMsXG4gICAgfSk7XG5cbiAgICBpZiAoZnJhbWV3b3Jrcz8uaW5jbHVkZXMoRnJhbWV3b3JrLlNQUklORykpIHtcbiAgICAgIFNwcmluZy5hbGxvd1BhcmFtZXRlclN0b3JlQWNjZXNzRm9yU3ByaW5nQ2xvdWRBd3ModGhpcywgc2VydmljZU5hbWUsIHRoaXMudGFza0RlZmluaXRpb24udGFza1JvbGUpO1xuICAgICAgU3ByaW5nLmFsbG93U2VjcmV0c01hbmFnZXJBY2Nlc3NGb3JTcHJpbmdDbG91ZEF3cyh0aGlzLCBzZXJ2aWNlTmFtZSwgdGhpcy50YXNrRGVmaW5pdGlvbi50YXNrUm9sZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpcmVMZW5zTG9nUm91dGVyUmVxdWlyZWQpIHtcbiAgICAgIHRoaXMubG9nUm91dGVyQ29udGFpbmVyRGVmaW5pdGlvbiA9IGRhdGFkb2cuYWRkRmlyZUxlbnNMb2dSb3V0ZXIoe1xuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgICAgY3B1OiB0aGlzLkxPR19ST1VURVJfQ1BVLFxuICAgICAgICBtZW1vcnlMaW1pdE1pQjogdGhpcy5MT0dfUk9VVEVSX01FTU9SWV9MSU1JVF9NSUIsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5kYXRhZG9nU2lkZUNhckNvbnRhaW5lckRlZmluaXRpb24gPSBkYXRhZG9nLmFkZERhdGFkb2dTaWRlY2FyKHtcbiAgICAgIHNjb3BlLFxuICAgICAgdGFza0RlZmluaXRpb246IHRoaXMudGFza0RlZmluaXRpb24sXG4gICAgICBhY2NvdW50TmFtZSxcbiAgICAgIHRlYW1OYW1lLFxuICAgICAgdGVhbUlkZW50aWZpZXIsXG4gICAgICBzdGFnZSxcbiAgICAgIHNlcnZpY2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRhdGFkb2dBcGlLZXlQYXJhbWV0ZXIsXG4gICAgICBkYXRhZG9nU2l0ZSxcbiAgICAgIGRhdGFkb2dMb2dnaW5nTW9kZTogbG9nZ2luZ01vZGVGb3JEYXRhZG9nQWdlbnQsXG4gICAgICBhcG1HZXRSZXNvdXJjZXNUb0lnbm9yZTogZGF0YWRvZ09wdGlvbnM/LmFwbUdldEVuZHBvaW50c1RvSWdub3JlID8/IHRoaXMuREVGQVVMVF9BUE1fR0VUX0VORFBPSU5UU19UT19JR05PUkUsXG4gICAgICBjcHU6IGRhdGFkb2dTaWRlY2FyQ3B1LFxuICAgICAgbWVtb3J5TGltaXRNaUI6IGRhdGFkb2dTaWRlY2FyTWVtb3J5TWlCLFxuICAgICAgZXNzZW50aWFsOiBkYXRhZG9nU2lkZWNhckVzc2VudGlhbCxcbiAgICAgIGNvbnRhaW5lclRhZzogcHJvcHMuZGF0YWRvZ09wdGlvbnM/LmRhdGFkb2dTaWRlY2FyVGFnID8/IHRoaXMuREVGQVVMVF9EQVRBRE9HX1NJREVDQVJfVEFHLCAvLyBUaGVzZSBhcmUgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLFxuICAgICAgYWRkaXRpb25hbFRhZ3M6IGRhdGFkb2dPcHRpb25zPy5hZGRpdGlvbmFsVGFncyxcbiAgICB9KTtcblxuICAgIGRhdGFkb2cuZW5zdXJlTG9nZ2luZ0FuZE1vbml0b3JpbmdBcmVSZWFkeUJlZm9yZVNlcnZpY2VTdGFydHModGhpcyk7XG5cbiAgICBjb25zdCBsb2FkQmFsYW5jZXJPcHRpb25zRm9yRmFyZ2F0ZVNlcnZpY2UgPSBsb2FkQmFsYW5jZXJPcHRpb25zXG4gICAgICA/IHsgaGVhbHRoQ2hlY2tHcmFjZVBlcmlvZDogbG9hZEJhbGFuY2VyT3B0aW9ucy5oZWFsdGhDaGVja0dyYWNlUGVyaW9kIH1cbiAgICAgIDoge307XG5cbiAgICB0aGlzLnNlcnZpY2UgPSBuZXcgZWNzLkZhcmdhdGVTZXJ2aWNlKHRoaXMsICdTZXJ2aWNlJywge1xuICAgICAgY2x1c3RlcjogZmFyZ2F0ZUNsdXN0ZXIsXG4gICAgICB0YXNrRGVmaW5pdGlvbjogdGhpcy50YXNrRGVmaW5pdGlvbixcbiAgICAgIGNpcmN1aXRCcmVha2VyOiB7IHJvbGxiYWNrOiB0cnVlIH0sXG4gICAgICBtYXhIZWFsdGh5UGVyY2VudDogMjAwLFxuICAgICAgbWluSGVhbHRoeVBlcmNlbnQ6IDEwMCxcbiAgICAgIGRlc2lyZWRDb3VudDogZmFyZ2F0ZU9wdGlvbnM/LmRlc2lyZWRDb3VudCxcbiAgICAgIC4uLmxvYWRCYWxhbmNlck9wdGlvbnNGb3JGYXJnYXRlU2VydmljZSxcbiAgICAgIHByb3BhZ2F0ZVRhZ3M6IGVjcy5Qcm9wYWdhdGVkVGFnU291cmNlLlNFUlZJQ0UsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5zZXJ2aWNlLmNvbm5lY3Rpb25zO1xuXG4gICAgaWYgKGxvYWRCYWxhbmNlck9wdGlvbnMgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY29udGFpbmVyUG9ydCA9IDQ0MztcbiAgICAgIHRoaXMuc2VydmljZUNvbnRhaW5lckRlZmluaXRpb24uYWRkUG9ydE1hcHBpbmdzKHtcbiAgICAgICAgY29udGFpbmVyUG9ydDogY29udGFpbmVyUG9ydCxcbiAgICAgICAgcHJvdG9jb2w6IGVjcy5Qcm90b2NvbC5UQ1AsXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFyZ2V0R3JvdXAgPSBuZXcgZWxidjIuQXBwbGljYXRpb25UYXJnZXRHcm91cCh0aGlzLCAnVGFyZ2V0R3JvdXAnLCB7XG4gICAgICAgIHZwYzogdnBjLFxuICAgICAgICBwb3J0OiBjb250YWluZXJQb3J0LFxuICAgICAgICBwcm90b2NvbDogZWxidjIuQXBwbGljYXRpb25Qcm90b2NvbC5IVFRQUyxcbiAgICAgICAgdGFyZ2V0VHlwZTogZWxidjIuVGFyZ2V0VHlwZS5JUCxcbiAgICAgICAgdGFyZ2V0czogW3RoaXMuc2VydmljZV0sXG4gICAgICAgIGhlYWx0aENoZWNrOiBsb2FkQmFsYW5jZXJPcHRpb25zLmhlYWx0aENoZWNrLFxuICAgICAgICBzbG93U3RhcnQ6IHByb3BzLmxvYWRCYWxhbmNlck9wdGlvbnM/LnNsb3dTdGFydCA/PyB0aGlzLkRFRkFVTFRfU0xPV19TVEFSVCxcbiAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogcHJvcHMubG9hZEJhbGFuY2VyT3B0aW9ucz8uZGVyZWdpc3RyYXRpb25EZWxheSA/PyB0aGlzLkRFRkFVTFRfREVSRUdJU1RSQVRJT05fREVMQVksXG4gICAgICB9KTtcblxuICAgICAgbG9hZEJhbGFuY2VyT3B0aW9ucy5saXN0ZW5lclJ1bGVzLmZvckVhY2goKHsgcHJpb3JpdHksIGNvbmRpdGlvbnMgfSkgPT4ge1xuICAgICAgICBsb2FkQmFsYW5jZXJPcHRpb25zLmxpc3RlbmVyLmFkZFRhcmdldEdyb3VwcyhgUHJpb3JpdHkke3ByaW9yaXR5fUxpc3RlbmVyUnVsZWAsIHtcbiAgICAgICAgICB0YXJnZXRHcm91cHM6IFt0aGlzLnRhcmdldEdyb3VwIGFzIGVsYnYyLkFwcGxpY2F0aW9uVGFyZ2V0R3JvdXBdLFxuICAgICAgICAgIHByaW9yaXR5OiBwcmlvcml0eSxcbiAgICAgICAgICBjb25kaXRpb25zOiBjb25kaXRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBEZW55TGlzdGVkS2V5VmFsaWRhdG9yIGltcGxlbWVudHMgY29uc3RydWN0cy5JVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVueUxpc3Q6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGljdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VHZW5lcmF0b3I6IChrZXlOYW1lOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuZGljdCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLmRlbnlMaXN0LmZvckVhY2goa2V5TmFtZSA9PiB7XG4gICAgICBpZiAodGhpcy5kaWN0ICYmIGtleU5hbWUgaW4gdGhpcy5kaWN0KSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHRoaXMubWVzc2FnZUdlbmVyYXRvcihrZXlOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmNsYXNzIENsdXN0ZXJWcGNWYWxpZGF0b3IgaW1wbGVtZW50cyBjb25zdHJ1Y3RzLklWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2cGM6IGVjMi5JVnBjLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2x1c3Rlcj86IGVjcy5JQ2x1c3RlcixcbiAgKSB7fVxuXG4gIHZhbGlkYXRlKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAodGhpcy5jbHVzdGVyICYmIHRoaXMuY2x1c3Rlci52cGMudnBjSWQgIT09IHRoaXMudnBjLnZwY0lkKSB7XG4gICAgICByZXN1bHQucHVzaChgVGhlIFZQQyBwcm92aWRlZCBpbiB0aGUgY2x1c3RlciAoJHt0aGlzLmNsdXN0ZXIudnBjLm5vZGUuaWR9KSBNVVNUIG1hdGNoIHRoZSBWUEMgcHJvdmlkZWQgYXMgYXJndW1lbnQgKCR7dGhpcy52cGMubm9kZS5pZH0pLmApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -23,3 +23,4 @@ export * from './contributions/cop-frontend/cloudfront';
23
23
  export * from './contributions/team-transport-two/pipeline';
24
24
  export * from './contributions/team-claid/aws-backup-monitoring';
25
25
  export * from './contributions/team-claid/datadog-usage-monitoring';
26
+ export * from './backup';
package/lib/index.js CHANGED
@@ -35,4 +35,5 @@ __exportStar(require("./contributions/cop-frontend/cloudfront"), exports);
35
35
  __exportStar(require("./contributions/team-transport-two/pipeline"), exports);
36
36
  __exportStar(require("./contributions/team-claid/aws-backup-monitoring"), exports);
37
37
  __exportStar(require("./contributions/team-claid/datadog-usage-monitoring"), exports);
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLGtFQUFnRDtBQUNoRCwrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBRXRDLHFEQUFtQztBQUNuQyxzREFBb0M7QUFDcEMsb0RBQWtDO0FBRWxDLGdFQUE4QztBQUU5Qyx5RUFBdUQ7QUFDdkQsOEVBQTREO0FBRTVELDBDQUF3QjtBQUV4Qiw0Q0FBMEI7QUFFMUIsMEVBQXdEO0FBRXhELDhFQUE0RDtBQUU1RCxtRkFBaUU7QUFDakUsc0ZBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9hbGInO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9hc3BlY3QnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9lY3MnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9kb2NkYic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2R5bmFtb2RiJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvbGFtYmRhJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvdGFyZ2V0Z3JvdXAnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9kYXRhZG9nLW1ldHJpYy1hbGFybSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2RhdGFkb2ctbG9nLWFsYXJtJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvd2F0Y2hmdWwnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9tZXRyaWMtYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9yZHMnO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9jbG91ZGZyb250JztcblxuZXhwb3J0ICogZnJvbSAnLi9yaW8tbGFuZGluZy16b25lJztcbmV4cG9ydCAqIGZyb20gJy4vcmlvLWxvYWQtYmFsYW5jZXInO1xuZXhwb3J0ICogZnJvbSAnLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2ZhcmdhdGUvcmlvLWZhcmdhdGUtc2VydmljZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvcmlvLWJpdGJ1Y2tldC1zb3VyY2UtYWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUvcmlvLWJhY2t1cC1zZWNyZXRzLXJlc3RvcmUtc3RhZ2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2thZmthJztcblxuZXhwb3J0ICogZnJvbSAnLi9kYXRhZG9nJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL2NvcC1mcm9udGVuZC9jbG91ZGZyb250JztcblxuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy90ZWFtLWNsYWlkL2F3cy1iYWNrdXAtbW9uaXRvcmluZyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcnO1xuIl19
38
+ __exportStar(require("./backup"), exports);
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLG9EQUFrQztBQUNsQyxpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHNEQUFvQztBQUNwQyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLGtFQUFnRDtBQUNoRCwrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLDBEQUF3QztBQUN4QyxpREFBK0I7QUFDL0Isd0RBQXNDO0FBRXRDLHFEQUFtQztBQUNuQyxzREFBb0M7QUFDcEMsb0RBQWtDO0FBRWxDLGdFQUE4QztBQUU5Qyx5RUFBdUQ7QUFDdkQsOEVBQTREO0FBRTVELDBDQUF3QjtBQUV4Qiw0Q0FBMEI7QUFFMUIsMEVBQXdEO0FBRXhELDhFQUE0RDtBQUU1RCxtRkFBaUU7QUFDakUsc0ZBQW9FO0FBRXBFLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvYWxiJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvYXNwZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZWNzJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZG9jZGInO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9keW5hbW9kYic7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL2xhbWJkYSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL3RhcmdldGdyb3VwJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvZGF0YWRvZy1tZXRyaWMtYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi93YXRjaGZ1bC9kYXRhZG9nLWxvZy1hbGFybSc7XG5leHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsL3dhdGNoZnVsJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvbWV0cmljLWFsYXJtJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvcmRzJztcbmV4cG9ydCAqIGZyb20gJy4vd2F0Y2hmdWwvY2xvdWRmcm9udCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcmlvLWxhbmRpbmctem9uZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jpby1sb2FkLWJhbGFuY2VyJztcbmV4cG9ydCAqIGZyb20gJy4vcmlvLWNsYWlkb21ldGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9mYXJnYXRlL3Jpby1mYXJnYXRlLXNlcnZpY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3Jpby1iaXRidWNrZXQtc291cmNlLWFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lL3Jpby1iYWNrdXAtc2VjcmV0cy1yZXN0b3JlLXN0YWdlJztcblxuZXhwb3J0ICogZnJvbSAnLi9rYWZrYSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vZGF0YWRvZyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy9jb3AtZnJvbnRlbmQvY2xvdWRmcm9udCc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29udHJpYnV0aW9ucy90ZWFtLXRyYW5zcG9ydC10d28vcGlwZWxpbmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9hd3MtYmFja3VwLW1vbml0b3JpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250cmlidXRpb25zL3RlYW0tY2xhaWQvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nJztcblxuZXhwb3J0ICogZnJvbSAnLi9iYWNrdXAnOyJdfQ==
@@ -80,8 +80,7 @@ class KafkaEventSpecSource {
80
80
  return parsedYamlSpec;
81
81
  }
82
82
  static isKafkaEventSpecification(parsedYamlSpec) {
83
- var _c;
84
- return typeof parsedYamlSpec === 'object' && ((_c = parsedYamlSpec === null || parsedYamlSpec === void 0 ? void 0 : parsedYamlSpec.info) === null || _c === void 0 ? void 0 : _c['x-event']);
83
+ return typeof parsedYamlSpec === 'object' && parsedYamlSpec?.info?.['x-event'];
85
84
  }
86
85
  static determineEventNameFromSpecification(spec) {
87
86
  const eventNames = Object.keys(spec.info['x-event']);
@@ -103,4 +102,4 @@ class KafkaEventSpecSource {
103
102
  exports.KafkaEventSpecSource = KafkaEventSpecSource;
104
103
  _b = JSII_RTTI_SYMBOL_1;
105
104
  KafkaEventSpecSource[_b] = { fqn: "@rio-cloud/cdk-v2-constructs.KafkaEventSpecSource", version: "0.0.0" };
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Fma2EtZXZlbnQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rYWZrYS9rYWZrYS1ldmVudC1zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZDQUFvQztBQUNwQywyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELDJDQUF1QztBQUN2QyxnQ0FBZ0M7QUFNaEM7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQUMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQWtCO1lBQzVCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsTUFBTSxFQUFFLFNBQVM7WUFDakIsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSwrREFBK0Q7Z0JBQ3pFLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtnQkFDcEMsaUJBQWlCLEVBQUU7b0JBQ2pCLFNBQVMsRUFBRTt3QkFDVCxRQUFRLEVBQUUsUUFBUTt3QkFDbEIsV0FBVyxFQUFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87cUJBQ3BDO2lCQUNGO2FBQ0Y7WUFDRCxrQkFBa0IsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLHVEQUF1RCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsT0FBTyxDQUFDO1NBQ25JLENBQUM7UUFFRixNQUFNLHVCQUF1QixHQUFHLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUMvRSxRQUFRLEVBQUUsTUFBTTtZQUNoQixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDeEcsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLDZFQUE2RSxDQUFDLENBQUM7UUFDL0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUE1Qkgsd0NBNkJDOzs7QUFFRDs7Ozs7R0FLRztBQUNILE1BQWEsb0JBQW9CO0lBZ0QvQixZQUE0QixJQUE2QjtRQUE3QixTQUFJLEdBQUosSUFBSSxDQUF5QjtRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFqREQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFRLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNuRCxNQUFNLEtBQUssQ0FBQyxpRkFBaUYsQ0FBQyxDQUFDO1NBQ2hHO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxjQUFtQjs7UUFDMUQsT0FBTyxPQUFPLGNBQWMsS0FBSyxRQUFRLFdBQUksY0FBYyxhQUFkLGNBQWMsdUJBQWQsY0FBYyxDQUFFLElBQUksMENBQUcsU0FBUyxFQUFDLENBQUM7SUFDakYsQ0FBQztJQUVPLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxJQUE2QjtRQUM5RSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE1BQU0sS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDaEU7UUFDRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWdCO1FBQ2xELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVFEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXpESCxvREEwREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEthZmthRXZlbnRTcGVjUHJvcHMge1xuICByZWFkb25seSBzb3VyY2U6IEthZmthRXZlbnRTcGVjU291cmNlO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCB0byBwcm92aWRlIGFuIGV2ZW50IHNwZWNpZmljYXRpb24gZm9yIGEgS2Fma2EgdG9waWMgYW5kIHVwbG9hZCBpdCB0byB0aGUgY2VudHJhbCBldmVudCBzdG9yZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEthZmthRXZlbnRTcGVjIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEthZmthRXZlbnRTcGVjUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgYWN0aW9uOiBjci5Bd3NTZGtDYWxsID0ge1xuICAgICAgc2VydmljZTogJ1NOUycsXG4gICAgICBhY3Rpb246ICdwdWJsaXNoJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgVG9waWNBcm46ICdhcm46YXdzOnNuczpldS13ZXN0LTE6MTg2OTkzNzU3NzM0OmV2ZW50LXNwZWNpZmljYXRpb24tdXBsb2FkJyxcbiAgICAgICAgTWVzc2FnZTogcHJvcHMuc291cmNlLnRvU25zTWVzc2FnZSgpLFxuICAgICAgICBNZXNzYWdlQXR0cmlidXRlczoge1xuICAgICAgICAgIGFjY291bnRJZDoge1xuICAgICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgU3RyaW5nVmFsdWU6IFN0YWNrLm9mKHRoaXMpLmFjY291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihgYXJuOmF3czpzMzo6OmV2ZW50LXNwZWNpZmljYXRpb24tc3RvcmUtMTg2OTkzNzU3NzM0LyR7cHJvcHMuc291cmNlLmV2ZW50TmFtZX0ueWFtbGApLFxuICAgIH07XG5cbiAgICBjb25zdCBldmVudFNwZWNDdXN0b21SZXNvdXJjZSA9IG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCAnS2Fma2FFdmVudFNwZWMnLCB7XG4gICAgICBvbkNyZWF0ZTogYWN0aW9uLFxuICAgICAgb25VcGRhdGU6IGFjdGlvbixcbiAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVNka0NhbGxzKHsgcmVzb3VyY2VzOiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5BTllfUkVTT1VSQ0UgfSksXG4gICAgfSk7XG5cbiAgICBjb25zdCBrbXNLZXkgPSBrbXMuS2V5LmZyb21LZXlBcm4odGhpcywgJ2V2ZW50U3BlY1Nuc1RvcGljS2V5JywgJ2Fybjphd3M6a21zOmV1LXdlc3QtMToxODY5OTM3NTc3MzQ6a2V5LzFmNzJkZDU5LWYzMmQtNGQ1Mi05YjJiLTQ0N2RmODhiM2ZhMycpO1xuICAgIGttc0tleS5ncmFudEVuY3J5cHREZWNyeXB0KGV2ZW50U3BlY0N1c3RvbVJlc291cmNlKTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBwZXIgY2xhc3MgZm9yIHRoZSBldmVudCBzcGVjIGl0c2VsZiB0byBzdXBwb3J0IHByb3ZpZGluZyBpdCB2aWEgZmlsZSBvciBpbmxpbmUgc3RyaW5nLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9jb2xsYWJvcmF0aW9uLm1zaS5hdWRpLmNvbS9zdGFzaC9wcm9qZWN0cy9SU0VWVEJVL3JlcG9zL3RvcGljLWNyZWF0aW9uLWV4YW1wbGUgZm9yXG4gKiBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSB5YW1sIHNwZWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBLYWZrYUV2ZW50U3BlY1NvdXJjZSB7XG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSBhIEthZmthRXZlbnRTcGVjU291cmNlIGJ5IGxvYWRpbmcgc3BlYyBmcm9tIGEgKFVURi04IGVuY29kZWQpIHlhbWwgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIHRoZSBmaWxlbmFtZSBvZiB0aGUgZXZlbnQgc3BlY2lmaWNhdGlvbiBmaWxlLiBNdXN0IGVpdGhlciBiZSBhbiBhYnNvbHV0ZSBwYXRoIG9yIGEgcGF0aCByZWxhdGl2ZSB0byBDREsncyB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMgYSBLYWZrYUV2ZW50U3BlY1NvdXJjZVxuICAgKi9cbiAgc3RhdGljIGZyb21ZYW1sRmlsZShmaWxlbmFtZTogc3RyaW5nKTogS2Fma2FFdmVudFNwZWNTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21ZYW1sU3RyaW5nKGZzLnJlYWRGaWxlU3luYyhmaWxlbmFtZSwgJ3V0ZjgnKSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYSBLYWZrYUV2ZW50U3BlY1NvdXJjZSBmcm9tIGFuIGlubGluZSB5YW1sIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYXMgeWFtbCBmb3JtYXR0ZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIGEgS2Fma2FFdmVudFNwZWNTb3VyY2VcbiAgICovXG4gIHN0YXRpYyBmcm9tWWFtbFN0cmluZyhzcGVjOiBzdHJpbmcpOiBLYWZrYUV2ZW50U3BlY1NvdXJjZSB7XG4gICAgY29uc3QgcGFyc2VkU3BlYyA9IHRoaXMucGFyc2VZYW1sU3BlYyhzcGVjKTtcbiAgICByZXR1cm4gbmV3IEthZmthRXZlbnRTcGVjU291cmNlKHBhcnNlZFNwZWMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VZYW1sU3BlYyhzcGVjOiBzdHJpbmcpOiBLYWZrYUV2ZW50U3BlY2lmaWNhdGlvbiB7XG4gICAgY29uc3QgcGFyc2VkWWFtbFNwZWMgPSB5YW1sLmxvYWQoc3BlYykgYXMgYW55O1xuICAgIGlmICghdGhpcy5pc0thZmthRXZlbnRTcGVjaWZpY2F0aW9uKHBhcnNlZFlhbWxTcGVjKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGluZyBldmVudCBzcGVjIHRvIGJlIGRlc2NyaWJlIGFuIG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0eSBbaW5mby54LWV2ZW50XS4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZFlhbWxTcGVjO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNLYWZrYUV2ZW50U3BlY2lmaWNhdGlvbihwYXJzZWRZYW1sU3BlYzogYW55KTogcGFyc2VkWWFtbFNwZWMgaXMgS2Fma2FFdmVudFNwZWNpZmljYXRpb24ge1xuICAgIHJldHVybiB0eXBlb2YgcGFyc2VkWWFtbFNwZWMgPT09ICdvYmplY3QnICYmIHBhcnNlZFlhbWxTcGVjPy5pbmZvPy5bJ3gtZXZlbnQnXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRldGVybWluZUV2ZW50TmFtZUZyb21TcGVjaWZpY2F0aW9uKHNwZWM6IEthZmthRXZlbnRTcGVjaWZpY2F0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBldmVudE5hbWVzID0gT2JqZWN0LmtleXMoc3BlYy5pbmZvWyd4LWV2ZW50J10pO1xuICAgIGlmIChldmVudE5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGluZyBhdCBsZWFzdCBvbmUgZXZlbnQgYXQgW2luZm8ueC1ldmVudF0uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlbW92ZVlhbWxGaWxlRW5kaW5nKGV2ZW50TmFtZXNbMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVtb3ZlWWFtbEZpbGVFbmRpbmcoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpbGVuYW1lLnJlcGxhY2UoL1xcLnlhP21sJC8sICcnKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGV2ZW50TmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSBzcGVjOiBLYWZrYUV2ZW50U3BlY2lmaWNhdGlvbikge1xuICAgIHRoaXMuZXZlbnROYW1lID0gS2Fma2FFdmVudFNwZWNTb3VyY2UuZGV0ZXJtaW5lRXZlbnROYW1lRnJvbVNwZWNpZmljYXRpb24oc3BlYyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdGhlIG1lc3NhZ2UgYmFzZTY0IGVuY29kZWQgc3BlYyBhcyBleHBlY3RlZCBieSB0aGUgZXZlbnQgc3RvcmVcbiAgICovXG4gIHRvU25zTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh5YW1sLmR1bXAodGhpcy5zcGVjKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG59XG5cbi8vIFRoaXMgdHlwZSBpcyBub3QgZXhoYXVzdGl2ZSBidXQgb25seSByZWZsZWN0cyB0aGUgbWluaW11bSBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIHZhbGlkYXRlIHRoZSBldmVudCBzcGVjaWZpY2F0aW9uXG5pbnRlcmZhY2UgS2Fma2FFdmVudFNwZWNpZmljYXRpb24ge1xuICBpbmZvOiB7XG4gICAgJ3gtZXZlbnQnOiB7IFtldmVudE5hbWU6IHN0cmluZ106IGFueSB9W107XG4gIH07XG59XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Fma2EtZXZlbnQtc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rYWZrYS9rYWZrYS1ldmVudC1zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseUJBQXlCO0FBQ3pCLDZDQUFvQztBQUNwQywyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELDJDQUF1QztBQUN2QyxnQ0FBZ0M7QUFNaEM7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQUMzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQWtCO1lBQzVCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsTUFBTSxFQUFFLFNBQVM7WUFDakIsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSwrREFBK0Q7Z0JBQ3pFLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtnQkFDcEMsaUJBQWlCLEVBQUU7b0JBQ2pCLFNBQVMsRUFBRTt3QkFDVCxRQUFRLEVBQUUsUUFBUTt3QkFDbEIsV0FBVyxFQUFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87cUJBQ3BDO2lCQUNGO2FBQ0Y7WUFDRCxrQkFBa0IsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLHVEQUF1RCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsT0FBTyxDQUFDO1NBQ25JLENBQUM7UUFFRixNQUFNLHVCQUF1QixHQUFHLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUMvRSxRQUFRLEVBQUUsTUFBTTtZQUNoQixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDeEcsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLDZFQUE2RSxDQUFDLENBQUM7UUFDL0ksTUFBTSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUE1Qkgsd0NBNkJDOzs7QUFFRDs7Ozs7R0FLRztBQUNILE1BQWEsb0JBQW9CO0lBZ0QvQixZQUE0QixJQUE2QjtRQUE3QixTQUFJLEdBQUosSUFBSSxDQUF5QjtRQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFqREQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQWdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFRLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNuRCxNQUFNLEtBQUssQ0FBQyxpRkFBaUYsQ0FBQyxDQUFDO1NBQ2hHO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxjQUFtQjtRQUMxRCxPQUFPLE9BQU8sY0FBYyxLQUFLLFFBQVEsSUFBSSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVPLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxJQUE2QjtRQUM5RSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE1BQU0sS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7U0FDaEU7UUFDRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWdCO1FBQ2xELE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQVFEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXpESCxvREEwREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEthZmthRXZlbnRTcGVjUHJvcHMge1xuICByZWFkb25seSBzb3VyY2U6IEthZmthRXZlbnRTcGVjU291cmNlO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCB0byBwcm92aWRlIGFuIGV2ZW50IHNwZWNpZmljYXRpb24gZm9yIGEgS2Fma2EgdG9waWMgYW5kIHVwbG9hZCBpdCB0byB0aGUgY2VudHJhbCBldmVudCBzdG9yZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEthZmthRXZlbnRTcGVjIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEthZmthRXZlbnRTcGVjUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgYWN0aW9uOiBjci5Bd3NTZGtDYWxsID0ge1xuICAgICAgc2VydmljZTogJ1NOUycsXG4gICAgICBhY3Rpb246ICdwdWJsaXNoJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgVG9waWNBcm46ICdhcm46YXdzOnNuczpldS13ZXN0LTE6MTg2OTkzNzU3NzM0OmV2ZW50LXNwZWNpZmljYXRpb24tdXBsb2FkJyxcbiAgICAgICAgTWVzc2FnZTogcHJvcHMuc291cmNlLnRvU25zTWVzc2FnZSgpLFxuICAgICAgICBNZXNzYWdlQXR0cmlidXRlczoge1xuICAgICAgICAgIGFjY291bnRJZDoge1xuICAgICAgICAgICAgRGF0YVR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgU3RyaW5nVmFsdWU6IFN0YWNrLm9mKHRoaXMpLmFjY291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihgYXJuOmF3czpzMzo6OmV2ZW50LXNwZWNpZmljYXRpb24tc3RvcmUtMTg2OTkzNzU3NzM0LyR7cHJvcHMuc291cmNlLmV2ZW50TmFtZX0ueWFtbGApLFxuICAgIH07XG5cbiAgICBjb25zdCBldmVudFNwZWNDdXN0b21SZXNvdXJjZSA9IG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCAnS2Fma2FFdmVudFNwZWMnLCB7XG4gICAgICBvbkNyZWF0ZTogYWN0aW9uLFxuICAgICAgb25VcGRhdGU6IGFjdGlvbixcbiAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVNka0NhbGxzKHsgcmVzb3VyY2VzOiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5BTllfUkVTT1VSQ0UgfSksXG4gICAgfSk7XG5cbiAgICBjb25zdCBrbXNLZXkgPSBrbXMuS2V5LmZyb21LZXlBcm4odGhpcywgJ2V2ZW50U3BlY1Nuc1RvcGljS2V5JywgJ2Fybjphd3M6a21zOmV1LXdlc3QtMToxODY5OTM3NTc3MzQ6a2V5LzFmNzJkZDU5LWYzMmQtNGQ1Mi05YjJiLTQ0N2RmODhiM2ZhMycpO1xuICAgIGttc0tleS5ncmFudEVuY3J5cHREZWNyeXB0KGV2ZW50U3BlY0N1c3RvbVJlc291cmNlKTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBwZXIgY2xhc3MgZm9yIHRoZSBldmVudCBzcGVjIGl0c2VsZiB0byBzdXBwb3J0IHByb3ZpZGluZyBpdCB2aWEgZmlsZSBvciBpbmxpbmUgc3RyaW5nLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9jb2xsYWJvcmF0aW9uLm1zaS5hdWRpLmNvbS9zdGFzaC9wcm9qZWN0cy9SU0VWVEJVL3JlcG9zL3RvcGljLWNyZWF0aW9uLWV4YW1wbGUgZm9yXG4gKiBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSB5YW1sIHNwZWMuXG4gKi9cbmV4cG9ydCBjbGFzcyBLYWZrYUV2ZW50U3BlY1NvdXJjZSB7XG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSBhIEthZmthRXZlbnRTcGVjU291cmNlIGJ5IGxvYWRpbmcgc3BlYyBmcm9tIGEgKFVURi04IGVuY29kZWQpIHlhbWwgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIHRoZSBmaWxlbmFtZSBvZiB0aGUgZXZlbnQgc3BlY2lmaWNhdGlvbiBmaWxlLiBNdXN0IGVpdGhlciBiZSBhbiBhYnNvbHV0ZSBwYXRoIG9yIGEgcGF0aCByZWxhdGl2ZSB0byBDREsncyB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMgYSBLYWZrYUV2ZW50U3BlY1NvdXJjZVxuICAgKi9cbiAgc3RhdGljIGZyb21ZYW1sRmlsZShmaWxlbmFtZTogc3RyaW5nKTogS2Fma2FFdmVudFNwZWNTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21ZYW1sU3RyaW5nKGZzLnJlYWRGaWxlU3luYyhmaWxlbmFtZSwgJ3V0ZjgnKSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYSBLYWZrYUV2ZW50U3BlY1NvdXJjZSBmcm9tIGFuIGlubGluZSB5YW1sIHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHNwZWMgYXMgeWFtbCBmb3JtYXR0ZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIGEgS2Fma2FFdmVudFNwZWNTb3VyY2VcbiAgICovXG4gIHN0YXRpYyBmcm9tWWFtbFN0cmluZyhzcGVjOiBzdHJpbmcpOiBLYWZrYUV2ZW50U3BlY1NvdXJjZSB7XG4gICAgY29uc3QgcGFyc2VkU3BlYyA9IHRoaXMucGFyc2VZYW1sU3BlYyhzcGVjKTtcbiAgICByZXR1cm4gbmV3IEthZmthRXZlbnRTcGVjU291cmNlKHBhcnNlZFNwZWMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VZYW1sU3BlYyhzcGVjOiBzdHJpbmcpOiBLYWZrYUV2ZW50U3BlY2lmaWNhdGlvbiB7XG4gICAgY29uc3QgcGFyc2VkWWFtbFNwZWMgPSB5YW1sLmxvYWQoc3BlYykgYXMgYW55O1xuICAgIGlmICghdGhpcy5pc0thZmthRXZlbnRTcGVjaWZpY2F0aW9uKHBhcnNlZFlhbWxTcGVjKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGluZyBldmVudCBzcGVjIHRvIGJlIGRlc2NyaWJlIGFuIG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0eSBbaW5mby54LWV2ZW50XS4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZFlhbWxTcGVjO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNLYWZrYUV2ZW50U3BlY2lmaWNhdGlvbihwYXJzZWRZYW1sU3BlYzogYW55KTogcGFyc2VkWWFtbFNwZWMgaXMgS2Fma2FFdmVudFNwZWNpZmljYXRpb24ge1xuICAgIHJldHVybiB0eXBlb2YgcGFyc2VkWWFtbFNwZWMgPT09ICdvYmplY3QnICYmIHBhcnNlZFlhbWxTcGVjPy5pbmZvPy5bJ3gtZXZlbnQnXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRldGVybWluZUV2ZW50TmFtZUZyb21TcGVjaWZpY2F0aW9uKHNwZWM6IEthZmthRXZlbnRTcGVjaWZpY2F0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBldmVudE5hbWVzID0gT2JqZWN0LmtleXMoc3BlYy5pbmZvWyd4LWV2ZW50J10pO1xuICAgIGlmIChldmVudE5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0V4cGVjdGluZyBhdCBsZWFzdCBvbmUgZXZlbnQgYXQgW2luZm8ueC1ldmVudF0uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlbW92ZVlhbWxGaWxlRW5kaW5nKGV2ZW50TmFtZXNbMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVtb3ZlWWFtbEZpbGVFbmRpbmcoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpbGVuYW1lLnJlcGxhY2UoL1xcLnlhP21sJC8sICcnKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGV2ZW50TmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSBzcGVjOiBLYWZrYUV2ZW50U3BlY2lmaWNhdGlvbikge1xuICAgIHRoaXMuZXZlbnROYW1lID0gS2Fma2FFdmVudFNwZWNTb3VyY2UuZGV0ZXJtaW5lRXZlbnROYW1lRnJvbVNwZWNpZmljYXRpb24oc3BlYyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdGhlIG1lc3NhZ2UgYmFzZTY0IGVuY29kZWQgc3BlYyBhcyBleHBlY3RlZCBieSB0aGUgZXZlbnQgc3RvcmVcbiAgICovXG4gIHRvU25zTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh5YW1sLmR1bXAodGhpcy5zcGVjKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG59XG5cbi8vIFRoaXMgdHlwZSBpcyBub3QgZXhoYXVzdGl2ZSBidXQgb25seSByZWZsZWN0cyB0aGUgbWluaW11bSBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIHZhbGlkYXRlIHRoZSBldmVudCBzcGVjaWZpY2F0aW9uXG5pbnRlcmZhY2UgS2Fma2FFdmVudFNwZWNpZmljYXRpb24ge1xuICBpbmZvOiB7XG4gICAgJ3gtZXZlbnQnOiB7IFtldmVudE5hbWU6IHN0cmluZ106IGFueSB9W107XG4gIH07XG59XG4iXX0=