@aws-cdk/toolkit-lib 1.27.0 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/validate/index.d.ts +10 -0
- package/lib/actions/validate/index.js +1 -1
- package/lib/api/bootstrap/deploy-bootstrap.js +2 -1
- package/lib/api/cloud-assembly/environment.js +16 -4
- package/lib/api/deployments/cfn-api.d.ts +24 -6
- package/lib/api/deployments/cfn-api.js +81 -33
- package/lib/api/deployments/deploy-stack.js +8 -1
- package/lib/api/deployments/deployment-result.d.ts +6 -0
- package/lib/api/deployments/deployment-result.js +1 -1
- package/lib/api/hotswap/hotswap-deployments.js +2 -1
- package/lib/api/hotswap/lambda-functions.js +3 -33
- package/lib/api/io/private/index.d.ts +1 -0
- package/lib/api/io/private/index.js +2 -1
- package/lib/api/io/private/messages.d.ts +1 -0
- package/lib/api/io/private/messages.js +8 -4
- package/lib/api/io/private/span.d.ts +6 -0
- package/lib/api/io/private/span.js +10 -3
- package/lib/api/stack-events/stack-activity-monitor.d.ts +13 -1
- package/lib/api/stack-events/stack-activity-monitor.js +12 -2
- package/lib/api/stack-events/stack-event-poller.d.ts +7 -0
- package/lib/api/stack-events/stack-event-poller.js +20 -1
- package/lib/api/validate/validate-formatting.d.ts +5 -0
- package/lib/api/validate/validate-formatting.js +127 -0
- package/lib/api/work-graph/work-graph-builder.d.ts +3 -0
- package/lib/api/work-graph/work-graph-builder.js +38 -3
- package/lib/api/work-graph/work-graph-types.d.ts +19 -7
- package/lib/api/work-graph/work-graph-types.js +1 -1
- package/lib/api/work-graph/work-graph.d.ts +2 -1
- package/lib/api/work-graph/work-graph.js +8 -1
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/stack-activity.d.ts +6 -0
- package/lib/payloads/stack-activity.js +1 -1
- package/lib/private/activity-printer/base.d.ts +7 -1
- package/lib/private/activity-printer/base.js +16 -2
- package/lib/private/activity-printer/current.js +12 -6
- package/lib/private/activity-printer/history.js +15 -12
- package/lib/private/tools.d.ts +2 -0
- package/lib/private/tools.js +120 -0
- package/lib/private/tools.js.plain +21 -0
- package/lib/toolkit/toolkit.d.ts +2 -1
- package/lib/toolkit/toolkit.js +104 -19
- package/lib/toolkit/types.d.ts +30 -0
- package/lib/toolkit/types.js +1 -1
- package/lib/util/index.d.ts +0 -1
- package/lib/util/index.js +1 -2
- package/package.json +15 -13
- package/lib/util/archive.d.ts +0 -2
- 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: '
|
|
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: '
|
|
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
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3Q0FBd0M7QUFrQ3hDOzs7OztHQUtHO0FBQ1UsUUFBQSxFQUFFLEdBQUc7SUFDaEIsb0JBQW9CO0lBQ3BCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNEJBQTRCO0tBQzFDLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBWTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQXdCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUF1QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZTtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFzQjtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7UUFDN0UsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQXdCO1FBQ3JELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFnQztRQUM5RCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx5REFBeUQ7UUFDdEUsU0FBUyxFQUFFLCtCQUErQjtLQUMzQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBZTtRQUMxQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx3QkFBd0I7UUFDckMsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLHdCQUF3QjtJQUN4QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUF3QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsU0FBUyxFQUFFLHVCQUF1QjtLQUNuQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBYTtRQUN6QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw0QkFBNEI7UUFDekMsU0FBUyxFQUFFLFlBQVk7S0FDeEIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQVk7UUFDeEMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLFNBQVMsRUFBRSxXQUFXO0tBQ3ZCLENBQUM7SUFFRix5QkFBeUI7SUFDekIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBd0I7UUFDbkQsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLFNBQVMsRUFBRSx1QkFBdUI7S0FDbkMsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQVc7UUFDdkMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsc0JBQXNCO1FBQ25DLFNBQVMsRUFBRSxVQUFVO0tBQ3RCLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFxQjtRQUNqRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsU0FBUyxFQUFFLG9CQUFvQjtLQUNoQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBYztRQUN4QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxvQ0FBb0M7UUFDakQsU0FBUyxFQUFFLGFBQWE7S0FDekIsQ0FBQztJQUVGLDJCQUEyQjtJQUMzQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFXO1FBQ3JDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDJCQUEyQjtRQUN4QyxTQUFTLEVBQUUsVUFBVTtLQUN0QixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBVztRQUNyQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxvRUFBb0U7UUFDakYsU0FBUyxFQUFFLFVBQVU7S0FDdEIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQVc7UUFDckMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsc0NBQXNDO1FBQ25ELFNBQVMsRUFBRSxVQUFVO0tBQ3RCLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLGlEQUFpRDtLQUMvRCxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwrQ0FBK0M7S0FDN0QsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsd0VBQXdFO0tBQ3RGLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFtQztRQUM5RCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw2QkFBNkI7UUFDMUMsU0FBUyxFQUFFLGtDQUFrQztLQUM5QyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBcUI7UUFDL0MsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsdUNBQXVDO1FBQ3BELFNBQVMsRUFBRSxvQkFBb0I7S0FDaEMsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQW1DO1FBQzlELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxTQUFTLEVBQUUsa0NBQWtDO0tBQzlDLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFlO1FBQzFDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHdCQUF3QjtRQUNyQyxTQUFTLEVBQUUsY0FBYztLQUMxQixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBc0I7UUFDbkQsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsb0NBQW9DO1FBQ2pELFNBQVMsRUFBRSxxQkFBcUI7S0FDakMsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQTRCO1FBQ3pELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxTQUFTLEVBQUUsMkJBQTJCO0tBQ3ZDLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFzQjtRQUNoRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx1QkFBdUI7UUFDcEMsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsZ0JBQWdCO0lBQ2hCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQWE7UUFDeEMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELFNBQVMsRUFBRSxZQUFZO0tBQ3hCLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFXO1FBQ3RDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLGtDQUFrQztRQUMvQyxTQUFTLEVBQUUsVUFBVTtLQUN0QixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBZTtRQUMxQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQ0FBcUM7UUFDbEQsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQVc7UUFDdEMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsb0NBQW9DO1FBQ2pELFNBQVMsRUFBRSxVQUFVO0tBQ3RCLENBQUM7SUFFRixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFvQjtRQUM3QyxJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFdBQVcsRUFBRSxrQ0FBa0M7UUFDL0MsU0FBUyxFQUFFLG1CQUFtQjtLQUMvQixDQUFDO0lBQ0YsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBb0I7UUFDOUMsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixXQUFXLEVBQUUsdURBQXVEO1FBQ3BFLFNBQVMsRUFBRSxtQkFBbUI7S0FDL0IsQ0FBQztJQUNGLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQW9CO1FBQzdDLElBQUksRUFBRSxrQkFBa0I7UUFDeEIsV0FBVyxFQUFFLGlEQUFpRDtRQUM5RCxTQUFTLEVBQUUsbUJBQW1CO0tBQy9CLENBQUM7SUFDRixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFvQjtRQUM5QyxJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsU0FBUyxFQUFFLG1CQUFtQjtLQUMvQixDQUFDO0lBRUYsZUFBZTtJQUNmLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQWdCO1FBQzNDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDhDQUE4QztRQUMzRCxTQUFTLEVBQUUsZUFBZTtLQUMzQixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBaUI7UUFDM0MsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsdUJBQXVCO1FBQ3BDLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQWlCO1FBQzNDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDBDQUEwQztRQUN2RCxTQUFTLEVBQUUsZ0JBQWdCO0tBQzVCLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFpQjtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxrRUFBa0U7UUFDL0UsU0FBUyxFQUFFLGdCQUFnQjtLQUM1QixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxrQ0FBa0M7S0FDaEQsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsaUNBQWlDO0tBQy9DLENBQUM7SUFFRixpQkFBaUI7SUFDakIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBMkI7UUFDdEQsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsaUNBQWlDO1FBQzlDLFNBQVMsRUFBRSwwQkFBMEI7S0FDdEMsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQTJCO1FBQ3RELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDZDQUE2QztRQUMxRCxTQUFTLEVBQUUsMEJBQTBCO0tBQ3RDLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFxQjtRQUMvQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxvRUFBb0U7UUFDakYsU0FBUyxFQUFFLG9CQUFvQjtLQUNoQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBcUI7UUFDL0MsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELFNBQVMsRUFBRSxvQkFBb0I7S0FDaEMsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQWdCO1FBQzFDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDhFQUE4RTtRQUMzRixTQUFTLEVBQUUsZUFBZTtLQUMzQixDQUFDO0lBRUYsdUJBQXVCO0lBQ3ZCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQThCO1FBQ3hELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNEQUFzRDtRQUNuRSxTQUFTLEVBQUUsNkJBQTZCO0tBQ3pDLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFnQjtRQUMxQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxREFBcUQ7UUFDbEUsU0FBUyxFQUFFLGVBQWU7S0FDM0IsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQThCO1FBQ3hELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHlEQUF5RDtRQUN0RSxTQUFTLEVBQUUsNkJBQTZCO0tBQ3pDLENBQUM7SUFFRixpQkFBaUI7SUFDakIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBOEI7UUFDMUQsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsK0JBQStCO1FBQzVDLFNBQVMsRUFBRSw2QkFBNkI7S0FDekMsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUscUNBQXFDO0tBQ25ELENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDRCQUE0QjtLQUMxQyxDQUFDO0lBRUYsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxpQkFBaUI7S0FDL0IsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQWU7UUFDMUMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsd0JBQXdCO1FBQ3JDLFNBQVMsRUFBRSxjQUFjO0tBQzFCLENBQUM7SUFFRixxQkFBcUI7SUFDckIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBVztRQUNyQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx5QkFBeUI7UUFDdEMsU0FBUyxFQUFFLFVBQVU7S0FDdEIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQXdCO1FBQ2xELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFFRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLGlCQUFpQjtLQUMvQixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBZTtRQUMxQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxpQkFBaUI7UUFDOUIsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLG9CQUFvQjtJQUNwQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFXO1FBQ3JDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHdCQUF3QjtRQUNyQyxTQUFTLEVBQUUsVUFBVTtLQUN0QixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBVztRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwwQ0FBMEM7UUFDdkQsU0FBUyxFQUFFLFVBQVU7S0FDdEIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQXNCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHdCQUF3QjtRQUNyQyxTQUFTLEVBQUUscUJBQXFCO0tBQ2pDLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUF1QjtRQUNqRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx3QkFBd0I7UUFDckMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBZTtRQUMxQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx3QkFBd0I7UUFDckMsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQW9DO1FBQ2hFLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDBCQUEwQjtRQUN2QyxTQUFTLEVBQUUsbUNBQW1DO0tBQy9DLENBQUM7SUFFRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDREQUE0RDtLQUMxRSxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBZTtRQUMxQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx1QkFBdUI7UUFDcEMsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLHFCQUFxQjtJQUNyQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFlO1FBQzFDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHVCQUF1QjtRQUNwQyxTQUFTLEVBQUUsY0FBYztLQUMxQixDQUFDO0lBRUYsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBaUI7UUFDN0MsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUIsQ0FBQztJQUVGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQXNCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixTQUFTLEVBQUUscUJBQXFCO0tBQ2pDLENBQUM7SUFFRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztLQUNwRCxDQUFDO0lBRUYsZ0JBQWdCO0lBQ2hCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQXNCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDBCQUEwQjtRQUN2QyxTQUFTLEVBQUUscUJBQXFCO0tBQ2pDLENBQUM7SUFFRiwyQ0FBMkM7SUFDM0MsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBVztRQUNyQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsU0FBUyxFQUFFLFVBQVU7S0FDdEIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQStCO1FBQ3pELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxTQUFTLEVBQUUsOEJBQThCO0tBQzFDLENBQUM7SUFFRixZQUFZO0lBQ1osaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBNEI7UUFDMUQsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsMkNBQTJDO1FBQ3hELFNBQVMsRUFBRSwyQkFBMkI7S0FDdkMsQ0FBQztJQUVGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQXFDO1FBQ2pFLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDhCQUE4QjtRQUMzQyxTQUFTLEVBQUUsbUJBQW1CO0tBQy9CLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFlO1FBQzFDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLGtCQUFrQjtRQUMvQixTQUFTLEVBQUUsY0FBYztLQUMxQixDQUFDO0lBRUYsZUFBZTtJQUNmLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQTJCO1FBQ3JELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLGdEQUFnRDtRQUM3RCxTQUFTLEVBQUUsMEJBQTBCO0tBQ3RDLENBQUM7SUFFRixpQkFBaUI7SUFDakIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxrQ0FBa0M7S0FDaEQsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQWdCO1FBQzFDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLG1CQUFtQjtRQUNoQyxTQUFTLEVBQUUsZUFBZTtLQUMzQixDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZ0I7UUFDNUMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsbUNBQW1DO1FBQ2hELFNBQVMsRUFBRSxlQUFlO0tBQzNCLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBaUI7UUFDM0MsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUscUNBQXFDO1FBQ2xELFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUIsQ0FBQztJQUVGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQWlCO1FBQzVDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLGtDQUFrQztRQUMvQyxTQUFTLEVBQUUsZ0JBQWdCO0tBQzVCLENBQUM7SUFFRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFpQjtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxvREFBb0Q7UUFDakUsU0FBUyxFQUFFLGdCQUFnQjtLQUM1QixDQUFDO0lBRUYsa0JBQWtCO0lBQ2xCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQWlCO1FBQzNDLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLDBCQUEwQjtRQUN2QyxTQUFTLEVBQUUsZ0JBQWdCO0tBQzVCLENBQUM7SUFFRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFpQjtRQUM1QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwwQkFBMEI7UUFDdkMsU0FBUyxFQUFFLGdCQUFnQjtLQUM1QixDQUFDO0lBRUYsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxtQ0FBbUM7S0FDakQsQ0FBQztJQUVGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsc0RBQXNEO0tBQ3BFLENBQUM7SUFFRixVQUFVO0lBQ1YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7S0FDOUUsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsc0NBQXNDO0tBQ3BELENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzVCLElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHFDQUFxQztLQUNuRCxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwwQ0FBMEM7S0FDeEQsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzdCLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsV0FBVyxFQUFFLGdEQUFnRDtLQUM5RCxDQUFDO0lBQ0Ysa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFBRSwwRUFBMEU7S0FDeEYsQ0FBQztJQUNGLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQWlCO1FBQzdDLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsV0FBVyxFQUFFLHlCQUF5QjtRQUN0QyxTQUFTLEVBQUUsZ0JBQWdCO0tBQzVCLENBQUM7SUFDRixrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFpQjtRQUM3QyxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFBRSw4REFBOEQ7UUFDM0UsU0FBUyxFQUFFLGdCQUFnQjtLQUM1QixDQUFDO0lBQ0Ysa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBaUI7UUFDN0MsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixXQUFXLEVBQUUsb0hBQW9IO1FBQ2pJLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUIsQ0FBQztJQUNGLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixXQUFXLEVBQUUsOEJBQThCO0tBQzVDLENBQUM7SUFDRixrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsV0FBVyxFQUFFLHNEQUFzRDtLQUNwRSxDQUFDO0lBQ0Ysa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFBRSxzREFBc0Q7S0FDcEUsQ0FBQztJQUNGLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixXQUFXLEVBQUUsZ0NBQWdDO0tBQzlDLENBQUM7SUFDRixrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFlO1FBQzNDLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsV0FBVyxFQUFFLCtDQUErQztRQUM1RCxTQUFTLEVBQUUsY0FBYztLQUMxQixDQUFDO0lBRUYsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBUTtRQUNwQyxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFBRSxpRUFBaUU7S0FDL0UsQ0FBQztJQUVGLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQStCO1FBQzFELElBQUksRUFBRSxvQkFBb0I7UUFDMUIsV0FBVyxFQUFFLCtDQUErQztRQUM1RCxTQUFTLEVBQUUsOEJBQThCO0tBQzFDLENBQUM7SUFDRixrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUErQjtRQUMzRCxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsU0FBUyxFQUFFLDhCQUE4QjtLQUMxQyxDQUFDO0lBRUYsdUJBQXVCO0lBQ3ZCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQXlCO1FBQ3BELElBQUksRUFBRSxvQkFBb0I7UUFDMUIsV0FBVyxFQUFFLDJDQUEyQztRQUN4RCxTQUFTLEVBQUUsd0JBQXdCO0tBQ3BDLENBQUM7SUFDRixrQkFBa0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUF5QjtRQUNwRCxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLFdBQVcsRUFBRSx3Q0FBd0M7UUFDckQsU0FBUyxFQUFFLHdCQUF3QjtLQUNwQyxDQUFDO0lBQ0Ysa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBeUI7UUFDckQsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixXQUFXLEVBQUUsc0NBQXNDO1FBQ25ELFNBQVMsRUFBRSx3QkFBd0I7S0FDcEMsQ0FBQztJQUVGLFlBQVk7SUFDWixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBVztRQUNsQyxJQUFJLEVBQUUsZUFBZTtRQUNyQixXQUFXLEVBQUUsMkdBQTJHO1FBQ3hILFNBQVMsRUFBRSxVQUFVO0tBQ3RCLENBQUM7SUFDRixhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBa0I7UUFDNUMsSUFBSSxFQUFFLGVBQWU7UUFDckIsV0FBVyxFQUFFLHFDQUFxQztRQUNsRCxTQUFTLEVBQUUsaUJBQWlCO0tBQzdCLENBQUM7Q0FDSCxDQUFDO0FBRUYsMEZBQTBGO0FBRTFGOztHQUVHO0FBQ1UsUUFBQSxJQUFJLEdBQUc7SUFDbEIsY0FBYyxFQUFFO1FBQ2QsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxZQUFZLEVBQUU7UUFDWixJQUFJLEVBQUUsWUFBWTtRQUNsQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELGNBQWMsRUFBRTtRQUNkLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELFNBQVMsRUFBRTtRQUNULElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsSUFBSSxFQUFFLGFBQWE7UUFDbkIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxhQUFhLEVBQUU7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7Q0FDaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCAqIGFzIG1ha2UgZnJvbSAnLi9tZXNzYWdlLW1ha2VyJztcbmltcG9ydCB0eXBlIHsgU3BhbkRlZmluaXRpb24gfSBmcm9tICcuL3NwYW4nO1xuaW1wb3J0IHR5cGUgeyBEaWFnbm9zZWRTdGFjayB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvZGlhZ25vc2UnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0ZVJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL2FjdGlvbnMvdmFsaWRhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0RpZmYsIERpZmZSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgdHlwZSB7IEJvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9ib290c3RyYXAtZW52aXJvbm1lbnQtcHJvZ3Jlc3MnO1xuaW1wb3J0IHR5cGUgeyBNaXNzaW5nQ29udGV4dCwgVXBkYXRlZENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9jb250ZXh0JztcbmltcG9ydCB0eXBlIHsgQnVpbGRBc3NldCwgRGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdCwgUHVibGlzaEFzc2V0LCBQdWJsaXNoQXNzZXRFdmVudCwgU3RhY2tEZXBsb3lQcm9ncmVzcywgU3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZGVwbG95JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXN0cm95LCBTdGFja0Rlc3Ryb3lQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2Rlc3Ryb3knO1xuaW1wb3J0IHR5cGUgeyBEcmlmdFJlc3VsdFBheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9kcmlmdCc7XG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2ZsYWdzJztcbmltcG9ydCB0eXBlIHsgQXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2djJztcbmltcG9ydCB0eXBlIHsgSG90c3dhcERlcGxveW1lbnREZXRhaWxzLCBIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQsIEhvdHN3YXBwYWJsZUNoYW5nZSwgSG90c3dhcFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2hvdHN3YXAnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUlkZW50aWZpY2F0aW9uUmVxdWVzdCwgUmVzb3VyY2VJbXBvcnRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvaW1wb3J0JztcbmltcG9ydCB0eXBlIHsgU3RhY2tEZXRhaWxzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2xpc3QnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZFdhdGNoTG9nRXZlbnQsIENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvbG9ncy1tb25pdG9yJztcbmltcG9ydCB0eXBlIHsgQXNzZXRzUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3B1Ymxpc2gtYXNzZXRzJztcbmltcG9ydCB0eXBlIHsgUmVmYWN0b3JSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9yZWZhY3Rvcic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrUm9sbGJhY2tQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3JvbGxiYWNrJztcbmltcG9ydCB0eXBlIHsgTWZhVG9rZW5SZXF1ZXN0LCBTZGtUcmFjZSB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3Nkayc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrQWN0aXZpdHksIFN0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3N0YWNrLWFjdGl2aXR5JztcbmltcG9ydCB0eXBlIHsgU3RhY2tTZWxlY3Rpb25EZXRhaWxzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc3ludGgnO1xuaW1wb3J0IHR5cGUge1xuICBBc3NlbWJseURhdGEsXG4gIENvbmZpcm1hdGlvblJlcXVlc3QsXG4gIENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UsXG4gIER1cmF0aW9uLFxuICBFcnJvclBheWxvYWQsXG4gIE9wZXJhdGlvbixcbiAgU2luZ2xlU3RhY2ssXG4gIFN0YWNrQW5kQXNzZW1ibHlEYXRhLFxufSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEZpbGVXYXRjaEV2ZW50LCBXYXRjaFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvd2F0Y2gnO1xuXG4vKipcbiAqIFdlIGhhdmUgYSByb3VnaCBzeXN0ZW0gYnkgd2hpY2ggd2UgYXNzaWduIG1lc3NhZ2UgY29kZXM6XG4gKiAtIEZpcnN0IGRpZ2l0IGdyb3VwcyBtZXNzYWdlcyBieSBhY3Rpb24sIGUuZy4gc3ludGggb3IgZGVwbG95XG4gKiAtIFgwMDAtWDAwOSBhcmUgcmVzZXJ2ZWQgZm9yIHRpbWluZ3NcbiAqIC0gWDkwMC1YOTk5IGFyZSByZXNlcnZlZCBmb3IgcmVzdWx0c1xuICovXG5leHBvcnQgY29uc3QgSU8gPSB7XG4gIC8vIHdhcm5pbmdzICYgZXJyb3JzXG4gIENES19UT09MS0lUX1cwMTAwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDcmVkZW50aWFsIHBsdWdpbiB3YXJuaW5ncycsXG4gIH0pLFxuXG4gIC8vIDE6IFN5bnRoICgxeHh4KVxuICBDREtfVE9PTEtJVF9JMTAwMDogbWFrZS5pbmZvPE9wZXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzeW50aGVzaXMgdGltZXMuJyxcbiAgICBpbnRlcmZhY2U6ICdPcGVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTEwMDE6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkIEFzc2VtYmx5IHN5bnRoZXNpcyBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kxOTAxOiBtYWtlLnJlc3VsdDxTdGFja0FuZEFzc2VtYmx5RGF0YT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTkwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBzdGFjayBkYXRhJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0FuZEFzc2VtYmx5RGF0YScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMTkwMjogbWFrZS5yZXN1bHQ8QXNzZW1ibHlEYXRhPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxOTAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N1Y2Nlc3NmdWxseSBkZXBsb3llZCBzdGFja3MnLFxuICAgIGludGVyZmFjZTogJ0Fzc2VtYmx5RGF0YScsXG4gIH0pLFxuXG4gIC8vIDI6IExpc3QgKDJ4eHgpXG4gIENES19UT09MS0lUX0kyOTAxOiBtYWtlLnJlc3VsdDxTdGFja0RldGFpbHNQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kyOTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGRldGFpbHMgb24gdGhlIHNlbGVjdGVkIHN0YWNrcyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0RldGFpbHNQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gMzogSW1wb3J0ICYgTWlncmF0ZVxuICBDREtfVE9PTEtJVF9JMzEwMDogbWFrZS5jb25maXJtPFJlc291cmNlSW1wb3J0UmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMzEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHRoZSBpbXBvcnQgb2YgYSBzcGVjaWZpYyByZXNvdXJjZScsXG4gICAgaW50ZXJmYWNlOiAnUmVzb3VyY2VJbXBvcnRSZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0kzMTEwOiBtYWtlLnF1ZXN0aW9uPFJlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kzMTEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgbmVlZGVkIHRvIGlkZW50aWZ5IGEgcmVzb3VyY2UnLFxuICAgIGludGVyZmFjZTogJ1Jlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0UzOTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXNvdXJjZSBpbXBvcnQgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA0OiBEaWZmICg0MHh4IC0gNDR4eClcbiAgQ0RLX1RPT0xLSVRfSTQwMDA6IG1ha2UudHJhY2U8U3RhY2tTZWxlY3Rpb25EZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RpZmYgc3RhY2tzIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQwMDE6IG1ha2UucmVzdWx0PERpZmZSZXN1bHQ+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.
|
|
95
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNwYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTJDO0FBQzNDLDZDQUF5QztBQUN6QyxrQ0FBa0M7QUFLbEMsd0NBQTJDO0FBZ0kzQzs7Ozs7O0dBTUc7QUFDSCxNQUFhLFNBQVM7SUFDSCxVQUFVLENBQXVCO0lBQ2pDLFFBQVEsQ0FBVztJQUM1QixVQUFVLENBQTJDO0lBRTdELFlBQW1CLFFBQWtCLEVBQUUsVUFBZ0MsRUFBRSxVQUFvRDtRQUMzSCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBUU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFNLEVBQUUsQ0FBSztRQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDOUUsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN4QyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBMUJELDhCQTBCQztBQUVELE1BQU0sV0FBVztJQUNDLFFBQVEsQ0FBVztJQUVsQixVQUFVLENBQXVC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Q0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLElBQUk7UUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUQsT0FBTztZQUNMLElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxDQUFDO1NBQy9CLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxTQUFTLFNBQVMsQ0FBSSxLQUFVLEVBQUUsTUFBVTtJQUMxQyxNQUFNLGNBQWMsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7SUFFakQsc0dBQXNHO0lBQ3RHLE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUUvRCxvRUFBb0U7SUFDcEUsNkVBQTZFO0lBQzdFLE1BQU0sT0FBTyxHQUFHLENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUU1RCxPQUFPO1FBQ0wsT0FBTztRQUNQLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFtQixJQUFZLEVBQUUsT0FBVTtJQUM1RCxPQUFPO1FBQ0wsR0FBRyxPQUFPO1FBQ1YsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi8uLi8uLi9wcml2YXRlL2Rpc3Bvc2UtcG9seWZpbGwnO1xuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB0eXBlIHsgSW9EZWZhdWx0TWVzc2FnZXMgfSBmcm9tICcuL2lvLWRlZmF1bHQtbWVzc2FnZXMnO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25MZXNzTWVzc2FnZSwgQWN0aW9uTGVzc1JlcXVlc3QsIElvSGVscGVyIH0gZnJvbSAnLi9pby1oZWxwZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBtYWtlIGZyb20gJy4vbWVzc2FnZS1tYWtlcic7XG5pbXBvcnQgdHlwZSB7IER1cmF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvdHlwZXMnO1xuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gJy4uLy4uLy4uL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBJQWN0aW9uQXdhcmVJb0hvc3QgfSBmcm9tICcuLi9pby1ob3N0JztcblxuLyoqXG4gKiBUaGVzZSBkYXRhIGZpZWxkcyBhcmUgYXV0b21hdGljYWxseSBhZGRlZCBieSBlbmRpbmcgYSBzcGFuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbkVuZCB7XG4gIHJlYWRvbmx5IGR1cmF0aW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvdW50ZXJzPzogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBzcGVjaWZpYyBzcGFuXG4gKlxuICogQSBzcGFuIGRlZmluaXRpb24gaXMgYSBwYWlyIG9mIGBJb01lc3NhZ2VNYWtlcmBzIHRvIGNyZWF0ZSBhIHN0YXJ0IGFuZCBlbmQgbWVzc2FnZSBvZiB0aGUgc3BhbiByZXNwZWN0aXZlbHkuXG4gKiBJdCBhbHNvIGhhcyBhIGRpc3BsYXkgbmFtZSwgdGhhdCBpcyB1c2VkIGZvciBhdXRvLWdlbmVyYXRlZCBtZXNzYWdlIHRleHQgd2hlbiB0aGV5IGFyZSBub3QgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BhbkRlZmluaXRpb248UyBleHRlbmRzIG9iamVjdCwgRSBleHRlbmRzIFNwYW5FbmQ+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=
|
|
@@ -54,6 +54,12 @@ export interface StackActivityMonitorProps {
|
|
|
54
54
|
* @default - Bootstrap version is not reported in error messages
|
|
55
55
|
*/
|
|
56
56
|
readonly envResources?: EnvironmentResources;
|
|
57
|
+
/**
|
|
58
|
+
* Whether this deployment is an update to an existing stack (as opposed to a creation).
|
|
59
|
+
*
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
62
|
+
readonly isStackUpdate?: boolean;
|
|
57
63
|
}
|
|
58
64
|
/**
|
|
59
65
|
* Drives the monitoring of a Stack deployment
|
|
@@ -90,11 +96,17 @@ export declare class StackActivityMonitor {
|
|
|
90
96
|
private readonly stack;
|
|
91
97
|
private readonly cfn;
|
|
92
98
|
private readonly envResources?;
|
|
93
|
-
|
|
99
|
+
private readonly isStackUpdate;
|
|
100
|
+
constructor({ cfn, ioHelper, stack, stackArn, resourcesTotal, changeSetCreationTime, pollingInterval, envResources, isStackUpdate, }: StackActivityMonitorProps);
|
|
94
101
|
/**
|
|
95
102
|
* The resource errors that were discovered during monitoring of this stack
|
|
96
103
|
*/
|
|
97
104
|
get errors(): import("./resource-errors").ResourceErrors;
|
|
105
|
+
/**
|
|
106
|
+
* Resources that received DELETE_FAILED during the stack update.
|
|
107
|
+
* CloudFormation skips these and completes the update anyway.
|
|
108
|
+
*/
|
|
109
|
+
get deleteFailures(): import("../..").ResourceDeleteFailure[];
|
|
98
110
|
start(): Promise<this>;
|
|
99
111
|
stop(): Promise<void>;
|
|
100
112
|
private scheduleNextTick;
|
|
@@ -43,12 +43,14 @@ class StackActivityMonitor {
|
|
|
43
43
|
stack;
|
|
44
44
|
cfn;
|
|
45
45
|
envResources;
|
|
46
|
-
|
|
46
|
+
isStackUpdate;
|
|
47
|
+
constructor({ cfn, ioHelper, stack, stackArn, resourcesTotal, changeSetCreationTime, pollingInterval = 2_000, envResources, isStackUpdate = false, }) {
|
|
47
48
|
this.ioHelper = ioHelper;
|
|
48
49
|
this.stack = stack;
|
|
49
50
|
this.stackDisplayName = (0, cloudformation_1.stackNameFromArn)(stackArn);
|
|
50
51
|
this.cfn = cfn;
|
|
51
52
|
this.envResources = envResources;
|
|
53
|
+
this.isStackUpdate = isStackUpdate;
|
|
52
54
|
this.progressMonitor = new stack_progress_monitor_1.StackProgressMonitor(resourcesTotal);
|
|
53
55
|
this.pollingInterval = pollingInterval;
|
|
54
56
|
this.poller = new stack_event_poller_1.StackEventPoller(cfn, {
|
|
@@ -62,6 +64,13 @@ class StackActivityMonitor {
|
|
|
62
64
|
get errors() {
|
|
63
65
|
return this.poller.errors;
|
|
64
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Resources that received DELETE_FAILED during the stack update.
|
|
69
|
+
* CloudFormation skips these and completes the update anyway.
|
|
70
|
+
*/
|
|
71
|
+
get deleteFailures() {
|
|
72
|
+
return this.poller.deleteFailures;
|
|
73
|
+
}
|
|
65
74
|
async start() {
|
|
66
75
|
this.monitorId = (0, node_crypto_1.randomUUID)();
|
|
67
76
|
await this.ioHelper.notify(private_1.IO.CDK_TOOLKIT_I5501.msg(`Deploying ${this.stackDisplayName}`, {
|
|
@@ -69,6 +78,7 @@ class StackActivityMonitor {
|
|
|
69
78
|
stack: this.stack,
|
|
70
79
|
stackName: this.stackDisplayName,
|
|
71
80
|
resourcesTotal: this.progressMonitor.total,
|
|
81
|
+
isStackUpdate: this.isStackUpdate,
|
|
72
82
|
}));
|
|
73
83
|
this.scheduleNextTick();
|
|
74
84
|
return this;
|
|
@@ -234,4 +244,4 @@ class StackActivityMonitor {
|
|
|
234
244
|
}
|
|
235
245
|
}
|
|
236
246
|
exports.StackActivityMonitor = StackActivityMonitor;
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYWN0aXZpdHktbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWFjdGl2aXR5LW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlDO0FBQ3pDLGtDQUFrQztBQUVsQyw2REFBbUU7QUFDbkUscUVBQWdFO0FBRWhFLDhEQUE2RDtBQUc3RCwyQ0FBa0Q7QUFDbEQsOEVBQTBFO0FBK0QxRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG9CQUFvQjtJQUMvQjs7T0FFRztJQUNjLE1BQU0sQ0FBbUI7SUFFMUM7OztPQUdHO0lBQ2MsZUFBZSxDQUFTO0lBRWpDLFNBQVMsQ0FBVTtJQUVWLGVBQWUsQ0FBdUI7SUFFdkQ7O09BRUc7SUFDSyxTQUFTLENBQWlDO0lBRWxEOztPQUVHO0lBQ0ssV0FBVyxDQUFnQjtJQUVsQixRQUFRLENBQVc7SUFDbkIsZ0JBQWdCLENBQVM7SUFDekIsS0FBSyxDQUE4QjtJQUNuQyxHQUFHLENBQXdCO0lBQzNCLFlBQVksQ0FBd0I7SUFFckQsWUFBWSxFQUNWLEdBQUcsRUFDSCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGVBQWUsR0FBRyxLQUFLLEVBQ3ZCLFlBQVksR0FDYztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBRWpDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSw2Q0FBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJ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UUFFbkMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQ3ZGLE1BQU0sU0FBUyxHQUFHLFlBQVksS0FBSyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVsRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQ2hCLGlDQUFpQyxFQUNqQyxLQUFLLENBQUMsU0FBUyxFQUNmLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBVSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsRUFDL0MsS0FBSyxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQzFCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDNUQsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDNUUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXBSRCxvREFvUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0IHsgU3RhY2tFdmVudFBvbGxlciwgUG9sbFJhbmdlIH0gZnJvbSAnLi9zdGFjay1ldmVudC1wb2xsZXInO1xuaW1wb3J0IHsgU3RhY2tQcm9ncmVzc01vbml0b3IgfSBmcm9tICcuL3N0YWNrLXByb2dyZXNzLW1vbml0b3InO1xuaW1wb3J0IHR5cGUgeyBTdGFja0FjdGl2aXR5IH0gZnJvbSAnLi4vLi4vcGF5bG9hZHMvc3RhY2stYWN0aXZpdHknO1xuaW1wb3J0IHsgc3RhY2tOYW1lRnJvbUFybiB9IGZyb20gJy4uLy4uL3V0aWwvY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBJQ2xvdWRGb3JtYXRpb25DbGllbnQgfSBmcm9tICcuLi9hd3MtYXV0aC9wcml2YXRlJztcbmltcG9ydCB0eXBlIHsgRW52aXJvbm1lbnRSZXNvdXJjZXMgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBJTywgdHlwZSBJb0hlbHBlciB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHsgcmVzb3VyY2VNZXRhZGF0YSB9IGZyb20gJy4uL3Jlc291cmNlLW1ldGFkYXRhL3Jlc291cmNlLW1ldGFkYXRhJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0FjdGl2aXR5TW9uaXRvclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiBjbGllbnRcbiAgICovXG4gIHJlYWRvbmx5IGNmbjogSUNsb3VkRm9ybWF0aW9uQ2xpZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgSW9IZWxwZXIgdXNlZCBmb3IgbWVzc2FnaW5nXG4gICAqL1xuICByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayBhcnRpZmFjdCB0aGF0IGlzIGdldHRpbmcgZGVwbG95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrOiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIFN0YWNrIHRoYXQgaXMgZ2V0dGluZyBkZXBsb3llZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVG90YWwgbnVtYmVyIG9mIHJlc291cmNlcyB0byB1cGRhdGVcbiAgICpcbiAgICogVXNlZCB0byBjYWxjdWxhdGUgYSBwcm9ncmVzcyBiYXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcHJvZ3Jlc3MgcmVwb3J0aW5nXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZXNUb3RhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3JlYXRpb24gdGltZSBvZiB0aGUgY2hhbmdlIHNldFxuICAgKlxuICAgKiBUaGlzIHdpbGwgYmUgdXNlZCB0byBmaWx0ZXIgZXZlbnRzLCBvbmx5IHNob3dpbmcgdGhvc2UgZnJvbSBhZnRlciB0aGUgY2hhbmdlXG4gICAqIHNldCBjcmVhdGlvbiB0aW1lLlxuICAgKlxuICAgKiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhpcywgb3RoZXJ3aXNlIHRoZSBmaWx0ZXJpbmcgd2lsbCBiZSBzdWJqZWN0XG4gICAqIHRvIGNsb2NrIGRyaWZ0IGJldHdlZW4gbG9jYWwgYW5kIGNsb3VkIG1hY2hpbmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIExvY2FsIG1hY2hpbmUncyBjdXJyZW50IHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZVNldENyZWF0aW9uVGltZT86IERhdGU7XG5cbiAgLyoqXG4gICAqIFRpbWUgdG8gd2FpdCBiZXR3ZWVuIGZldGNoaW5nIG5ldyBhY3Rpdml0aWVzLlxuICAgKlxuICAgKiBNdXN0IHdhaXQgYSByZWFzb25hYmxlIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gcG9sbHMsIHNpbmNlIHdlIG5lZWQgdG8gY29uc2lkZXIgQ2xvdWRGb3JtYXRpb24gQVBJIGxpbWl0c1xuICAgKlxuICAgKiBAZGVmYXVsdCAyXzAwMFxuICAgKi9cbiAgcmVhZG9ubHkgcG9sbGluZ0ludGVydmFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCByZXNvdXJjZXMsIHVzZWQgdG8gbG9vayB1cCB0aGUgYm9vdHN0cmFwIHRvb2xraXQgdmVyc2lvbiB3aGVuXG4gICAqIGRpYWdub3NpbmcgR3VhcmQgSG9vayBhbm5vdGF0aW9uIGZldGNoIGZhaWx1cmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCB2ZXJzaW9uIGlzIG5vdCByZXBvcnRlZCBpbiBlcnJvciBtZXNzYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgZW52UmVzb3VyY2VzPzogRW52aXJvbm1lbnRSZXNvdXJjZXM7XG59XG5cbi8qKlxuICogRHJpdmVzIHRoZSBtb25pdG9yaW5nIG9mIGEgU3RhY2sgZGVwbG95bWVudFxuICpcbiAqIGBgYFxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICog4pSCICAgICAgICAgU3RhY2sgICAgICAgICDilIIgcG9sbCgpIOKUgiAgICAgICAgIFN0YWNrICAgICAgICAg4pSCICBwcm9jZXNzKGV2KSDilIIgICAgICAgICBTdGFjayAgICAgICAgIOKUglxuICog4pSCICAgICAgRXZlbnRQb2xsZXIgICAgICDilILil4DilIDilIDilIDilIDilIDilIDilIDilIIgICAgQWN0aXZpdHlNb25pdG9yICAgIOKUguKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKWtuKUgiAgICBQcm9ncmVzc01vbml0b3IgICAg4pSCXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrQWN0aXZpdHlNb25pdG9yIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsZXIgdXNlZCB0byByZWFkIHN0YWNrIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb2xsZXI6IFN0YWNrRXZlbnRQb2xsZXI7XG5cbiAgLyoqXG4gICAqIEZldGNoIG5ldyBhY3Rpdml0eSBldmVyeSAxIHNlY29uZFxuICAgKiBQcmludGVycyBjYW4gZGVjaWRlIHRvIHVwZGF0ZSBhIHZpZXcgbGVzcyBmcmVxdWVudGx5IGlmIGRlc2lyZWRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcG9sbGluZ0ludGVydmFsOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtb25pdG9ySWQ/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9ncmVzc01vbml0b3I6IFN0YWNrUHJvZ3Jlc3NNb25pdG9yO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHRpY2sgdGltZXJcbiAgICovXG4gIHByaXZhdGUgdGlja1RpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgLyoqXG4gICAqIFNldCB0byB0aGUgYWN0aXZpdHkgb2YgcmVhZGluZyB0aGUgY3VycmVudCBldmVudHNcbiAgICovXG4gIHByaXZhdGUgcmVhZFByb21pc2U/OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2tEaXNwbGF5TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrOiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2ZuOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52UmVzb3VyY2VzPzogRW52aXJvbm1lbnRSZXNvdXJjZXM7XG5cbiAgY29uc3RydWN0b3Ioe1xuICAgIGNmbixcbiAgICBpb0hlbHBlcixcbiAgICBzdGFjayxcbiAgICBzdGFja0FybixcbiAgICByZXNvdXJjZXNUb3RhbCxcbiAgICBjaGFuZ2VTZXRDcmVhdGlvblRpbWUsXG4gICAgcG9sbGluZ0ludGVydmFsID0gMl8wMDAsXG4gICAgZW52UmVzb3VyY2VzLFxuICB9OiBTdGFja0FjdGl2aXR5TW9uaXRvclByb3BzKSB7XG4gICAgdGhpcy5pb0hlbHBlciA9IGlvSGVscGVyO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLnN0YWNrRGlzcGxheU5hbWUgPSBzdGFja05hbWVGcm9tQXJuKHN0YWNrQXJuKTtcbiAgICB0aGlzLmNmbiA9IGNmbjtcbiAgICB0aGlzLmVudlJlc291cmNlcyA9IGVudlJlc291cmNlcztcblxuICAgIHRoaXMucHJvZ3Jlc3NNb25pdG9yID0gbmV3IFN0YWNrUHJvZ3Jlc3NNb25pdG9yKHJlc291cmNlc1RvdGFsKTtcbiAgICB0aGlzLnBvbGxpbmdJbnRlcnZhbCA9IHBvbGxpbmdJbnRlcnZhbDtcbiAgICB0aGlzLnBvbGxlciA9IG5ldyBTdGFja0V2ZW50UG9sbGVyKGNmbiwge1xuICAgICAgc3RhY2tBcm4sXG4gICAgICBpbml0aWFsUG9sbFJhbmdlOiBQb2xsUmFuZ2Uuc2luY2VUaW1lc3RhbXAoY2hhbmdlU2V0Q3JlYXRpb25UaW1lPy5nZXRUaW1lKCkgPz8gRGF0ZS5ub3coKSksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGVycm9ycyB0aGF0IHdlcmUgZGlzY292ZXJlZCBkdXJpbmcgbW9uaXRvcmluZyBvZiB0aGlzIHN0YWNrXG4gICAqL1xuICBwdWJsaWMgZ2V0IGVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5wb2xsZXIuZXJyb3JzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0KCkge1xuICAgIHRoaXMubW9uaXRvcklkID0gcmFuZG9tVVVJRCgpO1xuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAxLm1zZyhgRGVwbG95aW5nICR7dGhpcy5zdGFja0Rpc3BsYXlOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IHRoaXMubW9uaXRvcklkLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2tEaXNwbGF5TmFtZSxcbiAgICAgIHJlc291cmNlc1RvdGFsOiB0aGlzLnByb2dyZXNzTW9uaXRvci50b3RhbCxcbiAgICB9KSk7XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RvcCgpIHtcbiAgICBjb25zdCBvbGRNb25pdG9ySWQgPSB0aGlzLm1vbml0b3JJZCE7XG4gICAgdGhpcy5tb25pdG9ySWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMudGlja1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aWNrVGltZXIpO1xuICAgIH1cblxuICAgIC8vIERvIGEgZmluYWwgcG9sbCBmb3IgYWxsIGV2ZW50cy4gVGhpcyBpcyB0byBoYW5kbGUgdGhlIHNpdHVhdGlvbiB3aGVyZSBEZXNjcmliZVN0YWNrU3RhdHVzXG4gICAgLy8gYWxyZWFkeSByZXR1cm5lZCBhbiBlcnJvciwgYnV0IHRoZSBtb25pdG9yIGhhc24ndCBzZWVuIGFsbCB0aGUgZXZlbnRzIHlldCBhbmQgd2UnZCBlbmRcbiAgICAvLyB1cCBub3QgcHJpbnRpbmcgdGhlIGZhaWx1cmUgcmVhc29uIHRvIHVzZXJzLlxuICAgIGF3YWl0IHRoaXMuZmluYWxQb2xsVG9FbmQob2xkTW9uaXRvcklkKTtcblxuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAzLm1zZyhgQ29tcGxldGVkICR7dGhpcy5zdGFja0Rpc3BsYXlOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IG9sZE1vbml0b3JJZCxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrRGlzcGxheU5hbWUsXG4gICAgICByZXNvdXJjZXNUb3RhbDogdGhpcy5wcm9ncmVzc01vbml0b3IudG90YWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZU5leHRUaWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRpY2soKSwgdGhpcy5wb2xsaW5nSW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0aWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHRoaXMucmVhZE5ld0V2ZW50cyh0aGlzLm1vbml0b3JJZCk7XG4gICAgICBhd2FpdCB0aGlzLnJlYWRQcm9taXNlO1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHVuZGVmaW5lZDtcblxuICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBiZWVuIHN0b3AoKXBlZCB3aGlsZSB0aGUgbmV0d29yayBjYWxsIHdhcyBpbiBwcm9ncmVzcy5cbiAgICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0U1NTAwLm1zZyhcbiAgICAgICAgdXRpbC5mb3JtYXQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIG1vbml0b3Jpbmcgc3RhY2s6ICVzJywgZSksXG4gICAgICAgIHsgZXJyb3I6IGUgYXMgYW55IH0sXG4gICAgICApKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRNZXRhZGF0YUZvcihsb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5zdGFjay5tZXRhZGF0YTtcbiAgICBpZiAoIWxvZ2ljYWxJZCB8fCAhbWV0YWRhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZU1ldGFkYXRhKHRoaXMuc3RhY2ssIGxvZ2ljYWxJZCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlLCBjb2xsYXBzZXMgYWxsIGludGVybmFsIHdoaXRlc3BhY2VcbiAgICogKGluY2x1ZGluZyBuZXdsaW5lcykgdG8gYSBzaW5nbGUgc3BhY2UsIGFuZCB0cnVuY2F0ZXMgdG8gYG1heENoYXJzYFxuICAgKiBjaGFyYWN0ZXJzLCBhcHBlbmRpbmcgYFsuLi50cnVuY2F0ZWRdYCB3aGVuIHRoZSBvcmlnaW5hbCB3YXMgbG9uZ2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgbWF4Q2hhcnM6IG51bWJlciA9IDQwMCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG1lc3NhZ2UudHJpbSgpLnJlcGxhY2UoL1xccysvZywgJyAnKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZC5sZW5ndGggPiBtYXhDaGFyc1xuICAgICAgPyBub3JtYWxpemVkLnN1YnN0cmluZygwLCBtYXhDaGFycykgKyAnWy4uLnRydW5jYXRlZF0nXG4gICAgICA6IG5vcm1hbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBHdWFyZCBIb29rIGFubm90YXRpb24gZGV0YWlscyB2aWEgR2V0SG9va1Jlc3VsdCBBUEkgYW5kIGZvcm1hdHMgdGhlbVxuICAgKiBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgZmV0Y2ggZmFpbHMgb3IgdGhlcmVcbiAgICogYXJlIG5vIGZhaWxlZCBhbm5vdGF0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhob29rSW52b2NhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNmbi5nZXRIb29rUmVzdWx0KHsgSG9va1Jlc3VsdElkOiBob29rSW52b2NhdGlvbklkIH0pO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSByZXN1bHQuQW5ub3RhdGlvbnMgPz8gW107XG4gICAgICBjb25zdCBmYWlsZWRBbm5vdGF0aW9ucyA9IGFubm90YXRpb25zLmZpbHRlcigoYSkgPT4gYS5TdGF0dXMgPT09ICdGQUlMRUQnKTtcbiAgICAgIGlmIChmYWlsZWRBbm5vdGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydOb25Db21wbGlhbnQgUnVsZXM6JywgJyddO1xuICAgICAgZm9yIChjb25zdCBhbm5vdGF0aW9uIG9mIGZhaWxlZEFubm90YXRpb25zKSB7XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLkFubm90YXRpb25OYW1lKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgWyR7YW5ub3RhdGlvbi5Bbm5vdGF0aW9uTmFtZX1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFubm90YXRpb24uU3RhdHVzTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYOKAoiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlN0YXR1c01lc3NhZ2UpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFJlbWVkaWF0aW9uOiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykudHJpbUVuZCgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuXG4gICAgICBjb25zdCBpc1Blcm1pc3Npb25zRXJyb3IgPVxuICAgICAgICBlLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nIHx8XG4gICAgICAgICh0eXBlb2YgZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvck1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybTogY2xvdWRmb3JtYXRpb246Z2V0aG9va3Jlc3VsdCcpKTtcblxuICAgICAgaWYgKGlzUGVybWlzc2lvbnNFcnJvciAmJiB0aGlzLmVudlJlc291cmNlcykge1xuICAgICAgICBsZXQgY3VycmVudFZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IChhd2FpdCB0aGlzLmVudlJlc291cmNlcy5sb29rdXBUb29sa2l0KCkpLnZlcnNpb247XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMgbG9va2luZyB1cCB0aGUgYm9vdHN0cmFwIHZlcnNpb25cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdChcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggcmVzdWx0IGRldGFpbHMgZm9yIEhvb2sgaW52b2NhdGlvbiAke2hvb2tJbnZvY2F0aW9uSWR9OiAke2Vycm9yTWVzc2FnZX0uIE1ha2Ugc3VyZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBjYWxsIHRoZSBHZXRIb29rUmVzdWx0IEFQSSwgb3IgcmUtYm9vdHN0cmFwIHlvdXIgZW52aXJvbm1lbnQgYnkgcnVubmluZyAnY2RrIGJvb3RzdHJhcCcgdG8gdXBkYXRlIHRoZSBCb290c3RyYXAgQ0RLIFRvb2xraXQgc3RhY2suXG4gICAgICAgICAgICAnQm9vdHN0cmFwIHRvb2xraXQgc3RhY2sgdmVyc2lvbiAzMSBvciBsYXRlciBpcyBuZWVkZWQ7IGN1cnJlbnQgdmVyc2lvbjogJHtjdXJyZW50VmVyc2lvbiA/PyAndW5rbm93bid9LmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdCgnRmFpbGVkIHRvIGZldGNoIEd1YXJkIEhvb2sgZGV0YWlscyBmb3IgaW52b2NhdGlvbiAlczogJXMnLCBob29rSW52b2NhdGlvbklkLCBlcnJvck1lc3NhZ2UpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhbGwgbmV3IGV2ZW50cyBmcm9tIHRoZSBzdGFjayBoaXN0b3J5XG4gICAqXG4gICAqIFRoZSBldmVudHMgYXJlIHJldHVybmVkIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgYnkgdGhlIHVuZGVybHlpbmcgcG9sbGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWFkTmV3RXZlbnRzKG1vbml0b3JJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcG9sbEV2ZW50cyA9IGF3YWl0IHRoaXMucG9sbGVyLnBvbGwoKTtcblxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VFdmVudCBvZiBwb2xsRXZlbnRzKSB7XG4gICAgICB0aGlzLnByb2dyZXNzTW9uaXRvci5wcm9jZXNzKHJlc291cmNlRXZlbnQpO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgZmFpbGVkIEd1YXJkIEhvb2sgZXZlbnQgd2l0aCBhbiBpbnZvY2F0aW9uIElELCBmZXRjaCBhbm5vdGF0aW9uc1xuICAgICAgaWYgKHJlc291cmNlRXZlbnQuZXZlbnQuSG9va0ludm9jYXRpb25JZCkge1xuICAgICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IGF3YWl0IHRoaXMuZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhyZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tJbnZvY2F0aW9uSWQpO1xuICAgICAgICBpZiAoYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICByZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tTdGF0dXNSZWFzb24gPSBhbm5vdGF0aW9ucztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSA9IHtcbiAgICAgICAgZGVwbG95bWVudDogbW9uaXRvcklkLFxuICAgICAgICBldmVudDogcmVzb3VyY2VFdmVudC5ldmVudCxcbiAgICAgICAgbWV0YWRhdGE6IHRoaXMuZmluZE1ldGFkYXRhRm9yKHJlc291cmNlRXZlbnQuZXZlbnQuTG9naWNhbFJlc291cmNlSWQpLFxuICAgICAgICBwcm9ncmVzczogdGhpcy5wcm9ncmVzc01vbml0b3IucHJvZ3Jlc3MsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMi5tc2codGhpcy5mb3JtYXRBY3Rpdml0eShhY3Rpdml0eSwgdHJ1ZSksIGFjdGl2aXR5KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBmaW5hbCBwb2xsIHRvIHRoZSBlbmQgYW5kIGZsdXNoIG91dCBhbGwgZXZlbnRzIHRvIHRoZSBwcmludGVyXG4gICAqXG4gICAqIEZpbmlzaCBhbnkgcG9sbCBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIHRoZW4gZG8gYSBmaW5hbCBvbmUgdW50aWwgd2UndmVcbiAgICogcmVhY2hlZCB0aGUgbGFzdCBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmaW5hbFBvbGxUb0VuZChtb25pdG9ySWQ6IHN0cmluZykge1xuICAgIC8vIElmIHdlIHdlcmUgZG9pbmcgYSBwb2xsLCBmaW5pc2ggdGhhdCBmaXJzdC4gSXQgd2FzIHN0YXJ0ZWQgYmVmb3JlXG4gICAgLy8gdGhlIG1vbWVudCB3ZSB3ZXJlIHN1cmUgd2Ugd2VyZW4ndCBnb2luZyB0byBnZXQgYW55IG5ldyBldmVudHMgYW55bW9yZVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gZG8gYSBuZXcgb25lIGFueXdheS4gTmVlZCB0byB3YWl0IGZvciB0aGlzIG9uZSB0aG91Z2hcbiAgICAvLyBiZWNhdXNlIG91ciBzdGF0ZSBpcyBzaW5nbGUtdGhyZWFkZWQuXG4gICAgaWYgKHRoaXMucmVhZFByb21pc2UpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVhZFByb21pc2U7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5yZWFkTmV3RXZlbnRzKG1vbml0b3JJZCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIHN0YWNrIGFjdGl2aXR5IGludG8gYSBiYXNpYyBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0QWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHksIHByb2dyZXNzOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBldmVudCA9IGFjdGl2aXR5LmV2ZW50O1xuICAgIGNvbnN0IG1ldGFkYXRhID0gYWN0aXZpdHkubWV0YWRhdGE7XG5cbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBtZXRhZGF0YSA/IG1ldGFkYXRhLmNvbnN0cnVjdFBhdGggOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCB8fCAnJztcbiAgICBjb25zdCBsb2dpY2FsSWQgPSByZXNvdXJjZU5hbWUgIT09IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8gYCgke2V2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkfSkgYCA6ICcnO1xuXG4gICAgcmV0dXJuIHV0aWwuZm9ybWF0KFxuICAgICAgJyVzIHwgJXMlcyB8ICVzIHwgJXMgfCAlcyAlcyVzJXMnLFxuICAgICAgZXZlbnQuU3RhY2tOYW1lLFxuICAgICAgcHJvZ3Jlc3MgIT09IGZhbHNlID8gYCR7YWN0aXZpdHkucHJvZ3Jlc3MuZm9ybWF0dGVkfSB8IGAgOiAnJyxcbiAgICAgIG5ldyBEYXRlKGV2ZW50LlRpbWVzdGFtcCEpLnRvTG9jYWxlVGltZVN0cmluZygpLFxuICAgICAgZXZlbnQuUmVzb3VyY2VTdGF0dXMgfHwgJycsXG4gICAgICBldmVudC5SZXNvdXJjZVR5cGUsXG4gICAgICByZXNvdXJjZU5hbWUsXG4gICAgICBsb2dpY2FsSWQsXG4gICAgICBldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA/IGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uIDogJycsXG4gICAgICBtZXRhZGF0YT8uZW50cnkudHJhY2UgPyBgXFxuXFx0JHttZXRhZGF0YS5lbnRyeS50cmFjZS5qb2luKCdcXG5cXHRcXFxcXyAnKX1gIDogJycsXG4gICAgKTtcbiAgfVxufVxuXG4iXX0=
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYWN0aXZpdHktbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWFjdGl2aXR5LW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlDO0FBQ3pDLGtDQUFrQztBQUVsQyw2REFBbUU7QUFDbkUscUVBQWdFO0FBRWhFLDhEQUE2RDtBQUc3RCwyQ0FBa0Q7QUFDbEQsOEVBQTBFO0FBc0UxRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG9CQUFvQjtJQUMvQjs7T0FFRztJQUNjLE1BQU0sQ0FBbUI7SUFFMUM7OztPQUdHO0lBQ2MsZUFBZSxDQUFTO0lBRWpDLFNBQVMsQ0FBVTtJQUVWLGVBQWUsQ0FBdUI7SUFFdkQ7O09BRUc7SUFDSyxTQUFTLENBQWlDO0lBRWxEOztPQUVHO0lBQ0ssV0FBVyxDQUFnQjtJQUVsQixRQUFRLENBQVc7SUFDbkIsZ0JBQWdCLENBQVM7SUFDekIsS0FBSyxDQUE4QjtJQUNuQyxHQUFHLENBQXdCO0lBQzNCLFlBQVksQ0FBd0I7SUFDcEMsYUFBYSxDQUFVO0lBRXhDLFlBQVksRUFDVixHQUFHLEVBQ0gsUUFBUSxFQUNSLEtBQUssRUFDTCxRQUFRLEVBQ1IsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixlQUFlLEdBQUcsS0FBSyxFQUN2QixZQUFZLEVBQ1osYUFBYSxHQUFHLEtBQUssR0FDSztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFB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QztDQUNGO0FBaFNELG9EQWdTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgeyBTdGFja0V2ZW50UG9sbGVyLCBQb2xsUmFuZ2UgfSBmcm9tICcuL3N0YWNrLWV2ZW50LXBvbGxlcic7XG5pbXBvcnQgeyBTdGFja1Byb2dyZXNzTW9uaXRvciB9IGZyb20gJy4vc3RhY2stcHJvZ3Jlc3MtbW9uaXRvcic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9wYXlsb2Fkcy9zdGFjay1hY3Rpdml0eSc7XG5pbXBvcnQgeyBzdGFja05hbWVGcm9tQXJuIH0gZnJvbSAnLi4vLi4vdXRpbC9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IElDbG91ZEZvcm1hdGlvbkNsaWVudCB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElPLCB0eXBlIElvSGVscGVyIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyByZXNvdXJjZU1ldGFkYXRhIH0gZnJvbSAnLi4vcmVzb3VyY2UtbWV0YWRhdGEvcmVzb3VyY2UtbWV0YWRhdGEnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrQWN0aXZpdHlNb25pdG9yUHJvcHMge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIGNsaWVudFxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBJb0hlbHBlciB1c2VkIGZvciBtZXNzYWdpbmdcbiAgICovXG4gIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIGFydGlmYWN0IHRoYXQgaXMgZ2V0dGluZyBkZXBsb3llZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgU3RhY2sgdGhhdCBpcyBnZXR0aW5nIGRlcGxveWVkXG4gICAqL1xuICByZWFkb25seSBzdGFja0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgcmVzb3VyY2VzIHRvIHVwZGF0ZVxuICAgKlxuICAgKiBVc2VkIHRvIGNhbGN1bGF0ZSBhIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwcm9ncmVzcyByZXBvcnRpbmdcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlc1RvdGFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGlvbiB0aW1lIG9mIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGZpbHRlciBldmVudHMsIG9ubHkgc2hvd2luZyB0aG9zZSBmcm9tIGFmdGVyIHRoZSBjaGFuZ2VcbiAgICogc2V0IGNyZWF0aW9uIHRpbWUuXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzLCBvdGhlcndpc2UgdGhlIGZpbHRlcmluZyB3aWxsIGJlIHN1YmplY3RcbiAgICogdG8gY2xvY2sgZHJpZnQgYmV0d2VlbiBsb2NhbCBhbmQgY2xvdWQgbWFjaGluZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTG9jYWwgbWFjaGluZSdzIGN1cnJlbnQgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlU2V0Q3JlYXRpb25UaW1lPzogRGF0ZTtcblxuICAvKipcbiAgICogVGltZSB0byB3YWl0IGJldHdlZW4gZmV0Y2hpbmcgbmV3IGFjdGl2aXRpZXMuXG4gICAqXG4gICAqIE11c3Qgd2FpdCBhIHJlYXNvbmFibGUgYW1vdW50IG9mIHRpbWUgYmV0d2VlbiBwb2xscywgc2luY2Ugd2UgbmVlZCB0byBjb25zaWRlciBDbG91ZEZvcm1hdGlvbiBBUEkgbGltaXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDJfMDAwXG4gICAqL1xuICByZWFkb25seSBwb2xsaW5nSW50ZXJ2YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHJlc291cmNlcywgdXNlZCB0byBsb29rIHVwIHRoZSBib290c3RyYXAgdG9vbGtpdCB2ZXJzaW9uIHdoZW5cbiAgICogZGlhZ25vc2luZyBHdWFyZCBIb29rIGFubm90YXRpb24gZmV0Y2ggZmFpbHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQm9vdHN0cmFwIHZlcnNpb24gaXMgbm90IHJlcG9ydGVkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqL1xuICByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGRlcGxveW1lbnQgaXMgYW4gdXBkYXRlIHRvIGFuIGV4aXN0aW5nIHN0YWNrIChhcyBvcHBvc2VkIHRvIGEgY3JlYXRpb24pLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdGFja1VwZGF0ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRHJpdmVzIHRoZSBtb25pdG9yaW5nIG9mIGEgU3RhY2sgZGVwbG95bWVudFxuICpcbiAqIGBgYFxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICog4pSCICAgICAgICAgU3RhY2sgICAgICAgICDilIIgcG9sbCgpIOKUgiAgICAgICAgIFN0YWNrICAgICAgICAg4pSCICBwcm9jZXNzKGV2KSDilIIgICAgICAgICBTdGFjayAgICAgICAgIOKUglxuICog4pSCICAgICAgRXZlbnRQb2xsZXIgICAgICDilILil4DilIDilIDilIDilIDilIDilIDilIDilIIgICAgQWN0aXZpdHlNb25pdG9yICAgIOKUguKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKWtuKUgiAgICBQcm9ncmVzc01vbml0b3IgICAg4pSCXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrQWN0aXZpdHlNb25pdG9yIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsZXIgdXNlZCB0byByZWFkIHN0YWNrIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb2xsZXI6IFN0YWNrRXZlbnRQb2xsZXI7XG5cbiAgLyoqXG4gICAqIEZldGNoIG5ldyBhY3Rpdml0eSBldmVyeSAxIHNlY29uZFxuICAgKiBQcmludGVycyBjYW4gZGVjaWRlIHRvIHVwZGF0ZSBhIHZpZXcgbGVzcyBmcmVxdWVudGx5IGlmIGRlc2lyZWRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcG9sbGluZ0ludGVydmFsOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtb25pdG9ySWQ/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9ncmVzc01vbml0b3I6IFN0YWNrUHJvZ3Jlc3NNb25pdG9yO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHRpY2sgdGltZXJcbiAgICovXG4gIHByaXZhdGUgdGlja1RpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgLyoqXG4gICAqIFNldCB0byB0aGUgYWN0aXZpdHkgb2YgcmVhZGluZyB0aGUgY3VycmVudCBldmVudHNcbiAgICovXG4gIHByaXZhdGUgcmVhZFByb21pc2U/OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2tEaXNwbGF5TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrOiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2ZuOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52UmVzb3VyY2VzPzogRW52aXJvbm1lbnRSZXNvdXJjZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNTdGFja1VwZGF0ZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgY2ZuLFxuICAgIGlvSGVscGVyLFxuICAgIHN0YWNrLFxuICAgIHN0YWNrQXJuLFxuICAgIHJlc291cmNlc1RvdGFsLFxuICAgIGNoYW5nZVNldENyZWF0aW9uVGltZSxcbiAgICBwb2xsaW5nSW50ZXJ2YWwgPSAyXzAwMCxcbiAgICBlbnZSZXNvdXJjZXMsXG4gICAgaXNTdGFja1VwZGF0ZSA9IGZhbHNlLFxuICB9OiBTdGFja0FjdGl2aXR5TW9uaXRvclByb3BzKSB7XG4gICAgdGhpcy5pb0hlbHBlciA9IGlvSGVscGVyO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLnN0YWNrRGlzcGxheU5hbWUgPSBzdGFja05hbWVGcm9tQXJuKHN0YWNrQXJuKTtcbiAgICB0aGlzLmNmbiA9IGNmbjtcbiAgICB0aGlzLmVudlJlc291cmNlcyA9IGVudlJlc291cmNlcztcbiAgICB0aGlzLmlzU3RhY2tVcGRhdGUgPSBpc1N0YWNrVXBkYXRlO1xuXG4gICAgdGhpcy5wcm9ncmVzc01vbml0b3IgPSBuZXcgU3RhY2tQcm9ncmVzc01vbml0b3IocmVzb3VyY2VzVG90YWwpO1xuICAgIHRoaXMucG9sbGluZ0ludGVydmFsID0gcG9sbGluZ0ludGVydmFsO1xuICAgIHRoaXMucG9sbGVyID0gbmV3IFN0YWNrRXZlbnRQb2xsZXIoY2ZuLCB7XG4gICAgICBzdGFja0FybixcbiAgICAgIGluaXRpYWxQb2xsUmFuZ2U6IFBvbGxSYW5nZS5zaW5jZVRpbWVzdGFtcChjaGFuZ2VTZXRDcmVhdGlvblRpbWU/LmdldFRpbWUoKSA/PyBEYXRlLm5vdygpKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgZXJyb3JzIHRoYXQgd2VyZSBkaXNjb3ZlcmVkIGR1cmluZyBtb25pdG9yaW5nIG9mIHRoaXMgc3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXQgZXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLnBvbGxlci5lcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgcmVjZWl2ZWQgREVMRVRFX0ZBSUxFRCBkdXJpbmcgdGhlIHN0YWNrIHVwZGF0ZS5cbiAgICogQ2xvdWRGb3JtYXRpb24gc2tpcHMgdGhlc2UgYW5kIGNvbXBsZXRlcyB0aGUgdXBkYXRlIGFueXdheS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVsZXRlRmFpbHVyZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9sbGVyLmRlbGV0ZUZhaWx1cmVzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0KCkge1xuICAgIHRoaXMubW9uaXRvcklkID0gcmFuZG9tVVVJRCgpO1xuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAxLm1zZyhgRGVwbG95aW5nICR7dGhpcy5zdGFja0Rpc3BsYXlOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IHRoaXMubW9uaXRvcklkLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2tEaXNwbGF5TmFtZSxcbiAgICAgIHJlc291cmNlc1RvdGFsOiB0aGlzLnByb2dyZXNzTW9uaXRvci50b3RhbCxcbiAgICAgIGlzU3RhY2tVcGRhdGU6IHRoaXMuaXNTdGFja1VwZGF0ZSxcbiAgICB9KSk7XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RvcCgpIHtcbiAgICBjb25zdCBvbGRNb25pdG9ySWQgPSB0aGlzLm1vbml0b3JJZCE7XG4gICAgdGhpcy5tb25pdG9ySWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMudGlja1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aWNrVGltZXIpO1xuICAgIH1cblxuICAgIC8vIERvIGEgZmluYWwgcG9sbCBmb3IgYWxsIGV2ZW50cy4gVGhpcyBpcyB0byBoYW5kbGUgdGhlIHNpdHVhdGlvbiB3aGVyZSBEZXNjcmliZVN0YWNrU3RhdHVzXG4gICAgLy8gYWxyZWFkeSByZXR1cm5lZCBhbiBlcnJvciwgYnV0IHRoZSBtb25pdG9yIGhhc24ndCBzZWVuIGFsbCB0aGUgZXZlbnRzIHlldCBhbmQgd2UnZCBlbmRcbiAgICAvLyB1cCBub3QgcHJpbnRpbmcgdGhlIGZhaWx1cmUgcmVhc29uIHRvIHVzZXJzLlxuICAgIGF3YWl0IHRoaXMuZmluYWxQb2xsVG9FbmQob2xkTW9uaXRvcklkKTtcblxuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAzLm1zZyhgQ29tcGxldGVkICR7dGhpcy5zdGFja0Rpc3BsYXlOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IG9sZE1vbml0b3JJZCxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrRGlzcGxheU5hbWUsXG4gICAgICByZXNvdXJjZXNUb3RhbDogdGhpcy5wcm9ncmVzc01vbml0b3IudG90YWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZU5leHRUaWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRpY2soKSwgdGhpcy5wb2xsaW5nSW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0aWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHRoaXMucmVhZE5ld0V2ZW50cyh0aGlzLm1vbml0b3JJZCk7XG4gICAgICBhd2FpdCB0aGlzLnJlYWRQcm9taXNlO1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHVuZGVmaW5lZDtcblxuICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBiZWVuIHN0b3AoKXBlZCB3aGlsZSB0aGUgbmV0d29yayBjYWxsIHdhcyBpbiBwcm9ncmVzcy5cbiAgICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0U1NTAwLm1zZyhcbiAgICAgICAgdXRpbC5mb3JtYXQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIG1vbml0b3Jpbmcgc3RhY2s6ICVzJywgZSksXG4gICAgICAgIHsgZXJyb3I6IGUgYXMgYW55IH0sXG4gICAgICApKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRNZXRhZGF0YUZvcihsb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5zdGFjay5tZXRhZGF0YTtcbiAgICBpZiAoIWxvZ2ljYWxJZCB8fCAhbWV0YWRhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZU1ldGFkYXRhKHRoaXMuc3RhY2ssIGxvZ2ljYWxJZCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlLCBjb2xsYXBzZXMgYWxsIGludGVybmFsIHdoaXRlc3BhY2VcbiAgICogKGluY2x1ZGluZyBuZXdsaW5lcykgdG8gYSBzaW5nbGUgc3BhY2UsIGFuZCB0cnVuY2F0ZXMgdG8gYG1heENoYXJzYFxuICAgKiBjaGFyYWN0ZXJzLCBhcHBlbmRpbmcgYFsuLi50cnVuY2F0ZWRdYCB3aGVuIHRoZSBvcmlnaW5hbCB3YXMgbG9uZ2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgbWF4Q2hhcnM6IG51bWJlciA9IDQwMCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG1lc3NhZ2UudHJpbSgpLnJlcGxhY2UoL1xccysvZywgJyAnKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZC5sZW5ndGggPiBtYXhDaGFyc1xuICAgICAgPyBub3JtYWxpemVkLnN1YnN0cmluZygwLCBtYXhDaGFycykgKyAnWy4uLnRydW5jYXRlZF0nXG4gICAgICA6IG5vcm1hbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBHdWFyZCBIb29rIGFubm90YXRpb24gZGV0YWlscyB2aWEgR2V0SG9va1Jlc3VsdCBBUEkgYW5kIGZvcm1hdHMgdGhlbVxuICAgKiBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgZmV0Y2ggZmFpbHMgb3IgdGhlcmVcbiAgICogYXJlIG5vIGZhaWxlZCBhbm5vdGF0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhob29rSW52b2NhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNmbi5nZXRIb29rUmVzdWx0KHsgSG9va1Jlc3VsdElkOiBob29rSW52b2NhdGlvbklkIH0pO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSByZXN1bHQuQW5ub3RhdGlvbnMgPz8gW107XG4gICAgICBjb25zdCBmYWlsZWRBbm5vdGF0aW9ucyA9IGFubm90YXRpb25zLmZpbHRlcigoYSkgPT4gYS5TdGF0dXMgPT09ICdGQUlMRUQnKTtcbiAgICAgIGlmIChmYWlsZWRBbm5vdGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydOb25Db21wbGlhbnQgUnVsZXM6JywgJyddO1xuICAgICAgZm9yIChjb25zdCBhbm5vdGF0aW9uIG9mIGZhaWxlZEFubm90YXRpb25zKSB7XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLkFubm90YXRpb25OYW1lKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgWyR7YW5ub3RhdGlvbi5Bbm5vdGF0aW9uTmFtZX1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFubm90YXRpb24uU3RhdHVzTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYOKAoiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlN0YXR1c01lc3NhZ2UpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFJlbWVkaWF0aW9uOiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykudHJpbUVuZCgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuXG4gICAgICBjb25zdCBpc1Blcm1pc3Npb25zRXJyb3IgPVxuICAgICAgICBlLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nIHx8XG4gICAgICAgICh0eXBlb2YgZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvck1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybTogY2xvdWRmb3JtYXRpb246Z2V0aG9va3Jlc3VsdCcpKTtcblxuICAgICAgaWYgKGlzUGVybWlzc2lvbnNFcnJvciAmJiB0aGlzLmVudlJlc291cmNlcykge1xuICAgICAgICBsZXQgY3VycmVudFZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IChhd2FpdCB0aGlzLmVudlJlc291cmNlcy5sb29rdXBUb29sa2l0KCkpLnZlcnNpb247XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMgbG9va2luZyB1cCB0aGUgYm9vdHN0cmFwIHZlcnNpb25cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdChcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggcmVzdWx0IGRldGFpbHMgZm9yIEhvb2sgaW52b2NhdGlvbiAke2hvb2tJbnZvY2F0aW9uSWR9OiAke2Vycm9yTWVzc2FnZX0uIE1ha2Ugc3VyZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBjYWxsIHRoZSBHZXRIb29rUmVzdWx0IEFQSSwgb3IgcmUtYm9vdHN0cmFwIHlvdXIgZW52aXJvbm1lbnQgYnkgcnVubmluZyAnY2RrIGJvb3RzdHJhcCcgdG8gdXBkYXRlIHRoZSBCb290c3RyYXAgQ0RLIFRvb2xraXQgc3RhY2suXG4gICAgICAgICAgICAnQm9vdHN0cmFwIHRvb2xraXQgc3RhY2sgdmVyc2lvbiAzMSBvciBsYXRlciBpcyBuZWVkZWQ7IGN1cnJlbnQgdmVyc2lvbjogJHtjdXJyZW50VmVyc2lvbiA/PyAndW5rbm93bid9LmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdCgnRmFpbGVkIHRvIGZldGNoIEd1YXJkIEhvb2sgZGV0YWlscyBmb3IgaW52b2NhdGlvbiAlczogJXMnLCBob29rSW52b2NhdGlvbklkLCBlcnJvck1lc3NhZ2UpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhbGwgbmV3IGV2ZW50cyBmcm9tIHRoZSBzdGFjayBoaXN0b3J5XG4gICAqXG4gICAqIFRoZSBldmVudHMgYXJlIHJldHVybmVkIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgYnkgdGhlIHVuZGVybHlpbmcgcG9sbGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWFkTmV3RXZlbnRzKG1vbml0b3JJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcG9sbEV2ZW50cyA9IGF3YWl0IHRoaXMucG9sbGVyLnBvbGwoKTtcblxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VFdmVudCBvZiBwb2xsRXZlbnRzKSB7XG4gICAgICB0aGlzLnByb2dyZXNzTW9uaXRvci5wcm9jZXNzKHJlc291cmNlRXZlbnQpO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgZmFpbGVkIEd1YXJkIEhvb2sgZXZlbnQgd2l0aCBhbiBpbnZvY2F0aW9uIElELCBmZXRjaCBhbm5vdGF0aW9uc1xuICAgICAgaWYgKHJlc291cmNlRXZlbnQuZXZlbnQuSG9va0ludm9jYXRpb25JZCkge1xuICAgICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IGF3YWl0IHRoaXMuZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhyZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tJbnZvY2F0aW9uSWQpO1xuICAgICAgICBpZiAoYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICByZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tTdGF0dXNSZWFzb24gPSBhbm5vdGF0aW9ucztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSA9IHtcbiAgICAgICAgZGVwbG95bWVudDogbW9uaXRvcklkLFxuICAgICAgICBldmVudDogcmVzb3VyY2VFdmVudC5ldmVudCxcbiAgICAgICAgbWV0YWRhdGE6IHRoaXMuZmluZE1ldGFkYXRhRm9yKHJlc291cmNlRXZlbnQuZXZlbnQuTG9naWNhbFJlc291cmNlSWQpLFxuICAgICAgICBwcm9ncmVzczogdGhpcy5wcm9ncmVzc01vbml0b3IucHJvZ3Jlc3MsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMi5tc2codGhpcy5mb3JtYXRBY3Rpdml0eShhY3Rpdml0eSwgdHJ1ZSksIGFjdGl2aXR5KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBmaW5hbCBwb2xsIHRvIHRoZSBlbmQgYW5kIGZsdXNoIG91dCBhbGwgZXZlbnRzIHRvIHRoZSBwcmludGVyXG4gICAqXG4gICAqIEZpbmlzaCBhbnkgcG9sbCBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIHRoZW4gZG8gYSBmaW5hbCBvbmUgdW50aWwgd2UndmVcbiAgICogcmVhY2hlZCB0aGUgbGFzdCBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmaW5hbFBvbGxUb0VuZChtb25pdG9ySWQ6IHN0cmluZykge1xuICAgIC8vIElmIHdlIHdlcmUgZG9pbmcgYSBwb2xsLCBmaW5pc2ggdGhhdCBmaXJzdC4gSXQgd2FzIHN0YXJ0ZWQgYmVmb3JlXG4gICAgLy8gdGhlIG1vbWVudCB3ZSB3ZXJlIHN1cmUgd2Ugd2VyZW4ndCBnb2luZyB0byBnZXQgYW55IG5ldyBldmVudHMgYW55bW9yZVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gZG8gYSBuZXcgb25lIGFueXdheS4gTmVlZCB0byB3YWl0IGZvciB0aGlzIG9uZSB0aG91Z2hcbiAgICAvLyBiZWNhdXNlIG91ciBzdGF0ZSBpcyBzaW5nbGUtdGhyZWFkZWQuXG4gICAgaWYgKHRoaXMucmVhZFByb21pc2UpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVhZFByb21pc2U7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5yZWFkTmV3RXZlbnRzKG1vbml0b3JJZCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIHN0YWNrIGFjdGl2aXR5IGludG8gYSBiYXNpYyBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0QWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHksIHByb2dyZXNzOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBldmVudCA9IGFjdGl2aXR5LmV2ZW50O1xuICAgIGNvbnN0IG1ldGFkYXRhID0gYWN0aXZpdHkubWV0YWRhdGE7XG5cbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBtZXRhZGF0YSA/IG1ldGFkYXRhLmNvbnN0cnVjdFBhdGggOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCB8fCAnJztcbiAgICBjb25zdCBsb2dpY2FsSWQgPSByZXNvdXJjZU5hbWUgIT09IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8gYCgke2V2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkfSkgYCA6ICcnO1xuXG4gICAgcmV0dXJuIHV0aWwuZm9ybWF0KFxuICAgICAgJyVzIHwgJXMlcyB8ICVzIHwgJXMgfCAlcyAlcyVzJXMnLFxuICAgICAgZXZlbnQuU3RhY2tOYW1lLFxuICAgICAgcHJvZ3Jlc3MgIT09IGZhbHNlID8gYCR7YWN0aXZpdHkucHJvZ3Jlc3MuZm9ybWF0dGVkfSB8IGAgOiAnJyxcbiAgICAgIG5ldyBEYXRlKGV2ZW50LlRpbWVzdGFtcCEpLnRvTG9jYWxlVGltZVN0cmluZygpLFxuICAgICAgZXZlbnQuUmVzb3VyY2VTdGF0dXMgfHwgJycsXG4gICAgICBldmVudC5SZXNvdXJjZVR5cGUsXG4gICAgICByZXNvdXJjZU5hbWUsXG4gICAgICBsb2dpY2FsSWQsXG4gICAgICBldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA/IGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uIDogJycsXG4gICAgICBtZXRhZGF0YT8uZW50cnkudHJhY2UgPyBgXFxuXFx0JHttZXRhZGF0YS5lbnRyeS50cmFjZS5qb2luKCdcXG5cXHRcXFxcXyAnKX1gIDogJycsXG4gICAgKTtcbiAgfVxufVxuXG4iXX0=
|