@aws-cdk/toolkit-lib 1.28.0 → 1.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/build-info.json +2 -2
  2. package/db.json.gz +0 -0
  3. package/lib/actions/validate/index.d.ts +10 -0
  4. package/lib/actions/validate/index.js +1 -1
  5. package/lib/api/cloud-assembly/environment.js +16 -4
  6. package/lib/api/deployments/cfn-api.d.ts +24 -6
  7. package/lib/api/deployments/cfn-api.js +81 -33
  8. package/lib/api/hotswap/hotswap-deployments.js +3 -1
  9. package/lib/api/hotswap/lambda-functions.js +3 -33
  10. package/lib/api/io/private/index.d.ts +1 -0
  11. package/lib/api/io/private/index.js +2 -1
  12. package/lib/api/io/private/messages.d.ts +1 -0
  13. package/lib/api/io/private/messages.js +8 -4
  14. package/lib/api/io/private/span.d.ts +6 -0
  15. package/lib/api/io/private/span.js +10 -3
  16. package/lib/api/validate/validate-formatting.d.ts +5 -0
  17. package/lib/api/validate/validate-formatting.js +127 -0
  18. package/lib/api/work-graph/work-graph-builder.d.ts +3 -0
  19. package/lib/api/work-graph/work-graph-builder.js +38 -3
  20. package/lib/api/work-graph/work-graph-types.d.ts +19 -7
  21. package/lib/api/work-graph/work-graph-types.js +1 -1
  22. package/lib/api/work-graph/work-graph.d.ts +2 -1
  23. package/lib/api/work-graph/work-graph.js +8 -1
  24. package/lib/index_bg.wasm +0 -0
  25. package/lib/payloads/hotswap.d.ts +8 -1
  26. package/lib/payloads/hotswap.js +1 -1
  27. package/lib/private/tools.d.ts +2 -0
  28. package/lib/private/tools.js +120 -0
  29. package/lib/private/tools.js.plain +21 -0
  30. package/lib/toolkit/toolkit.d.ts +2 -1
  31. package/lib/toolkit/toolkit.js +103 -19
  32. package/lib/util/index.d.ts +0 -1
  33. package/lib/util/index.js +1 -2
  34. package/package.json +13 -11
  35. package/lib/util/archive.d.ts +0 -2
  36. package/lib/util/archive.js +0 -86
@@ -445,17 +445,21 @@ exports.IO = {
445
445
  // validate (96xx)
446
446
  CDK_TOOLKIT_I9600: make.info({
447
447
  code: 'CDK_TOOLKIT_I9600',
448
- description: 'Validate passed with no problems',
448
+ description: 'Policy validation passed',
449
449
  interface: 'ValidateResult',
450
450
  }),
451
451
  CDK_TOOLKIT_E9600: make.error({
452
452
  code: 'CDK_TOOLKIT_E9600',
453
- description: 'Validate found problems',
453
+ description: 'Policy validation failed',
454
454
  interface: 'ValidateResult',
455
455
  }),
456
456
  CDK_TOOLKIT_I9601: make.info({
457
457
  code: 'CDK_TOOLKIT_I9601',
458
- description: 'No validation plugins configured',
458
+ description: 'No policy validation report found',
459
+ }),
460
+ CDK_TOOLKIT_W9602: make.warn({
461
+ code: 'CDK_TOOLKIT_W9602',
462
+ description: 'Online validation could not be completed for a stack',
459
463
  }),
460
464
  // Notices
461
465
  CDK_TOOLKIT_I0100: make.info({
@@ -622,4 +626,4 @@ exports.SPAN = {
622
626
  end: exports.IO.CDK_TOOLKIT_I5410,
623
627
  },
624
628
  };
625
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3Q0FBd0M7QUFrQ3hDOzs7OztHQUtHO0FBQ1UsUUFBQSxFQUFFLEdBQUc7SUFDaEIsb0JBQW9CO0lBQ3BCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNEJBQTRCO0tBQzFDLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBWTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQXdCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUF1QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZTtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFzQjtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7UUFDN0UsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFLElB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QUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELGFBQWEsRUFBRTtRQUNiLElBQUksRUFBRSxlQUFlO1FBQ3JCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtDQUNpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0ICogYXMgbWFrZSBmcm9tICcuL21lc3NhZ2UtbWFrZXInO1xuaW1wb3J0IHR5cGUgeyBTcGFuRGVmaW5pdGlvbiB9IGZyb20gJy4vc3Bhbic7XG5pbXBvcnQgdHlwZSB7IERpYWdub3NlZFN0YWNrIH0gZnJvbSAnLi4vLi4vLi4vYWN0aW9ucy9kaWFnbm9zZSc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRlUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vYWN0aW9ucy92YWxpZGF0ZSc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrRGlmZiwgRGlmZlJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB0eXBlIHsgQm9vdHN0cmFwRW52aXJvbm1lbnRQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2Jvb3RzdHJhcC1lbnZpcm9ubWVudC1wcm9ncmVzcyc7XG5pbXBvcnQgdHlwZSB7IE1pc3NpbmdDb250ZXh0LCBVcGRhdGVkQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2NvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBCdWlsZEFzc2V0LCBEZXBsb3lDb25maXJtYXRpb25SZXF1ZXN0LCBQdWJsaXNoQXNzZXQsIFB1Ymxpc2hBc3NldEV2ZW50LCBTdGFja0RlcGxveVByb2dyZXNzLCBTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9kZXBsb3knO1xuaW1wb3J0IHR5cGUgeyBTdGFja0Rlc3Ryb3ksIFN0YWNrRGVzdHJveVByb2dyZXNzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZGVzdHJveSc7XG5pbXBvcnQgdHlwZSB7IERyaWZ0UmVzdWx0UGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2RyaWZ0JztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWdDaGFuZ2VSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZmxhZ3MnO1xuaW1wb3J0IHR5cGUgeyBBc3NldEJhdGNoRGVsZXRpb25SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZ2MnO1xuaW1wb3J0IHR5cGUgeyBIb3Rzd2FwRGVwbG95bWVudERldGFpbHMsIEhvdHN3YXBEZXBsb3ltZW50QXR0ZW1wdCwgSG90c3dhcHBhYmxlQ2hhbmdlLCBIb3Rzd2FwUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvaG90c3dhcCc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0LCBSZXNvdXJjZUltcG9ydFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9pbXBvcnQnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0RldGFpbHNQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvbGlzdCc7XG5pbXBvcnQgdHlwZSB7IENsb3VkV2F0Y2hMb2dFdmVudCwgQ2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9sb2dzLW1vbml0b3InO1xuaW1wb3J0IHR5cGUgeyBBc3NldHNQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvcHVibGlzaC1hc3NldHMnO1xuaW1wb3J0IHR5cGUgeyBSZWZhY3RvclJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3JlZmFjdG9yJztcbmltcG9ydCB0eXBlIHsgU3RhY2tSb2xsYmFja1Byb2dyZXNzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvcm9sbGJhY2snO1xuaW1wb3J0IHR5cGUgeyBNZmFUb2tlblJlcXVlc3QsIFNka1RyYWNlIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc2RrJztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSwgU3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc3RhY2stYWN0aXZpdHknO1xuaW1wb3J0IHR5cGUgeyBTdGFja1NlbGVjdGlvbkRldGFpbHMgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9zeW50aCc7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2VtYmx5RGF0YSxcbiAgQ29uZmlybWF0aW9uUmVxdWVzdCxcbiAgQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIEVycm9yUGF5bG9hZCxcbiAgT3BlcmF0aW9uLFxuICBTaW5nbGVTdGFjayxcbiAgU3RhY2tBbmRBc3NlbWJseURhdGEsXG59IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgRmlsZVdhdGNoRXZlbnQsIFdhdGNoU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy93YXRjaCc7XG5cbi8qKlxuICogV2UgaGF2ZSBhIHJvdWdoIHN5c3RlbSBieSB3aGljaCB3ZSBhc3NpZ24gbWVzc2FnZSBjb2RlczpcbiAqIC0gRmlyc3QgZGlnaXQgZ3JvdXBzIG1lc3NhZ2VzIGJ5IGFjdGlvbiwgZS5nLiBzeW50aCBvciBkZXBsb3lcbiAqIC0gWDAwMC1YMDA5IGFyZSByZXNlcnZlZCBmb3IgdGltaW5nc1xuICogLSBYOTAwLVg5OTkgYXJlIHJlc2VydmVkIGZvciByZXN1bHRzXG4gKi9cbmV4cG9ydCBjb25zdCBJTyA9IHtcbiAgLy8gd2FybmluZ3MgJiBlcnJvcnNcbiAgQ0RLX1RPT0xLSVRfVzAxMDA6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1cwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NyZWRlbnRpYWwgcGx1Z2luIHdhcm5pbmdzJyxcbiAgfSksXG5cbiAgLy8gMTogU3ludGggKDF4eHgpXG4gIENES19UT09MS0lUX0kxMDAwOiBtYWtlLmluZm88T3BlcmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxMDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHN5bnRoZXNpcyB0aW1lcy4nLFxuICAgIGludGVyZmFjZTogJ09wZXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMTAwMTogbWFrZS50cmFjZTxTdGFja1NlbGVjdGlvbkRldGFpbHM+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTEwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgQXNzZW1ibHkgc3ludGhlc2lzIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTE5MDE6IG1ha2UucmVzdWx0PFN0YWNrQW5kQXNzZW1ibHlEYXRhPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxOTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHN0YWNrIGRhdGEnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrQW5kQXNzZW1ibHlEYXRhJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kxOTAyOiBtYWtlLnJlc3VsdDxBc3NlbWJseURhdGE+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTE5MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnU3VjY2Vzc2Z1bGx5IGRlcGxveWVkIHN0YWNrcycsXG4gICAgaW50ZXJmYWNlOiAnQXNzZW1ibHlEYXRhJyxcbiAgfSksXG5cbiAgLy8gMjogTGlzdCAoMnh4eClcbiAgQ0RLX1RPT0xLSVRfSTI5MDE6IG1ha2UucmVzdWx0PFN0YWNrRGV0YWlsc1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTI5MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgc3RhY2tzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGV0YWlsc1BheWxvYWQnLFxuICB9KSxcblxuICAvLyAzOiBJbXBvcnQgJiBNaWdyYXRlXG4gIENES19UT09MS0lUX0kzMTAwOiBtYWtlLmNvbmZpcm08UmVzb3VyY2VJbXBvcnRSZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kzMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gdGhlIGltcG9ydCBvZiBhIHNwZWNpZmljIHJlc291cmNlJyxcbiAgICBpbnRlcmZhY2U6ICdSZXNvdXJjZUltcG9ydFJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTMxMTA6IG1ha2UucXVlc3Rpb248UmVzb3VyY2VJZGVudGlmaWNhdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTMxMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpcyBuZWVkZWQgdG8gaWRlbnRpZnkgYSByZXNvdXJjZScsXG4gICAgaW50ZXJmYWNlOiAnUmVzb3VyY2VJZGVudGlmaWNhdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTM5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0UzOTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc291cmNlIGltcG9ydCBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDQ6IERpZmYgKDQweHggLSA0NHh4KVxuICBDREtfVE9PTEtJVF9JNDAwMDogbWFrZS50cmFjZTxTdGFja1NlbGVjdGlvbkRldGFpbHM+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGlmZiBzdGFja3MgaXMgc3RhcnRpbmcnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrU2VsZWN0aW9uRGV0YWlscycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNDAwMTogbWFrZS5yZXN1bHQ8RGlmZlJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDAwMScsXG4gICAgZGVzY3JpcHRpb246ICdPdXRwdXQgb2YgdGhlIGRpZmYgY29tbWFuZCcsXG4gICAgaW50ZXJmYWNlOiAnRGlmZlJlc3VsdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNDAwMjogbWFrZS5yZXN1bHQ8U3RhY2tEaWZmPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0MDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBkaWZmIGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEaWZmJyxcbiAgfSksXG5cbiAgLy8gNDogRHJpZnQgKDQ1eHggLSA0OXh4KVxuICBDREtfVE9PTEtJVF9JNDUwMDogbWFrZS50cmFjZTxTdGFja1NlbGVjdGlvbkRldGFpbHM+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQ1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRHJpZnQgZGV0ZWN0aW9uIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQ1MDk6IG1ha2UucmVzdWx0PER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0NTkyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc3VsdHMgb2YgdGhlIGRyaWZ0JyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNDU5MDogbWFrZS5yZXN1bHQ8RHJpZnRSZXN1bHRQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0NTkwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc3VsdHMgb2YgYSBzdGFjayBkcmlmdCcsXG4gICAgaW50ZXJmYWNlOiAnRHJpZnRSZXN1bHRQYXlsb2FkJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c0NTkxOiBtYWtlLndhcm48U2luZ2xlU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzQ1OTEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTWlzc2luZyBkcmlmdCByZXN1bHQgZm9ydCBhIHN0YWNrLicsXG4gICAgaW50ZXJmYWNlOiAnU2luZ2xlU3RhY2snLFxuICB9KSxcblxuICAvLyA1OiBEZXBsb3kgJiBXYXRjaCAoNXh4eClcbiAgQ0RLX1RPT0xLSVRfSTUwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBkZXBsb3ltZW50IHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAwMTogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHRvdGFsIHRpbWUgaW4gZGVwbG95IGFjdGlvbiwgaW5jbHVkaW5nIHN5bnRoIGFuZCByb2xsYmFjaycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMDI6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAwMicsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyB0aW1lIGZvciByZXNvdXJjZSBtaWdyYXRpb24nLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c1MDIxOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XNTAyMScsXG4gICAgZGVzY3JpcHRpb246ICdFbXB0eSBub24tZXhpc3RlbnQgc3RhY2ssIGRlcGxveW1lbnQgaXMgc2tpcHBlZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNTAyMjogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzUwMjInLFxuICAgIGRlc2NyaXB0aW9uOiAnRW1wdHkgZXhpc3Rpbmcgc3RhY2ssIHN0YWNrIHdpbGwgYmUgZGVzdHJveWVkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDMxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzMScsXG4gICAgZGVzY3JpcHRpb246ICdJbmZvcm1zIGFib3V0IGFueSBsb2cgZ3JvdXBzIHRoYXQgYXJlIHRyYWNlZCBhcyBwYXJ0IG9mIHRoZSBkZXBsb3ltZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDMyOiBtYWtlLmRlYnVnPENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDMyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0IG1vbml0b3JpbmcgbG9nIGdyb3VwcycsXG4gICAgaW50ZXJmYWNlOiAnQ2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMzM6IG1ha2UuaW5mbzxDbG91ZFdhdGNoTG9nRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMzMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBsb2cgZXZlbnQgcmVjZWl2ZWQgZnJvbSBDbG91ZCBXYXRjaCcsXG4gICAgaW50ZXJmYWNlOiAnQ2xvdWRXYXRjaExvZ0V2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDM0OiBtYWtlLmRlYnVnPENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDM0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0b3AgbW9uaXRvcmluZyBsb2cgZ3JvdXBzJyxcbiAgICBpbnRlcmZhY2U6ICdDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FNTAzNTogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTUwMzUnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBsb2cgbW9uaXRvcmluZyBlcnJvcicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDUwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTA1MCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHJvbGxiYWNrIGR1cmluZyBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdDb25maXJtYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDYwOiBtYWtlLmNvbmZpcm08RGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTA2MCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIGRlcGxveSBzZWN1cml0eSBzZW5zaXRpdmUgY2hhbmdlcycsXG4gICAgaW50ZXJmYWNlOiAnRGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTEwMDogbWFrZS5pbmZvPFN0YWNrRGVwbG95UHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGVwbG95IHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0RlcGxveVByb2dyZXNzJyxcbiAgfSksXG5cbiAgLy8gQXNzZXRzICg1Mnh4KVxuICBDREtfVE9PTEtJVF9JNTIxMDogbWFrZS50cmFjZTxCdWlsZEFzc2V0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0ZWQgYnVpbGRpbmcgYSBzcGVjaWZpYyBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnQnVpbGRBc3NldCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTIxMTogbWFrZS50cmFjZTxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIxMScsXG4gICAgZGVzY3JpcHRpb246ICdCdWlsZGluZyB0aGUgYXNzZXQgaGFzIGNvbXBsZXRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUyMjA6IG1ha2UudHJhY2U8UHVibGlzaEFzc2V0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjIwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0ZWQgcHVibGlzaGluZyBhIHNwZWNpZmljIGFzc2V0JyxcbiAgICBpbnRlcmZhY2U6ICdQdWJsaXNoQXNzZXQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUyMjE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUyMjEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIGNvbXBsZXRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcblxuICBDREtfQVNTRVRTX0k1MjcwOiBtYWtlLmluZm88UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19JNTI3MCcsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoaW5nIHRoZSBhc3NldCBoYXMgc3RhcnRlZCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcbiAgQ0RLX0FTU0VUU19JNTI3MTogbWFrZS5kZWJ1ZzxQdWJsaXNoQXNzZXRFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRVRTX0k1MjcxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RlYnVnIG1lc3NhZ2VkIGVtaXR0ZWQgZHVyaW5nIHB1Ymxpc2hpbmcgb2YgdGhlIGFzc2V0JyxcbiAgICBpbnRlcmZhY2U6ICdQdWJsaXNoQXNzZXRFdmVudCcsXG4gIH0pLFxuICBDREtfQVNTRVRTX0k1Mjc1OiBtYWtlLmluZm88UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19JNTI3NScsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoaW5nIHRoZSBhc3NldCBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseScsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcbiAgQ0RLX0FTU0VUU19FNTI3OTogbWFrZS5lcnJvcjxQdWJsaXNoQXNzZXRFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRVRTX0U1Mjc5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBwdWJsaXNoaW5nIHRoZSBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcblxuICAvLyBXYXRjaCAoNTN4eClcbiAgQ0RLX1RPT0xLSVRfSTUzMTA6IG1ha2UuZGVidWc8V2F0Y2hTZXR0aW5ncz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMCcsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgY29tcHV0ZWQgc2V0dGluZ3MgdXNlZCBmb3IgZmlsZSB3YXRjaGluZycsXG4gICAgaW50ZXJmYWNlOiAnV2F0Y2hTZXR0aW5ncycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxMTogbWFrZS5pbmZvPEZpbGVXYXRjaEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgd2F0Y2hpbmcgc3RhcnRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRmlsZVdhdGNoRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTI6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMicsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIGV2ZW50IGRldGVjdGVkLCBzdGFydGluZyBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdGaWxlV2F0Y2hFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxMzogbWFrZS5pbmZvPEZpbGVXYXRjaEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzEzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgZXZlbnQgZGV0ZWN0ZWQgZHVyaW5nIGFjdGl2ZSBkZXBsb3ltZW50LCBjaGFuZ2VzIGFyZSBxdWV1ZWQnLFxuICAgIGludGVyZmFjZTogJ0ZpbGVXYXRjaEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzE0OiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxNCcsXG4gICAgZGVzY3JpcHRpb246ICdJbml0aWFsIHdhdGNoIGRlcGxveW1lbnQgc3RhcnRlZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxNTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUXVldWVkIHdhdGNoIGRlcGxveW1lbnQgc3RhcnRlZCcsXG4gIH0pLFxuXG4gIC8vIEhvdHN3YXAgKDU0eHgpXG4gIENES19UT09MS0lUX0k1NDAwOiBtYWtlLnRyYWNlPEhvdHN3YXBEZXBsb3ltZW50QXR0ZW1wdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBdHRlbXB0aW5nIGEgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDE6IG1ha2UudHJhY2U8SG90c3dhcERlcGxveW1lbnREZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbXB1dGVkIGRldGFpbHMgZm9yIHRoZSBob3Rzd2FwIGRlcGxveW1lbnQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBEZXBsb3ltZW50RGV0YWlscycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTQwMjogbWFrZS5pbmZvPEhvdHN3YXBwYWJsZUNoYW5nZT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMicsXG4gICAgZGVzY3JpcHRpb246ICdBIGhvdHN3YXBwYWJsZSBjaGFuZ2UgaXMgcHJvY2Vzc2VkIGFzIHBhcnQgb2YgYSBob3Rzd2FwIGRlcGxveW1lbnQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBwYWJsZUNoYW5nZScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTQwMzogbWFrZS5pbmZvPEhvdHN3YXBwYWJsZUNoYW5nZT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMycsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgaG90c3dhcHBhYmxlIGNoYW5nZSBoYXMgY29tcGxldGVkIHByb2Nlc3NpbmcnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBwYWJsZUNoYW5nZScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTQxMDogbWFrZS5pbmZvPEhvdHN3YXBSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnSG90c3dhcCBkZXBsb3ltZW50IGhhcyBlbmRlZCwgYSBmdWxsIGRlcGxveW1lbnQgbWlnaHQgc3RpbGwgZm9sbG93IGlmIG5lZWRlZCcsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcFJlc3VsdCcsXG4gIH0pLFxuXG4gIC8vIFN0YWNrIE1vbml0b3IgKDU1eHgpXG4gIENES19UT09MS0lUX0k1NTAxOiBtYWtlLmluZm88U3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3Jpbmc6IFN0YXJ0IG1vbml0b3Jpbmcgb2YgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTUwMjogbWFrZS5pbmZvPFN0YWNrQWN0aXZpdHk+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU1MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgTW9uaXRvcmluZzogQWN0aXZpdHkgZXZlbnQgZm9yIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0FjdGl2aXR5JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NTAzOiBtYWtlLmluZm88U3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NTAzJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3Jpbmc6IEZpbmlzaGVkIG1vbml0b3Jpbmcgb2YgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCcsXG4gIH0pLFxuXG4gIC8vIFN1Y2Nlc3MgKDU5eHgpXG4gIENES19UT09MS0lUX0k1OTAwOiBtYWtlLnJlc3VsdDxTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVwbG95bWVudCByZXN1bHRzIG9uIHN1Y2Nlc3MnLFxuICAgIGludGVyZmFjZTogJ1N1Y2Nlc3NmdWxEZXBsb3lTdGFja1Jlc3VsdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTkwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU5MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJpYyBkZXBsb3ltZW50IHN1Y2Nlc3MgbWVzc2FnZXMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzU0MDA6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c1NDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hvdHN3YXAgZGlzY2xvc3VyZSBtZXNzYWdlJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTUwMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNTAwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyBzdGFja3MgZm91bmQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTU1MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U1NTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3JpbmcgZXJyb3InLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDY6IFJvbGxiYWNrICg2eHh4KVxuICBDREtfVE9PTEtJVF9JNjAwMDogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k2MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHJvbGxiYWNrIHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNjEwMDogbWFrZS5pbmZvPFN0YWNrUm9sbGJhY2tQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNjEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayByb2xsYmFjayBwcm9ncmVzcycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tSb2xsYmFja1Byb2dyZXNzJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTYwMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNjAwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyBzdGFja3MgZm91bmQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTY5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U2OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JvbGxiYWNrIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gNzogRGVzdHJveSAoN3h4eClcbiAgQ0RLX1RPT0xLSVRfSTcwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBkZXN0cm95IHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzAwMTogbWFrZS50cmFjZTxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzAwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBkZXN0cm95IHRpbWUgZm9yIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzAxMDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBkZXN0cm95IHN0YWNrcycsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzEwMDogbWFrZS5pbmZvPFN0YWNrRGVzdHJveVByb2dyZXNzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlc3Ryb3kgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGVzdHJveVByb2dyZXNzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k3MTAxOiBtYWtlLnRyYWNlPFN0YWNrRGVzdHJveT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzEwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydCBzdGFjayBkZXN0cm95aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0Rlc3Ryb3knLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JNzkwMDogbWFrZS5yZXN1bHQ8Y3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlbGV0aW9uIHN1Y2NlZWRlZCcsXG4gICAgaW50ZXJmYWNlOiAnY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTcwMTA6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNzAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdBY3Rpb24gd2FzIGFib3J0ZWQgZHVlIHRvIG5lZ2F0aXZlIGNvbmZpcm1hdGlvbiBvZiByZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0U3OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZWxldGlvbiBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDguIFJlZmFjdG9yICg4eHh4KVxuICBDREtfVE9PTEtJVF9FODkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTg5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgcmVmYWN0b3IgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JODkwMDogbWFrZS5yZXN1bHQ8UmVmYWN0b3JSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTg5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVmYWN0b3IgcmVzdWx0JyxcbiAgICBpbnRlcmZhY2U6ICdSZWZhY3RvclJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k4OTEwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JODkxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHJlZmFjdG9yJyxcbiAgICBpbnRlcmZhY2U6ICdDb25maXJtYXRpb25SZXF1ZXN0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfVzgwMTA6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c4MDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlZmFjdG9yIGV4ZWN1dGlvbiBub3QgeWV0IHN1cHBvcnRlZCcsXG4gIH0pLFxuXG4gIC8vIE9ycGhhbiAoODh4eClcbiAgQ0RLX1RPT0xLSVRfSTg4MTA6IG1ha2UuY29uZmlybTxDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k4ODEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gb3JwaGFuIHJlc291cmNlcycsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuXG4gIC8vIDk6IEJvb3RzdHJhcCwgZ2MsIGZsYWdzICYgcHVibGlzaCAoOXh4eClcbiAgQ0RLX1RPT0xLSVRfSTkwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBib290c3RyYXAgdGltZXMnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k5MTAwOiBtYWtlLmluZm88Qm9vdHN0cmFwRW52aXJvbm1lbnRQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ0Jvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3MnLFxuICB9KSxcblxuICAvLyBnYyAoOTJ4eClcbiAgQ0RLX1RPT0xLSVRfSTkyMTA6IG1ha2UucXVlc3Rpb248QXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTIxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHRoZSBkZWxldGlvbiBvZiBhIGJhdGNoIG9mIGFzc2V0cycsXG4gICAgaW50ZXJmYWNlOiAnQXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k5OTAwOiBtYWtlLnJlc3VsdDx7IGVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCB9Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCByZXN1bHRzIG9uIHN1Y2Nlc3MnLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLkVudmlyb25tZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0U5OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FOTkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyBmbGFncyAoOTN4eClcbiAgQ0RLX1RPT0xLSVRfSTkzMDA6IG1ha2UuaW5mbzxGZWF0dXJlRmxhZ0NoYW5nZVJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkzMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSB0aGUgZmVhdHVyZSBmbGFnIGNvbmZpZ3VyYXRpb24gY2hhbmdlcycsXG4gICAgaW50ZXJmYWNlOiAnRmVhdHVyZUZsYWdDaGFuZ2VSZXF1ZXN0JyxcbiAgfSksXG5cbiAgLy8gcHVibGlzaCAoOTR4eClcbiAgQ0RLX1RPT0xLSVRfSTk0MDA6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5NDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FsbCBhc3NldHMgYXJlIGFscmVhZHkgcHVibGlzaGVkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k5NDAxOiBtYWtlLmluZm88QXNzZXRzUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTQwMScsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoaW5nIGFzc2V0cycsXG4gICAgaW50ZXJmYWNlOiAnQXNzZXRzUGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTQwMjogbWFrZS5yZXN1bHQ8QXNzZXRzUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTQwMicsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoIGFzc2V0cyByZXN1bHRzIG9uIHN1Y2Nlc3MnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0c1BheWxvYWQnLFxuICB9KSxcblxuICAvLyBkaWFnbm9zZSAoOTV4eClcbiAgQ0RLX1RPT0xLSVRfSTk1MDA6IG1ha2UuaW5mbzxEaWFnbm9zZWRTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkaWFnbm9zaXMgKG5vIHByb2JsZW1zIGZvdW5kKScsXG4gICAgaW50ZXJmYWNlOiAnRGlhZ25vc2VkU3RhY2snLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9FOTUwMDogbWFrZS5lcnJvcjxEaWFnbm9zZWRTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FOTUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkaWFnbm9zaXMgKHByb2JsZW1zIGZvdW5kKScsXG4gICAgaW50ZXJmYWNlOiAnRGlhZ25vc2VkU3RhY2snLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9XOTUwMTogbWFrZS53YXJuPERpYWdub3NlZFN0YWNrPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c5NTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRpYWdub3NpcyAoZGlhZ25vc2lzIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQpJyxcbiAgICBpbnRlcmZhY2U6ICdEaWFnbm9zZWRTdGFjaycsXG4gIH0pLFxuXG4gIC8vIHZhbGlkYXRlICg5Nnh4KVxuICBDREtfVE9PTEtJVF9JOTYwMDogbWFrZS5pbmZvPFZhbGlkYXRlUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5NjAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRlIHBhc3NlZCB3aXRoIG5vIHByb2JsZW1zJyxcbiAgICBpbnRlcmZhY2U6ICdWYWxpZGF0ZVJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U5NjAwOiBtYWtlLmVycm9yPFZhbGlkYXRlUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U5NjAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRlIGZvdW5kIHByb2JsZW1zJyxcbiAgICBpbnRlcmZhY2U6ICdWYWxpZGF0ZVJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k5NjAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyB2YWxpZGF0aW9uIHBsdWdpbnMgY29uZmlndXJlZCcsXG4gIH0pLFxuXG4gIC8vIE5vdGljZXNcbiAgQ0RLX1RPT0xLSVRfSTAxMDA6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vdGljZXMgZGVjb3JhdGlvbiAodGhlIGhlYWRlciBvciBmb290ZXIgb2YgYSBsaXN0IG9mIG5vdGljZXMpJyxcbiAgfSksXG4gIENES19UT09MS0lUX1cwMTAxOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhIHdhcm5pbmcnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTAxMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhbiBlcnJvcicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMDEwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTAxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBub3RpY2UgdGhhdCBpcyBtYXJrZWQgYXMgaW5mb3JtYXRpb25hbCcsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IGNvZGVzXG4gIENES19BU1NFTUJMWV9JMDAxMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmljIGVudmlyb25tZW50IHByZXBhcmF0aW9uIGRlYnVnIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XMDAxMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1cwMDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtaXR0ZWQgaWYgdGhlIGZvdW5kIGZyYW1ld29yayB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgY29udGV4dCBvdmVyZmxvdycsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAwNDI6IG1ha2UuZGVidWc8VXBkYXRlZENvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMDQyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1dyaXRpbmcgY29udGV4dCB1cGRhdGVzJyxcbiAgICBpbnRlcmZhY2U6ICdVcGRhdGVkQ29udGV4dCcsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAyNDA6IG1ha2UuZGVidWc8TWlzc2luZ0NvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMjQwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbnRleHQgbG9va3VwIHdhcyBzdG9wcGVkIGFzIG5vIGZ1cnRoZXIgcHJvZ3Jlc3Mgd2FzIG1hZGUuICcsXG4gICAgaW50ZXJmYWNlOiAnTWlzc2luZ0NvbnRleHQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMjQxOiBtYWtlLmRlYnVnPE1pc3NpbmdDb250ZXh0Pih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDI0MScsXG4gICAgZGVzY3JpcHRpb246ICdGZXRjaGluZyBtaXNzaW5nIGNvbnRleHQuIFRoaXMgaXMgYW4gaXRlcmF0aXZlIG1lc3NhZ2UgdGhhdCBtYXkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1pc3Npbmcga2V5cy4nLFxuICAgIGludGVyZmFjZTogJ01pc3NpbmdDb250ZXh0JyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBhc3NlbWJseSBvdXRwdXQgc3RhcnRzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRvdXQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0UxMDAyOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRlcnInLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kxMDAzOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTEwMDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgYXNzZW1ibHkgb3V0cHV0IGZpbmlzaGVkJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FMTExMTogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMTExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0luY29tcGF0aWJsZSBDREsgQ0xJIHZlcnNpb24uIFVwZ3JhZGUgbmVlZGVkLicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VNQkxZX0kwMTUwOiBtYWtlLmRlYnVnPG5ldmVyPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDE1MCcsXG4gICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHByZS1zeW50aGVzaXplZCBjbG91ZCBhc3NlbWJseSBkaXJlY3RvcnknLFxuICB9KSxcblxuICBDREtfQVNTRU1CTFlfSTAzMDA6IG1ha2UuaW5mbzxDb250ZXh0UHJvdmlkZXJNZXNzYWdlU291cmNlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDMwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbiBpbmZvIG1lc3NhZ2UgZW1pdHRlZCBieSBhIENvbnRleHQgUHJvdmlkZXInLFxuICAgIGludGVyZmFjZTogJ0NvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMzAxOiBtYWtlLmRlYnVnPENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMzAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgZGVidWcgbWVzc2FnZSBlbWl0dGVkIGJ5IGEgQ29udGV4dCBQcm92aWRlcicsXG4gICAgaW50ZXJmYWNlOiAnQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZScsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IEFubm90YXRpb25zXG4gIENES19BU1NFTUJMWV9JOTk5OTogbWFrZS5pbmZvPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0k5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Fubm90YXRpb25zIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XOTk5OTogbWFrZS53YXJuPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1c5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1dhcm5pbmdzIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FOTk5OTogbWFrZS5lcnJvcjxjeGFwaS5TeW50aGVzaXNNZXNzYWdlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9FOTk5OScsXG4gICAgZGVzY3JpcHRpb246ICdFcnJvcnMgZW1pdHRlZCBieSB0aGUgY2xvdWQgYXNzZW1ibHknLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLlN5bnRoZXNpc01lc3NhZ2UnLFxuICB9KSxcblxuICAvLyBTREsgY29kZXNcbiAgQ0RLX1NES19JMDEwMDogbWFrZS50cmFjZTxTZGtUcmFjZT4oe1xuICAgIGNvZGU6ICdDREtfU0RLX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FuIFNESyB0cmFjZS4gU0RLIHRyYWNlcyBhcmUgZW1pdHRlZCBhcyB0cmFjZXMgdG8gdGhlIElvSG9zdCwgYnV0IGNvbnRhaW4gdGhlIG9yaWdpbmFsIFNESyBsb2dnaW5nIGxldmVsLicsXG4gICAgaW50ZXJmYWNlOiAnU2RrVHJhY2UnLFxuICB9KSxcbiAgQ0RLX1NES19JMTEwMDogbWFrZS5xdWVzdGlvbjxNZmFUb2tlblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1NES19JMTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYW4gTUZBIHRva2VuIGZvciBhbiBNRkEgZGV2aWNlLicsXG4gICAgaW50ZXJmYWNlOiAnTWZhVG9rZW5SZXF1ZXN0JyxcbiAgfSksXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBQYXlsb2FkIHR5cGUgb2YgdGhlIGVuZCBtZXNzYWdlIG11c3QgZXh0ZW5kIER1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFOID0ge1xuICBTWU5USF9BU1NFTUJMWToge1xuICAgIG5hbWU6ICdTeW50aGVzaXMnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JMTAwMSxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0kxMDAwLFxuICB9LFxuICBERVBMT1lfU1RBQ0s6IHtcbiAgICBuYW1lOiAnRGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1MTAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTUwMDEsXG4gIH0sXG4gIFJPTExCQUNLX1NUQUNLOiB7XG4gICAgbmFtZTogJ1JvbGxiYWNrJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTYxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNjAwMCxcbiAgfSxcbiAgRElGRl9TVEFDSzoge1xuICAgIG5hbWU6ICdEaWZmJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDAwMSxcbiAgfSxcbiAgRFJJRlRfQVBQOiB7XG4gICAgbmFtZTogJ0RyaWZ0JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDUwOSxcbiAgfSxcbiAgREVTVFJPWV9TVEFDSzoge1xuICAgIG5hbWU6ICdEZXN0cm95JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTcxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNzAwMSxcbiAgfSxcbiAgREVTVFJPWV9BQ1RJT046IHtcbiAgICBuYW1lOiAnRGVzdHJveScsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k3MTAxLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTcwMDAsXG4gIH0sXG4gIEJPT1RTVFJBUF9TSU5HTEU6IHtcbiAgICBuYW1lOiAnQm9vdHN0cmFwJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTkxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JOTAwMCxcbiAgfSxcbiAgQlVJTERfQVNTRVQ6IHtcbiAgICBuYW1lOiAnQnVpbGQgQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIxMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjExLFxuICB9LFxuICBQVUJMSVNIX0FTU0VUOiB7XG4gICAgbmFtZTogJ1B1Ymxpc2ggQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIyMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjIxLFxuICB9LFxuICBIT1RTV0FQOiB7XG4gICAgbmFtZTogJ2hvdHN3YXAtZGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1NDAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTU0MTAsXG4gIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTcGFuRGVmaW5pdGlvbjxhbnksIGFueT4+O1xuIl19
629
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3Q0FBd0M7QUFrQ3hDOzs7OztHQUtHO0FBQ1UsUUFBQSxFQUFFLEdBQUc7SUFDaEIsb0JBQW9CO0lBQ3BCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNEJBQTRCO0tBQzFDLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBWTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQXdCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUF1QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZTtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFzQjtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7UUFDN0UsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFLElB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QWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7Q0FDaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCAqIGFzIG1ha2UgZnJvbSAnLi9tZXNzYWdlLW1ha2VyJztcbmltcG9ydCB0eXBlIHsgU3BhbkRlZmluaXRpb24gfSBmcm9tICcuL3NwYW4nO1xuaW1wb3J0IHR5cGUgeyBEaWFnbm9zZWRTdGFjayB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvZGlhZ25vc2UnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvdmFsaWRhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0RpZmYsIERpZmZSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgdHlwZSB7IEJvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9ib290c3RyYXAtZW52aXJvbm1lbnQtcHJvZ3Jlc3MnO1xuaW1wb3J0IHR5cGUgeyBNaXNzaW5nQ29udGV4dCwgVXBkYXRlZENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgQnVpbGRBc3NldCwgRGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdCwgUHVibGlzaEFzc2V0LCBQdWJsaXNoQXNzZXRFdmVudCwgU3RhY2tEZXBsb3lQcm9ncmVzcywgU3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZGVwbG95JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXN0cm95LCBTdGFja0Rlc3Ryb3lQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2Rlc3Ryb3knO1xuaW1wb3J0IHR5cGUgeyBEcmlmdFJlc3VsdFBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9kcmlmdCc7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2ZsYWdzJztcbmltcG9ydCB0eXBlIHsgQXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2djJztcbmltcG9ydCB0eXBlIHsgSG90c3dhcERlcGxveW1lbnREZXRhaWxzLCBIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQsIEhvdHN3YXBwYWJsZUNoYW5nZSwgSG90c3dhcFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2hvdHN3YXAnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUlkZW50aWZpY2F0aW9uUmVxdWVzdCwgUmVzb3VyY2VJbXBvcnRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvaW1wb3J0JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXRhaWxzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2xpc3QnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZFdhdGNoTG9nRXZlbnQsIENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvbG9ncy1tb25pdG9yJztcbmltcG9ydCB0eXBlIHsgQXNzZXRzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3B1Ymxpc2gtYXNzZXRzJztcbmltcG9ydCB0eXBlIHsgUmVmYWN0b3JSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9yZWZhY3Rvcic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrUm9sbGJhY2tQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3JvbGxiYWNrJztcbmltcG9ydCB0eXBlIHsgTWZhVG9rZW5SZXF1ZXN0LCBTZGtUcmFjZSB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3Nkayc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrQWN0aXZpdHksIFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3N0YWNrLWFjdGl2aXR5JztcbmltcG9ydCB0eXBlIHsgU3RhY2tTZWxlY3Rpb25EZXRhaWxzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc3ludGgnO1xuaW1wb3J0IHR5cGUge1xuICBBc3NlbWJseURhdGEsXG4gIENvbmZpcm1hdGlvblJlcXVlc3QsXG4gIENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UsXG4gIER1cmF0aW9uLFxuICBFcnJvclBheWxvYWQsXG4gIE9wZXJhdGlvbixcbiAgU2luZ2xlU3RhY2ssXG4gIFN0YWNrQW5kQXNzZW1ibHlEYXRhLFxufSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVXYXRjaEV2ZW50LCBXYXRjaFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvd2F0Y2gnO1xuXG4vKipcbiAqIFdlIGhhdmUgYSByb3VnaCBzeXN0ZW0gYnkgd2hpY2ggd2UgYXNzaWduIG1lc3NhZ2UgY29kZXM6XG4gKiAtIEZpcnN0IGRpZ2l0IGdyb3VwcyBtZXNzYWdlcyBieSBhY3Rpb24sIGUuZy4gc3ludGggb3IgZGVwbG95XG4gKiAtIFgwMDAtWDAwOSBhcmUgcmVzZXJ2ZWQgZm9yIHRpbWluZ3NcbiAqIC0gWDkwMC1YOTk5IGFyZSByZXNlcnZlZCBmb3IgcmVzdWx0c1xuICovXG5leHBvcnQgY29uc3QgSU8gPSB7XG4gIC8vIHdhcm5pbmdzICYgZXJyb3JzXG4gIENES19UT09MS0lUX1cwMTAwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDcmVkZW50aWFsIHBsdWdpbiB3YXJuaW5ncycsXG4gIH0pLFxuXG4gIC8vIDE6IFN5bnRoICgxeHh4KVxuICBDREtfVE9PTEtJVF9JMTAwMDogbWFrZS5pbmZvPE9wZXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzeW50aGVzaXMgdGltZXMuJyxcbiAgICBpbnRlcmZhY2U6ICdPcGVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTEwMDE6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkIEFzc2VtYmx5IHN5bnRoZXNpcyBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kxOTAxOiBtYWtlLnJlc3VsdDxTdGFja0FuZEFzc2VtYmx5RGF0YT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTkwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzdGFjayBkYXRhJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0FuZEFzc2VtYmx5RGF0YScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMTkwMjogbWFrZS5yZXN1bHQ8QXNzZW1ibHlEYXRhPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxOTAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N1Y2Nlc3NmdWxseSBkZXBsb3llZCBzdGFja3MnLFxuICAgIGludGVyZmFjZTogJ0Fzc2VtYmx5RGF0YScsXG4gIH0pLFxuXG4gIC8vIDI6IExpc3QgKDJ4eHgpXG4gIENES19UT09MS0lUX0kyOTAxOiBtYWtlLnJlc3VsdDxTdGFja0RldGFpbHNQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kyOTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGRldGFpbHMgb24gdGhlIHNlbGVjdGVkIHN0YWNrcyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0RldGFpbHNQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gMzogSW1wb3J0ICYgTWlncmF0ZVxuICBDREtfVE9PTEtJVF9JMzEwMDogbWFrZS5jb25maXJtPFJlc291cmNlSW1wb3J0UmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMzEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHRoZSBpbXBvcnQgb2YgYSBzcGVjaWZpYyByZXNvdXJjZScsXG4gICAgaW50ZXJmYWNlOiAnUmVzb3VyY2VJbXBvcnRSZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0kzMTEwOiBtYWtlLnF1ZXN0aW9uPFJlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kzMTEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHRvIGlkZW50aWZ5IGEgcmVzb3VyY2UnLFxuICAgIGludGVyZmFjZTogJ1Jlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0UzOTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXNvdXJjZSBpbXBvcnQgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA0OiBEaWZmICg0MHh4IC0gNDR4eClcbiAgQ0RLX1RPT0xLSVRfSTQwMDA6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RpZmYgc3RhY2tzIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQwMDE6IG1ha2UucmVzdWx0PERpZmZSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnT3V0cHV0IG9mIHRoZSBkaWZmIGNvbW1hbmQnLFxuICAgIGludGVyZmFjZTogJ0RpZmZSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQwMDI6IG1ha2UucmVzdWx0PFN0YWNrRGlmZj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDAwMicsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgZGlmZiBmb3IgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGlmZicsXG4gIH0pLFxuXG4gIC8vIDQ6IERyaWZ0ICg0NXh4IC0gNDl4eClcbiAgQ0RLX1RPT0xLSVRfSTQ1MDA6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0NTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RyaWZ0IGRldGVjdGlvbiBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k0NTA5OiBtYWtlLnJlc3VsdDxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDU5MicsXG4gICAgZGVzY3JpcHRpb246ICdSZXN1bHRzIG9mIHRoZSBkcmlmdCcsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQ1OTA6IG1ha2UucmVzdWx0PERyaWZ0UmVzdWx0UGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDU5MCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXN1bHRzIG9mIGEgc3RhY2sgZHJpZnQnLFxuICAgIGludGVyZmFjZTogJ0RyaWZ0UmVzdWx0UGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNDU5MTogbWFrZS53YXJuPFNpbmdsZVN0YWNrPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c0NTkxJyxcbiAgICBkZXNjcmlwdGlvbjogJ01pc3NpbmcgZHJpZnQgcmVzdWx0IGZvcnQgYSBzdGFjay4nLFxuICAgIGludGVyZmFjZTogJ1NpbmdsZVN0YWNrJyxcbiAgfSksXG5cbiAgLy8gNTogRGVwbG95ICYgV2F0Y2ggKDV4eHgpXG4gIENES19UT09MS0lUX0k1MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVwbG95bWVudCB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMDE6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyB0b3RhbCB0aW1lIGluIGRlcGxveSBhY3Rpb24sIGluY2x1ZGluZyBzeW50aCBhbmQgcm9sbGJhY2snLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDAyOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMDInLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgdGltZSBmb3IgcmVzb3VyY2UgbWlncmF0aW9uJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNTAyMTogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzUwMjEnLFxuICAgIGRlc2NyaXB0aW9uOiAnRW1wdHkgbm9uLWV4aXN0ZW50IHN0YWNrLCBkZXBsb3ltZW50IGlzIHNraXBwZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzUwMjI6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c1MDIyJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtcHR5IGV4aXN0aW5nIHN0YWNrLCBzdGFjayB3aWxsIGJlIGRlc3Ryb3llZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMzEnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5mb3JtcyBhYm91dCBhbnkgbG9nIGdyb3VwcyB0aGF0IGFyZSB0cmFjZWQgYXMgcGFydCBvZiB0aGUgZGVwbG95bWVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzMjogbWFrZS5kZWJ1ZzxDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzMicsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydCBtb25pdG9yaW5nIGxvZyBncm91cHMnLFxuICAgIGludGVyZmFjZTogJ0Nsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDMzOiBtYWtlLmluZm88Q2xvdWRXYXRjaExvZ0V2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDMzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgbG9nIGV2ZW50IHJlY2VpdmVkIGZyb20gQ2xvdWQgV2F0Y2gnLFxuICAgIGludGVyZmFjZTogJ0Nsb3VkV2F0Y2hMb2dFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzNDogbWFrZS5kZWJ1ZzxDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzNCcsXG4gICAgZGVzY3JpcHRpb246ICdTdG9wIG1vbml0b3JpbmcgbG9nIGdyb3VwcycsXG4gICAgaW50ZXJmYWNlOiAnQ2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTUwMzU6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U1MDM1JyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgbG9nIG1vbml0b3JpbmcgZXJyb3InLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTA1MDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwNTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSByb2xsYmFjayBkdXJpbmcgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTA2MDogbWFrZS5jb25maXJtPERlcGxveUNvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwNjAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBkZXBsb3kgc2VjdXJpdHkgc2Vuc2l0aXZlIGNoYW5nZXMnLFxuICAgIGludGVyZmFjZTogJ0RlcGxveUNvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUxMDA6IG1ha2UuaW5mbzxTdGFja0RlcGxveVByb2dyZXNzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlcGxveSBwcm9ncmVzcycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXBsb3lQcm9ncmVzcycsXG4gIH0pLFxuXG4gIC8vIEFzc2V0cyAoNTJ4eClcbiAgQ0RLX1RPT0xLSVRfSTUyMTA6IG1ha2UudHJhY2U8QnVpbGRBc3NldD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIxMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydGVkIGJ1aWxkaW5nIGEgc3BlY2lmaWMgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ0J1aWxkQXNzZXQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUyMTE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUyMTEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQnVpbGRpbmcgdGhlIGFzc2V0IGhhcyBjb21wbGV0ZWQnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MjIwOiBtYWtlLnRyYWNlPFB1Ymxpc2hBc3NldD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIyMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydGVkIHB1Ymxpc2hpbmcgYSBzcGVjaWZpYyBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MjIxOiBtYWtlLnRyYWNlPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjIxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hpbmcgdGhlIGFzc2V0IGhhcyBjb21wbGV0ZWQnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VUU19JNTI3MDogbWFrZS5pbmZvPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfSTUyNzAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG4gIENES19BU1NFVFNfSTUyNzE6IG1ha2UuZGVidWc8UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19JNTI3MScsXG4gICAgZGVzY3JpcHRpb246ICdEZWJ1ZyBtZXNzYWdlZCBlbWl0dGVkIGR1cmluZyBwdWJsaXNoaW5nIG9mIHRoZSBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcbiAgQ0RLX0FTU0VUU19JNTI3NTogbWFrZS5pbmZvPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfSTUyNzUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG4gIENES19BU1NFVFNfRTUyNzk6IG1ha2UuZXJyb3I8UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19FNTI3OScsXG4gICAgZGVzY3JpcHRpb246ICdUaGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgcHVibGlzaGluZyB0aGUgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG5cbiAgLy8gV2F0Y2ggKDUzeHgpXG4gIENES19UT09MS0lUX0k1MzEwOiBtYWtlLmRlYnVnPFdhdGNoU2V0dGluZ3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIGNvbXB1dGVkIHNldHRpbmdzIHVzZWQgZm9yIGZpbGUgd2F0Y2hpbmcnLFxuICAgIGludGVyZmFjZTogJ1dhdGNoU2V0dGluZ3MnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTE6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMScsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIHdhdGNoaW5nIHN0YXJ0ZWQnLFxuICAgIGludGVyZmFjZTogJ0ZpbGVXYXRjaEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzEyOiBtYWtlLmluZm88RmlsZVdhdGNoRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTInLFxuICAgIGRlc2NyaXB0aW9uOiAnRmlsZSBldmVudCBkZXRlY3RlZCwgc3RhcnRpbmcgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnRmlsZVdhdGNoRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTM6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMycsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIGV2ZW50IGRldGVjdGVkIGR1cmluZyBhY3RpdmUgZGVwbG95bWVudCwgY2hhbmdlcyBhcmUgcXVldWVkJyxcbiAgICBpbnRlcmZhY2U6ICdGaWxlV2F0Y2hFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxNDogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTQnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5pdGlhbCB3YXRjaCBkZXBsb3ltZW50IHN0YXJ0ZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTU6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzE1JyxcbiAgICBkZXNjcmlwdGlvbjogJ1F1ZXVlZCB3YXRjaCBkZXBsb3ltZW50IHN0YXJ0ZWQnLFxuICB9KSxcblxuICAvLyBIb3Rzd2FwICg1NHh4KVxuICBDREtfVE9PTEtJVF9JNTQwMDogbWFrZS50cmFjZTxIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQXR0ZW1wdGluZyBhIGhvdHN3YXAgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcERlcGxveW1lbnRBdHRlbXB0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NDAxOiBtYWtlLnRyYWNlPEhvdHN3YXBEZXBsb3ltZW50RGV0YWlscz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMScsXG4gICAgZGVzY3JpcHRpb246ICdDb21wdXRlZCBkZXRhaWxzIGZvciB0aGUgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwRGVwbG95bWVudERldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDI6IG1ha2UuaW5mbzxIb3Rzd2FwcGFibGVDaGFuZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBob3Rzd2FwcGFibGUgY2hhbmdlIGlzIHByb2Nlc3NlZCBhcyBwYXJ0IG9mIGEgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwcGFibGVDaGFuZ2UnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDM6IG1ha2UuaW5mbzxIb3Rzd2FwcGFibGVDaGFuZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIGhvdHN3YXBwYWJsZSBjaGFuZ2UgaGFzIGNvbXBsZXRlZCBwcm9jZXNzaW5nJyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwcGFibGVDaGFuZ2UnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MTA6IG1ha2UuaW5mbzxIb3Rzd2FwUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hvdHN3YXAgZGVwbG95bWVudCBoYXMgZW5kZWQsIGEgZnVsbCBkZXBsb3ltZW50IG1pZ2h0IHN0aWxsIGZvbGxvdyBpZiBuZWVkZWQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBSZXN1bHQnLFxuICB9KSxcblxuICAvLyBTdGFjayBNb25pdG9yICg1NXh4KVxuICBDREtfVE9PTEtJVF9JNTUwMTogbWFrZS5pbmZvPFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTUwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nOiBTdGFydCBtb25pdG9yaW5nIG9mIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU1MDI6IG1ha2UuaW5mbzxTdGFja0FjdGl2aXR5Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NTAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3Jpbmc6IEFjdGl2aXR5IGV2ZW50IGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tBY3Rpdml0eScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTUwMzogbWFrZS5pbmZvPFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTUwMycsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nOiBGaW5pc2hlZCBtb25pdG9yaW5nIG9mIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQnLFxuICB9KSxcblxuICAvLyBTdWNjZXNzICg1OXh4KVxuICBDREtfVE9PTEtJVF9JNTkwMDogbWFrZS5yZXN1bHQ8U3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RlcGxveW1lbnQgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU5MDE6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1OTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dlbmVyaWMgZGVwbG95bWVudCBzdWNjZXNzIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c1NDAwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XNTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdIb3Rzd2FwIGRpc2Nsb3N1cmUgbWVzc2FnZScsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U1MDAxOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTUwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm8gc3RhY2tzIGZvdW5kJyxcbiAgfSksXG4gIENES19UT09MS0lUX0U1NTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNTUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nIGVycm9yJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA2OiBSb2xsYmFjayAoNnh4eClcbiAgQ0RLX1RPT0xLSVRfSTYwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNjAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyByb2xsYmFjayB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTYxMDA6IG1ha2UuaW5mbzxTdGFja1JvbGxiYWNrUHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTYxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgcm9sbGJhY2sgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrUm9sbGJhY2tQcm9ncmVzcycsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U2MDAxOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTYwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm8gc3RhY2tzIGZvdW5kJyxcbiAgfSksXG4gIENES19UT09MS0lUX0U2OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNjkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSb2xsYmFjayBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDc6IERlc3Ryb3kgKDd4eHgpXG4gIENES19UT09MS0lUX0k3MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVzdHJveSB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcwMDE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGVzdHJveSB0aW1lIGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcwMTA6IG1ha2UuY29uZmlybTxDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gZGVzdHJveSBzdGFja3MnLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcxMDA6IG1ha2UuaW5mbzxTdGFja0Rlc3Ryb3lQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZXN0cm95IHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0Rlc3Ryb3lQcm9ncmVzcycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzEwMTogbWFrZS50cmFjZTxTdGFja0Rlc3Ryb3k+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgc3RhY2sgZGVzdHJveWluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXN0cm95JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTc5MDA6IG1ha2UucmVzdWx0PGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZWxldGlvbiBzdWNjZWVkZWQnLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U3MDEwOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTcwMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQWN0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byBuZWdhdGl2ZSBjb25maXJtYXRpb24gb2YgcmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FNzkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTc5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGVsZXRpb24gZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA4LiBSZWZhY3RvciAoOHh4eClcbiAgQ0RLX1RPT0xLSVRfRTg5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U4OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIHJlZmFjdG9yIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTg5MDA6IG1ha2UucmVzdWx0PFJlZmFjdG9yUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k4OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlZmFjdG9yIHJlc3VsdCcsXG4gICAgaW50ZXJmYWNlOiAnUmVmYWN0b3JSZXN1bHQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JODkxMDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTg5MTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSByZWZhY3RvcicsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX1c4MDEwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XODAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZWZhY3RvciBleGVjdXRpb24gbm90IHlldCBzdXBwb3J0ZWQnLFxuICB9KSxcblxuICAvLyBPcnBoYW4gKDg4eHgpXG4gIENES19UT09MS0lUX0k4ODEwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JODgxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIG9ycGhhbiByZXNvdXJjZXMnLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcblxuICAvLyA5OiBCb290c3RyYXAsIGdjLCBmbGFncyAmIHB1Ymxpc2ggKDl4eHgpXG4gIENES19UT09MS0lUX0k5MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgYm9vdHN0cmFwIHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTEwMDogbWFrZS5pbmZvPEJvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdCb290c3RyYXBFbnZpcm9ubWVudFByb2dyZXNzJyxcbiAgfSksXG5cbiAgLy8gZ2MgKDkyeHgpXG4gIENES19UT09MS0lUX0k5MjEwOiBtYWtlLnF1ZXN0aW9uPEFzc2V0QmF0Y2hEZWxldGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkyMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSB0aGUgZGVsZXRpb24gb2YgYSBiYXRjaCBvZiBhc3NldHMnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0QmF0Y2hEZWxldGlvblJlcXVlc3QnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JOTkwMDogbWFrZS5yZXN1bHQ8eyBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQgfT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5FbnZpcm9ubWVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FOTkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gZmxhZ3MgKDkzeHgpXG4gIENES19UT09MS0lUX0k5MzAwOiBtYWtlLmluZm88RmVhdHVyZUZsYWdDaGFuZ2VSZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5MzAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gdGhlIGZlYXR1cmUgZmxhZyBjb25maWd1cmF0aW9uIGNoYW5nZXMnLFxuICAgIGludGVyZmFjZTogJ0ZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdCcsXG4gIH0pLFxuXG4gIC8vIHB1Ymxpc2ggKDk0eHgpXG4gIENES19UT09MS0lUX0k5NDAwOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbGwgYXNzZXRzIGFyZSBhbHJlYWR5IHB1Ymxpc2hlZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTQwMTogbWFrZS5pbmZvPEFzc2V0c1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk0MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyBhc3NldHMnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0c1BheWxvYWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTk0MDI6IG1ha2UucmVzdWx0PEFzc2V0c1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk0MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaCBhc3NldHMgcmVzdWx0cyBvbiBzdWNjZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdBc3NldHNQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gZGlhZ25vc2UgKDk1eHgpXG4gIENES19UT09MS0lUX0k5NTAwOiBtYWtlLmluZm88RGlhZ25vc2VkU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGlhZ25vc2lzIChubyBwcm9ibGVtcyBmb3VuZCknLFxuICAgIGludGVyZmFjZTogJ0RpYWdub3NlZFN0YWNrJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTk1MDA6IG1ha2UuZXJyb3I8RGlhZ25vc2VkU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGlhZ25vc2lzIChwcm9ibGVtcyBmb3VuZCknLFxuICAgIGludGVyZmFjZTogJ0RpYWdub3NlZFN0YWNrJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfVzk1MDE6IG1ha2Uud2FybjxEaWFnbm9zZWRTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XOTUwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkaWFnbm9zaXMgKGRpYWdub3NpcyBjb3VsZCBub3QgYmUgcGVyZm9ybWVkKScsXG4gICAgaW50ZXJmYWNlOiAnRGlhZ25vc2VkU3RhY2snLFxuICB9KSxcblxuICAvLyB2YWxpZGF0ZSAoOTZ4eClcbiAgQ0RLX1RPT0xLSVRfSTk2MDA6IG1ha2UuaW5mbzxWYWxpZGF0ZVJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQb2xpY3kgdmFsaWRhdGlvbiBwYXNzZWQnLFxuICAgIGludGVyZmFjZTogJ1ZhbGlkYXRlUmVzdWx0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTk2MDA6IG1ha2UuZXJyb3I8VmFsaWRhdGVSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTk2MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUG9saWN5IHZhbGlkYXRpb24gZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdWYWxpZGF0ZVJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k5NjAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyBwb2xpY3kgdmFsaWRhdGlvbiByZXBvcnQgZm91bmQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9XOTYwMjogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzk2MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnT25saW5lIHZhbGlkYXRpb24gY291bGQgbm90IGJlIGNvbXBsZXRlZCBmb3IgYSBzdGFjaycsXG4gIH0pLFxuXG4gIC8vIE5vdGljZXNcbiAgQ0RLX1RPT0xLSVRfSTAxMDA6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vdGljZXMgZGVjb3JhdGlvbiAodGhlIGhlYWRlciBvciBmb290ZXIgb2YgYSBsaXN0IG9mIG5vdGljZXMpJyxcbiAgfSksXG4gIENES19UT09MS0lUX1cwMTAxOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhIHdhcm5pbmcnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTAxMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhbiBlcnJvcicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMDEwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTAxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBub3RpY2UgdGhhdCBpcyBtYXJrZWQgYXMgaW5mb3JtYXRpb25hbCcsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IGNvZGVzXG4gIENES19BU1NFTUJMWV9JMDAxMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmljIGVudmlyb25tZW50IHByZXBhcmF0aW9uIGRlYnVnIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XMDAxMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1cwMDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtaXR0ZWQgaWYgdGhlIGZvdW5kIGZyYW1ld29yayB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgY29udGV4dCBvdmVyZmxvdycsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAwNDI6IG1ha2UuZGVidWc8VXBkYXRlZENvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMDQyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1dyaXRpbmcgY29udGV4dCB1cGRhdGVzJyxcbiAgICBpbnRlcmZhY2U6ICdVcGRhdGVkQ29udGV4dCcsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAyNDA6IG1ha2UuZGVidWc8TWlzc2luZ0NvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMjQwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbnRleHQgbG9va3VwIHdhcyBzdG9wcGVkIGFzIG5vIGZ1cnRoZXIgcHJvZ3Jlc3Mgd2FzIG1hZGUuICcsXG4gICAgaW50ZXJmYWNlOiAnTWlzc2luZ0NvbnRleHQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMjQxOiBtYWtlLmRlYnVnPE1pc3NpbmdDb250ZXh0Pih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDI0MScsXG4gICAgZGVzY3JpcHRpb246ICdGZXRjaGluZyBtaXNzaW5nIGNvbnRleHQuIFRoaXMgaXMgYW4gaXRlcmF0aXZlIG1lc3NhZ2UgdGhhdCBtYXkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1pc3Npbmcga2V5cy4nLFxuICAgIGludGVyZmFjZTogJ01pc3NpbmdDb250ZXh0JyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBhc3NlbWJseSBvdXRwdXQgc3RhcnRzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRvdXQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0UxMDAyOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRlcnInLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kxMDAzOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTEwMDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgYXNzZW1ibHkgb3V0cHV0IGZpbmlzaGVkJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FMTExMTogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMTExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0luY29tcGF0aWJsZSBDREsgQ0xJIHZlcnNpb24uIFVwZ3JhZGUgbmVlZGVkLicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VNQkxZX0kwMTUwOiBtYWtlLmRlYnVnPG5ldmVyPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDE1MCcsXG4gICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHByZS1zeW50aGVzaXplZCBjbG91ZCBhc3NlbWJseSBkaXJlY3RvcnknLFxuICB9KSxcblxuICBDREtfQVNTRU1CTFlfSTAzMDA6IG1ha2UuaW5mbzxDb250ZXh0UHJvdmlkZXJNZXNzYWdlU291cmNlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDMwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbiBpbmZvIG1lc3NhZ2UgZW1pdHRlZCBieSBhIENvbnRleHQgUHJvdmlkZXInLFxuICAgIGludGVyZmFjZTogJ0NvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMzAxOiBtYWtlLmRlYnVnPENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMzAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgZGVidWcgbWVzc2FnZSBlbWl0dGVkIGJ5IGEgQ29udGV4dCBQcm92aWRlcicsXG4gICAgaW50ZXJmYWNlOiAnQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZScsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IEFubm90YXRpb25zXG4gIENES19BU1NFTUJMWV9JOTk5OTogbWFrZS5pbmZvPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0k5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Fubm90YXRpb25zIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XOTk5OTogbWFrZS53YXJuPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1c5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1dhcm5pbmdzIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FOTk5OTogbWFrZS5lcnJvcjxjeGFwaS5TeW50aGVzaXNNZXNzYWdlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9FOTk5OScsXG4gICAgZGVzY3JpcHRpb246ICdFcnJvcnMgZW1pdHRlZCBieSB0aGUgY2xvdWQgYXNzZW1ibHknLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLlN5bnRoZXNpc01lc3NhZ2UnLFxuICB9KSxcblxuICAvLyBTREsgY29kZXNcbiAgQ0RLX1NES19JMDEwMDogbWFrZS50cmFjZTxTZGtUcmFjZT4oe1xuICAgIGNvZGU6ICdDREtfU0RLX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FuIFNESyB0cmFjZS4gU0RLIHRyYWNlcyBhcmUgZW1pdHRlZCBhcyB0cmFjZXMgdG8gdGhlIElvSG9zdCwgYnV0IGNvbnRhaW4gdGhlIG9yaWdpbmFsIFNESyBsb2dnaW5nIGxldmVsLicsXG4gICAgaW50ZXJmYWNlOiAnU2RrVHJhY2UnLFxuICB9KSxcbiAgQ0RLX1NES19JMTEwMDogbWFrZS5xdWVzdGlvbjxNZmFUb2tlblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1NES19JMTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYW4gTUZBIHRva2VuIGZvciBhbiBNRkEgZGV2aWNlLicsXG4gICAgaW50ZXJmYWNlOiAnTWZhVG9rZW5SZXF1ZXN0JyxcbiAgfSksXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBQYXlsb2FkIHR5cGUgb2YgdGhlIGVuZCBtZXNzYWdlIG11c3QgZXh0ZW5kIER1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFOID0ge1xuICBTWU5USF9BU1NFTUJMWToge1xuICAgIG5hbWU6ICdTeW50aGVzaXMnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JMTAwMSxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0kxMDAwLFxuICB9LFxuICBERVBMT1lfU1RBQ0s6IHtcbiAgICBuYW1lOiAnRGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1MTAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTUwMDEsXG4gIH0sXG4gIFJPTExCQUNLX1NUQUNLOiB7XG4gICAgbmFtZTogJ1JvbGxiYWNrJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTYxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNjAwMCxcbiAgfSxcbiAgRElGRl9TVEFDSzoge1xuICAgIG5hbWU6ICdEaWZmJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDAwMSxcbiAgfSxcbiAgRFJJRlRfQVBQOiB7XG4gICAgbmFtZTogJ0RyaWZ0JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDUwOSxcbiAgfSxcbiAgREVTVFJPWV9TVEFDSzoge1xuICAgIG5hbWU6ICdEZXN0cm95JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTcxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNzAwMSxcbiAgfSxcbiAgREVTVFJPWV9BQ1RJT046IHtcbiAgICBuYW1lOiAnRGVzdHJveScsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k3MTAxLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTcwMDAsXG4gIH0sXG4gIEJPT1RTVFJBUF9TSU5HTEU6IHtcbiAgICBuYW1lOiAnQm9vdHN0cmFwJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTkxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JOTAwMCxcbiAgfSxcbiAgQlVJTERfQVNTRVQ6IHtcbiAgICBuYW1lOiAnQnVpbGQgQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIxMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjExLFxuICB9LFxuICBQVUJMSVNIX0FTU0VUOiB7XG4gICAgbmFtZTogJ1B1Ymxpc2ggQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIyMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjIxLFxuICB9LFxuICBIT1RTV0FQOiB7XG4gICAgbmFtZTogJ2hvdHN3YXAtZGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1NDAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTU0MTAsXG4gIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTcGFuRGVmaW5pdGlvbjxhbnksIGFueT4+O1xuIl19
@@ -1,3 +1,4 @@
1
+ import '../../../private/dispose-polyfill';
1
2
  import type { IoDefaultMessages } from './io-default-messages';
2
3
  import type { IoHelper } from './io-helper';
3
4
  import type * as make from './message-maker';
@@ -101,12 +102,17 @@ export interface IMessageSpan<E extends SpanEnd> extends IActionAwareIoHost {
101
102
  * `<name>_cnt` keys.
102
103
  */
103
104
  startTimer(name: string): ITimer;
105
+ /**
106
+ * Record a finished time with a given duration
107
+ */
108
+ addTimer(name: string, duration: number): void;
104
109
  }
105
110
  /**
106
111
  * A timer to time an operation in a span.
107
112
  */
108
113
  export interface ITimer {
109
114
  stop(): void;
115
+ [Symbol.dispose](): void;
110
116
  }
111
117
  /**
112
118
  * Helper class to make spans around blocks of work
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SpanMaker = void 0;
4
+ require("../../../private/dispose-polyfill");
4
5
  const node_crypto_1 = require("node:crypto");
5
6
  const util = require("node:util");
6
7
  const util_1 = require("../../../util");
@@ -91,13 +92,19 @@ class MessageSpan {
91
92
  const t = {
92
93
  stop: () => {
93
94
  this.openTimers.delete(t);
94
- this.incCounter(`${name}_ms`, Math.floor(Date.now() - start) / 1000);
95
- this.incCounter(`${name}_cnt`, 1);
95
+ this.addTimer(name, Math.floor(Date.now() - start));
96
+ },
97
+ [Symbol.dispose]() {
98
+ this.stop();
96
99
  },
97
100
  };
98
101
  this.openTimers.add(t);
99
102
  return t;
100
103
  }
104
+ addTimer(name, durationMs) {
105
+ this.incCounter(`${name}_ms`, Math.floor(durationMs));
106
+ this.incCounter(`${name}_cnt`, 1);
107
+ }
101
108
  time() {
102
109
  const elapsedTime = new Date().getTime() - this.startTime;
103
110
  return {
@@ -124,4 +131,4 @@ function withSpanId(span, message) {
124
131
  span,
125
132
  };
126
133
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNwYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlDO0FBQ3pDLGtDQUFrQztBQUtsQyx3Q0FBMkM7QUEwSDNDOzs7Ozs7R0FNRztBQUNILE1BQWEsU0FBUztJQUNILFVBQVUsQ0FBdUI7SUFDakMsUUFBUSxDQUFXO0lBQzVCLFVBQVUsQ0FBMkM7SUFFN0QsWUFBbUIsUUFBa0IsRUFBRSxVQUFnQyxFQUFFLFVBQW9EO1FBQzNILElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFRTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQU0sRUFBRSxDQUFLO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUUsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxJQUFJLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUM5RSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFckUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUExQkQsOEJBMEJDO0FBRUQsTUFBTSxXQUFXO0lBQ0MsUUFBUSxDQUFXO0lBRWxCLFVBQVUsQ0FBdUI7SUFDakMsUUFBUSxD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O1FBQzFELE9BQU87WUFDTCxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsSUFBQSxpQkFBVSxFQUFDLFdBQVcsQ0FBQztTQUMvQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsU0FBUyxTQUFTLENBQUksS0FBVSxFQUFFLE1BQVU7SUFDMUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0lBRWpELHNHQUFzRztJQUN0RyxNQUFNLE9BQU8sR0FBRyxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFL0Qsb0VBQW9FO0lBQ3BFLDZFQUE2RTtJQUM3RSxNQUFNLE9BQU8sR0FBRyxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFFNUQsT0FBTztRQUNMLE9BQU87UUFDUCxPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBbUIsSUFBWSxFQUFFLE9BQVU7SUFDNUQsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLElBQUk7S0FDTCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgdHlwZSB7IElvRGVmYXVsdE1lc3NhZ2VzIH0gZnJvbSAnLi9pby1kZWZhdWx0LW1lc3NhZ2VzJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uTGVzc01lc3NhZ2UsIEFjdGlvbkxlc3NSZXF1ZXN0LCBJb0hlbHBlciB9IGZyb20gJy4vaW8taGVscGVyJztcbmltcG9ydCB0eXBlICogYXMgbWFrZSBmcm9tICcuL21lc3NhZ2UtbWFrZXInO1xuaW1wb3J0IHR5cGUgeyBEdXJhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdFRpbWUgfSBmcm9tICcuLi8uLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgSUFjdGlvbkF3YXJlSW9Ib3N0IH0gZnJvbSAnLi4vaW8taG9zdCc7XG5cbi8qKlxuICogVGhlc2UgZGF0YSBmaWVsZHMgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgZW5kaW5nIGEgc3BhblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5FbmQge1xuICByZWFkb25seSBkdXJhdGlvbjogbnVtYmVyO1xuICByZWFkb25seSBjb3VudGVycz86IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgc3BlY2lmaWMgc3BhblxuICpcbiAqIEEgc3BhbiBkZWZpbml0aW9uIGlzIGEgcGFpciBvZiBgSW9NZXNzYWdlTWFrZXJgcyB0byBjcmVhdGUgYSBzdGFydCBhbmQgZW5kIG1lc3NhZ2Ugb2YgdGhlIHNwYW4gcmVzcGVjdGl2ZWx5LlxuICogSXQgYWxzbyBoYXMgYSBkaXNwbGF5IG5hbWUsIHRoYXQgaXMgdXNlZCBmb3IgYXV0by1nZW5lcmF0ZWQgbWVzc2FnZSB0ZXh0IHdoZW4gdGhleSBhcmUgbm90IHByb3ZpZGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwYW5EZWZpbml0aW9uPFMgZXh0ZW5kcyBvYmplY3QsIEUgZXh0ZW5kcyBTcGFuRW5kPiB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhcnQ6IG1ha2UuSW9NZXNzYWdlTWFrZXI8Uz47XG4gIHJlYWRvbmx5IGVuZDogbWFrZS5Jb01lc3NhZ2VNYWtlcjxFPjtcbn1cblxuLyoqXG4gKiBBcmd1bWVudHMgdG8gdGhlIHNwYW4uZW5kKCkgZnVuY3Rpb25cbiAqXG4gKiBgU3BhbkVuZEFyZ3VtZW50czxUPmAgYXJlIHRoZSBmaWVsZHMgdGhhdCBhIHVzZXIgc3RpbGwgbmVlZHMgdG8gc3VwcGx5LCBpdFxuICogZmllbGRzIGluIHRoZSB0eXBlIGBUYCB0aGF0IGFyZW4ndCBhbHNvIGluIGBTcGFuRW5kYC4gYFNwYW5FbmRgIHJlcHJlc2VudHNcbiAqIGZpZWxkcyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIGJ5IHRoZSB1bmRlcmx5aW5nIGBlbmRgIGZ1bmN0aW9uLlxuICpcbiAqIEZpZWxkcyB0aGF0IGFyZSBhbHJlYWR5IGluIGBTcGFuRW5kYCBhcmUgc3RpbGwgcmVuZGVyZWQgYXMgb3B0aW9uYWxzLCBzbyB5b3VcbiAqIGNhbiBvdmVycmlkZSB0aGVtIChidXQgeW91IGRvbid0IGhhdmUgdG8pLlxuICpcbiAqIC0gRG9lcyB0aGUgZm9sbG93aW5nOiBmaWVsZHMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gYFRgIGFuZCBgU3BhbkVuZGAgYXJlXG4gKiAgIG1hZGUgb3B0aW9uYWwsIGFuZCB0aGUgcmVzdCBvZiB0aGUga2V5cyBvZiBgVGAgYXJlIHJlcXVpcmVkLlxuICpcbiAqIC0gSWYgYFRgIGlzIGZ1bGx5IHN1YnN1bWVkIGJ5IHRoZSBgU3BhbkVuZGAgdHlwZSwgdGhlbiBhbiBvYmplY3QgdHlwZSB3aXRoXG4gKiAgIGFsbCBmaWVsZHMgb3B0aW9uYWwsIE9SICd2b2lkJyBzbyB5b3UgY2FuIGF2b2lkIHBhc3NpbmcgYW4gYXJndW1lbnQgYXQgYWxsLlxuICovXG50eXBlIFNwYW5FbmRBcmd1bWVudHM8VD4gPSBrZXlvZiBUIGV4dGVuZHMga2V5b2YgU3BhbkVuZFxuICA/IChQaWNrPFBhcnRpYWw8U3BhbkVuZD4sIGtleW9mIFQgJiBrZXlvZiBTcGFuRW5kPiB8IHZvaWQpXG4gIDogT3B0aW9uYWw8VCwga2V5b2YgVCAmIGtleW9mIFNwYW5FbmQ+O1xuXG4vKipcbiAqIFVzZWQgaW4gY29uZGl0aW9uYWwgdHlwZXMgdG8gY2hlY2sgaWYgYSB0eXBlIChlLmcuIGFmdGVyIG9taXR0aW5nIGZpZWxkcykgaXMgYW4gZW1wdHkgb2JqZWN0XG4gKiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGNvdW50ZXItaW50dWl0aXZlIG5laXRoZXIgYG9iamVjdGAgbm9yIGB7fWAgcmVwcmVzZW50IHRoYXQuXG4gKi9cbnR5cGUgRW1wdHlPYmplY3QgPSBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbi8qKlxuICogSGVscGVyIHR5cGUgdG8gZm9yY2UgYSBwYXJhbWV0ZXIgdG8gYmUgbm90IHByZXNlbnQgb2YgdGhlIGNvbXB1dGVkIHR5cGUgaXMgYW4gZW1wdHkgb2JqZWN0XG4gKi9cbnR5cGUgVm9pZFdoZW5FbXB0eTxUPiA9IFQgZXh0ZW5kcyBFbXB0eU9iamVjdCA/IHZvaWQgOiBUO1xuXG4vKipcbiAqIE1ha2Ugc29tZSBwcm9wZXJ0aWVzIG9wdGlvbmFsXG4gKi9cbnR5cGUgT3B0aW9uYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gT21pdDxULCBLPiAmIFBpY2s8UGFydGlhbDxUPiwgSz47XG5cbi8qKlxuICogRW5kaW5nIHRoZSBzcGFuIHJldHVybnMgdGhlIG9ic2VydmVkIGR1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWxhcHNlZFRpbWUge1xuICByZWFkb25seSBhc01zOiBudW1iZXI7XG4gIHJlYWRvbmx5IGFzU2VjOiBudW1iZXI7XG59XG5cbi8qKlxuICogQSBtZXNzYWdlIHNwYW4gdGhhdCBjYW4gYmUgZW5kZWQgYW5kIHJlYWQgdGltZXMgZnJvbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNZXNzYWdlU3BhbjxFIGV4dGVuZHMgU3BhbkVuZD4gZXh0ZW5kcyBJQWN0aW9uQXdhcmVJb0hvc3Qge1xuICAvKipcbiAgICogQW4gSW9IZWxwZXIgd3JhcHBlZCBhcm91bmQgdGhlIHNwYW4uXG4gICAqL1xuICByZWFkb25seSBhc0hlbHBlcjogSW9IZWxwZXI7XG4gIC8qKlxuICAgKiBBbiBJb0RlZmF1bHRNZXNzYWdlcyB3cmFwcGVkIGFyb3VuZCB0aGUgc3Bhbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRzOiBJb0RlZmF1bHRNZXNzYWdlcztcblxuICAvKipcbiAgICogR2V0IHRoZSB0aW1lIGVsYXBzZWQgc2luY2UgdGhlIHN0YXJ0XG4gICAqL1xuICBlbGFwc2VkVGltZSgpOiBQcm9taXNlPEVsYXBzZWRUaW1lPjtcbiAgLyoqXG4gICAqIFNlbmRzIGEgc2ltcGxlLCBnZW5lcmljIG1lc3NhZ2Ugd2l0aCB0aGUgY3VycmVudCB0aW1pbmdcbiAgICogRm9yIG1vcmUgY29tcGxleCBpbnRlcm1lZGlhdGUgbWVzc2FnZXMsIGdldCB0aGUgYGVsYXBzZWRUaW1lYCBhbmQgdXNlIGBub3RpZnlgXG4gICAqL1xuICB0aW1pbmcobWFrZXI6IG1ha2UuSW9NZXNzYWdlTWFrZXI8RHVyYXRpb24+LCBtZXNzYWdlPzogc3RyaW5nKTogUHJvbWlzZTxFbGFwc2VkVGltZT47XG4gIC8qKlxuICAgKiBFbmQgdGhlIHNwYW4gd2l0aCBhIHBheWxvYWRcbiAgICovXG4gIGVuZChwYXlsb2FkOiBTcGFuRW5kQXJndW1lbnRzPEU+KTogUHJvbWlzZTxFbGFwc2VkVGltZT47XG4gIC8qKlxuICAgKiBFbmQgdGhlIHNwYW4gd2l0aCBhIG1lc3NhZ2UgYW5kIHBheWxvYWRcbiAgICovXG4gIGVuZChtZXNzYWdlOiBzdHJpbmcsIHBheWxvYWQ6IFNwYW5FbmRBcmd1bWVudHM8RT4pOiBQcm9taXNlPEVsYXBzZWRUaW1lPjtcblxuICAvKipcbiAgICogSW5jcmVtZW50IGEgY291bnRlclxuICAgKi9cbiAgaW5jQ291bnRlcihuYW1lOiBzdHJpbmcsIGRlbHRhPzogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJuIGEgbmV3IHRpbWVyIG9iamVjdFxuICAgKlxuICAgKiBJdCB3aWxsIGJlIGFkZGVkIGludG8gdGhlIHNwYW4gZGF0YSB3aGVuIGl0J3Mgc3RvcHBlZC4gQWxsIG9wZW4gdGltZXJzIGFyZVxuICAgKiBhdXRvbWF0aWNhbGx5IHN0b3BwZWQgd2hlbiB0aGUgc3BhbiBpcyBlbmRlZC5cbiAgICpcbiAgICogVGltZXJzIGFyZSB1bHRpbWF0ZWx5IGFkZGVkIHRvIHRoZSBgY291bnRlcnNgIGFycmF5IHdpdGggYDxuYW1lPl9tc2AgYW5kXG4gICAqIGA8bmFtZT5fY250YCBrZXlzLlxuICAgKi9cbiAgc3RhcnRUaW1lcihuYW1lOiBzdHJpbmcpOiBJVGltZXI7XG59XG5cbi8qKlxuICogQSB0aW1lciB0byB0aW1lIGFuIG9wZXJhdGlvbiBpbiBhIHNwYW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVyIHtcbiAgc3RvcCgpOiB2b2lkO1xufVxuXG4vKipcbiAqIEhlbHBlciBjbGFzcyB0byBtYWtlIHNwYW5zIGFyb3VuZCBibG9ja3Mgb2Ygd29ya1xuICpcbiAqIEJsb2NrcyBhcmUgZW5jbG9zZWQgYnkgYSBzdGFydCBhbmQgZW5kIG1lc3NhZ2UuXG4gKiBBbGwgbWVzc2FnZXMgb2YgdGhlIHNwYW4gc2hhcmUgYSB1bmlxdWUgaWQuXG4gKiBUaGUgZW5kIG1lc3NhZ2UgY29udGFpbnMgdGhlIHRpbWUgcGFzc2VkIGJldHdlZW4gc3RhcnQgYW5kIGVuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNwYW5NYWtlcjxTIGV4dGVuZHMgb2JqZWN0LCBFIGV4dGVuZHMgU3BhbkVuZD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmluaXRpb246IFNwYW5EZWZpbml0aW9uPFMsIEU+O1xuICBwcml2YXRlIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcbiAgcHJpdmF0ZSBtYWtlSGVscGVyOiAoaW9Ib3N0OiBJQWN0aW9uQXdhcmVJb0hvc3QpID0+IElvSGVscGVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihpb0hlbHBlcjogSW9IZWxwZXIsIGRlZmluaXRpb246IFNwYW5EZWZpbml0aW9uPFMsIEU+LCBtYWtlSGVscGVyOiAoaW9Ib3N0OiBJQWN0aW9uQXdhcmVJb0hvc3QpID0+IElvSGVscGVyKSB7XG4gICAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgICB0aGlzLmlvSGVscGVyID0gaW9IZWxwZXI7XG4gICAgdGhpcy5tYWtlSGVscGVyID0gbWFrZUhlbHBlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIHNwYW4gYW5kIGluaXRpYWxseSBub3RpZmllcyB0aGUgSW9Ib3N0XG4gICAqIEByZXR1cm5zIGEgbWVzc2FnZSBzcGFuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYmVnaW4ocGF5bG9hZDogVm9pZFdoZW5FbXB0eTxTPik6IFByb21pc2U8SU1lc3NhZ2VTcGFuPEU+PjtcbiAgcHVibGljIGFzeW5jIGJlZ2luKG1lc3NhZ2U6IHN0cmluZywgcGF5bG9hZDogUyk6IFByb21pc2U8SU1lc3NhZ2VTcGFuPEU+PjtcbiAgcHVibGljIGFzeW5jIGJlZ2luKGE6IGFueSwgYj86IFMpOiBQcm9taXNlPElNZXNzYWdlU3BhbjxFPj4ge1xuICAgIGNvbnN0IHNwYW4gPSBuZXcgTWVzc2FnZVNwYW4odGhpcy5pb0hlbHBlciwgdGhpcy5kZWZpbml0aW9uLCB0aGlzLm1ha2VIZWxwZXIpO1xuICAgIGNvbnN0IHN0YXJ0SW5wdXQgPSBwYXJzZUFyZ3M8Uz4oYSwgYik7XG4gICAgY29uc3Qgc3RhcnRNc2cgPSBzdGFydElucHV0Lm1lc3NhZ2UgPz8gYFN0YXJ0aW5nICR7dGhpcy5kZWZpbml0aW9uLm5hbWV9IC4uLmA7XG4gICAgY29uc3Qgc3RhcnRQYXlsb2FkID0gc3RhcnRJbnB1dC5wYXlsb2FkO1xuICAgIGF3YWl0IHNwYW4ubm90aWZ5KHRoaXMuZGVmaW5pdGlvbi5zdGFydC5tc2coc3RhcnRNc2csIHN0YXJ0UGF5bG9hZCkpO1xuXG4gICAgcmV0dXJuIHNwYW47XG4gIH1cbn1cblxuY2xhc3MgTWVzc2FnZVNwYW48UyBleHRlbmRzIG9iamVjdCwgRSBleHRlbmRzIFNwYW5FbmQ+IGltcGxlbWVudHMgSU1lc3NhZ2VTcGFuPEU+IHtcbiAgcHVibGljIHJlYWRvbmx5IGFzSGVscGVyOiBJb0hlbHBlcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmluaXRpb246IFNwYW5EZWZpbml0aW9uPFMsIEU+O1xuICBwcml2YXRlIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBzcGFuSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1pbmdNc2dUZW1wbGF0ZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvdW50ZXJzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgb3BlblRpbWVycyA9IG5ldyBTZXQ8SVRpbWVyPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihpb0hlbHBlcjogSW9IZWxwZXIsIGRlZmluaXRpb246IFNwYW5EZWZpbml0aW9uPFMsIEU+LCBtYWtlSGVscGVyOiAoaW9Ib3N0OiBJQWN0aW9uQXdhcmVJb0hvc3QpID0+IElvSGVscGVyKSB7XG4gICAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgICB0aGlzLmlvSGVscGVyID0gaW9IZWxwZXI7XG4gICAgdGhpcy5zcGFuSWQgPSByYW5kb21VVUlEKCk7XG4gICAgdGhpcy5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB0aGlzLnRpbWluZ01zZ1RlbXBsYXRlID0gJ1xcbuKcqCAgJXMgdGltZTogJWRzXFxuJztcbiAgICB0aGlzLmFzSGVscGVyID0gbWFrZUhlbHBlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVmYXVsdHMoKTogSW9EZWZhdWx0TWVzc2FnZXMge1xuICAgIHJldHVybiB0aGlzLmFzSGVscGVyLmRlZmF1bHRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVsYXBzZWRUaW1lKCk6IFByb21pc2U8RWxhcHNlZFRpbWU+IHtcbiAgICByZXR1cm4gdGhpcy50aW1lKCk7XG4gIH1cbiAgcHVibGljIGFzeW5jIHRpbWluZyhtYWtlcjogbWFrZS5Jb01lc3NhZ2VNYWtlcjxEdXJhdGlvbj4sIG1lc3NhZ2U/OiBzdHJpbmcpOiBQcm9taXNlPEVsYXBzZWRUaW1lPiB7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnRpbWUoKTtcbiAgICBjb25zdCB0aW1pbmdNc2cgPSBtZXNzYWdlID8gbWVzc2FnZSA6IHV0aWwuZm9ybWF0KHRoaXMudGltaW5nTXNnVGVtcGxhdGUsIHRoaXMuZGVmaW5pdGlvbi5uYW1lLCBkdXJhdGlvbi5hc1NlYyk7XG4gICAgYXdhaXQgdGhpcy5ub3RpZnkobWFrZXIubXNnKHRpbWluZ01zZywge1xuICAgICAgZHVyYXRpb246IGR1cmF0aW9uLmFzTXMsXG4gICAgfSkpO1xuICAgIHJldHVybiBkdXJhdGlvbjtcbiAgfVxuICBwdWJsaWMgYXN5bmMgbm90aWZ5KG1zZzogQWN0aW9uTGVzc01lc3NhZ2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5pb0hlbHBlci5ub3RpZnkod2l0aFNwYW5JZCh0aGlzLnNwYW5JZCwgbXNnKSk7XG4gIH1cbiAgcHVibGljIGFzeW5jIGVuZCh4OiBhbnksIHk/OiBTcGFuRW5kQXJndW1lbnRzPEU+KTogUHJvbWlzZTxFbGFwc2VkVGltZT4ge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy50aW1lKCk7XG5cbiAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy5vcGVuVGltZXJzKSB7XG4gICAgICB0LnN0b3AoKTtcbiAgICB9XG4gICAgdGhpcy5vcGVuVGltZXJzLmNsZWFyKCk7XG5cbiAgICBjb25zdCBlbmRJbnB1dCA9IHBhcnNlQXJnczxTcGFuRW5kQXJndW1lbnRzPEU+Pih4LCB5KTtcbiAgICBjb25zdCBlbmRNc2cgPSBlbmRJbnB1dC5tZXNzYWdlID8/IHV0aWwuZm9ybWF0KHRoaXMudGltaW5nTXNnVGVtcGxhdGUsIHRoaXMuZGVmaW5pdGlvbi5uYW1lLCBkdXJhdGlvbi5hc1NlYyk7XG4gICAgY29uc3QgZW5kUGF5bG9hZCA9IGVuZElucHV0LnBheWxvYWQ7XG5cbiAgICBhd2FpdCB0aGlzLm5vdGlmeSh0aGlzLmRlZmluaXRpb24uZW5kLm1zZyhcbiAgICAgIGVuZE1zZywge1xuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24uYXNNcyxcbiAgICAgICAgLi4uKE9iamVjdC5rZXlzKHRoaXMuY291bnRlcnMpLmxlbmd0aCA+IDAgPyB7IGNvdW50ZXJzOiB0aGlzLmNvdW50ZXJzIH0gOiB7fSksXG4gICAgICAgIC4uLmVuZFBheWxvYWQsXG4gICAgICB9IGFzIEUpKTtcblxuICAgIHJldHVybiBkdXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBpbmNDb3VudGVyKG5hbWU6IHN0cmluZywgZGVsdGE6IG51bWJlciA9IDEpOiB2b2lkIHtcbiAgICB0aGlzLmNvdW50ZXJzW25hbWVdID0gKHRoaXMuY291bnRlcnNbbmFtZV0gPz8gMCkgKyBkZWx0YTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXF1ZXN0UmVzcG9uc2U8VD4obXNnOiBBY3Rpb25MZXNzUmVxdWVzdDx1bmtub3duLCBUPik6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmlvSGVscGVyLnJlcXVlc3RSZXNwb25zZSh3aXRoU3BhbklkKHRoaXMuc3BhbklkLCBtc2cpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFRpbWVyKG5hbWU6IHN0cmluZyk6IElUaW1lciB7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuXG4gICAgY29uc3QgdDogSVRpbWVyID0ge1xuICAgICAgc3RvcDogKCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW5UaW1lcnMuZGVsZXRlKHQpO1xuICAgICAgICB0aGlzLmluY0NvdW50ZXIoYCR7bmFtZX1fbXNgLCBNYXRoLmZsb29yKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwKTtcbiAgICAgICAgdGhpcy5pbmNDb3VudGVyKGAke25hbWV9X2NudGAsIDEpO1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMub3BlblRpbWVycy5hZGQodCk7XG4gICAgcmV0dXJuIHQ7XG4gIH1cblxuICBwcml2YXRlIHRpbWUoKSB7XG4gICAgY29uc3QgZWxhcHNlZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuc3RhcnRUaW1lO1xuICAgIHJldHVybiB7XG4gICAgICBhc01zOiBlbGFwc2VkVGltZSxcbiAgICAgIGFzU2VjOiBmb3JtYXRUaW1lKGVsYXBzZWRUaW1lKSxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJnczxTPihmaXJzdDogYW55LCBzZWNvbmQ/OiBTKTogeyBtZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQ7IHBheWxvYWQ6IFMgfSB7XG4gIGNvbnN0IGZpcnN0SXNNZXNzYWdlID0gdHlwZW9mIGZpcnN0ID09PSAnc3RyaW5nJztcblxuICAvLyBXaGVuIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHN0cmluZyBvciB3ZSBoYXZlIGEgc2Vjb25kIGFyZ3VtZW50LCB0aGVuIHRoZSBmaXJzdCBhcmcgaXMgdGhlIG1lc3NhZ2VcbiAgY29uc3QgbWVzc2FnZSA9IChmaXJzdElzTWVzc2FnZSB8fCBzZWNvbmQpID8gZmlyc3QgOiB1bmRlZmluZWQ7XG5cbiAgLy8gV2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzdHJpbmcgb3Igd2UgaGF2ZSBhIHNlY29uZCBhcmd1bWVudCxcbiAgLy8gdGhlbiB0aGUgc2Vjb25kIGFyZyBpcyB0aGUgcGF5bG9hZCwgb3RoZXJ3aXNlIHRoZSBmaXJzdCBhcmcgaXMgdGhlIHBheWxvYWRcbiAgY29uc3QgcGF5bG9hZCA9IChmaXJzdElzTWVzc2FnZSB8fCBzZWNvbmQpID8gc2Vjb25kIDogZmlyc3Q7XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlLFxuICAgIHBheWxvYWQsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHdpdGhTcGFuSWQ8VCBleHRlbmRzIG9iamVjdD4oc3Bhbjogc3RyaW5nLCBtZXNzYWdlOiBUKTogVCAmIHsgc3Bhbjogc3RyaW5nIH0ge1xuICByZXR1cm4ge1xuICAgIC4uLm1lc3NhZ2UsXG4gICAgc3BhbixcbiAgfTtcbn1cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNwYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTJDO0FBQzNDLDZDQUF5QztBQUN6QyxrQ0FBa0M7QUFLbEMsd0NBQTJDO0FBZ0kzQzs7Ozs7O0dBTUc7QUFDSCxNQUFhLFNBQVM7SUFDSCxVQUFVLENBQXVCO0lBQ2pDLFFBQVEsQ0FBVztJQUM1QixVQUFVLENBQTJDO0lBRTdELFlBQW1CLFFBQWtCLEVBQUUsVUFBZ0MsRUFBRSxVQUFvRDtRQUMzSCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBUU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFNLEVBQUUsQ0FBSztRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDOUUsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN4QyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBMUJELDhCQTBCQztBQUVELE1BQU0sV0FBVztJQUNDLFFBQVEsQ0FBVztJQUVsQixVQUFVLENBQXVCO0lBQ2pDLFFBQVEsQ0FBVztJQUNuQixNQUFNLENBQVM7SUFDZixTQUFTLENBQVM7SUFDbEIsaUJBQWlCLENBQVM7SUFDMUIsUUFBUSxHQUEyQixFQUFFLENBQUM7SUFDdEMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFaEQsWUFBbUIsUUFBa0IsRUFBRSxVQUFnQyxFQUFFLFVBQW9EO1FBQzNILElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBQSx3QkFBVSxHQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDTSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQW9DLEVBQUUsT0FBZ0I7UUFDeEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEgsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFO1lBQ3JDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTtTQUN4QixDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFDTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQStCO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ00sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFNLEVBQUUsQ0FBdUI7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTdCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXhCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdHLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7UUFFcEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FDdkMsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJO1lBQ3ZCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3RSxHQUFHLFVBQVU7U0FDVCxDQUFDLENBQUMsQ0FBQztRQUVYLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBWSxFQUFFLFFBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQzNELENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFJLEdBQWtDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXpCLE1BQU0sQ0FBQyxHQUFXO1lBQ2hCLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUNELENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztnQkFDZCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLElBQUk7UUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUQsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxDQUFDO1NBQy9CLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxTQUFTLFNBQVMsQ0FBSSxLQUFVLEVBQUUsTUFBVTtJQUMxQyxNQUFNLGNBQWMsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7SUFFakQsc0dBQXNHO0lBQ3RHLE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUUvRCxvRUFBb0U7SUFDcEUsNkVBQTZFO0lBQzdFLE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUU1RCxPQUFPO1FBQ0wsT0FBTztRQUNQLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFtQixJQUFZLEVBQUUsT0FBVTtJQUM1RCxPQUFPO1FBQ0wsR0FBRyxPQUFPO1FBQ1YsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi8uLi8uLi9wcml2YXRlL2Rpc3Bvc2UtcG9seWZpbGwnO1xuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB0eXBlIHsgSW9EZWZhdWx0TWVzc2FnZXMgfSBmcm9tICcuL2lvLWRlZmF1bHQtbWVzc2FnZXMnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25MZXNzTWVzc2FnZSwgQWN0aW9uTGVzc1JlcXVlc3QsIElvSGVscGVyIH0gZnJvbSAnLi9pby1oZWxwZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBtYWtlIGZyb20gJy4vbWVzc2FnZS1tYWtlcic7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvdHlwZXMnO1xuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gJy4uLy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBJQWN0aW9uQXdhcmVJb0hvc3QgfSBmcm9tICcuLi9pby1ob3N0JztcblxuLyoqXG4gKiBUaGVzZSBkYXRhIGZpZWxkcyBhcmUgYXV0b21hdGljYWxseSBhZGRlZCBieSBlbmRpbmcgYSBzcGFuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbkVuZCB7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvdW50ZXJzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBzcGVjaWZpYyBzcGFuXG4gKlxuICogQSBzcGFuIGRlZmluaXRpb24gaXMgYSBwYWlyIG9mIGBJb01lc3NhZ2VNYWtlcmBzIHRvIGNyZWF0ZSBhIHN0YXJ0IGFuZCBlbmQgbWVzc2FnZSBvZiB0aGUgc3BhbiByZXNwZWN0aXZlbHkuXG4gKiBJdCBhbHNvIGhhcyBhIGRpc3BsYXkgbmFtZSwgdGhhdCBpcyB1c2VkIGZvciBhdXRvLWdlbmVyYXRlZCBtZXNzYWdlIHRleHQgd2hlbiB0aGV5IGFyZSBub3QgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbkRlZmluaXRpb248UyBleHRlbmRzIG9iamVjdCwgRSBleHRlbmRzIFNwYW5FbmQ+IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzdGFydDogbWFrZS5Jb01lc3NhZ2VNYWtlcjxTPjtcbiAgcmVhZG9ubHkgZW5kOiBtYWtlLklvTWVzc2FnZU1ha2VyPEU+O1xufVxuXG4vKipcbiAqIEFyZ3VtZW50cyB0byB0aGUgc3Bhbi5lbmQoKSBmdW5jdGlvblxuICpcbiAqIGBTcGFuRW5kQXJndW1lbnRzPFQ+YCBhcmUgdGhlIGZpZWxkcyB0aGF0IGEgdXNlciBzdGlsbCBuZWVkcyB0byBzdXBwbHksIGl0XG4gKiBmaWVsZHMgaW4gdGhlIHR5cGUgYFRgIHRoYXQgYXJlbid0IGFsc28gaW4gYFNwYW5FbmRgLiBgU3BhbkVuZGAgcmVwcmVzZW50c1xuICogZmllbGRzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgdGhlIHVuZGVybHlpbmcgYGVuZGAgZnVuY3Rpb24uXG4gKlxuICogRmllbGRzIHRoYXQgYXJlIGFscmVhZHkgaW4gYFNwYW5FbmRgIGFyZSBzdGlsbCByZW5kZXJlZCBhcyBvcHRpb25hbHMsIHNvIHlvdVxuICogY2FuIG92ZXJyaWRlIHRoZW0gKGJ1dCB5b3UgZG9uJ3QgaGF2ZSB0bykuXG4gKlxuICogLSBEb2VzIHRoZSBmb2xsb3dpbmc6IGZpZWxkcyB0aGF0IGFyZSBzaGFyZWQgYmV0d2VlbiBgVGAgYW5kIGBTcGFuRW5kYCBhcmVcbiAqICAgbWFkZSBvcHRpb25hbCwgYW5kIHRoZSByZXN0IG9mIHRoZSBrZXlzIG9mIGBUYCBhcmUgcmVxdWlyZWQuXG4gKlxuICogLSBJZiBgVGAgaXMgZnVsbHkgc3Vic3VtZWQgYnkgdGhlIGBTcGFuRW5kYCB0eXBlLCB0aGVuIGFuIG9iamVjdCB0eXBlIHdpdGhcbiAqICAgYWxsIGZpZWxkcyBvcHRpb25hbCwgT1IgJ3ZvaWQnIHNvIHlvdSBjYW4gYXZvaWQgcGFzc2luZyBhbiBhcmd1bWVudCBhdCBhbGwuXG4gKi9cbnR5cGUgU3BhbkVuZEFyZ3VtZW50czxUPiA9IGtleW9mIFQgZXh0ZW5kcyBrZXlvZiBTcGFuRW5kXG4gID8gKFBpY2s8UGFydGlhbDxTcGFuRW5kPiwga2V5b2YgVCAmIGtleW9mIFNwYW5FbmQ+IHwgdm9pZClcbiAgOiBPcHRpb25hbDxULCBrZXlvZiBUICYga2V5b2YgU3BhbkVuZD47XG5cbi8qKlxuICogVXNlZCBpbiBjb25kaXRpb25hbCB0eXBlcyB0byBjaGVjayBpZiBhIHR5cGUgKGUuZy4gYWZ0ZXIgb21pdHRpbmcgZmllbGRzKSBpcyBhbiBlbXB0eSBvYmplY3RcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgY291bnRlci1pbnR1aXRpdmUgbmVpdGhlciBgb2JqZWN0YCBub3IgYHt9YCByZXByZXNlbnQgdGhhdC5cbiAqL1xudHlwZSBFbXB0eU9iamVjdCA9IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuLyoqXG4gKiBIZWxwZXIgdHlwZSB0byBmb3JjZSBhIHBhcmFtZXRlciB0byBiZSBub3QgcHJlc2VudCBvZiB0aGUgY29tcHV0ZWQgdHlwZSBpcyBhbiBlbXB0eSBvYmplY3RcbiAqL1xudHlwZSBWb2lkV2hlbkVtcHR5PFQ+ID0gVCBleHRlbmRzIEVtcHR5T2JqZWN0ID8gdm9pZCA6IFQ7XG5cbi8qKlxuICogTWFrZSBzb21lIHByb3BlcnRpZXMgb3B0aW9uYWxcbiAqL1xudHlwZSBPcHRpb25hbDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBPbWl0PFQsIEs+ICYgUGljazxQYXJ0aWFsPFQ+LCBLPjtcblxuLyoqXG4gKiBFbmRpbmcgdGhlIHNwYW4gcmV0dXJucyB0aGUgb2JzZXJ2ZWQgZHVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbGFwc2VkVGltZSB7XG4gIHJlYWRvbmx5IGFzTXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgYXNTZWM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBIG1lc3NhZ2Ugc3BhbiB0aGF0IGNhbiBiZSBlbmRlZCBhbmQgcmVhZCB0aW1lcyBmcm9tXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1lc3NhZ2VTcGFuPEUgZXh0ZW5kcyBTcGFuRW5kPiBleHRlbmRzIElBY3Rpb25Bd2FyZUlvSG9zdCB7XG4gIC8qKlxuICAgKiBBbiBJb0hlbHBlciB3cmFwcGVkIGFyb3VuZCB0aGUgc3Bhbi5cbiAgICovXG4gIHJlYWRvbmx5IGFzSGVscGVyOiBJb0hlbHBlcjtcbiAgLyoqXG4gICAqIEFuIElvRGVmYXVsdE1lc3NhZ2VzIHdyYXBwZWQgYXJvdW5kIHRoZSBzcGFuLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdHM6IElvRGVmYXVsdE1lc3NhZ2VzO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHRpbWUgZWxhcHNlZCBzaW5jZSB0aGUgc3RhcnRcbiAgICovXG4gIGVsYXBzZWRUaW1lKCk6IFByb21pc2U8RWxhcHNlZFRpbWU+O1xuICAvKipcbiAgICogU2VuZHMgYSBzaW1wbGUsIGdlbmVyaWMgbWVzc2FnZSB3aXRoIHRoZSBjdXJyZW50IHRpbWluZ1xuICAgKiBGb3IgbW9yZSBjb21wbGV4IGludGVybWVkaWF0ZSBtZXNzYWdlcywgZ2V0IHRoZSBgZWxhcHNlZFRpbWVgIGFuZCB1c2UgYG5vdGlmeWBcbiAgICovXG4gIHRpbWluZyhtYWtlcjogbWFrZS5Jb01lc3NhZ2VNYWtlcjxEdXJhdGlvbj4sIG1lc3NhZ2U/OiBzdHJpbmcpOiBQcm9taXNlPEVsYXBzZWRUaW1lPjtcbiAgLyoqXG4gICAqIEVuZCB0aGUgc3BhbiB3aXRoIGEgcGF5bG9hZFxuICAgKi9cbiAgZW5kKHBheWxvYWQ6IFNwYW5FbmRBcmd1bWVudHM8RT4pOiBQcm9taXNlPEVsYXBzZWRUaW1lPjtcbiAgLyoqXG4gICAqIEVuZCB0aGUgc3BhbiB3aXRoIGEgbWVzc2FnZSBhbmQgcGF5bG9hZFxuICAgKi9cbiAgZW5kKG1lc3NhZ2U6IHN0cmluZywgcGF5bG9hZDogU3BhbkVuZEFyZ3VtZW50czxFPik6IFByb21pc2U8RWxhcHNlZFRpbWU+O1xuXG4gIC8qKlxuICAgKiBJbmNyZW1lbnQgYSBjb3VudGVyXG4gICAqL1xuICBpbmNDb3VudGVyKG5hbWU6IHN0cmluZywgZGVsdGE/OiBudW1iZXIpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBuZXcgdGltZXIgb2JqZWN0XG4gICAqXG4gICAqIEl0IHdpbGwgYmUgYWRkZWQgaW50byB0aGUgc3BhbiBkYXRhIHdoZW4gaXQncyBzdG9wcGVkLiBBbGwgb3BlbiB0aW1lcnMgYXJlXG4gICAqIGF1dG9tYXRpY2FsbHkgc3RvcHBlZCB3aGVuIHRoZSBzcGFuIGlzIGVuZGVkLlxuICAgKlxuICAgKiBUaW1lcnMgYXJlIHVsdGltYXRlbHkgYWRkZWQgdG8gdGhlIGBjb3VudGVyc2AgYXJyYXkgd2l0aCBgPG5hbWU+X21zYCBhbmRcbiAgICogYDxuYW1lPl9jbnRgIGtleXMuXG4gICAqL1xuICBzdGFydFRpbWVyKG5hbWU6IHN0cmluZyk6IElUaW1lcjtcblxuICAvKipcbiAgICogUmVjb3JkIGEgZmluaXNoZWQgdGltZSB3aXRoIGEgZ2l2ZW4gZHVyYXRpb25cbiAgICovXG4gIGFkZFRpbWVyKG5hbWU6IHN0cmluZywgZHVyYXRpb246IG51bWJlcik6IHZvaWQ7XG59XG5cbi8qKlxuICogQSB0aW1lciB0byB0aW1lIGFuIG9wZXJhdGlvbiBpbiBhIHNwYW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVyIHtcbiAgc3RvcCgpOiB2b2lkO1xuICBbU3ltYm9sLmRpc3Bvc2VdKCk6IHZvaWQ7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIHRvIG1ha2Ugc3BhbnMgYXJvdW5kIGJsb2NrcyBvZiB3b3JrXG4gKlxuICogQmxvY2tzIGFyZSBlbmNsb3NlZCBieSBhIHN0YXJ0IGFuZCBlbmQgbWVzc2FnZS5cbiAqIEFsbCBtZXNzYWdlcyBvZiB0aGUgc3BhbiBzaGFyZSBhIHVuaXF1ZSBpZC5cbiAqIFRoZSBlbmQgbWVzc2FnZSBjb250YWlucyB0aGUgdGltZSBwYXNzZWQgYmV0d2VlbiBzdGFydCBhbmQgZW5kLlxuICovXG5leHBvcnQgY2xhc3MgU3Bhbk1ha2VyPFMgZXh0ZW5kcyBvYmplY3QsIEUgZXh0ZW5kcyBTcGFuRW5kPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvbjogU3BhbkRlZmluaXRpb248UywgRT47XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuICBwcml2YXRlIG1ha2VIZWxwZXI6IChpb0hvc3Q6IElBY3Rpb25Bd2FyZUlvSG9zdCkgPT4gSW9IZWxwZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGlvSGVscGVyOiBJb0hlbHBlciwgZGVmaW5pdGlvbjogU3BhbkRlZmluaXRpb248UywgRT4sIG1ha2VIZWxwZXI6IChpb0hvc3Q6IElBY3Rpb25Bd2FyZUlvSG9zdCkgPT4gSW9IZWxwZXIpIHtcbiAgICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICAgIHRoaXMuaW9IZWxwZXIgPSBpb0hlbHBlcjtcbiAgICB0aGlzLm1ha2VIZWxwZXIgPSBtYWtlSGVscGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgc3BhbiBhbmQgaW5pdGlhbGx5IG5vdGlmaWVzIHRoZSBJb0hvc3RcbiAgICogQHJldHVybnMgYSBtZXNzYWdlIHNwYW5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBiZWdpbihwYXlsb2FkOiBWb2lkV2hlbkVtcHR5PFM+KTogUHJvbWlzZTxJTWVzc2FnZVNwYW48RT4+O1xuICBwdWJsaWMgYXN5bmMgYmVnaW4obWVzc2FnZTogc3RyaW5nLCBwYXlsb2FkOiBTKTogUHJvbWlzZTxJTWVzc2FnZVNwYW48RT4+O1xuICBwdWJsaWMgYXN5bmMgYmVnaW4oYTogYW55LCBiPzogUyk6IFByb21pc2U8SU1lc3NhZ2VTcGFuPEU+PiB7XG4gICAgY29uc3Qgc3BhbiA9IG5ldyBNZXNzYWdlU3Bhbih0aGlzLmlvSGVscGVyLCB0aGlzLmRlZmluaXRpb24sIHRoaXMubWFrZUhlbHBlcik7XG4gICAgY29uc3Qgc3RhcnRJbnB1dCA9IHBhcnNlQXJnczxTPihhLCBiKTtcbiAgICBjb25zdCBzdGFydE1zZyA9IHN0YXJ0SW5wdXQubWVzc2FnZSA/PyBgU3RhcnRpbmcgJHt0aGlzLmRlZmluaXRpb24ubmFtZX0gLi4uYDtcbiAgICBjb25zdCBzdGFydFBheWxvYWQgPSBzdGFydElucHV0LnBheWxvYWQ7XG4gICAgYXdhaXQgc3Bhbi5ub3RpZnkodGhpcy5kZWZpbml0aW9uLnN0YXJ0Lm1zZyhzdGFydE1zZywgc3RhcnRQYXlsb2FkKSk7XG5cbiAgICByZXR1cm4gc3BhbjtcbiAgfVxufVxuXG5jbGFzcyBNZXNzYWdlU3BhbjxTIGV4dGVuZHMgb2JqZWN0LCBFIGV4dGVuZHMgU3BhbkVuZD4gaW1wbGVtZW50cyBJTWVzc2FnZVNwYW48RT4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYXNIZWxwZXI6IElvSGVscGVyO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvbjogU3BhbkRlZmluaXRpb248UywgRT47XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHNwYW5JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbWluZ01zZ1RlbXBsYXRlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY291bnRlcnM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcGVuVGltZXJzID0gbmV3IFNldDxJVGltZXI+KCk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGlvSGVscGVyOiBJb0hlbHBlciwgZGVmaW5pdGlvbjogU3BhbkRlZmluaXRpb248UywgRT4sIG1ha2VIZWxwZXI6IChpb0hvc3Q6IElBY3Rpb25Bd2FyZUlvSG9zdCkgPT4gSW9IZWxwZXIpIHtcbiAgICB0aGlzLmRlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICAgIHRoaXMuaW9IZWxwZXIgPSBpb0hlbHBlcjtcbiAgICB0aGlzLnNwYW5JZCA9IHJhbmRvbVVVSUQoKTtcbiAgICB0aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIHRoaXMudGltaW5nTXNnVGVtcGxhdGUgPSAnXFxu4pyoICAlcyB0aW1lOiAlZHNcXG4nO1xuICAgIHRoaXMuYXNIZWxwZXIgPSBtYWtlSGVscGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0cygpOiBJb0RlZmF1bHRNZXNzYWdlcyB7XG4gICAgcmV0dXJuIHRoaXMuYXNIZWxwZXIuZGVmYXVsdHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZWxhcHNlZFRpbWUoKTogUHJvbWlzZTxFbGFwc2VkVGltZT4ge1xuICAgIHJldHVybiB0aGlzLnRpbWUoKTtcbiAgfVxuICBwdWJsaWMgYXN5bmMgdGltaW5nKG1ha2VyOiBtYWtlLklvTWVzc2FnZU1ha2VyPER1cmF0aW9uPiwgbWVzc2FnZT86IHN0cmluZyk6IFByb21pc2U8RWxhcHNlZFRpbWU+IHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMudGltZSgpO1xuICAgIGNvbnN0IHRpbWluZ01zZyA9IG1lc3NhZ2UgPyBtZXNzYWdlIDogdXRpbC5mb3JtYXQodGhpcy50aW1pbmdNc2dUZW1wbGF0ZSwgdGhpcy5kZWZpbml0aW9uLm5hbWUsIGR1cmF0aW9uLmFzU2VjKTtcbiAgICBhd2FpdCB0aGlzLm5vdGlmeShtYWtlci5tc2codGltaW5nTXNnLCB7XG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24uYXNNcyxcbiAgICB9KSk7XG4gICAgcmV0dXJuIGR1cmF0aW9uO1xuICB9XG4gIHB1YmxpYyBhc3luYyBub3RpZnkobXNnOiBBY3Rpb25MZXNzTWVzc2FnZTx1bmtub3duPik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmlvSGVscGVyLm5vdGlmeSh3aXRoU3BhbklkKHRoaXMuc3BhbklkLCBtc2cpKTtcbiAgfVxuICBwdWJsaWMgYXN5bmMgZW5kKHg6IGFueSwgeT86IFNwYW5FbmRBcmd1bWVudHM8RT4pOiBQcm9taXNlPEVsYXBzZWRUaW1lPiB7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLnRpbWUoKTtcblxuICAgIGZvciAoY29uc3QgdCBvZiB0aGlzLm9wZW5UaW1lcnMpIHtcbiAgICAgIHQuc3RvcCgpO1xuICAgIH1cbiAgICB0aGlzLm9wZW5UaW1lcnMuY2xlYXIoKTtcblxuICAgIGNvbnN0IGVuZElucHV0ID0gcGFyc2VBcmdzPFNwYW5FbmRBcmd1bWVudHM8RT4+KHgsIHkpO1xuICAgIGNvbnN0IGVuZE1zZyA9IGVuZElucHV0Lm1lc3NhZ2UgPz8gdXRpbC5mb3JtYXQodGhpcy50aW1pbmdNc2dUZW1wbGF0ZSwgdGhpcy5kZWZpbml0aW9uLm5hbWUsIGR1cmF0aW9uLmFzU2VjKTtcbiAgICBjb25zdCBlbmRQYXlsb2FkID0gZW5kSW5wdXQucGF5bG9hZDtcblxuICAgIGF3YWl0IHRoaXMubm90aWZ5KHRoaXMuZGVmaW5pdGlvbi5lbmQubXNnKFxuICAgICAgZW5kTXNnLCB7XG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbi5hc01zLFxuICAgICAgICAuLi4oT2JqZWN0LmtleXModGhpcy5jb3VudGVycykubGVuZ3RoID4gMCA/IHsgY291bnRlcnM6IHRoaXMuY291bnRlcnMgfSA6IHt9KSxcbiAgICAgICAgLi4uZW5kUGF5bG9hZCxcbiAgICAgIH0gYXMgRSkpO1xuXG4gICAgcmV0dXJuIGR1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGluY0NvdW50ZXIobmFtZTogc3RyaW5nLCBkZWx0YTogbnVtYmVyID0gMSk6IHZvaWQge1xuICAgIHRoaXMuY291bnRlcnNbbmFtZV0gPSAodGhpcy5jb3VudGVyc1tuYW1lXSA/PyAwKSArIGRlbHRhO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlcXVlc3RSZXNwb25zZTxUPihtc2c6IEFjdGlvbkxlc3NSZXF1ZXN0PHVua25vd24sIFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaW9IZWxwZXIucmVxdWVzdFJlc3BvbnNlKHdpdGhTcGFuSWQodGhpcy5zcGFuSWQsIG1zZykpO1xuICB9XG5cbiAgcHVibGljIHN0YXJ0VGltZXIobmFtZTogc3RyaW5nKTogSVRpbWVyIHtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCB0OiBJVGltZXIgPSB7XG4gICAgICBzdG9wOiAoKSA9PiB7XG4gICAgICAgIHRoaXMub3BlblRpbWVycy5kZWxldGUodCk7XG4gICAgICAgIHRoaXMuYWRkVGltZXIobmFtZSwgTWF0aC5mbG9vcihEYXRlLm5vdygpIC0gc3RhcnQpKTtcbiAgICAgIH0sXG4gICAgICBbU3ltYm9sLmRpc3Bvc2VdKCkge1xuICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLm9wZW5UaW1lcnMuYWRkKHQpO1xuICAgIHJldHVybiB0O1xuICB9XG5cbiAgcHVibGljIGFkZFRpbWVyKG5hbWU6IHN0cmluZywgZHVyYXRpb25NczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5pbmNDb3VudGVyKGAke25hbWV9X21zYCwgTWF0aC5mbG9vcihkdXJhdGlvbk1zKSk7XG4gICAgdGhpcy5pbmNDb3VudGVyKGAke25hbWV9X2NudGAsIDEpO1xuICB9XG5cbiAgcHJpdmF0ZSB0aW1lKCkge1xuICAgIGNvbnN0IGVsYXBzZWRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLnN0YXJ0VGltZTtcbiAgICByZXR1cm4ge1xuICAgICAgYXNNczogZWxhcHNlZFRpbWUsXG4gICAgICBhc1NlYzogZm9ybWF0VGltZShlbGFwc2VkVGltZSksXG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUFyZ3M8Uz4oZmlyc3Q6IGFueSwgc2Vjb25kPzogUyk6IHsgbWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkOyBwYXlsb2FkOiBTIH0ge1xuICBjb25zdCBmaXJzdElzTWVzc2FnZSA9IHR5cGVvZiBmaXJzdCA9PT0gJ3N0cmluZyc7XG5cbiAgLy8gV2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYSBzdHJpbmcgb3Igd2UgaGF2ZSBhIHNlY29uZCBhcmd1bWVudCwgdGhlbiB0aGUgZmlyc3QgYXJnIGlzIHRoZSBtZXNzYWdlXG4gIGNvbnN0IG1lc3NhZ2UgPSAoZmlyc3RJc01lc3NhZ2UgfHwgc2Vjb25kKSA/IGZpcnN0IDogdW5kZWZpbmVkO1xuXG4gIC8vIFdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgc3RyaW5nIG9yIHdlIGhhdmUgYSBzZWNvbmQgYXJndW1lbnQsXG4gIC8vIHRoZW4gdGhlIHNlY29uZCBhcmcgaXMgdGhlIHBheWxvYWQsIG90aGVyd2lzZSB0aGUgZmlyc3QgYXJnIGlzIHRoZSBwYXlsb2FkXG4gIGNvbnN0IHBheWxvYWQgPSAoZmlyc3RJc01lc3NhZ2UgfHwgc2Vjb25kKSA/IHNlY29uZCA6IGZpcnN0O1xuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZSxcbiAgICBwYXlsb2FkLFxuICB9O1xufVxuXG5mdW5jdGlvbiB3aXRoU3BhbklkPFQgZXh0ZW5kcyBvYmplY3Q+KHNwYW46IHN0cmluZywgbWVzc2FnZTogVCk6IFQgJiB7IHNwYW46IHN0cmluZyB9IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5tZXNzYWdlLFxuICAgIHNwYW4sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ import type { ValidateResult } from '../../actions/validate';
2
+ import type { ActionLessMessage } from '../io/private';
3
+ export declare function hostMessageFromValidation(result: ValidateResult): ActionLessMessage<any>;
4
+ export declare function formatValidateResult(result: ValidateResult): string;
5
+ //# sourceMappingURL=validate-formatting.d.ts.map
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hostMessageFromValidation = hostMessageFromValidation;
4
+ exports.formatValidateResult = formatValidateResult;
5
+ const path = require("node:path");
6
+ const chalk = require("chalk");
7
+ const private_1 = require("../io/private");
8
+ // Matches C0 control chars (except \t and \n), DEL, and CSI (8-bit mode).
9
+ // Strips ANSI escape sequences, carriage returns, backspaces, BEL, and
10
+ // bidirectional overrides that could spoof terminal output.
11
+ const CONTROL_CHARS = /[\x00-\x08\x0B-\x1F\x7F\x9B]/g;
12
+ function sanitize(s) {
13
+ return (s ?? '').replace(CONTROL_CHARS, '�');
14
+ }
15
+ const SEVERITY_ORDER = {
16
+ fatal: 0,
17
+ error: 1,
18
+ warning: 2,
19
+ info: 3,
20
+ };
21
+ function hostMessageFromValidation(result) {
22
+ // Always emit at info level so the CLI IoHost doesn't wrap the entire output
23
+ // in a single color. The formatter handles per-severity coloring internally.
24
+ // Consumers detect failure via the structured `data.conclusion` field or exit code.
25
+ return private_1.IO.CDK_TOOLKIT_I9600.msg(formatValidateResult(result), result);
26
+ }
27
+ function formatValidateResult(result) {
28
+ const violations = flattenViolations(result.pluginReports);
29
+ if (violations.length === 0) {
30
+ return '\nPolicy validation passed. No problems found.';
31
+ }
32
+ violations.sort((a, b) => {
33
+ const aOrder = SEVERITY_ORDER[a.severity.toLowerCase()] ?? 4;
34
+ const bOrder = SEVERITY_ORDER[b.severity.toLowerCase()] ?? 4;
35
+ return aOrder - bOrder;
36
+ });
37
+ const title = result.title ?? 'Validation Report';
38
+ const blocks = violations.map((v) => formatViolationBlock(v));
39
+ return `\n${title}\n${'-'.repeat(title.length)}\n\n${blocks.join('\n\n')}`;
40
+ }
41
+ function flattenViolations(pluginReports) {
42
+ const result = [];
43
+ for (const report of pluginReports) {
44
+ const pluginName = report.pluginName;
45
+ for (const violation of report.violations) {
46
+ const severity = normalizeSeverity(violation.severity);
47
+ for (const construct of violation.violatingConstructs) {
48
+ result.push({ severity, description: violation.description, ruleName: violation.ruleName, pluginName, construct });
49
+ }
50
+ }
51
+ }
52
+ return result;
53
+ }
54
+ function normalizeSeverity(severity) {
55
+ if (!severity)
56
+ return 'Warning';
57
+ const lower = severity.toLowerCase();
58
+ if (lower === 'fatal')
59
+ return 'Fatal';
60
+ if (lower === 'error')
61
+ return 'Error';
62
+ if (lower === 'warning')
63
+ return 'Warning';
64
+ if (lower === 'info')
65
+ return 'Info';
66
+ const safe = sanitize(severity);
67
+ return safe.charAt(0).toUpperCase() + safe.slice(1);
68
+ }
69
+ function formatViolationBlock(v) {
70
+ const lines = [];
71
+ const location = getLeafLocation(v.construct.stackTraces);
72
+ if (location) {
73
+ lines.push(chalk.underline(sanitize(location)));
74
+ }
75
+ const severityColor = getSeverityColor(v.severity);
76
+ const description = stripAckTag(sanitize(v.description));
77
+ const severityAndDesc = severityColor(chalk.bold(`${v.severity}: ${description}`));
78
+ lines.push(`${severityAndDesc} ${sanitize(v.pluginName)}`);
79
+ const constructInfo = formatConstructInfo(v.construct);
80
+ lines.push(` ${constructInfo}`);
81
+ if (v.severity.toLowerCase() !== 'fatal') {
82
+ const ackId = `${sanitize(v.pluginName)}::${sanitize(v.ruleName)}`.replace(/ /g, '-');
83
+ lines.push(` Acknowledge '${ackId}'`);
84
+ }
85
+ return lines.join('\n');
86
+ }
87
+ function getSeverityColor(severity) {
88
+ switch (severity.toLowerCase()) {
89
+ case 'fatal': return chalk.red;
90
+ case 'error': return chalk.ansi256(208);
91
+ case 'warning': return chalk.yellow;
92
+ default: return chalk.blue;
93
+ }
94
+ }
95
+ function formatConstructInfo(construct) {
96
+ const parts = [];
97
+ const logicalId = sanitize(construct.cloudFormationResource?.logicalId);
98
+ if (construct.constructPath) {
99
+ const cPath = sanitize(construct.constructPath);
100
+ parts.push(logicalId ? `${chalk.bold(cPath)} (${logicalId})` : chalk.bold(cPath));
101
+ }
102
+ else if (logicalId) {
103
+ parts.push(chalk.bold(logicalId));
104
+ }
105
+ if (construct.constructFqn) {
106
+ parts.push(sanitize(construct.constructFqn));
107
+ }
108
+ return parts.join(' ');
109
+ }
110
+ function stripAckTag(description) {
111
+ return description.replace(/\s*\[ack:\s*[^\]]+\]\s*/g, '').trim();
112
+ }
113
+ function getLeafLocation(stackTraces) {
114
+ if (!stackTraces || stackTraces.length === 0)
115
+ return undefined;
116
+ const lastTrace = stackTraces[stackTraces.length - 1];
117
+ const frames = lastTrace.split('\n');
118
+ if (frames.length === 0)
119
+ return undefined;
120
+ // Find the first frame that's user code (not in node_modules or aws-cdk-lib)
121
+ const userFrame = frames.find(f => !f.includes('node_modules') && !f.includes('aws-cdk-lib'));
122
+ const frame = (userFrame ?? frames[0]).trim();
123
+ const match = frame.match(/\((.+)\)$/) || frame.match(/at\s+(.+)$/);
124
+ const location = match ? match[1] : frame;
125
+ return path.isAbsolute(location.split(':')[0]) ? path.relative(process.cwd(), location) : location;
126
+ }
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZm9ybWF0dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRlLWZvcm1hdHRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsOERBS0M7QUFFRCxvREFnQkM7QUFyREQsa0NBQWtDO0FBRWxDLCtCQUErQjtBQUcvQiwyQ0FBbUM7QUFFbkMsMEVBQTBFO0FBQzFFLHVFQUF1RTtBQUN2RSw0REFBNEQ7QUFDNUQsTUFBTSxhQUFhLEdBQUcsK0JBQStCLENBQUM7QUFDdEQsU0FBUyxRQUFRLENBQUMsQ0FBcUI7SUFDckMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFVRCxNQUFNLGNBQWMsR0FBMkI7SUFDN0MsS0FBSyxFQUFFLENBQUM7SUFDUixLQUFLLEVBQUUsQ0FBQztJQUNSLE9BQU8sRUFBRSxDQUFDO0lBQ1YsSUFBSSxFQUFFLENBQUM7Q0FDUixDQUFDO0FBRUYsU0FBZ0IseUJBQXlCLENBQUMsTUFBc0I7SUFDOUQsNkVBQTZFO0lBQzdFLDZFQUE2RTtJQUM3RSxvRkFBb0Y7SUFDcEYsT0FBTyxZQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxNQUFzQjtJQUN6RCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFM0QsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sZ0RBQWdELENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQztJQUNsRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELE9BQU8sS0FBSyxLQUFLLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdFLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLGFBQWlDO0lBQzFELE1BQU0sTUFBTSxHQUF5QixFQUFFLENBQUM7SUFFeEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNuQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBRXJDLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzFDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2RCxLQUFLLE1BQU0sU0FBUyxJQUFJLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ3JILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLFFBQTRCO0lBQ3JELElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUN0QyxJQUFJLEtBQUssS0FBSyxPQUFPO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDdEMsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQzFDLElBQUksS0FBSyxLQUFLLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsQ0FBcUI7SUFDakQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBRTNCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNELE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sYUFBYSxFQUFFLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RGLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFnQjtJQUN4QyxRQUFRLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQy9CLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQy9CLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsU0FBaUM7SUFDNUQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBQzNCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFeEUsSUFBSSxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEYsQ0FBQztTQUFNLElBQUksU0FBUyxFQUFFLENBQUM7UUFDckIsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNCLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLFdBQW1CO0lBQ3RDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNwRSxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsV0FBaUM7SUFDeEQsSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMvRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFMUMsNkVBQTZFO0lBQzdFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDOUYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFOUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDMUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNyRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5SZXBvcnRKc29uLCBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGVSZXN1bHQgfSBmcm9tICcuLi8uLi9hY3Rpb25zL3ZhbGlkYXRlJztcbmltcG9ydCB0eXBlIHsgQWN0aW9uTGVzc01lc3NhZ2UgfSBmcm9tICcuLi9pby9wcml2YXRlJztcbmltcG9ydCB7IElPIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5cbi8vIE1hdGNoZXMgQzAgY29udHJvbCBjaGFycyAoZXhjZXB0IFxcdCBhbmQgXFxuKSwgREVMLCBhbmQgQ1NJICg4LWJpdCBtb2RlKS5cbi8vIFN0cmlwcyBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMsIGNhcnJpYWdlIHJldHVybnMsIGJhY2tzcGFjZXMsIEJFTCwgYW5kXG4vLyBiaWRpcmVjdGlvbmFsIG92ZXJyaWRlcyB0aGF0IGNvdWxkIHNwb29mIHRlcm1pbmFsIG91dHB1dC5cbmNvbnN0IENPTlRST0xfQ0hBUlMgPSAvW1xceDAwLVxceDA4XFx4MEItXFx4MUZcXHg3RlxceDlCXS9nO1xuZnVuY3Rpb24gc2FuaXRpemUoczogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgcmV0dXJuIChzID8/ICcnKS5yZXBsYWNlKENPTlRST0xfQ0hBUlMsICfvv70nKTtcbn1cblxuaW50ZXJmYWNlIEZsYXR0ZW5lZFZpb2xhdGlvbiB7XG4gIHJlYWRvbmx5IHNldmVyaXR5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY29uc3RydWN0OiBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uO1xufVxuXG5jb25zdCBTRVZFUklUWV9PUkRFUjogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgZmF0YWw6IDAsXG4gIGVycm9yOiAxLFxuICB3YXJuaW5nOiAyLFxuICBpbmZvOiAzLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvc3RNZXNzYWdlRnJvbVZhbGlkYXRpb24ocmVzdWx0OiBWYWxpZGF0ZVJlc3VsdCk6IEFjdGlvbkxlc3NNZXNzYWdlPGFueT4ge1xuICAvLyBBbHdheXMgZW1pdCBhdCBpbmZvIGxldmVsIHNvIHRoZSBDTEkgSW9Ib3N0IGRvZXNuJ3Qgd3JhcCB0aGUgZW50aXJlIG91dHB1dFxuICAvLyBpbiBhIHNpbmdsZSBjb2xvci4gVGhlIGZvcm1hdHRlciBoYW5kbGVzIHBlci1zZXZlcml0eSBjb2xvcmluZyBpbnRlcm5hbGx5LlxuICAvLyBDb25zdW1lcnMgZGV0ZWN0IGZhaWx1cmUgdmlhIHRoZSBzdHJ1Y3R1cmVkIGBkYXRhLmNvbmNsdXNpb25gIGZpZWxkIG9yIGV4aXQgY29kZS5cbiAgcmV0dXJuIElPLkNES19UT09MS0lUX0k5NjAwLm1zZyhmb3JtYXRWYWxpZGF0ZVJlc3VsdChyZXN1bHQpLCByZXN1bHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmFsaWRhdGVSZXN1bHQocmVzdWx0OiBWYWxpZGF0ZVJlc3VsdCk6IHN0cmluZyB7XG4gIGNvbnN0IHZpb2xhdGlvbnMgPSBmbGF0dGVuVmlvbGF0aW9ucyhyZXN1bHQucGx1Z2luUmVwb3J0cyk7XG5cbiAgaWYgKHZpb2xhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdcXG5Qb2xpY3kgdmFsaWRhdGlvbiBwYXNzZWQuIE5vIHByb2JsZW1zIGZvdW5kLic7XG4gIH1cblxuICB2aW9sYXRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBhT3JkZXIgPSBTRVZFUklUWV9PUkRFUlthLnNldmVyaXR5LnRvTG93ZXJDYXNlKCldID8/IDQ7XG4gICAgY29uc3QgYk9yZGVyID0gU0VWRVJJVFlfT1JERVJbYi5zZXZlcml0eS50b0xvd2VyQ2FzZSgpXSA/PyA0O1xuICAgIHJldHVybiBhT3JkZXIgLSBiT3JkZXI7XG4gIH0pO1xuXG4gIGNvbnN0IHRpdGxlID0gcmVzdWx0LnRpdGxlID8/ICdWYWxpZGF0aW9uIFJlcG9ydCc7XG4gIGNvbnN0IGJsb2NrcyA9IHZpb2xhdGlvbnMubWFwKCh2KSA9PiBmb3JtYXRWaW9sYXRpb25CbG9jayh2KSk7XG4gIHJldHVybiBgXFxuJHt0aXRsZX1cXG4keyctJy5yZXBlYXQodGl0bGUubGVuZ3RoKX1cXG5cXG4ke2Jsb2Nrcy5qb2luKCdcXG5cXG4nKX1gO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuVmlvbGF0aW9ucyhwbHVnaW5SZXBvcnRzOiBQbHVnaW5SZXBvcnRKc29uW10pOiBGbGF0dGVuZWRWaW9sYXRpb25bXSB7XG4gIGNvbnN0IHJlc3VsdDogRmxhdHRlbmVkVmlvbGF0aW9uW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJlcG9ydCBvZiBwbHVnaW5SZXBvcnRzKSB7XG4gICAgY29uc3QgcGx1Z2luTmFtZSA9IHJlcG9ydC5wbHVnaW5OYW1lO1xuXG4gICAgZm9yIChjb25zdCB2aW9sYXRpb24gb2YgcmVwb3J0LnZpb2xhdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNldmVyaXR5ID0gbm9ybWFsaXplU2V2ZXJpdHkodmlvbGF0aW9uLnNldmVyaXR5KTtcblxuICAgICAgZm9yIChjb25zdCBjb25zdHJ1Y3Qgb2YgdmlvbGF0aW9uLnZpb2xhdGluZ0NvbnN0cnVjdHMpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBzZXZlcml0eSwgZGVzY3JpcHRpb246IHZpb2xhdGlvbi5kZXNjcmlwdGlvbiwgcnVsZU5hbWU6IHZpb2xhdGlvbi5ydWxlTmFtZSwgcGx1Z2luTmFtZSwgY29uc3RydWN0IH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNldmVyaXR5KHNldmVyaXR5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBpZiAoIXNldmVyaXR5KSByZXR1cm4gJ1dhcm5pbmcnO1xuICBjb25zdCBsb3dlciA9IHNldmVyaXR5LnRvTG93ZXJDYXNlKCk7XG4gIGlmIChsb3dlciA9PT0gJ2ZhdGFsJykgcmV0dXJuICdGYXRhbCc7XG4gIGlmIChsb3dlciA9PT0gJ2Vycm9yJykgcmV0dXJuICdFcnJvcic7XG4gIGlmIChsb3dlciA9PT0gJ3dhcm5pbmcnKSByZXR1cm4gJ1dhcm5pbmcnO1xuICBpZiAobG93ZXIgPT09ICdpbmZvJykgcmV0dXJuICdJbmZvJztcbiAgY29uc3Qgc2FmZSA9IHNhbml0aXplKHNldmVyaXR5KTtcbiAgcmV0dXJuIHNhZmUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzYWZlLnNsaWNlKDEpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRWaW9sYXRpb25CbG9jayh2OiBGbGF0dGVuZWRWaW9sYXRpb24pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldExlYWZMb2NhdGlvbih2LmNvbnN0cnVjdC5zdGFja1RyYWNlcyk7XG4gIGlmIChsb2NhdGlvbikge1xuICAgIGxpbmVzLnB1c2goY2hhbGsudW5kZXJsaW5lKHNhbml0aXplKGxvY2F0aW9uKSkpO1xuICB9XG5cbiAgY29uc3Qgc2V2ZXJpdHlDb2xvciA9IGdldFNldmVyaXR5Q29sb3Iodi5zZXZlcml0eSk7XG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gc3RyaXBBY2tUYWcoc2FuaXRpemUodi5kZXNjcmlwdGlvbikpO1xuICBjb25zdCBzZXZlcml0eUFuZERlc2MgPSBzZXZlcml0eUNvbG9yKGNoYWxrLmJvbGQoYCR7di5zZXZlcml0eX06ICR7ZGVzY3JpcHRpb259YCkpO1xuICBsaW5lcy5wdXNoKGAke3NldmVyaXR5QW5kRGVzY30gJHtzYW5pdGl6ZSh2LnBsdWdpbk5hbWUpfWApO1xuXG4gIGNvbnN0IGNvbnN0cnVjdEluZm8gPSBmb3JtYXRDb25zdHJ1Y3RJbmZvKHYuY29uc3RydWN0KTtcbiAgbGluZXMucHVzaChgICAgJHtjb25zdHJ1Y3RJbmZvfWApO1xuXG4gIGlmICh2LnNldmVyaXR5LnRvTG93ZXJDYXNlKCkgIT09ICdmYXRhbCcpIHtcbiAgICBjb25zdCBhY2tJZCA9IGAke3Nhbml0aXplKHYucGx1Z2luTmFtZSl9Ojoke3Nhbml0aXplKHYucnVsZU5hbWUpfWAucmVwbGFjZSgvIC9nLCAnLScpO1xuICAgIGxpbmVzLnB1c2goYCAgIEFja25vd2xlZGdlICcke2Fja0lkfSdgKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2V2ZXJpdHlDb2xvcihzZXZlcml0eTogc3RyaW5nKTogKHN0cjogc3RyaW5nKSA9PiBzdHJpbmcge1xuICBzd2l0Y2ggKHNldmVyaXR5LnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdmYXRhbCc6IHJldHVybiBjaGFsay5yZWQ7XG4gICAgY2FzZSAnZXJyb3InOiByZXR1cm4gY2hhbGsuYW5zaTI1NigyMDgpO1xuICAgIGNhc2UgJ3dhcm5pbmcnOiByZXR1cm4gY2hhbGsueWVsbG93O1xuICAgIGRlZmF1bHQ6IHJldHVybiBjaGFsay5ibHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdENvbnN0cnVjdEluZm8oY29uc3RydWN0OiBWaW9sYXRpbmdDb25zdHJ1Y3RKc29uKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGxvZ2ljYWxJZCA9IHNhbml0aXplKGNvbnN0cnVjdC5jbG91ZEZvcm1hdGlvblJlc291cmNlPy5sb2dpY2FsSWQpO1xuXG4gIGlmIChjb25zdHJ1Y3QuY29uc3RydWN0UGF0aCkge1xuICAgIGNvbnN0IGNQYXRoID0gc2FuaXRpemUoY29uc3RydWN0LmNvbnN0cnVjdFBhdGgpO1xuICAgIHBhcnRzLnB1c2gobG9naWNhbElkID8gYCR7Y2hhbGsuYm9sZChjUGF0aCl9ICgke2xvZ2ljYWxJZH0pYCA6IGNoYWxrLmJvbGQoY1BhdGgpKTtcbiAgfSBlbHNlIGlmIChsb2dpY2FsSWQpIHtcbiAgICBwYXJ0cy5wdXNoKGNoYWxrLmJvbGQobG9naWNhbElkKSk7XG4gIH1cblxuICBpZiAoY29uc3RydWN0LmNvbnN0cnVjdEZxbikge1xuICAgIHBhcnRzLnB1c2goc2FuaXRpemUoY29uc3RydWN0LmNvbnN0cnVjdEZxbikpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gc3RyaXBBY2tUYWcoZGVzY3JpcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBkZXNjcmlwdGlvbi5yZXBsYWNlKC9cXHMqXFxbYWNrOlxccypbXlxcXV0rXFxdXFxzKi9nLCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRMZWFmTG9jYXRpb24oc3RhY2tUcmFjZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzdGFja1RyYWNlcyB8fCBzdGFja1RyYWNlcy5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGxhc3RUcmFjZSA9IHN0YWNrVHJhY2VzW3N0YWNrVHJhY2VzLmxlbmd0aCAtIDFdO1xuICBjb25zdCBmcmFtZXMgPSBsYXN0VHJhY2Uuc3BsaXQoJ1xcbicpO1xuICBpZiAoZnJhbWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyBGaW5kIHRoZSBmaXJzdCBmcmFtZSB0aGF0J3MgdXNlciBjb2RlIChub3QgaW4gbm9kZV9tb2R1bGVzIG9yIGF3cy1jZGstbGliKVxuICBjb25zdCB1c2VyRnJhbWUgPSBmcmFtZXMuZmluZChmID0+ICFmLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSAmJiAhZi5pbmNsdWRlcygnYXdzLWNkay1saWInKSk7XG4gIGNvbnN0IGZyYW1lID0gKHVzZXJGcmFtZSA/PyBmcmFtZXNbMF0pLnRyaW0oKTtcblxuICBjb25zdCBtYXRjaCA9IGZyYW1lLm1hdGNoKC9cXCgoLispXFwpJC8pIHx8IGZyYW1lLm1hdGNoKC9hdFxccysoLispJC8pO1xuICBjb25zdCBsb2NhdGlvbiA9IG1hdGNoID8gbWF0Y2hbMV0gOiBmcmFtZTtcbiAgcmV0dXJuIHBhdGguaXNBYnNvbHV0ZShsb2NhdGlvbi5zcGxpdCgnOicpWzBdKSA/IHBhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgbG9jYXRpb24pIDogbG9jYXRpb247XG59XG4iXX0=
@@ -8,6 +8,9 @@ export declare class WorkGraphBuilder {
8
8
  /**
9
9
  * Default priorities for nodes
10
10
  *
11
+ * Messages have the highest priority to ensure they are emitted as soon as
12
+ * possible (because they will be used for measuring timings).
13
+ *
11
14
  * Assets builds have higher priority than the other two operations, to make good on our promise that
12
15
  * '--prebuild-assets' will actually do assets before stacks (if it can). Unfortunately it is the
13
16
  * default :(