@pipeline-builder/pipeline-core 3.4.115 → 3.4.117
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/lib/config/app-config.js +1 -1
- package/lib/config/billing-config.js +1 -1
- package/lib/core/network.js +1 -1
- package/lib/core/pipeline-helpers.js +1 -1
- package/lib/core/pipeline-types.d.ts +83 -83
- package/lib/core/role.js +1 -1
- package/lib/core/security-group.js +1 -1
- package/lib/handlers/plugin-lookup-handler.js +1 -1
- package/lib/pipeline/plugin-lookup.js +1 -1
- package/lib/pipeline/source-builder.js +1 -1
- package/lib/template/evaluator.js +1 -1
- package/lib/template/index.js +1 -1
- package/lib/template/metrics.js +1 -1
- package/lib/template/tokenizer.js +1 -1
- package/package.json +11 -10
|
@@ -602,4 +602,4 @@ export function replaceNonAlphanumeric(input, replaceValue = '_') {
|
|
|
602
602
|
export function unwrapSecret(value) {
|
|
603
603
|
return typeof value === 'string' ? value : value.unsafeUnwrap();
|
|
604
604
|
}
|
|
605
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BpcGVsaW5lLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLFdBQVcsSUFBSSxjQUFjLEVBQUUsZUFBZSxFQUFvQixNQUFNLDJCQUEyQixDQUFDO0FBQ3RKLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9JLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQXFCLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RSxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUU3Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBRyxPQUFxQztJQUM1RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFpQixDQUFDO0FBQ3ZELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsUUFBc0I7SUFDdkQsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztJQUN2QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN6QyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sYUFBYSxHQUFHLDhDQUE4QyxDQUFDO0FBRXJFLFNBQVMsUUFBUSxDQUFDLE1BQWMsRUFBRSxRQUFzQixFQUFFLFNBQWtDO0lBQzFGLE9BQU87UUFDTCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDckIsR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7UUFDL0IsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7S0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0g7OztzREFHc0Q7QUFDdEQsTUFBTSxvQkFBb0IsR0FBRyxzQ0FBc0MsQ0FBQztBQUVwRTtnRUFDZ0U7QUFDaEUsTUFBTSxVQUFVLHNCQUFzQixDQUFDLFFBQWlCLEVBQUUsUUFBcUM7SUFDN0YsSUFBSSxRQUFRLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQ25FLE9BQU8sUUFBUSxJQUFJLE1BQU0sQ0FBQztBQUM1QixDQUFDO0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxRQUFrQixFQUFFLFFBQXFDO0lBQy9GLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxLQUFLLE1BQU07UUFBRSxPQUFPLFFBQVEsQ0FBQztJQUV0RCxJQUFJLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMxQixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxPQUFPO1FBQ0wsUUFBUTtRQUNSLGNBQWM7UUFDZCxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcseUVBQXlFLENBQUM7UUFDdkcsUUFBUTtRQUNSLCtGQUErRjtLQUNoRyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxhQUFhLENBQUMsTUFBYyxFQUFFLE1BQTBCLEVBQUUsZUFBNEM7SUFDN0csTUFBTSxZQUFZLEdBQUc7UUFDbkIsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25ELEdBQUcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztLQUNoQyxDQUFDO0lBRUYsT0FBTztRQUNMLGVBQWUsRUFBRTtZQUNmLGFBQWE7WUFDYixHQUFHLENBQUMsTUFBTSxFQUFFLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztZQUNyQyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsSUFBSSxFQUFFLENBQUM7U0FDdkM7UUFDRCxRQUFRLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7S0FDNUYsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsR0FBMkI7SUFDckQsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDOUQsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQztBQUVsRCxTQUFTLGVBQWUsQ0FDdEIsT0FBbUQsRUFDbkQsS0FBYTtJQUViLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUN2QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsVUFBVSx1REFBdUQsQ0FBQyxDQUFDO1FBQ3JHLENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSTtZQUNKO2dCQUNFLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsNEJBQTRCLENBQUMsZUFBZTthQUNuRDtTQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBRWpHLDJFQUEyRTtBQUMzRSxNQUFNLHlCQUF5QixHQUFHLENBQUMsTUFBTSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRTNFOzs7O0dBSUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxPQUFlO0lBQ25DLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7SUFDOUQsQ0FBQztJQUNELGtGQUFrRjtJQUNsRixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsaUZBQWlGO0FBQ2pGLFNBQVMscUJBQXFCLENBQUMsT0FBZTtJQUM1QyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsMEJBQTBCO0lBQ3JELElBQUksc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQy9DLE9BQU8seUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFTLHlCQUF5QixDQUNoQyxRQUFnRjtJQUVoRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3RELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEtBQUssTUFBTSxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEYsTUFBTSxJQUFJLEtBQUssQ0FDYixtQ0FBbUMsSUFBSSxrREFBa0Q7WUFDekYsbUZBQW1GO1lBQ25GLDRFQUE0RTtZQUM1RSwwRkFBMEY7WUFDMUYsa0VBQWtFO1lBQ2xFLG9FQUFvRSxDQUNyRSxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2RSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQTRCLEVBQUUsTUFBYyxFQUFFLEtBQWM7SUFDN0YsdUVBQXVFO0lBQ3ZFLDhDQUE4QztJQUM5QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssZUFBZTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRTNELHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsR0FBRyxDQUFDLElBQUksQ0FDTixXQUFXLE1BQU0sQ0FBQyxJQUFJLG1CQUFtQixNQUFNLENBQUMsU0FBUyw4QkFBOEI7WUFDdkYsNkZBQTZGLENBQzlGLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLENBQUM7UUFDSCxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1Asc0VBQXNFO1FBQ3RFLEdBQUcsQ0FBQyxJQUFJLENBQ04sV0FBVyxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLG9EQUFvRDtZQUM1RiwwREFBMEQ7WUFDMUQsbUZBQW1GLENBQ3BGLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNwQixHQUFHLENBQUMsSUFBSSxDQUNOLFdBQVcsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTywrQ0FBK0M7WUFDdkYsMERBQTBEO1lBQzFELHFGQUFxRixDQUN0RixDQUFDO1FBQ0YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxNQUFNLENBQUMsSUFBSSx5REFBeUQsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsR0FBRyxDQUFDLElBQUksQ0FDTixXQUFXLE1BQU0sQ0FBQyxJQUFJLG1EQUFtRDtZQUN6RSxvRUFBb0UsQ0FDckUsQ0FBQztRQUNGLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsbUVBQW1FO0lBQ25FLHdFQUF3RTtJQUN4RSwyRUFBMkU7SUFDM0Usc0VBQXNFO0lBQ3RFLHNFQUFzRTtJQUN0RSxzRUFBc0U7SUFDdEUseUVBQXlFO0lBQ3pFLHNEQUFzRDtJQUN0RCxxRUFBcUU7SUFDckUsaUVBQWlFO0lBQ2pFLDBFQUEwRTtJQUMxRSxxRUFBcUU7SUFDckUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsdUVBQXVFO0lBQ3ZFLG1FQUFtRTtJQUNuRSx1RUFBdUU7SUFDdkUsaURBQWlEO0lBQ2pELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BGLE1BQU0sUUFBUSxHQUFHLEdBQUcsUUFBUSxHQUFHLFFBQVEsSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFeEYsb0VBQW9FO0lBQ3BFLGtFQUFrRTtJQUNsRSxzREFBc0Q7SUFDdEQsMEVBQTBFO0lBQzFFLDBFQUEwRTtJQUMxRSxxQ0FBcUM7SUFDckMsRUFBRTtJQUNGLHNFQUFzRTtJQUN0RSx5Q0FBeUM7SUFDekMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRCx3RUFBd0U7SUFDeEUsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3hGLE1BQU0saUJBQWlCLEdBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQXdCO1dBQ3ZGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFbkUsT0FBTyxlQUFlLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFO1FBQ2xELHlCQUF5QixFQUFFLGlCQUFpQjtLQUM3QyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxZQUFZLEdBQUcsNEJBQTRCLENBQUM7QUFFbEQ7OztHQUdHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxHQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBRWpHOzs7OztHQUtHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxPQUFlO0lBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDNUQsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLDRCQUE0QixDQUFDLENBQUMsT0FBTyxlQUFlLENBQUMsWUFBWSxDQUFDO1FBQ3ZFLEtBQUssNEJBQTRCLENBQUMsQ0FBQyxPQUFPLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFDdkUsbUVBQW1FO1FBQ25FLHFEQUFxRDtRQUNyRCxPQUFPLENBQUMsQ0FBQyxPQUFPLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFpQixFQUFFLEtBQWM7SUFDeEUsSUFBSSxVQUFrQixDQUFDO0lBQ3ZCLElBQUksQ0FBQztRQUNILFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7SUFDeEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLFVBQVUsR0FBRyxZQUFZLENBQUM7SUFDNUIsQ0FBQztJQUVELGlFQUFpRTtJQUNqRSx1REFBdUQ7SUFDdkQsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsSUFBSSxPQUFPO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFFNUIscUVBQXFFO0lBQ3JFLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCwrREFBK0Q7SUFDL0Qsa0VBQWtFO0lBQ2xFLGtFQUFrRTtJQUNsRSxzRUFBc0U7SUFDdEUsSUFBSSxRQUFRLENBQUM7SUFDYixJQUFJLENBQUM7UUFDSCxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsR0FBRyxDQUFDLElBQUksQ0FDTiw0QkFBNEIsVUFBVSxtREFBbUQ7WUFDekYsbUJBQW1CLFlBQVksa0RBQWtELENBQ2xGLENBQUM7UUFDRixPQUFPLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDcEIsR0FBRyxDQUFDLElBQUksQ0FDTiw0QkFBNEIsVUFBVSxxREFBcUQ7WUFDM0YsbUJBQW1CLFlBQVksR0FBRyxDQUNuQyxDQUFDO1FBQ0YsT0FBTyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FDTiw0QkFBNEIsVUFBVSx3Q0FBd0M7WUFDOUUsbUJBQW1CLFlBQVksaUNBQWlDLENBQ2pFLENBQUM7UUFDRixPQUFPLGtCQUFrQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELDBFQUEwRTtJQUMxRSxnRkFBZ0Y7SUFDaEYsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsTUFBTSxRQUFRLEdBQUcsR0FBRyxRQUFRLEdBQUcsUUFBUSxZQUFZLFVBQVUsRUFBRSxDQUFDO0lBRWhFLHlFQUF5RTtJQUN6RSx5RUFBeUU7SUFDekUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvRCxNQUFNLGlCQUFpQixHQUFHLGlCQUFpQixVQUFVLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDeEYsTUFBTSxpQkFBaUIsR0FBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBd0I7V0FDdkYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVuRSxPQUFPLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7UUFDbEQseUJBQXlCLEVBQUUsaUJBQWlCO0tBQzdDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUE2QjtJQUMvRCxNQUFNLEVBQ0osRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFDbkMsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFDbEUsR0FBRyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUMxRCxlQUFlLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsR0FDMUUsR0FBRyxPQUFPLENBQUM7SUFFWixnRkFBZ0Y7SUFDaEYsNkVBQTZFO0lBQzdFLHFEQUFxRDtJQUNyRCxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBRXJFLDRFQUE0RTtJQUM1RSwyRUFBMkU7SUFDM0UsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSxzRUFBc0U7SUFDdEUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU1RCx5RkFBeUY7SUFDekYsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzFELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsT0FBTyxFQUFFLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFFdEUsNERBQTREO0lBQzVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0RSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekMsR0FBRyxDQUFDLElBQUksQ0FDTixXQUFXLE1BQU0sQ0FBQyxJQUFJLGNBQWMsZUFBZSxDQUFDLE1BQU0saURBQWlEO1lBQzNHLGlDQUFpQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMvRSxDQUFDO0lBQ0osQ0FBQztJQUVELDJFQUEyRTtJQUMzRSw4RUFBOEU7SUFDOUUsMkVBQTJFO0lBQzNFLG1FQUFtRTtJQUNuRSxnRkFBZ0Y7SUFDaEYsZ0ZBQWdGO0lBQ2hGLCtFQUErRTtJQUMvRSxzRUFBc0U7SUFDdEUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQztRQUNyRCxDQUFDLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVQLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRWhELGlGQUFpRjtJQUNqRiw0REFBNEQ7SUFDNUQsTUFBTSxTQUFTLEdBQTJCO1FBQ3hDLHFCQUFxQixFQUFFLHFDQUFxQztLQUM3RCxDQUFDO0lBRUYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hELE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQyxhQUFhLFNBQVMsZUFBZSxTQUFTLFlBQVksQ0FBQztRQUM5RCxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRVAsTUFBTSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFO1FBQzFELGtCQUFrQixFQUFFLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLG1CQUFtQjtRQUNuQixXQUFXO1FBQ1gsWUFBWTtLQUNiLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFFcEIsTUFBTSxZQUFZLEdBQUcsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBRTFELDREQUE0RDtJQUM1RCx3RUFBd0U7SUFDeEUsb0VBQW9FO0lBQ3BFLHVFQUF1RTtJQUN2RSxxRUFBcUU7SUFDckUsK0RBQStEO0lBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVsRSxvQkFBb0I7SUFDcEIsdUVBQXVFO0lBQ3ZFLHdFQUF3RTtJQUN4RSxzRUFBc0U7SUFDdEUsRUFBRTtJQUNGLHFFQUFxRTtJQUNyRSx3RUFBd0U7SUFDeEUsd0VBQXdFO0lBQ3hFLDBEQUEwRDtJQUMxRCxFQUFFO0lBQ0YsdUVBQXVFO0lBQ3ZFLCtEQUErRDtJQUMvRCwyQkFBMkI7SUFDM0IsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDdkIsR0FBRyxZQUFZO2dCQUNmLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFO2dCQUM3QixHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQzthQUNoQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsR0FBRyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsTUFBTSxDQUFDLElBQUksMEZBQTBGLENBQUMsQ0FBQztRQUM3SixnREFBZ0Q7SUFDbEQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FDaEMsTUFBTSxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsa0JBQWtCLElBQUksT0FBTyxDQUM1RCxDQUFDO0lBRUYsb0ZBQW9GO0lBQ3BGLE1BQU0sZUFBZSxHQUFHLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRSxNQUFNLFlBQVksR0FBRyxlQUFlO1FBQ2xDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDO1FBQzFELENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFUCxpRUFBaUU7SUFDakUscURBQXFEO0lBQ3JELHNGQUFzRjtJQUN0Riw2RUFBNkU7SUFDN0UsNEZBQTRGO0lBQzVGLGdGQUFnRjtJQUNoRixzRkFBc0Y7SUFDdEYsNEZBQTRGO0lBQzVGLGdGQUFnRjtJQUNoRixzRkFBc0Y7SUFDdEYsa0ZBQWtGO0lBQ2xGLE1BQU0sZUFBZSxHQUFHLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELE1BQU0sWUFBWSxHQUFHLE9BQU8sZUFBZSxDQUFDLFdBQVcsS0FBSyxRQUFRO1FBQ2xFLENBQUMsQ0FBQyxFQUFFLEdBQUcsZUFBZSxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2xGLENBQUMsQ0FBQyxlQUFlLENBQUM7SUFFcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBRSxFQUFFO1FBQ2pDLEdBQUcsWUFBWTtRQUNmLEdBQUcsWUFBWTtRQUNmLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdEQsR0FBRyxFQUFFLFNBQVM7UUFDZCxzQkFBc0IsRUFBRSxNQUFNLENBQUMsc0JBQXNCLElBQUksU0FBUztRQUNsRSx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLDZFQUE2RTtRQUM3RSxzRUFBc0U7UUFDdEUsNEVBQTRFO1FBQzVFLDhEQUE4RDtRQUM5RCxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDckUsZ0JBQWdCLEVBQUU7WUFDaEIsV0FBVztZQUNYLFVBQVUsRUFBRSxnQkFBZ0IsSUFBSSx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1lBQ3RFLG9CQUFvQixFQUFFO2dCQUNwQixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztnQkFDMUIsR0FBRyxhQUFhO2FBQ2pCO1lBQ0QsR0FBRyxZQUFZO1NBQ2hCO1FBQ0QsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUM7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsa0VBQWtFO0lBQ2xFLElBQUksTUFBTSxDQUFDLHNCQUFzQixJQUFJLGVBQWUsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBZ0I7WUFDL0IsU0FBUztZQUNULFVBQVUsRUFBRSxVQUFVLElBQUksR0FBRyxTQUFTLFFBQVE7WUFDOUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ3ZCLFdBQVcsRUFBRSxXQUFXLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxRQUFRO1lBQ2xELGVBQWUsRUFBRSxNQUFNLENBQUMsc0JBQXNCO1NBQy9DLENBQUM7UUFDRixlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQWlDLE9BQU87SUFDckUsNkNBQTZDO0lBQzdDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQscUZBQXFGO0lBQ3JGLHVGQUF1RjtJQUN2RixJQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEUsT0FBTyxLQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFpQixDQUFDO0lBRXRELE1BQU0sT0FBTyxHQUF3QztRQUNuRCxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxjQUFjLENBQUMsS0FBSztRQUN6QyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTTtRQUMzQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxjQUFjLENBQUMsS0FBSztRQUN6QyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxjQUFjLENBQUMsUUFBUTtLQUNoRCxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLEdBQUcsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEtBQUssMEJBQTBCLENBQUMsQ0FBQztRQUNuRSxPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsZUFBdUIsR0FBRztJQUM5RSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUEyQjtJQUN0RCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDbEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIFNZU1RFTV9PUkdfSUQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGEnO1xuaW1wb3J0IHsgRHVyYXRpb24sIFNlY3JldFZhbHVlLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUsIEJ1aWxkU3BlYywgQ29tcHV0ZVR5cGUgYXMgQ0RLQ29tcHV0ZVR5cGUsIExpbnV4QnVpbGRJbWFnZSwgdHlwZSBJQnVpbGRJbWFnZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlYnVpbGQnO1xuaW1wb3J0IHsgU2VjcmV0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCB7IENvZGVCdWlsZFN0ZXAsIE1hbnVhbEFwcHJvdmFsU3RlcCwgU2hlbGxTdGVwIH0gZnJvbSAnYXdzLWNkay1saWIvcGlwZWxpbmVzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IEFydGlmYWN0S2V5IH0gZnJvbSAnLi9hcnRpZmFjdC1tYW5hZ2VyLmpzJztcbmltcG9ydCB7IG1ldGFkYXRhRm9yU2hlbGxTdGVwLCBtZXRhZGF0YUZvckNvZGVCdWlsZFN0ZXAsIG1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudCwgbmV0d29ya0NvbmZpZ0Zyb21NZXRhZGF0YSB9IGZyb20gJy4vbWV0YWRhdGEtYnVpbGRlci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlTmV0d29yayB9IGZyb20gJy4vbmV0d29yay5qcyc7XG5pbXBvcnQgeyBQbHVnaW5UeXBlLCBDb21wdXRlVHlwZSwgdHlwZSBNZXRhRGF0YVR5cGUsIENES19NRVRBREFUQV9QUkVGSVggfSBmcm9tICcuL3BpcGVsaW5lLXR5cGVzLmpzJztcbmltcG9ydCB7IENvbmZpZywgQ29yZUNvbnN0YW50cyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnLmpzJztcbmltcG9ydCB0eXBlIHsgQ29kZUJ1aWxkU3RlcE9wdGlvbnMsIFN0ZXBDdXN0b21pemF0aW9uIH0gZnJvbSAnLi4vcGlwZWxpbmUvc3RlcC10eXBlcy5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUGx1Z2luVGVtcGxhdGVzIH0gZnJvbSAnLi4vdGVtcGxhdGUvcGx1Z2luLXJlc29sdmVyLmpzJztcblxuY29uc3QgbG9nID0gY3JlYXRlTG9nZ2VyKCdwaXBlbGluZS1oZWxwZXJzJyk7XG5cbi8qKlxuICogTWVyZ2UgbXVsdGlwbGUgbWV0YWRhdGEgb2JqZWN0cyBpbnRvIG9uZS4gTGF0ZXIgc291cmNlcyBvdmVycmlkZSBlYXJsaWVyIG9uZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZSguLi5zb3VyY2VzOiBBcnJheTxQYXJ0aWFsPE1ldGFEYXRhVHlwZT4+KTogTWV0YURhdGFUeXBlIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIC4uLnNvdXJjZXMpIGFzIE1ldGFEYXRhVHlwZTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IG5vbi1uYW1lc3BhY2VkIG1ldGFkYXRhIGtleXMgYXMgZW52aXJvbm1lbnQgdmFyaWFibGUgc3RyaW5ncy5cbiAqIEtleXMgc3RhcnRpbmcgd2l0aCAnYXdzOmNkazonIGFyZSByZXNlcnZlZCBmb3IgQ0RLIGNvbnN0cnVjdCBwcm9wc1xuICogKHByb2Nlc3NlZCBieSBtZXRhZGF0YSBleHRyYWN0aW9uIGZ1bmN0aW9ucykgYW5kIGFyZSBleGNsdWRlZCBoZXJlLlxuICpcbiAqIEFsbCB2YWx1ZXMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzIGZvciBDb2RlQnVpbGQgY29tcGF0aWJpbGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RNZXRhZGF0YUVudihtZXRhZGF0YTogTWV0YURhdGFUeXBlKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhtZXRhZGF0YSkpIHtcbiAgICBpZiAoIWtleS5zdGFydHNXaXRoKENES19NRVRBREFUQV9QUkVGSVgpKSB7XG4gICAgICBlbnZba2V5XSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBlbnY7XG59XG5cbi8qKlxuICogQnVpbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gcGx1Z2luIGNvbmZpZywgbWVyZ2VkIG1ldGFkYXRhLCBhbmQgY3VzdG9tIGVudi5cbiAqXG4gKiBNZXJnZSBvcmRlciAobGFzdCB3aW5zKTpcbiAqICAgMS4gcGx1Z2luLmVudiDigJQgcGx1Z2luIGRlZmF1bHQgZW52IHZhcnMgKGxvd2VzdCBwcmlvcml0eSlcbiAqICAgMi4gbm9uLW5hbWVzcGFjZWQgbWV0YWRhdGEga2V5cyDigJQgZS5nLiBQWVRIT05fVkVSU0lPTiwgV09SS0RJUlxuICogICAzLiBjdXN0b21FbnYg4oCUIHBlci1zdGVwIGN1c3RvbSBlbnYgdmFycyAoaGlnaGVzdCBwcmlvcml0eSlcbiAqL1xuY29uc3QgQk9PVFNUUkFQX0NNRCA9ICdleHBvcnQgV09SS0RJUj0ke1dPUktESVI6LS4vfTsgY2QgJHtXT1JLRElSfSc7XG5cbmZ1bmN0aW9uIGJ1aWxkRW52KHBsdWdpbjogUGx1Z2luLCBtZXRhZGF0YTogTWV0YURhdGFUeXBlLCBjdXN0b21FbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gIHJldHVybiB7XG4gICAgLi4uKHBsdWdpbi5lbnYgPz8ge30pLFxuICAgIC4uLmV4dHJhY3RNZXRhZGF0YUVudihtZXRhZGF0YSksXG4gICAgLi4uKGN1c3RvbUVudiA/PyB7fSksXG4gIH07XG59XG5cbi8qKlxuICogV3JhcCBidWlsZCBjb21tYW5kcyBiYXNlZCBvbiBmYWlsdXJlIGJlaGF2aW9yLlxuICogLSAnZmFpbCcgKGRlZmF1bHQpOiBObyB3cmFwcGluZyDigJQgY29tbWFuZHMgZmFpbCB0aGUgcGlwZWxpbmUgbmF0dXJhbGx5LlxuICogLSAnd2Fybic6IFJ1biBjb21tYW5kcyB3aXRoIGBzZXQgK2VgLCBjYXB0dXJlIGZhaWx1cmVzLCBsb2cgd2FybmluZ3MsIGNvbnRpbnVlLlxuICogLSAnaWdub3JlJzogQXBwZW5kIGB8fCB0cnVlYCB0byBlYWNoIGNvbW1hbmQg4oCUIGZhaWx1cmVzIGFyZSBzaWxlbnRseSBzd2FsbG93ZWQuXG4gKlxuICogT25seSBhcHBsaWVkIHRvIGJ1aWxkIGNvbW1hbmRzLCBub3QgaW5zdGFsbCBjb21tYW5kcyAoaW5zdGFsbCBmYWlsdXJlcyBzaG91bGQgYWx3YXlzIHN0b3AgdGhlIGJ1aWxkKS5cbiAqL1xuLyoqIFBsdWdpbiBjYXRlZ29yaWVzIHdob3NlIGZhaWx1cmUgbXVzdCBORVZFUiBiZSBtYXNrZWQuIEEgc2Nhbi9zZWN1cml0eSBzdGVwIHRoYXRcbiAqICBleGl0cyBub24temVybyBoYXMgdG8gZmFpbCB0aGUgcGlwZWxpbmUgKHJlcG8gcnVsZTogYSBmYWlsZWQgc2NhbiBpcyByZWQsIG5ldmVyIGFcbiAqICBmYWxzZS1ncmVlbiBgfHwgdHJ1ZWApLCBzbyBzdWNoIGEgcGx1Z2luJ3MgZmFpbHVyZUJlaGF2aW9yIGlzIGZvcmNlZCB0byAnZmFpbCdcbiAqICByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIHBsdWdpbiBvciBzdGVwIGF1dGhvcmVkLiAqL1xuY29uc3QgRkFJTF9GQVNUX0NBVEVHT1JJRVMgPSAvc2NhbnxzZWN1cml0eXxzYXN0fGRhc3R8dnVsbnxzZWNyZXQvaTtcblxuLyoqIFJlc29sdmUgdGhlIGVmZmVjdGl2ZSBmYWlsdXJlQmVoYXZpb3I6IGEgc2Nhbi9zZWN1cml0eS1jYXRlZ29yeSBwbHVnaW4gaXMgcGlubmVkXG4gKiAgdG8gJ2ZhaWwnOyBvdGhlcndpc2UgdGhlIGF1dGhvcmVkIHZhbHVlIChkZWZhdWx0ICdmYWlsJykuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZhaWx1cmVCZWhhdmlvcihjYXRlZ29yeT86IHN0cmluZywgYXV0aG9yZWQ/OiAnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJyk6ICdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnIHtcbiAgaWYgKGNhdGVnb3J5ICYmIEZBSUxfRkFTVF9DQVRFR09SSUVTLnRlc3QoY2F0ZWdvcnkpKSByZXR1cm4gJ2ZhaWwnO1xuICByZXR1cm4gYXV0aG9yZWQgPz8gJ2ZhaWwnO1xufVxuXG5mdW5jdGlvbiB3cmFwQ29tbWFuZHNGb3JGYWlsdXJlQmVoYXZpb3IoY29tbWFuZHM6IHN0cmluZ1tdLCBiZWhhdmlvcj86ICdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnKTogc3RyaW5nW10ge1xuICBpZiAoIWJlaGF2aW9yIHx8IGJlaGF2aW9yID09PSAnZmFpbCcpIHJldHVybiBjb21tYW5kcztcblxuICBpZiAoYmVoYXZpb3IgPT09ICdpZ25vcmUnKSB7XG4gICAgcmV0dXJuIGNvbW1hbmRzLm1hcChjbWQgPT4gYCR7Y21kfSB8fCB0cnVlYCk7XG4gIH1cblxuICAvLyAnd2Fybic6IHJ1biBhbGwgY29tbWFuZHMsIGNhcHR1cmUgZmFpbHVyZXMsIGJ1dCBkb24ndCBzdG9wXG4gIHJldHVybiBbXG4gICAgJ3NldCArZScsXG4gICAgJ19TVEVQX0VYSVQ9MCcsXG4gICAgLi4uY29tbWFuZHMubWFwKGNtZCA9PiBgJHtjbWR9IHx8IHsgZWNobyBcIldBUk5JTkc6IENvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICQ/XCI7IF9TVEVQX0VYSVQ9MTsgfWApLFxuICAgICdzZXQgLWUnLFxuICAgICdpZiBbIFwiJF9TVEVQX0VYSVRcIiAtbmUgMCBdOyB0aGVuIGVjaG8gXCJXQVJOSU5HOiBPbmUgb3IgbW9yZSBjb21tYW5kcyBpbiB0aGlzIHN0ZXAgZmFpbGVkXCI7IGZpJyxcbiAgXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBib290c3RyYXAtcHJlZml4ZWQgaW5zdGFsbCBhbmQgYnVpbGQgY29tbWFuZHMgZnJvbSBwbHVnaW4gY29uZmlnLlxuICogRWFjaCBjb21tYW5kIGxpc3QgaXMgcHJlcGVuZGVkIHdpdGggYSBXT1JLRElSIGJvb3RzdHJhcCB0aGF0IGRlZmF1bHRzIHRvICcuLycuXG4gKiBXaGVuIGN1c3RvbSBjb21tYW5kcyBhcmUgcHJvdmlkZWQsIHRoZXkgYXJlIGluamVjdGVkIGJlZm9yZS9hZnRlciB0aGUgcGx1Z2luJ3MgY29tbWFuZHMuXG4gKiBCdWlsZCBjb21tYW5kcyBhcmUgb3B0aW9uYWxseSB3cmFwcGVkIGJ5IGZhaWx1cmVCZWhhdmlvciBsb2dpYy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRDb21tYW5kcyhwbHVnaW46IFBsdWdpbiwgY3VzdG9tPzogU3RlcEN1c3RvbWl6YXRpb24sIGZhaWx1cmVCZWhhdmlvcj86ICdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnKTogeyBpbnN0YWxsQ29tbWFuZHM6IHN0cmluZ1tdOyBjb21tYW5kczogc3RyaW5nW10gfSB7XG4gIGNvbnN0IHVzZXJDb21tYW5kcyA9IFtcbiAgICAuLi4oY3VzdG9tPy5wcmVDb21tYW5kcyA/PyBbXSksXG4gICAgLi4uKHBsdWdpbi5jb21tYW5kcz8ubGVuZ3RoID8gcGx1Z2luLmNvbW1hbmRzIDogW10pLFxuICAgIC4uLihjdXN0b20/LnBvc3RDb21tYW5kcyA/PyBbXSksXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBpbnN0YWxsQ29tbWFuZHM6IFtcbiAgICAgIEJPT1RTVFJBUF9DTUQsXG4gICAgICAuLi4oY3VzdG9tPy5wcmVJbnN0YWxsQ29tbWFuZHMgPz8gW10pLFxuICAgICAgLi4uKHBsdWdpbi5pbnN0YWxsQ29tbWFuZHMgPz8gW10pLFxuICAgICAgLi4uKGN1c3RvbT8ucG9zdEluc3RhbGxDb21tYW5kcyA/PyBbXSksXG4gICAgXSxcbiAgICBjb21tYW5kczogW0JPT1RTVFJBUF9DTUQsIC4uLndyYXBDb21tYW5kc0ZvckZhaWx1cmVCZWhhdmlvcih1c2VyQ29tbWFuZHMsIGZhaWx1cmVCZWhhdmlvcildLFxuICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBwbGFpbiBlbnYgcmVjb3JkIHRvIENvZGVCdWlsZCdzIGVudmlyb25tZW50VmFyaWFibGVzIGZvcm1hdCAoUExBSU5URVhUKS5cbiAqL1xuZnVuY3Rpb24gdG9Db2RlQnVpbGRFbnZWYXJzKGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFJlY29yZDxzdHJpbmcsIHsgdmFsdWU6IHN0cmluZyB9PiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoZW52KS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtuYW1lLCB7IHZhbHVlIH1dKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBCdWlsZCBTRUNSRVRTX01BTkFHRVItdHlwZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBwbHVnaW4gc2VjcmV0IGRlY2xhcmF0aW9ucy5cbiAqIFVzZXMgbmFtaW5nIGNvbnZlbnRpb246IHBpcGVsaW5lLWJ1aWxkZXIve29yZ0lkfS97c2VjcmV0TmFtZX1cbiAqIEVhY2ggb3JnIG1hbmFnZXMgdGhlc2Ugc2VjcmV0cyBpbiB0aGVpciBvd24gQVdTIFNlY3JldHMgTWFuYWdlci5cbiAqL1xuY29uc3QgVkFMSURfU0VDUkVUX05BTUUgPSAvXlthLXpBLVowLTkvXys9LkAtXSskLztcblxuZnVuY3Rpb24gdG9TZWNyZXRFbnZWYXJzKFxuICBzZWNyZXRzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgcmVxdWlyZWQ6IGJvb2xlYW4gfT4sXG4gIG9yZ0lkOiBzdHJpbmcsXG4pOiBSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBzdHJpbmc7IHR5cGU6IEJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUgfT4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHNlY3JldHMubWFwKCh7IG5hbWUgfSkgPT4ge1xuICAgICAgY29uc3Qgc2VjcmV0UGF0aCA9IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aChvcmdJZCwgbmFtZSk7XG4gICAgICBpZiAoIVZBTElEX1NFQ1JFVF9OQU1FLnRlc3Qoc2VjcmV0UGF0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZWNyZXQgcGF0aCBcIiR7c2VjcmV0UGF0aH1cIiBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgZm9yIEFXUyBTZWNyZXRzIE1hbmFnZXJgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogc2VjcmV0UGF0aCxcbiAgICAgICAgICB0eXBlOiBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUixcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfSksXG4gICk7XG59XG5cbi8qKlxuICogSW4tY2x1c3RlciAvIGxvY2FsIHJlZ2lzdHJ5IGhvc3RuYW1lcyB0aGF0IEFXUyBDb2RlQnVpbGQgKG91dC1vZi1jbHVzdGVyKVxuICogY2Fubm90IHJlc29sdmUuIEJha2luZyBvbmUgb2YgdGhlc2UgaW50byBhIENvZGVCdWlsZCBpbWFnZSBVUkkgZ3VhcmFudGVlcyBhXG4gKiBgQlVJTERfQ09OVEFJTkVSX1VOQUJMRV9UT19QVUxMX0lNQUdFYCBmYWlsdXJlIGF0IGJ1aWxkIHRpbWUsIHNvIHdlIGZhaWwgdGhlXG4gKiBzeW50aCBmYXN0IGluc3RlYWQg4oCUIHdpdGggYSBtZXNzYWdlIHRoYXQgc2F5cyBob3cgdG8gZml4IGl0LlxuICovXG5jb25zdCBVTlJFQUNIQUJMRV9QVUxMX0hPU1RTID0gbmV3IFNldChbJ3JlZ2lzdHJ5JywgJ2xvY2FsaG9zdCcsICcxMjcuMC4wLjEnLCAnOjoxJywgJzAuMC4wLjAnXSk7XG5cbi8qKiBLdWJlcm5ldGVzIC8gbUROUyBzdWZmaXhlcyB0aGF0IG9ubHkgcmVzb2x2ZSBpbnNpZGUgdGhlIGNsdXN0ZXIvTEFOLiAqL1xuY29uc3QgVU5SRUFDSEFCTEVfSE9TVF9TVUZGSVhFUyA9IFsnLnN2YycsICcuc3ZjLmNsdXN0ZXIubG9jYWwnLCAnLmxvY2FsJ107XG5cbi8qKlxuICogUmVkdWNlIGEgcmVnaXN0cnkgaG9zdCB2YWx1ZSB0byBpdHMgYmFyZSBob3N0bmFtZSBmb3IgdGhlIHJlYWNoYWJpbGl0eSBjaGVjazpcbiAqIHN0cmlwIElQdjYgYnJhY2tldHMgYW5kIGFueSBgOnBvcnRgIHN1ZmZpeCAoYW4gb3BlcmF0b3IgbWF5IHB1dCBob3N0K3BvcnQgaW5cbiAqIG9uZSBmaWVsZCksIHNvIGByZWdpc3RyeTo1MDAwYCAvIGBbOjoxXTo1MDAwYCBhcmUgc3RpbGwgcmVjb2duaXplZC5cbiAqL1xuZnVuY3Rpb24gYmFyZUhvc3RuYW1lKHJhd0hvc3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBoID0gcmF3SG9zdC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGguc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgY29uc3QgZW5kID0gaC5pbmRleE9mKCddJyk7XG4gICAgaWYgKGVuZCAhPT0gLTEpIHJldHVybiBoLnNsaWNlKDEsIGVuZCk7IC8vIFs6OjFdOjUwMDAgLT4gOjoxXG4gIH1cbiAgLy8gU3RyaXAgYSB0cmFpbGluZyA6cG9ydCBvbmx5IGZvciBub24tSVB2NiB2YWx1ZXMgKElQdjYgY29udGFpbnMgJzo6JyBvciA+MSAnOicpLlxuICBpZiAoaC5pbmNsdWRlcygnOicpICYmIChoLm1hdGNoKC86L2cpPy5sZW5ndGggPz8gMCkgPT09IDEpIGggPSBoLnNwbGl0KCc6JylbMF07XG4gIHJldHVybiBoO1xufVxuXG4vKiogVHJ1ZSB3aGVuIENvZGVCdWlsZCAob3V0LW9mLWNsdXN0ZXIpIGNvdWxkIG5vdCByZXNvbHZlIHRoaXMgcmVnaXN0cnkgaG9zdC4gKi9cbmZ1bmN0aW9uIGlzVW5yZWFjaGFibGVQdWxsSG9zdChyYXdIb3N0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgaCA9IGJhcmVIb3N0bmFtZShyYXdIb3N0KTtcbiAgaWYgKGggPT09ICcnKSByZXR1cm4gdHJ1ZTsgLy8gbm8gaG9zdCDihpIgbWFsZm9ybWVkIFVSSVxuICBpZiAoVU5SRUFDSEFCTEVfUFVMTF9IT1NUUy5oYXMoaCkpIHJldHVybiB0cnVlO1xuICByZXR1cm4gVU5SRUFDSEFCTEVfSE9TVF9TVUZGSVhFUy5zb21lKChzKSA9PiBoLmVuZHNXaXRoKHMpKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBleHRlcm5hbCAob3V0LW9mLWNsdXN0ZXIpIHJlZ2lzdHJ5IHB1bGwgaG9zdCArIGA6cG9ydGAgc3VmZml4IGZvclxuICogYSBDb2RlQnVpbGQgaW1hZ2UgVVJJLCBhbmQgZmFpbCBmYXN0IGlmIGl0IHJlc29sdmVkIHRvIGFuIGluLWNsdXN0ZXIvbG9jYWxcbiAqIGRlZmF1bHQgdGhhdCBDb2RlQnVpbGQgY2FuJ3QgcmVhY2guXG4gKlxuICogUHJlZmVycyBgcHVsbEhvc3RgL2BwdWxsUG9ydGAgKHRoZSBwdWJsaWMgZW5kcG9pbnQgQ29kZUJ1aWxkIGNhbiByZXNvbHZlKSBhbmRcbiAqIGZhbGxzIGJhY2sgdG8gYGhvc3RgL2Bwb3J0YCBmb3Igc2luZ2xlLWhvc3QgZGVwbG95cy4gcGlwZWxpbmUtbWFuYWdlciBiYWtlc1xuICogdGhlIHJpZ2h0IHB1bGwgaG9zdCBpbnRvIHRoZSBzeW50aCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHBsYXRmb3JtIFVSTCBpdFxuICogZGVwbG95cyBhZ2FpbnN0IChgcHJvcHMucmVnaXN0cnlgKTsgdGhpcyBndWFyZCBjYXRjaGVzIHRoZSBjYXNlIHdoZXJlIG5laXRoZXJcbiAqIHRoYXQgbm9yIGBJTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1RgL2BQTEFURk9STV9CQVNFX1VSTGAgd2FzIHN1cHBsaWVkLlxuICpcbiAqIEVzY2FwZSBoYXRjaDogYEFMTE9XX0lOQ0xVU1RFUl9QVUxMX0hPU1Q9dHJ1ZWAgKGUuZy4gQ29kZUJ1aWxkIGluIGEgVlBDIHdob3NlXG4gKiBwcml2YXRlIEROUyBnZW51aW5lbHkgcmVzb2x2ZXMgdGhlIGluLWNsdXN0ZXIgbmFtZSkuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVFeHRlcm5hbFB1bGxUYXJnZXQoXG4gIHJlZ2lzdHJ5OiB7IGhvc3Q/OiBzdHJpbmc7IHBvcnQ/OiBudW1iZXI7IHB1bGxIb3N0Pzogc3RyaW5nOyBwdWxsUG9ydD86IG51bWJlciB9LFxuKTogeyBob3N0OiBzdHJpbmc7IHBvcnRQYXJ0OiBzdHJpbmcgfSB7XG4gIGNvbnN0IGhvc3QgPSByZWdpc3RyeS5wdWxsSG9zdCB8fCByZWdpc3RyeS5ob3N0IHx8ICcnO1xuICBjb25zdCBwb3J0ID0gcmVnaXN0cnkucHVsbFBvcnQgPz8gcmVnaXN0cnkucG9ydDtcbiAgaWYgKHByb2Nlc3MuZW52LkFMTE9XX0lOQ0xVU1RFUl9QVUxMX0hPU1QgIT09ICd0cnVlJyAmJiBpc1VucmVhY2hhYmxlUHVsbEhvc3QoaG9zdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgUmVnaXN0cnkgcHVsbCBob3N0IHJlc29sdmVkIHRvICcke2hvc3R9Jywgd2hpY2ggQVdTIENvZGVCdWlsZCBjYW5ub3QgcmVhY2gg4oCUIGl0IGlzIHRoZSBgICtcbiAgICAgICdpbi1jbHVzdGVyL2xvY2FsIGRlZmF1bHQuIFRoZSBzeW50aGVzaXplZCBwaXBlbGluZSB3b3VsZCBmYWlsIGF0IGJ1aWxkIHRpbWUgd2l0aCAnICtcbiAgICAgICdCVUlMRF9DT05UQUlORVJfVU5BQkxFX1RPX1BVTExfSU1BR0UuIFNldCB0aGUgcGxhdGZvcm1cXCdzIHB1YmxpYyBob3N0IHZpYSAnICtcbiAgICAgICdJTUFHRV9SRUdJU1RSWV9QVUxMX0hPU1Qgb3IgUExBVEZPUk1fQkFTRV9VUkwgYmVmb3JlIGRlcGxveWluZyDigJQgcGlwZWxpbmUtbWFuYWdlciBiYWtlcyAnICtcbiAgICAgICd0aGlzIGluIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgcGxhdGZvcm0gVVJMIGl0IGRlcGxveXMgYWdhaW5zdC4gJyArXG4gICAgICAnU2V0IEFMTE9XX0lOQ0xVU1RFUl9QVUxMX0hPU1Q9dHJ1ZSB0byBieXBhc3MgKGluLVZQQyBwcml2YXRlIEROUykuJyxcbiAgICApO1xuICB9XG4gIGNvbnN0IHBvcnRQYXJ0ID0gcG9ydCAmJiBwb3J0ICE9PSA4MCAmJiBwb3J0ICE9PSA0NDMgPyBgOiR7cG9ydH1gIDogJyc7XG4gIHJldHVybiB7IGhvc3QsIHBvcnRQYXJ0IH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgQ29kZUJ1aWxkIGltYWdlIHRvIHVzZSBmb3IgYSBwbHVnaW4uXG4gKlxuICogU3RyYXRlZ3k6XG4gKiAgIDEuIElmIHRoZSBwbHVnaW4gc2V0cyBgYXdzOmNkazpjb2RlYnVpbGQ6YnVpbGRlbnZpcm9ubWVudDpidWlsZEltYWdlYFxuICogICAgICBleHBsaWNpdGx5IGluIG1ldGFkYXRhLCB0aGUgbWV0YWRhdGEtYnVpbGRlciBwYXNzdGhyb3VnaCBoYW5kbGVzIGl0XG4gKiAgICAgICh2aWEgYG1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudGApLiBUaGlzIGZ1bmN0aW9uIHJldHVybnNcbiAqICAgICAgYHVuZGVmaW5lZGAgYW5kIHRoZSBtZXRhZGF0YSB3aW5zLlxuICogICAyLiBPdGhlcndpc2UsIGlmIHRoZSBwbHVnaW4gaGFzIGEgYG5hbWVgK2B2ZXJzaW9uYCBBTkQgdGhlIHJlZ2lzdHJ5XG4gKiAgICAgIGNvbmZpZyBpcyBwb3B1bGF0ZWQsIGJ1aWxkIGEgYExpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoKWBcbiAqICAgICAgaW1hZ2UgcG9pbnRpbmcgYXQgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vPG5zPi88bmFtZT46PHZlcnNpb24+YFxuICogICAgICB3aGVyZSBgPG5zPmAgaXMgYHN5c3RlbWAgb3IgYG9yZy08b3JnSWQ+YC4gQ29kZUJ1aWxkIGF1dGhlbnRpY2F0ZXMgYnlcbiAqICAgICAgc2VuZGluZyB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgYXMgQmFzaWMgYXV0aCB0b1xuICogICAgICBgcGlwZWxpbmUtaW1hZ2UtcmVnaXN0cnlgJ3MgYC90b2tlbmAgZW5kcG9pbnQ7IHRoZSBKV1QgaW4gYHBhc3N3b3JkYFxuICogICAgICByZXNvbHZlcyB0byBhIHJlZ2lzdHJ5IHRva2VuIHNjb3BlZCB0byB0aGUgb3JnLlxuICogICAzLiBJZiBgbWV0YWRhdGFfb25seWAsIHJldHVybiBgdW5kZWZpbmVkYCBzbyBDb2RlQnVpbGQgdXNlcyBpdHMgZGVmYXVsdFxuICogICAgICAoYHN0YW5kYXJkOjcuMGApLlxuICpcbiAqIGBzY29wZWAgYW5kIGBvcmdJZGAgYXJlIHJlcXVpcmVkOiB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgaXMgbmFtZWRcbiAqIGBwaXBlbGluZS1idWlsZGVyLzxvcmdJZD4vcGxhdGZvcm1gLCBhbmQgYFNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKClgXG4gKiBuZWVkcyBhIENvbnN0cnVjdCB0byBhbmNob3IgdGhlIGltcG9ydGVkIHNlY3JldCB0by5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQbHVnaW5JbWFnZShzY29wZTogQ29uc3RydWN0IHwgdW5kZWZpbmVkLCBwbHVnaW46IFBsdWdpbiwgb3JnSWQ/OiBzdHJpbmcpOiBJQnVpbGRJbWFnZSB8IHVuZGVmaW5lZCB7XG4gIC8vIGBtZXRhZGF0YV9vbmx5YCBwbHVnaW5zIGxlZ2l0aW1hdGVseSBoYXZlIG5vIGltYWdlIOKAlCB0aGVpciB3b3JrIHJ1bnNcbiAgLy8gaW4gdGhlIGRlZmF1bHQgQ29kZUJ1aWxkIGltYWdlLiBRdWlldCBza2lwLlxuICBpZiAocGx1Z2luLmJ1aWxkVHlwZSA9PT0gJ21ldGFkYXRhX29ubHknKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIC8vIGJ1aWxkX2ltYWdlIC8gcHJlYnVpbHQgcGx1Z2lucyBtdXN0IGhhdmUgbmFtZSArIHZlcnNpb24gKERCIGNvbnN0cmFpbnRcbiAgLy8gbWFrZXMgYm90aCBOT1QgTlVMTCkuIERlZmVuc2l2ZSBjaGVjayBpbiBjYXNlIGEgbWFsZm9ybWVkIHJvdyBzbGlwcyBpbi5cbiAgaWYgKCFwbHVnaW4ubmFtZSB8fCAhcGx1Z2luLnZlcnNpb24pIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGhhcyBidWlsZFR5cGU9JHtwbHVnaW4uYnVpbGRUeXBlfSBidXQgbWlzc2luZyBuYW1lL3ZlcnNpb24g4oCUIGAgK1xuICAgICAgJ0NvZGVCdWlsZCB3aWxsIHJ1biBvbiBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMCBhbmQgd29uXFwndCBoYXZlIHRoZSBwbHVnaW5cXCdzIGJha2VkIHRvb2xzLicsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IHJlZ2lzdHJ5O1xuICB0cnkge1xuICAgIHJlZ2lzdHJ5ID0gQ29uZmlnLmdldCgncmVnaXN0cnknKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQ29uZmlnIG5hbWVzcGFjZSBub3QgbG9hZGVkIChlLmcuLCB1bml0IHRlc3RzIHdpdGhvdXQgZnVsbCBjb25maWcpLlxuICAgIGxvZy53YXJuKFxuICAgICAgYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9OiR7cGx1Z2luLnZlcnNpb259XCIgbmVlZHMgdGhlIHJlZ2lzdHJ5IGNvbmZpZyBidXQgaXQncyBub3QgbG9hZGVkIOKAlCBgICtcbiAgICAgICdDb2RlQnVpbGQgd2lsbCBmYWxsIGJhY2sgdG8gYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjAuICcgK1xuICAgICAgJ1NldCBJTUFHRV9SRUdJU1RSWV9IT1NUICsgSU1BR0VfUkVHSVNUUllfUE9SVCBpbiBwaXBlbGluZS1tYW5hZ2VyXFwncyBlbnZpcm9ubWVudC4nLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICghcmVnaXN0cnk/Lmhvc3QpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfToke3BsdWdpbi52ZXJzaW9ufVwiIG5lZWRzIElNQUdFX1JFR0lTVFJZX0hPU1QgYnV0IGl0J3MgZW1wdHkg4oCUIGAgK1xuICAgICAgJ0NvZGVCdWlsZCB3aWxsIGZhbGwgYmFjayB0byBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMC4gJyArXG4gICAgICAnU2V0IElNQUdFX1JFR0lTVFJZX0hPU1QgaW4gcGlwZWxpbmUtbWFuYWdlclxcJ3MgZW52aXJvbm1lbnQgdG8gdXNlIHRoZSBwbHVnaW4gaW1hZ2UuJyxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKCFzY29wZSkge1xuICAgIGxvZy53YXJuKGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfVwiIGltYWdlIHJlc29sdXRpb24gc2tpcHBlZDogbm8gY29uc3RydWN0IHNjb3BlIHByb3ZpZGVkYCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIFBlci1vcmcgYXV0aCByZXF1aXJlcyBvcmdJZCDigJQgdGhlIFNlY3JldCBpcyBuYW1lZCBwZXIgb3JnLlxuICBpZiAoIW9yZ0lkKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBpbWFnZSByZXNvbHV0aW9uIHNraXBwZWQ6IG9yZ0lkIGlzIHJlcXVpcmVkIHRvIGAgK1xuICAgICAgJ3Jlc29sdmUgdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IHVzZWQgZm9yIENvZGVCdWlsZCBCYXNpYyBhdXRoLicsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gQ29tcG9zZSB0aGUgaW1hZ2UgVVJJLiBOYW1lc3BhY2UgYnkgb3duZXJzaGlwOlxuICAvLyAgIC0gUGx1Z2lucyBvd25lZCBieSB0aGUgc3lzdGVtIG9yZyDihpIgYHN5c3RlbS88bmFtZT46PHZlcnNpb24+YC5cbiAgLy8gICAgIHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5J3MgdG9rZW4gc2VydmljZSBncmFudHMgcHVsbCBvbiBgc3lzdGVtLypgXG4gIC8vICAgICB0byBhbnkgYXV0aGVudGljYXRlZCBvcmcgdXNlciAocmVhZC1vbmx5IGNhdGFsb2cgb2Ygc2hhcmVkIHBsdWdpbnMpLlxuICAvLyAgIC0gUGx1Z2lucyBvd25lZCBieSBhIHRlbmFudCBvcmcg4oaSIGBvcmctPG9yZ0lkPi88bmFtZT46PHZlcnNpb24+YC5cbiAgLy8gICAgIFRoZSB0b2tlbiBzZXJ2aWNlIGdyYW50cyBwdWxsLHB1c2ggb25seSB0byBtZW1iZXJzIG9mIHRoYXQgb3JnLlxuICAvLyBUaGUgcGx1Z2luJ3Mgb3duIGBvcmdJZGAgKG5vdCB0aGUgY2FsbGVyJ3MpIGRlY2lkZXMgdGhlIG5hbWVzcGFjZSDigJRcbiAgLy8gdGVuYW50IHBpcGVsaW5lcyBwdWxsaW5nIHNoYXJlZCBzeXN0ZW0gcGx1Z2lucyBzdGlsbCBnZXQgdGhlIGBzeXN0ZW0vYFxuICAvLyBwYXRoIGJlY2F1c2UgdGhhdCdzIHdoZXJlIHRoZSBpbWFnZSBhY3R1YWxseSBsaXZlcy5cbiAgLy8gVXNlIHRoZSBleHRlcm5hbCBwdWxsIGhvc3QvcG9ydDogdGhpcyBpbWFnZSBVUkkgaXMgY29uc3VtZWQgYnkgQVdTXG4gIC8vIENvZGVCdWlsZCAob3V0LW9mLWNsdXN0ZXIpLCB3aGljaCBjYW4ndCByZXNvbHZlIHRoZSBpbi1jbHVzdGVyXG4gIC8vIGByZWdpc3RyeTo1MDAwYCBDbHVzdGVySVAuIEZhbGwgYmFjayB0byBgaG9zdGAvYHBvcnRgIGZvciBzaW5nbGUtaG9zdCAvXG4gIC8vIGluLWNsdXN0ZXItb25seSBkZXBsb3lzIHdoZXJlIG5vIHNlcGFyYXRlIHB1bGwgaG9zdCBpcyBjb25maWd1cmVkLlxuICBjb25zdCB7IGhvc3Q6IHB1bGxIb3N0LCBwb3J0UGFydCB9ID0gcmVzb2x2ZUV4dGVybmFsUHVsbFRhcmdldChyZWdpc3RyeSk7XG4gIC8vIE11c3QgbWF0Y2ggdGhlIFBVU0ggc2lkZSAoYXBpL3BsdWdpbiBwbHVnaW5VcmkpIGV4YWN0bHksIG9yIGEgc3lzdGVtXG4gIC8vIHBsdWdpbidzIGltYWdlIGlzIHB1c2hlZCB0byBgc3lzdGVtL+KApmAgYnV0IHRoaXMgc3ludGggcHVsbHMgZnJvbVxuICAvLyBgb3JnLTxvYmplY3RpZD4v4oCmYCDihpIgYnVpbGQtdGltZSBwdWxsIGZhaWx1cmUuIGBTWVNURU1fT1JHX0lEYCBpcyB0aGVcbiAgLy8gd2VsbC1rbm93biBPYmplY3RJZCAoTk9UIHRoZSBzdHJpbmcgJ3N5c3RlbScpLlxuICBjb25zdCBuYW1lc3BhY2UgPSBwbHVnaW4ub3JnSWQgPT09IFNZU1RFTV9PUkdfSUQgPyAnc3lzdGVtJyA6IGBvcmctJHtwbHVnaW4ub3JnSWR9YDtcbiAgY29uc3QgaW1hZ2VVcmkgPSBgJHtwdWxsSG9zdH0ke3BvcnRQYXJ0fS8ke25hbWVzcGFjZX0vJHtwbHVnaW4ubmFtZX06JHtwbHVnaW4udmVyc2lvbn1gO1xuXG4gIC8vIENvZGVCdWlsZCByZWFkcyBgcGlwZWxpbmUtYnVpbGRlci88b3JnSWQ+L3BsYXRmb3JtYCBhbmQgc2VuZHMgaXRzXG4gIC8vIGB1c2VybmFtZWAvYHBhc3N3b3JkYCBmaWVsZHMgYXMgSFRUUCBCYXNpYyB0byB0aGUgcmVnaXN0cnkuIFRoZVxuICAvLyByZWdpc3RyeSBjaGFsbGVuZ2VzIHdpdGggYSBCZWFyZXIgcmVhbG0gcG9pbnRpbmcgYXRcbiAgLy8gcGlwZWxpbmUtaW1hZ2UtcmVnaXN0cnkncyBgL3Rva2VuYCBlbmRwb2ludDsgdGhlIERvY2tlciBjbGllbnQgZm9yd2FyZHNcbiAgLy8gdGhvc2UgY3JlZHMsIHRoZSBwYXNzd29yZCBpcyB2ZXJpZmllZCBhcyBhIHBsYXRmb3JtIEpXVCwgYW5kIGEgcmVnaXN0cnlcbiAgLy8gdG9rZW4gc2NvcGVkIHRvIHRoZSBvcmcgaXMgaXNzdWVkLlxuICAvL1xuICAvLyBTYW1lIFNlY3JldCBpcyByZWFkIGJ5IHRoZSBwbHVnaW4tbG9va3VwIExhbWJkYSAodmlhIHRoZSBgcGFzc3dvcmRgXG4gIC8vIGZpZWxkKSDigJQgb25lIFNlY3JldCBzZXJ2ZXMgYm90aCBmbG93cy5cbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gIGNvbnN0IHNlY3JldE5hbWUgPSBDb3JlQ29uc3RhbnRzLnNlY3JldFBhdGgob3JnSWQsICdwbGF0Zm9ybScpO1xuICAvLyBDREsgY29uc3RydWN0IElEcyBhbGxvdyBvbmx5IFtBLVphLXowLTlfLV07IHNhbml0aXplIHRoZSBzZWNyZXQgbmFtZS5cbiAgY29uc3Qgc2VjcmV0Q29uc3RydWN0SWQgPSBgUGxhdGZvcm1DcmVkc18ke3NlY3JldE5hbWUucmVwbGFjZSgvW15BLVphLXowLTlfLV0vZywgJ18nKX1gO1xuICBjb25zdCBjcmVkZW50aWFsc1NlY3JldCA9IChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChzZWNyZXRDb25zdHJ1Y3RJZCkgYXMgU2VjcmV0IHwgdW5kZWZpbmVkKVxuICAgID8/IFNlY3JldC5mcm9tU2VjcmV0TmFtZVYyKHN0YWNrLCBzZWNyZXRDb25zdHJ1Y3RJZCwgc2VjcmV0TmFtZSk7XG5cbiAgcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoaW1hZ2VVcmksIHtcbiAgICBzZWNyZXRzTWFuYWdlckNyZWRlbnRpYWxzOiBjcmVkZW50aWFsc1NlY3JldCxcbiAgfSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZmFsbGJhY2sgQ29kZUJ1aWxkIGltYWdlIGZvciBzdGVwcyB3aXRob3V0IGEgcGx1Z2luLWJha2VkIG9uZS5cbiAqXG4gKiBSZWFkcyBgYXdzLmNvZGVCdWlsZC5kZWZhdWx0SW1hZ2VgIChlbnY6IGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRWApLlxuICogRGVmYXVsdDogYHBpcGVsaW5lLWJvb3RzdHJhcDoxLjBgIOKAlCB0aGUgbG9jYWwgdGFnIGJ1aWx0IGJ5XG4gKiBgZGVwbG95L2NvZGVidWlsZC9ib290c3RyYXAvRG9ja2VyZmlsZWAuXG4gKlxuICogLSBBV1MgY3VyYXRlZCBpbWFnZSAoYGF3cy9jb2RlYnVpbGQvKmApOiB1c2UgdGhlIG1hdGNoaW5nIGBMaW51eEJ1aWxkSW1hZ2VgXG4gKiAgIGNvbnN0YW50IHNvIENESyBlbWl0cyBgaW1hZ2VQdWxsQ3JlZGVudGlhbHNUeXBlOiBDT0RFQlVJTERgLiBVc2luZ1xuICogICBgZnJvbURvY2tlclJlZ2lzdHJ5KClgIGhlcmUgd291bGQgc2V0IFNFUlZJQ0VfUk9MRSBjcmVkZW50aWFscywgd2hpY2hcbiAqICAgQ0ZOIHJlamVjdHMgd2l0aCBcImNhbm5vdCB1c2UgYSBDb2RlQnVpbGQgY3VyYXRlZCBpbWFnZSB3aXRoXG4gKiAgIGltYWdlUHVsbENyZWRlbnRpYWxzVHlwZSBTRVJWSUNFX1JPTEVcIi5cbiAqIC0gQmFyZSB0YWcgKG5vIGAvYCk6IGF1dG8tcHJlZml4ZWQgdG9cbiAqICAgYDxyZWdpc3RyeS1ob3N0Pjo8cG9ydD4vbGlicmFyeS88dGFnPmAgdXNpbmcgdGhlIHJlZ2lzdHJ5IGNvbmZpZyxcbiAqICAgd2l0aCB0aGUgcGVyLW9yZyBwbGF0Zm9ybSBTZWNyZXQgYXMgQmFzaWMgYXV0aCDigJQgc2FtZSBwYXRoXG4gKiAgIGByZXNvbHZlUGx1Z2luSW1hZ2UoKWAgdXNlcyBmb3IgcGx1Z2luIGltYWdlcy4gTmVlZHMgYHNjb3BlYCArIGBvcmdJZGAuXG4gKiAtIEZ1bGx5LXF1YWxpZmllZCByZWdpc3RyeSBVUkkgKGNvbnRhaW5zIGAvYCk6IHVzZWQgYXMtaXMsIG5vIGF1dGggd2lyZWQuXG4gKiAtIE1pc3NpbmcgcmVnaXN0cnkgY29uZmlnIG9yIHNjb3BlL29yZ0lkIOKGkiBmYWxscyBiYWNrIHRvXG4gKiAgIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjguMGAgKGFzIGEgQ1VSQVRFRCBpbWFnZSwgc2VlIGFib3ZlKSwgd2l0aCBhXG4gKiAgIHdhcm5pbmcgc28gc3ludGggZGVncmFkZXMgZ3JhY2VmdWxseSBvbiBwYXJ0aWFsbHkgY29uZmlndXJlZCBlbnZzLlxuICovXG5jb25zdCBTVEFOREFSRF84XzAgPSAnYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjAnO1xuXG4vKipcbiAqIGF3cy1jZGstbGliIDIuMjU4IGhhcyBubyBgTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzhfMGAgc3RhdGljIHlldCwgc28gdGhlXG4gKiBjdXJhdGVkIDguMCBmYWxsYmFjayByZXNvbHZlcyB2aWEgYGZyb21Db2RlQnVpbGRJbWFnZUlkYCAoc3RpbGwgQ09ERUJVSUxEIGNyZWRzKS5cbiAqL1xuY29uc3QgZmFsbGJhY2tCdWlsZEltYWdlID0gKCk6IElCdWlsZEltYWdlID0+IExpbnV4QnVpbGRJbWFnZS5mcm9tQ29kZUJ1aWxkSW1hZ2VJZChTVEFOREFSRF84XzApO1xuXG4vKipcbiAqIE1hcCBBV1MgY3VyYXRlZCBgYXdzL2NvZGVidWlsZC8qYCBpbWFnZSBzdHJpbmdzIHRvIHRoZSBtYXRjaGluZ1xuICogYExpbnV4QnVpbGRJbWFnZWAgc3RhdGljLiBFeHRlbmQgd2hlbiBuZXdlciBzdGFuZGFyZCBpbWFnZXMgc2hpcC5cbiAqIFJldHVybnMgYHVuZGVmaW5lZGAgZm9yIG5vbi1jdXJhdGVkIHN0cmluZ3Mg4oCUIGNhbGxlciBzaG91bGQgdXNlXG4gKiBgZnJvbURvY2tlclJlZ2lzdHJ5KClgIGZvciB0aG9zZS5cbiAqL1xuZnVuY3Rpb24gY3VyYXRlZExpbnV4QnVpbGRJbWFnZShpbWFnZUlkOiBzdHJpbmcpOiBJQnVpbGRJbWFnZSB8IHVuZGVmaW5lZCB7XG4gIGlmICghaW1hZ2VJZC5zdGFydHNXaXRoKCdhd3MvY29kZWJ1aWxkLycpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGltYWdlSWQpIHtcbiAgICBjYXNlICdhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjYuMCc6IHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNl8wO1xuICAgIGNhc2UgJ2F3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6NS4wJzogcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF81XzA7XG4gICAgLy8gTmV3ZXIgY29kZW5hbWVkIGltYWdlcyByb3V0ZSB0aHJvdWdoIGZyb21Db2RlQnVpbGRJbWFnZUlkLCB3aGljaFxuICAgIC8vIENESyBhbHNvIG1hcmtzIGFzIENPREVCVUlMRCBjcmVkZW50aWFscyAoY3VyYXRlZCkuXG4gICAgZGVmYXVsdDogcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5mcm9tQ29kZUJ1aWxkSW1hZ2VJZChpbWFnZUlkKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlZmF1bHRCdWlsZEltYWdlKHNjb3BlPzogQ29uc3RydWN0LCBvcmdJZD86IHN0cmluZyk6IElCdWlsZEltYWdlIHtcbiAgbGV0IGNvbmZpZ3VyZWQ6IHN0cmluZztcbiAgdHJ5IHtcbiAgICBjb25maWd1cmVkID0gQ29uZmlnLmdldCgnYXdzJykuY29kZUJ1aWxkLmRlZmF1bHRJbWFnZTtcbiAgfSBjYXRjaCB7XG4gICAgY29uZmlndXJlZCA9IFNUQU5EQVJEXzhfMDtcbiAgfVxuXG4gIC8vIEFXUyBjdXJhdGVkIGltYWdlIOKGkiBDT0RFQlVJTEQgY3JlZGVudGlhbHMuIE1VU1QgZ28gdGhyb3VnaCB0aGVcbiAgLy8gTGludXhCdWlsZEltYWdlIGNvbnN0YW50cywgbm90IGZyb21Eb2NrZXJSZWdpc3RyeSgpLlxuICBjb25zdCBjdXJhdGVkID0gY3VyYXRlZExpbnV4QnVpbGRJbWFnZShjb25maWd1cmVkKTtcbiAgaWYgKGN1cmF0ZWQpIHJldHVybiBjdXJhdGVkO1xuXG4gIC8vIEZ1bGx5LXF1YWxpZmllZCBVUkkg4oCUIG9wZXJhdG9yIG93bnMgaXQuIE5vIHJlZ2lzdHJ5L1NlY3JldCB3aXJpbmcuXG4gIGlmIChjb25maWd1cmVkLmluY2x1ZGVzKCcvJykpIHtcbiAgICByZXR1cm4gTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShjb25maWd1cmVkKTtcbiAgfVxuXG4gIC8vIEJhcmUgdGFnIOKGkiBhdXRvLXByZWZpeCB3aXRoIHRoZSBwbGF0Zm9ybSByZWdpc3RyeSwgbWlycm9yaW5nXG4gIC8vIHJlc29sdmVQbHVnaW5JbWFnZSgpLiBCYWlsIHRvIHRoZSBjdXJhdGVkIHN0YW5kYXJkOjguMCBmYWxsYmFja1xuICAvLyAod2l0aCBhIHdhcm5pbmcpIGF0IGVhY2ggbWlzc2luZyBwcmVyZXF1aXNpdGUgc28gc3ludGggZGVncmFkZXNcbiAgLy8gZ3JhY2VmdWxseSBvbiBwYXJ0aWFsbHkgY29uZmlndXJlZCBlbnZpcm9ubWVudHMgaW5zdGVhZCBvZiBmYWlsaW5nLlxuICBsZXQgcmVnaXN0cnk7XG4gIHRyeSB7XG4gICAgcmVnaXN0cnkgPSBDb25maWcuZ2V0KCdyZWdpc3RyeScpO1xuICB9IGNhdGNoIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRT0nJHtjb25maWd1cmVkfScgaXMgYSBiYXJlIHRhZyBidXQgcmVnaXN0cnkgY29uZmlnIG5vdCBsb2FkZWQg4oCUIGAgK1xuICAgICAgYGZhbGxpbmcgYmFjayB0byAke1NUQU5EQVJEXzhfMH0uIFNldCBJTUFHRV9SRUdJU1RSWV9IT1NUICsgSU1BR0VfUkVHSVNUUllfUE9SVC5gLFxuICAgICk7XG4gICAgcmV0dXJuIGZhbGxiYWNrQnVpbGRJbWFnZSgpO1xuICB9XG4gIGlmICghcmVnaXN0cnk/Lmhvc3QpIHtcbiAgICBsb2cud2FybihcbiAgICAgIGBDT0RFQlVJTERfREVGQVVMVF9JTUFHRT0nJHtjb25maWd1cmVkfScgaXMgYSBiYXJlIHRhZyBidXQgSU1BR0VfUkVHSVNUUllfSE9TVCBpcyBlbXB0eSDigJQgYCArXG4gICAgICBgZmFsbGluZyBiYWNrIHRvICR7U1RBTkRBUkRfOF8wfS5gLFxuICAgICk7XG4gICAgcmV0dXJuIGZhbGxiYWNrQnVpbGRJbWFnZSgpO1xuICB9XG4gIGlmICghc2NvcGUgfHwgIW9yZ0lkKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0U9JyR7Y29uZmlndXJlZH0nIG5lZWRzIHNjb3BlK29yZ0lkIGZvciBTZWNyZXQgYXV0aCDigJQgYCArXG4gICAgICBgZmFsbGluZyBiYWNrIHRvICR7U1RBTkRBUkRfOF8wfS4gKENhbGxlciBkaWQgbm90IHN1cHBseSB0aGVtLilgLFxuICAgICk7XG4gICAgcmV0dXJuIGZhbGxiYWNrQnVpbGRJbWFnZSgpO1xuICB9XG5cbiAgLy8gVXNlIHRoZSBleHRlcm5hbCBwdWxsIGhvc3QvcG9ydCAobm90IHRoZSBpbi1jbHVzdGVyIGhvc3QpIOKAlCB0aGlzIFVSSSBpc1xuICAvLyBjb25zdW1lZCBieSBBV1MgQ29kZUJ1aWxkLCB3aGljaCBjYW4ndCByZXNvbHZlIHRoZSBgcmVnaXN0cnk6NTAwMGAgQ2x1c3RlcklQLlxuICBjb25zdCB7IGhvc3Q6IHB1bGxIb3N0LCBwb3J0UGFydCB9ID0gcmVzb2x2ZUV4dGVybmFsUHVsbFRhcmdldChyZWdpc3RyeSk7XG4gIGNvbnN0IGltYWdlVXJpID0gYCR7cHVsbEhvc3R9JHtwb3J0UGFydH0vbGlicmFyeS8ke2NvbmZpZ3VyZWR9YDtcblxuICAvLyBTYW1lIFNlY3JldCBhcyByZXNvbHZlUGx1Z2luSW1hZ2Ug4oCUIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0LCBDb2RlQnVpbGRcbiAgLy8gc2VuZHMgaXQgYXMgQmFzaWMgYXV0aCwgaW1hZ2UtcmVnaXN0cnkgdmVyaWZpZXMgdGhlIEpXVCBpbiBgcGFzc3dvcmRgLlxuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgY29uc3Qgc2VjcmV0TmFtZSA9IENvcmVDb25zdGFudHMuc2VjcmV0UGF0aChvcmdJZCwgJ3BsYXRmb3JtJyk7XG4gIGNvbnN0IHNlY3JldENvbnN0cnVjdElkID0gYFBsYXRmb3JtQ3JlZHNfJHtzZWNyZXROYW1lLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dL2csICdfJyl9YDtcbiAgY29uc3QgY3JlZGVudGlhbHNTZWNyZXQgPSAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoc2VjcmV0Q29uc3RydWN0SWQpIGFzIFNlY3JldCB8IHVuZGVmaW5lZClcbiAgICA/PyBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihzdGFjaywgc2VjcmV0Q29uc3RydWN0SWQsIHNlY3JldE5hbWUpO1xuXG4gIHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KGltYWdlVXJpLCB7XG4gICAgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsczogY3JlZGVudGlhbHNTZWNyZXQsXG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIENvZGVCdWlsZCBzdGVwIG9yIFNoZWxsIHN0ZXAgYmFzZWQgb24gcGx1Z2luIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogTWV0YWRhdGEgbWVyZ2Ugb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIDEuIFBsdWdpbiBtZXRhZGF0YSAoZnJvbSBwbHVnaW4ubWV0YWRhdGEgaW4gZGF0YWJhc2UpIOKAlCB0aGUgcGx1Z2luXG4gKiAgICAgIGF1dGhvcidzIGJha2VkLWluIGRlZmF1bHRzXG4gKiAgIDIuIFN0ZXAtbGV2ZWwgbWV0YWRhdGEgKGZyb20gb3B0aW9ucy5tZXRhZGF0YSkg4oCUIHRoZSBwaXBlbGluZSBhdXRob3Inc1xuICogICAgICBwZXItc3RlcCBvdmVycmlkZXMsIHdoaWNoIGFyZSBtb3JlIHNwZWNpZmljIGFuZCBtdXN0IHdpblxuICpcbiAqIEVudmlyb25tZW50IG1lcmdlIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICAxLiBQbHVnaW4gZW52IHZhcnMgKGZyb20gcGx1Z2luLmVudilcbiAqICAgMi4gQ3VzdG9tIGVudiB2YXJzIChmcm9tIG9wdGlvbnMuZW52KVxuICogICAzLiBXT1JLRElSIGZyb20gbWVyZ2VkIG1ldGFkYXRhXG4gKlxuICogQ0RLIHByb3Agc3ByZWFkIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICBwcm9ncmFtbWF0aWMgZGVmYXVsdHMgKGlucHV0LCBjb21tYW5kcywgZW52LCBuZXR3b3JrKSDihpIgbWV0YWRhdGEgb3ZlcnJpZGVzXG4gKlxuICogVGhpcyBtZWFucyBtZXRhZGF0YSBrZXlzIGxpa2UgYGF3czpjZGs6cGlwZWxpbmVzOmNvZGVidWlsZHN0ZXA6Y29tbWFuZHNgXG4gKiB3aWxsIG92ZXJyaWRlIHRoZSBwbHVnaW4tZGVyaXZlZCBjb21tYW5kcyB3aGVuIGV4cGxpY2l0bHkgc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29kZUJ1aWxkU3RlcChvcHRpb25zOiBDb2RlQnVpbGRTdGVwT3B0aW9ucyk6IFNoZWxsU3RlcCB8IENvZGVCdWlsZFN0ZXAgfCBNYW51YWxBcHByb3ZhbFN0ZXAge1xuICBjb25zdCB7XG4gICAgaWQsIGlucHV0LCBtZXRhZGF0YSwgbmV0d29yaywgc2NvcGUsXG4gICAgcHJlSW5zdGFsbENvbW1hbmRzLCBwb3N0SW5zdGFsbENvbW1hbmRzLCBwcmVDb21tYW5kcywgcG9zdENvbW1hbmRzLFxuICAgIGVudjogY3VzdG9tRW52LCBhZGRpdGlvbmFsSW5wdXRzLCB0aW1lb3V0LCBmYWlsdXJlQmVoYXZpb3IsXG4gICAgYXJ0aWZhY3RNYW5hZ2VyLCBzdGFnZU5hbWUsIHN0YWdlQWxpYXMsIHBsdWdpbkFsaWFzLCBvcmdJZCwgcGlwZWxpbmVTY29wZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gUmVzb2x2ZSB7eyAuLi4gfX0gdGVtcGxhdGVzIGluIHBsdWdpbiBzcGVjIGZpZWxkcyBhZ2FpbnN0IHRoZSBwaXBlbGluZSBzY29wZS5cbiAgLy8gRXZlcnkgY2FsbCBnb2VzIHRocm91Z2ggdGhlIHJlc29sdmVyIOKAlCBwbHVnaW5zIHdpdGhvdXQgdGVtcGxhdGUgdG9rZW5zIGFyZVxuICAvLyBhIG5vLW9wIGZhc3QgcGF0aCBpbnNpZGUgcmVzb2x2ZVBsdWdpblRlbXBsYXRlcygpLlxuICBjb25zdCBwbHVnaW4gPSByZXNvbHZlUGx1Z2luVGVtcGxhdGVzKG9wdGlvbnMucGx1Z2luLCBwaXBlbGluZVNjb3BlKTtcblxuICAvLyBQZXItc3RlcCBtZXRhZGF0YSAodGhlIHBpcGVsaW5lIGF1dGhvcidzIG92ZXJyaWRlcywgZS5nLiBKQVZBX1ZFUlNJT049MjUpXG4gIC8vIG11c3Qgd2luIG92ZXIgdGhlIHBsdWdpbidzIGNhdGFsb2cgYG1ldGFkYXRhYCBkZWZhdWx0cywgc28gaXQgZ29lcyBMQVNULlxuICAvLyBSZXZlcnNpbmcgdGhlc2Ugc2lsZW50bHkgZHJvcHBlZCBwZXItc3RlcCBvdmVycmlkZXMgZm9yIGFueSBwbHVnaW4gdGhhdFxuICAvLyBzaGlwcyBub24tZW1wdHkgY2F0YWxvZyBtZXRhZGF0YSAocGx1Z2lucyB0aGF0IGNhcnJ5IGRlZmF1bHRzIHVuZGVyIGBlbnZgXG4gIC8vIGluc3RlYWQg4oCUIGxpa2UgamF2YS1jb3JyZXR0byDigJQgd2VyZSB1bmFmZmVjdGVkLCB3aGljaCBtYXNrZWQgdGhpcykuXG4gIGNvbnN0IG1lcmdlZCA9IG1lcmdlKHBsdWdpbi5tZXRhZGF0YSA/PyB7fSwgbWV0YWRhdGEgPz8ge30pO1xuXG4gIC8vIE1hbnVhbEFwcHJvdmFsU3RlcDogbm8gY29tbWFuZHMsIGVudiwgY29tcHV0ZSwgb3IgbmV0d29yayDigJQganVzdCBpZCArIG9wdGlvbmFsIGNvbW1lbnRcbiAgaWYgKHBsdWdpbi5wbHVnaW5UeXBlID09PSBQbHVnaW5UeXBlLk1BTlVBTF9BUFBST1ZBTF9TVEVQKSB7XG4gICAgcmV0dXJuIG5ldyBNYW51YWxBcHByb3ZhbFN0ZXAoaWQsIHtcbiAgICAgIGNvbW1lbnQ6IHR5cGVvZiBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA9PT0gJ3N0cmluZycgPyBtZXJnZWQuQVBQUk9WQUxfQ09NTUVOVCA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIGxvZy5kZWJ1ZygnW0NyZWF0ZUNvZGVCdWlsZFN0ZXBdIEJ1aWxkaW5nIHN0ZXAgd2l0aCBtZXJnZWQgbWV0YWRhdGEnKTtcblxuICAvLyBXYXJuIGFib3V0IHJlcXVpcmVkIHNlY3JldHMgd2l0aG91dCBvcmdJZCAoY2FuJ3QgcmVzb2x2ZSlcbiAgY29uc3QgcmVxdWlyZWRTZWNyZXRzID0gcGx1Z2luLnNlY3JldHM/LmZpbHRlcihzID0+IHMucmVxdWlyZWQpID8/IFtdO1xuICBpZiAocmVxdWlyZWRTZWNyZXRzLmxlbmd0aCA+IDAgJiYgIW9yZ0lkKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBkZWNsYXJlcyAke3JlcXVpcmVkU2VjcmV0cy5sZW5ndGh9IHJlcXVpcmVkIHNlY3JldChzKSBidXQgbm8gb3JnSWQgaXMgYXZhaWxhYmxlLiBgICtcbiAgICAgIGBTZWNyZXRzIHdpbGwgbm90IGJlIGluamVjdGVkOiAke3JlcXVpcmVkU2VjcmV0cy5tYXAocyA9PiBzLm5hbWUpLmpvaW4oJywgJyl9YCxcbiAgICApO1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBwbHVnaW4gc2VjcmV0cyBhcyBTRUNSRVRTX01BTkFHRVIgZW52IHZhcnMg4oCUIG9ubHkgUkVRVUlSRUQgb25lcy5cbiAgLy8gQ29kZUJ1aWxkIHRyZWF0cyBhIFNFQ1JFVFNfTUFOQUdFUiBlbnYgdmFyIGFzIE1BTkRBVE9SWTogaXQgZmFpbHMgdGhlIGJ1aWxkXG4gIC8vIGF0IERPV05MT0FEX1NPVVJDRSAoXCJSZXNvdXJjZU5vdEZvdW5kRXhjZXB0aW9uOiBjYW4ndCBmaW5kIHRoZSBzcGVjaWZpZWRcbiAgLy8gc2VjcmV0XCIpIGlmIHRoZSBzZWNyZXQgaXMgYWJzZW50LiBBdXRvLXdpcmluZyBhbiBPUFRJT05BTCBzZWNyZXRcbiAgLy8gKGByZXF1aXJlZDogZmFsc2VgLCBlLmcuIE5WRF9BUElfS0VZIC8gU0VNR1JFUF9BUFBfVE9LRU4pIHRoZSBvcGVyYXRvciBoYXNuJ3RcbiAgLy8gY3JlYXRlZCB3b3VsZCB0aGVyZWZvcmUgYnJlYWsgZXZlcnkgYnVpbGQg4oCUIHRoZSBleGFjdCBvcHBvc2l0ZSBvZiBcIm9wdGlvbmFsXCIuXG4gIC8vIE9wdGlvbmFsIHNlY3JldHMgYXJlIGxlZnQgZm9yIHRoZSBwbHVnaW4gdG8gcmVhZCBvbmx5IHdoZXJlIHRoZSBvcGVyYXRvciBoYXNcbiAgLy8gcHJvdmlzaW9uZWQgdGhlbSAob3V0LW9mLWJhbmQgZW52L3NlY3JldCksIG5vdCBmb3JjZS1pbmplY3RlZCBoZXJlLlxuICBjb25zdCBzZWNyZXRFbnZWYXJzID0gKHJlcXVpcmVkU2VjcmV0cy5sZW5ndGggJiYgb3JnSWQpXG4gICAgPyB0b1NlY3JldEVudlZhcnMocmVxdWlyZWRTZWNyZXRzLCBvcmdJZClcbiAgICA6IHt9O1xuXG4gIGNvbnN0IGVudiA9IGJ1aWxkRW52KHBsdWdpbiwgbWVyZ2VkLCBjdXN0b21FbnYpO1xuXG4gIC8vIENvZGVQaXBlbGluZSByZXNvbHZlZCB2YXJpYWJsZXMg4oCUIG11c3QgYmUgaW4gQ29kZUJ1aWxkU3RlcC5lbnYgKGFjdGlvbi1sZXZlbCksXG4gIC8vIG5vdCBidWlsZEVudmlyb25tZW50LmVudmlyb25tZW50VmFyaWFibGVzIChwcm9qZWN0LWxldmVsKVxuICBjb25zdCBhY3Rpb25FbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgUElQRUxJTkVfRVhFQ1VUSU9OX0lEOiAnI3tjb2RlcGlwZWxpbmUuUGlwZWxpbmVFeGVjdXRpb25JZH0nLFxuICB9O1xuXG4gIGNvbnN0IG91dHB1dERpciA9IHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5O1xuICBjb25zdCBlbnN1cmVPdXRwdXREaXIgPSAob3V0cHV0RGlyICYmICFvdXRwdXREaXIuaW5jbHVkZXMoJyonKSlcbiAgICA/IFtgbWtkaXIgLXAgXCIke291dHB1dERpcn1cIiAmJiB0b3VjaCBcIiR7b3V0cHV0RGlyfS8uZ2l0a2VlcFwiYF1cbiAgICA6IFtdO1xuXG4gIGNvbnN0IHsgaW5zdGFsbENvbW1hbmRzLCBjb21tYW5kcyB9ID0gYnVpbGRDb21tYW5kcyhwbHVnaW4sIHtcbiAgICBwcmVJbnN0YWxsQ29tbWFuZHM6IFsuLi5lbnN1cmVPdXRwdXREaXIsIC4uLihwcmVJbnN0YWxsQ29tbWFuZHMgPz8gW10pXSxcbiAgICBwb3N0SW5zdGFsbENvbW1hbmRzLFxuICAgIHByZUNvbW1hbmRzLFxuICAgIHBvc3RDb21tYW5kcyxcbiAgfSwgZmFpbHVyZUJlaGF2aW9yKTtcblxuICBjb25zdCBwcm9ncmFtbWF0aWMgPSB7IGlucHV0LCBpbnN0YWxsQ29tbWFuZHMsIGNvbW1hbmRzIH07XG5cbiAgLy8gUmVzb2x2ZSB0aGUgcGx1Z2luJ3MgcnVudGltZSBpbWFnZS4gQ29kZUJ1aWxkIGRlZmF1bHRzIHRvXG4gIC8vIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjcuMGAgd2hlbiBubyBgYnVpbGRJbWFnZWAgaXMgc2V0IOKAlCB0aGF0J3MgdGhlXG4gIC8vIEFXUy1tYW5hZ2VkIFVidW50dSBpbWFnZSBhbmQgRE9FUyBOT1QgaGF2ZSBhbnkgcGx1Z2luLWJha2VkIHRvb2xzXG4gIC8vIChwaXBlbGluZS1tYW5hZ2VyLCBzbnlrLCB0ZXJyYWZvcm0sIGV0Yy4pLiBXaXJpbmcgdGhlIHBsdWdpbidzIGltYWdlXG4gIC8vIGhlcmUgbWVhbnMgQ29kZUJ1aWxkIHB1bGxzIGZyb20gb3VyIHByaXZhdGUgcmVnaXN0cnkgYW5kIHRoZSB0b29sc1xuICAvLyBpbnN0YWxsZWQgaW4gdGhlIHBsdWdpbidzIERvY2tlcmZpbGUgYXJlIGFjdHVhbGx5IGF2YWlsYWJsZS5cbiAgY29uc3QgcGx1Z2luQnVpbGRJbWFnZSA9IHJlc29sdmVQbHVnaW5JbWFnZShzY29wZSwgcGx1Z2luLCBvcmdJZCk7XG5cbiAgLy8gU2hlbGxTdGVwIGJyYW5jaC5cbiAgLy8gU2hlbGxTdGVwIGl0c2VsZiBkb2Vzbid0IGFjY2VwdCBgYnVpbGRFbnZpcm9ubWVudGAvYGJ1aWxkSW1hZ2VgLiBDREtcbiAgLy8gcGlwZWxpbmVzIHdyYXBzIFNoZWxsU3RlcHMgaW4gYSBkZWZhdWx0IENvZGVCdWlsZCBhY3Rpb24gdGhhdCBydW5zIG9uXG4gIC8vIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjcuMGAg4oCUIHdoaWNoIHdvbid0IGhhdmUgdGhlIHBsdWdpbidzIHRvb2xzLlxuICAvL1xuICAvLyBTbyB3aGVuIGEgU0hFTExfU1RFUCBwbHVnaW4gRE9FUyBoYXZlIGFuIGltYWdlIChiZWNhdXNlIGl0cyBhdXRob3JcbiAgLy8gYmFrZWQgdG9vbHMgaW50byBhIERvY2tlcmZpbGUpLCB3ZSBQUk9NT1RFIGl0IHRvIGEgQ29kZUJ1aWxkU3RlcCB3aXRoXG4gIC8vIHRoZSByZXNvbHZlZCBpbWFnZS4gVGhlIHBsdWdpbiBhdXRob3IncyBpbnRlbnQgKFwidXNlIG15IGJha2VkIHRvb2xzXCIpXG4gIC8vIGlzIHByZXNlcnZlZCB3aXRob3V0IGZvcmNpbmcgdGhlbSB0byBjaGFuZ2UgcGx1Z2luVHlwZS5cbiAgLy9cbiAgLy8gV2hlbiB0aGUgcGx1Z2luIGhhcyBubyBpbWFnZSAob3IgcmVnaXN0cnkgaXNuJ3QgY29uZmlndXJlZCksIHdlIGtlZXBcbiAgLy8gdGhlIG9yaWdpbmFsIFNoZWxsU3RlcCDigJQgaXQncyBsaWdodGVyIHdlaWdodCBhbmQgdGhlIGRlZmF1bHRcbiAgLy8gQ29kZUJ1aWxkIGltYWdlIGlzIGZpbmUuXG4gIGlmIChwbHVnaW4ucGx1Z2luVHlwZSA9PT0gUGx1Z2luVHlwZS5TSEVMTF9TVEVQKSB7XG4gICAgaWYgKCFwbHVnaW5CdWlsZEltYWdlKSB7XG4gICAgICByZXR1cm4gbmV3IFNoZWxsU3RlcChpZCwge1xuICAgICAgICAuLi5wcm9ncmFtbWF0aWMsXG4gICAgICAgIGVudjogeyAuLi5lbnYsIC4uLmFjdGlvbkVudiB9LFxuICAgICAgICAuLi5tZXRhZGF0YUZvclNoZWxsU3RlcChtZXJnZWQpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGxvZy5kZWJ1ZyhgW0NyZWF0ZUNvZGVCdWlsZFN0ZXBdIFNIRUxMX1NURVAgcGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBoYXMgYSByZWdpc3RyeSBpbWFnZSDigJQgcHJvbW90aW5nIHRvIENvZGVCdWlsZFN0ZXAgc28gdGhlIHBsdWdpbiBpbWFnZSBpcyBhY3R1YWxseSB1c2VkYCk7XG4gICAgLy8gRmFsbCB0aHJvdWdoIHRvIHRoZSBDb2RlQnVpbGRTdGVwIHBhdGggYmVsb3cuXG4gIH1cblxuICBjb25zdCBjb21wdXRlVHlwZSA9IGdldENvbXB1dGVUeXBlKFxuICAgIHBsdWdpbi5jb21wdXRlVHlwZSA/PyBvcHRpb25zLmRlZmF1bHRDb21wdXRlVHlwZSA/PyAnU01BTEwnLFxuICApO1xuXG4gIC8vIFN0ZXAgbmV0d29yazogZXhwbGljaXQgc3RlcCBjb25maWcgd2lucywgZWxzZSB0aGlzIHN0ZXAncyBgZWMyOm5ldHdvcmtgIG1ldGFkYXRhLlxuICBjb25zdCByZXNvbHZlZE5ldHdvcmsgPSBuZXR3b3JrID8/IG5ldHdvcmtDb25maWdGcm9tTWV0YWRhdGEobWVyZ2VkKTtcbiAgY29uc3QgbmV0d29ya1Byb3BzID0gcmVzb2x2ZWROZXR3b3JrXG4gICAgPyByZXNvbHZlTmV0d29yayhzY29wZSwgb3B0aW9ucy51bmlxdWVJZCwgcmVzb2x2ZWROZXR3b3JrKVxuICAgIDoge307XG5cbiAgLy8gTWV0YWRhdGEgc3ByZWFkIGxhc3Qgc28gaXQgY2FuIG92ZXJyaWRlIHByb2dyYW1tYXRpYyBkZWZhdWx0cy5cbiAgLy8gTk9URTogQ2FjaGluZyBpcyBzdXBwb3J0ZWQgdmlhIHR3byBtZXRhZGF0YSBwYXRoczpcbiAgLy8gICAxLiBNZXRhZGF0YUtleXMuQ0FDSEUgKCdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmNhY2hlJykg4oCUIHBhc3NlZCBkaXJlY3RseVxuICAvLyAgICAgIGFzIHRoZSBDb2RlQnVpbGRTdGVwIGBjYWNoZWAgcHJvcCAoZXhwZWN0cyBhIGNvZGVidWlsZC5DYWNoZSBvYmplY3QpLlxuICAvLyAgIDIuIE1ldGFkYXRhS2V5cy5QQVJUSUFMX0JVSUxEX1NQRUMgKCdhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOnBhcnRpYWxidWlsZHNwZWMnKVxuICAvLyAgICAgIOKAlCBwYXNzZWQgYXMgYHBhcnRpYWxCdWlsZFNwZWNgLCB3aGljaCBjYW4gaW5jbHVkZSBhIGBjYWNoZTpgIHNlY3Rpb24gZm9yXG4gIC8vICAgICAgUzMgb3IgbG9jYWwgY2FjaGluZyAoZS5nLiwgQnVpbGRTcGVjLmZyb21PYmplY3QoeyBjYWNoZTogeyBwYXRoczogWy4uLl0gfSB9KSkuXG4gIC8vIFBlci1zdGVwIGJ1aWxkRW52aXJvbm1lbnQgb3ZlcnJpZGVzIGZyb20gbWV0YWRhdGEgKGF3czpjZGs6Y29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQ6KikuXG4gIC8vIEEgbWV0YWRhdGEtcHJvdmlkZWQgY29tcHV0ZVR5cGUgaXMgYSByYXcgcGFzc3Rocm91Z2gsIHNvIG5vcm1hbGl6ZSBpdCB0aHJvdWdoXG4gIC8vIGdldENvbXB1dGVUeXBlIOKAlCBvdGhlcndpc2UgYSBmcmllbmRseSB2YWx1ZSBsaWtlIFwiTEFSR0VcIiByZWFjaGVzIENvZGVCdWlsZCB2ZXJiYXRpbVxuICAvLyBhbmQgZmFpbHMgd2l0aCBcIkludmFsaWQgY29tcHV0ZSB0eXBlIHByb3ZpZGVkXCIgKGl0IG5lZWRzIEJVSUxEX0dFTkVSQUwxX0xBUkdFKS5cbiAgY29uc3QgcmF3TWV0YUJ1aWxkRW52ID0gbWV0YWRhdGFGb3JCdWlsZEVudmlyb25tZW50KG1lcmdlZCk7XG4gIGNvbnN0IG1ldGFCdWlsZEVudiA9IHR5cGVvZiByYXdNZXRhQnVpbGRFbnYuY29tcHV0ZVR5cGUgPT09ICdzdHJpbmcnXG4gICAgPyB7IC4uLnJhd01ldGFCdWlsZEVudiwgY29tcHV0ZVR5cGU6IGdldENvbXB1dGVUeXBlKHJhd01ldGFCdWlsZEVudi5jb21wdXRlVHlwZSkgfVxuICAgIDogcmF3TWV0YUJ1aWxkRW52O1xuXG4gIGNvbnN0IHN0ZXAgPSBuZXcgQ29kZUJ1aWxkU3RlcChpZCwge1xuICAgIC4uLnByb2dyYW1tYXRpYyxcbiAgICAuLi5uZXR3b3JrUHJvcHMsXG4gICAgLi4uKGFkZGl0aW9uYWxJbnB1dHMgJiYgeyBhZGRpdGlvbmFsSW5wdXRzIH0pLFxuICAgIC4uLih0aW1lb3V0ICYmIHsgdGltZW91dDogRHVyYXRpb24ubWludXRlcyh0aW1lb3V0KSB9KSxcbiAgICBlbnY6IGFjdGlvbkVudixcbiAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeSA/PyB1bmRlZmluZWQsXG4gICAgLy8gUGluIHRoZSBidWlsZHNwZWMgc2hlbGwgdG8gUE9TSVggL2Jpbi9zaCBzbyBleGVjdXRpb24gaXMgaWRlbnRpY2FsIHRvXG4gICAgLy8gQ29kZUJ1aWxkJ3MgZGVmYXVsdCBhbmQgcG9ydGFibGUgYWNyb3NzIG1pbmltYWwgYmFzZSBpbWFnZXMgKG5vIGJhc2hcbiAgICAvLyBkZXBlbmRlbmN5KS4gUGx1Z2luIHNwZWNzIGFyZSBhdXRob3JlZCBQT1NJWC1jbGVhbiB0byBtYXRjaCDigJQgbm8gYmFzaC1vbmx5XG4gICAgLy8gYFtbIF1dYCwgYXJyYXlzLCBgcmVhZCAtcmEgPDw8YCwgb3IgYHNvdXJjZWAvYG52bSB1c2VgL2BzZGsgdXNlYC4gQVxuICAgIC8vIHBsdWdpbi1zdXBwbGllZCBwYXJ0aWFsQnVpbGRTcGVjIChub25lIHRvZGF5KSB3b3VsZCBvdmVycmlkZSB0aGlzIHZpYSB0aGVcbiAgICAvLyBtZXRhZGF0YSBzcHJlYWQgYmVsb3cgYW5kIG11c3QgdGhlbiBzZXQgYGVudi5zaGVsbGAgaXRzZWxmLlxuICAgIHBhcnRpYWxCdWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHsgZW52OiB7IHNoZWxsOiAnL2Jpbi9zaCcgfSB9KSxcbiAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICBjb21wdXRlVHlwZSxcbiAgICAgIGJ1aWxkSW1hZ2U6IHBsdWdpbkJ1aWxkSW1hZ2UgPz8gcmVzb2x2ZURlZmF1bHRCdWlsZEltYWdlKHNjb3BlLCBvcmdJZCksXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAuLi50b0NvZGVCdWlsZEVudlZhcnMoZW52KSxcbiAgICAgICAgLi4uc2VjcmV0RW52VmFycyxcbiAgICAgIH0sXG4gICAgICAuLi5tZXRhQnVpbGRFbnYsXG4gICAgfSxcbiAgICAuLi5tZXRhZGF0YUZvckNvZGVCdWlsZFN0ZXAobWVyZ2VkKSxcbiAgfSk7XG5cbiAgLy8gUmVnaXN0ZXIgd2l0aCBhcnRpZmFjdCBtYW5hZ2VyIGlmIHByaW1hcnlPdXRwdXREaXJlY3RvcnkgaXMgc2V0XG4gIGlmIChwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeSAmJiBhcnRpZmFjdE1hbmFnZXIgJiYgc3RhZ2VOYW1lKSB7XG4gICAgY29uc3QgYXJ0aWZhY3RLZXk6IEFydGlmYWN0S2V5ID0ge1xuICAgICAgc3RhZ2VOYW1lLFxuICAgICAgc3RhZ2VBbGlhczogc3RhZ2VBbGlhcyA/PyBgJHtzdGFnZU5hbWV9LWFsaWFzYCxcbiAgICAgIHBsdWdpbk5hbWU6IHBsdWdpbi5uYW1lLFxuICAgICAgcGx1Z2luQWxpYXM6IHBsdWdpbkFsaWFzID8/IGAke3BsdWdpbi5uYW1lfS1hbGlhc2AsXG4gICAgICBvdXRwdXREaXJlY3Rvcnk6IHBsdWdpbi5wcmltYXJ5T3V0cHV0RGlyZWN0b3J5LFxuICAgIH07XG4gICAgYXJ0aWZhY3RNYW5hZ2VyLmFkZChhcnRpZmFjdEtleSwgc3RlcCk7XG4gIH1cblxuICByZXR1cm4gc3RlcDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IHN0cmluZyBvciBDb21wdXRlVHlwZSBlbnVtIHRvIENESyBDb21wdXRlVHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcHV0ZVR5cGUoaW5wdXQ6IHN0cmluZyB8IENES0NvbXB1dGVUeXBlID0gJ1NNQUxMJyk6IENES0NvbXB1dGVUeXBlIHtcbiAgLy8gSWYgYWxyZWFkeSBhIENESyBDb21wdXRlVHlwZSwgcmV0dXJuIGFzLWlzXG4gIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgLy8gQWxyZWFkeSBhIG5hdGl2ZSBDb2RlQnVpbGQgQ29tcHV0ZVR5cGUgKGUuZy4gXCJCVUlMRF9HRU5FUkFMMV9MQVJHRVwiKT8gQWNjZXB0IGFzLWlzXG4gIC8vIHNvIGJvdGggZnJpZW5kbHkgKExBUkdFKSBhbmQgbmF0aXZlIHZhbHVlcyByb3VuZC10cmlwIHdpdGhvdXQgZmFsbGluZyBiYWNrIHRvIFNNQUxMLlxuICBpZiAoKE9iamVjdC52YWx1ZXMoQ0RLQ29tcHV0ZVR5cGUpIGFzIHN0cmluZ1tdKS5pbmNsdWRlcyhpbnB1dCkpIHtcbiAgICByZXR1cm4gaW5wdXQgYXMgQ0RLQ29tcHV0ZVR5cGU7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkID0gaW5wdXQudG9VcHBlckNhc2UoKSBhcyBDb21wdXRlVHlwZTtcblxuICBjb25zdCBtYXBwaW5nOiBSZWNvcmQ8Q29tcHV0ZVR5cGUsIENES0NvbXB1dGVUeXBlPiA9IHtcbiAgICBbQ29tcHV0ZVR5cGUuU01BTExdOiBDREtDb21wdXRlVHlwZS5TTUFMTCxcbiAgICBbQ29tcHV0ZVR5cGUuTUVESVVNXTogQ0RLQ29tcHV0ZVR5cGUuTUVESVVNLFxuICAgIFtDb21wdXRlVHlwZS5MQVJHRV06IENES0NvbXB1dGVUeXBlLkxBUkdFLFxuICAgIFtDb21wdXRlVHlwZS5YMl9MQVJHRV06IENES0NvbXB1dGVUeXBlLlgyX0xBUkdFLFxuICB9O1xuXG4gIGNvbnN0IHJlc3VsdCA9IG1hcHBpbmdbbm9ybWFsaXplZF07XG4gIGlmICghcmVzdWx0KSB7XG4gICAgbG9nLndhcm4oYFVua25vd24gY29tcHV0ZSB0eXBlIFwiJHtpbnB1dH1cIiwgZmFsbGluZyBiYWNrIHRvIFNNQUxMYCk7XG4gICAgcmV0dXJuIENES0NvbXB1dGVUeXBlLlNNQUxMO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IGxldHRlcnMgb3IgbnVtYmVycyB3aXRoIHRoZSBzcGVjaWZpZWQgdmFsdWVcbiAqIEBwYXJhbSBpbnB1dCAtIFRoZSBzdHJpbmcgdG8gcHJvY2Vzc1xuICogQHBhcmFtIHJlcGxhY2VWYWx1ZSAtIFRoZSBjaGFyYWN0ZXIocykgdG8gcmVwbGFjZSBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCAoZGVmYXVsdDogJ18nKVxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyByZXBsYWNlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU5vbkFscGhhbnVtZXJpYyhpbnB1dDogc3RyaW5nLCByZXBsYWNlVmFsdWU6IHN0cmluZyA9ICdfJyk6IHN0cmluZyB7XG4gIHJldHVybiBpbnB1dC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgcmVwbGFjZVZhbHVlKTtcbn1cblxuLyoqXG4gKiBVbndyYXAgYSBTZWNyZXRWYWx1ZSB8IHN0cmluZyBpbnRvIGEgcGxhaW4gc3RyaW5nLlxuICogV2hlbiBhIFNlY3JldFZhbHVlIGlzIHByb3ZpZGVkIChlLmcuIGZyb20gU2VjcmV0cyBNYW5hZ2VyKSwgY2FsbHMgdW5zYWZlVW53cmFwKClcbiAqIHRvIGV4dHJhY3QgdGhlIHVuZGVybHlpbmcgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXBTZWNyZXQodmFsdWU6IFNlY3JldFZhbHVlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IHZhbHVlLnVuc2FmZVVud3JhcCgpO1xufVxuIl19
|
|
605
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3BpcGVsaW5lLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLFdBQVcsSUFBSSxjQUFjLEVBQUUsZUFBZSxFQUFvQixNQUFNLDJCQUEyQixDQUFDO0FBQ3RKLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSwyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9JLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQXFCLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4RSxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUU3Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsR0FBRyxPQUFxQztJQUM1RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFp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LE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsWUFBWSxHQUFXLEdBQUc7SUFDOUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBMkI7SUFDdEQsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBTWVNURU1fT1JHX0lEIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1kYXRhJztcbmltcG9ydCB7IER1cmF0aW9uLCBTZWNyZXRWYWx1ZSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLCBCdWlsZFNwZWMsIENvbXB1dGVUeXBlIGFzIENES0NvbXB1dGVUeXBlLCBMaW51eEJ1aWxkSW1hZ2UsIHR5cGUgSUJ1aWxkSW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFNlY3JldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBDb2RlQnVpbGRTdGVwLCBNYW51YWxBcHByb3ZhbFN0ZXAsIFNoZWxsU3RlcCB9IGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUgeyBBcnRpZmFjdEtleSB9IGZyb20gJy4vYXJ0aWZhY3QtbWFuYWdlci5qcyc7XG5pbXBvcnQgeyBtZXRhZGF0YUZvclNoZWxsU3RlcCwgbWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwLCBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnQsIG5ldHdvcmtDb25maWdGcm9tTWV0YWRhdGEgfSBmcm9tICcuL21ldGFkYXRhLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZU5ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsuanMnO1xuaW1wb3J0IHsgUGx1Z2luVHlwZSwgQ29tcHV0ZVR5cGUsIHR5cGUgTWV0YURhdGFUeXBlLCBDREtfTUVUQURBVEFfUFJFRklYIH0gZnJvbSAnLi9waXBlbGluZS10eXBlcy5qcyc7XG5pbXBvcnQgeyBDb25maWcsIENvcmVDb25zdGFudHMgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZy5qcyc7XG5pbXBvcnQgdHlwZSB7IENvZGVCdWlsZFN0ZXBPcHRpb25zLCBTdGVwQ3VzdG9taXphdGlvbiB9IGZyb20gJy4uL3BpcGVsaW5lL3N0ZXAtdHlwZXMuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVBsdWdpblRlbXBsYXRlcyB9IGZyb20gJy4uL3RlbXBsYXRlL3BsdWdpbi1yZXNvbHZlci5qcyc7XG5cbmNvbnN0IGxvZyA9IGNyZWF0ZUxvZ2dlcigncGlwZWxpbmUtaGVscGVycycpO1xuXG4vKipcbiAqIE1lcmdlIG11bHRpcGxlIG1ldGFkYXRhIG9iamVjdHMgaW50byBvbmUuIExhdGVyIHNvdXJjZXMgb3ZlcnJpZGUgZWFybGllciBvbmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UoLi4uc291cmNlczogQXJyYXk8UGFydGlhbDxNZXRhRGF0YVR5cGU+Pik6IE1ldGFEYXRhVHlwZSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCAuLi5zb3VyY2VzKSBhcyBNZXRhRGF0YVR5cGU7XG59XG5cbi8qKlxuICogRXh0cmFjdCBub24tbmFtZXNwYWNlZCBtZXRhZGF0YSBrZXlzIGFzIGVudmlyb25tZW50IHZhcmlhYmxlIHN0cmluZ3MuXG4gKiBLZXlzIHN0YXJ0aW5nIHdpdGggJ2F3czpjZGs6JyBhcmUgcmVzZXJ2ZWQgZm9yIENESyBjb25zdHJ1Y3QgcHJvcHNcbiAqIChwcm9jZXNzZWQgYnkgbWV0YWRhdGEgZXh0cmFjdGlvbiBmdW5jdGlvbnMpIGFuZCBhcmUgZXhjbHVkZWQgaGVyZS5cbiAqXG4gKiBBbGwgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBmb3IgQ29kZUJ1aWxkIGNvbXBhdGliaWxpdHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0TWV0YWRhdGFFbnYobWV0YWRhdGE6IE1ldGFEYXRhVHlwZSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCBlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpKSB7XG4gICAgaWYgKCFrZXkuc3RhcnRzV2l0aChDREtfTUVUQURBVEFfUFJFRklYKSkge1xuICAgICAgZW52W2tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZW52O1xufVxuXG4vKipcbiAqIEJ1aWxkIGVudmlyb25tZW50IHZhcmlhYmxlcyBmcm9tIHBsdWdpbiBjb25maWcsIG1lcmdlZCBtZXRhZGF0YSwgYW5kIGN1c3RvbSBlbnYuXG4gKlxuICogTWVyZ2Ugb3JkZXIgKGxhc3Qgd2lucyk6XG4gKiAgIDEuIHBsdWdpbi5lbnYg4oCUIHBsdWdpbiBkZWZhdWx0IGVudiB2YXJzIChsb3dlc3QgcHJpb3JpdHkpXG4gKiAgIDIuIG5vbi1uYW1lc3BhY2VkIG1ldGFkYXRhIGtleXMg4oCUIGUuZy4gUFlUSE9OX1ZFUlNJT04sIFdPUktESVJcbiAqICAgMy4gY3VzdG9tRW52IOKAlCBwZXItc3RlcCBjdXN0b20gZW52IHZhcnMgKGhpZ2hlc3QgcHJpb3JpdHkpXG4gKi9cbmNvbnN0IEJPT1RTVFJBUF9DTUQgPSAnZXhwb3J0IFdPUktESVI9JHtXT1JLRElSOi0uL307IGNkICR7V09SS0RJUn0nO1xuXG5mdW5jdGlvbiBidWlsZEVudihwbHVnaW46IFBsdWdpbiwgbWV0YWRhdGE6IE1ldGFEYXRhVHlwZSwgY3VzdG9tRW52PzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4ge1xuICAgIC4uLihwbHVnaW4uZW52ID8/IHt9KSxcbiAgICAuLi5leHRyYWN0TWV0YWRhdGFFbnYobWV0YWRhdGEpLFxuICAgIC4uLihjdXN0b21FbnYgPz8ge30pLFxuICB9O1xufVxuXG4vKipcbiAqIFdyYXAgYnVpbGQgY29tbWFuZHMgYmFzZWQgb24gZmFpbHVyZSBiZWhhdmlvci5cbiAqIC0gJ2ZhaWwnIChkZWZhdWx0KTogTm8gd3JhcHBpbmcg4oCUIGNvbW1hbmRzIGZhaWwgdGhlIHBpcGVsaW5lIG5hdHVyYWxseS5cbiAqIC0gJ3dhcm4nOiBSdW4gY29tbWFuZHMgd2l0aCBgc2V0ICtlYCwgY2FwdHVyZSBmYWlsdXJlcywgbG9nIHdhcm5pbmdzLCBjb250aW51ZS5cbiAqIC0gJ2lnbm9yZSc6IEFwcGVuZCBgfHwgdHJ1ZWAgdG8gZWFjaCBjb21tYW5kIOKAlCBmYWlsdXJlcyBhcmUgc2lsZW50bHkgc3dhbGxvd2VkLlxuICpcbiAqIE9ubHkgYXBwbGllZCB0byBidWlsZCBjb21tYW5kcywgbm90IGluc3RhbGwgY29tbWFuZHMgKGluc3RhbGwgZmFpbHVyZXMgc2hvdWxkIGFsd2F5cyBzdG9wIHRoZSBidWlsZCkuXG4gKi9cbi8qKiBQbHVnaW4gY2F0ZWdvcmllcyB3aG9zZSBmYWlsdXJlIG11c3QgTkVWRVIgYmUgbWFza2VkLiBBIHNjYW4vc2VjdXJpdHkgc3RlcCB0aGF0XG4gKiAgZXhpdHMgbm9uLXplcm8gaGFzIHRvIGZhaWwgdGhlIHBpcGVsaW5lIChyZXBvIHJ1bGU6IGEgZmFpbGVkIHNjYW4gaXMgcmVkLCBuZXZlciBhXG4gKiAgZmFsc2UtZ3JlZW4gYHx8IHRydWVgKSwgc28gc3VjaCBhIHBsdWdpbidzIGZhaWx1cmVCZWhhdmlvciBpcyBmb3JjZWQgdG8gJ2ZhaWwnXG4gKiAgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBwbHVnaW4gb3Igc3RlcCBhdXRob3JlZC4gKi9cbmNvbnN0IEZBSUxfRkFTVF9DQVRFR09SSUVTID0gL3NjYW58c2VjdXJpdHl8c2FzdHxkYXN0fHZ1bG58c2VjcmV0L2k7XG5cbi8qKiBSZXNvbHZlIHRoZSBlZmZlY3RpdmUgZmFpbHVyZUJlaGF2aW9yOiBhIHNjYW4vc2VjdXJpdHktY2F0ZWdvcnkgcGx1Z2luIGlzIHBpbm5lZFxuICogIHRvICdmYWlsJzsgb3RoZXJ3aXNlIHRoZSBhdXRob3JlZCB2YWx1ZSAoZGVmYXVsdCAnZmFpbCcpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVGYWlsdXJlQmVoYXZpb3IoY2F0ZWdvcnk/OiBzdHJpbmcsIGF1dGhvcmVkPzogJ2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZScpOiAnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJyB7XG4gIGlmIChjYXRlZ29yeSAmJiBGQUlMX0ZBU1RfQ0FURUdPUklFUy50ZXN0KGNhdGVnb3J5KSkgcmV0dXJuICdmYWlsJztcbiAgcmV0dXJuIGF1dGhvcmVkID8/ICdmYWlsJztcbn1cblxuZnVuY3Rpb24gd3JhcENvbW1hbmRzRm9yRmFpbHVyZUJlaGF2aW9yKGNvbW1hbmRzOiBzdHJpbmdbXSwgYmVoYXZpb3I/OiAnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJyk6IHN0cmluZ1tdIHtcbiAgaWYgKCFiZWhhdmlvciB8fCBiZWhhdmlvciA9PT0gJ2ZhaWwnKSByZXR1cm4gY29tbWFuZHM7XG5cbiAgaWYgKGJlaGF2aW9yID09PSAnaWdub3JlJykge1xuICAgIHJldHVybiBjb21tYW5kcy5tYXAoY21kID0+IGAke2NtZH0gfHwgdHJ1ZWApO1xuICB9XG5cbiAgLy8gJ3dhcm4nOiBydW4gYWxsIGNvbW1hbmRzLCBjYXB0dXJlIGZhaWx1cmVzLCBidXQgZG9uJ3Qgc3RvcFxuICByZXR1cm4gW1xuICAgICdzZXQgK2UnLFxuICAgICdfU1RFUF9FWElUPTAnLFxuICAgIC4uLmNvbW1hbmRzLm1hcChjbWQgPT4gYCR7Y21kfSB8fCB7IGVjaG8gXCJXQVJOSU5HOiBDb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAkP1wiOyBfU1RFUF9FWElUPTE7IH1gKSxcbiAgICAnc2V0IC1lJyxcbiAgICAnaWYgWyBcIiRfU1RFUF9FWElUXCIgLW5lIDAgXTsgdGhlbiBlY2hvIFwiV0FSTklORzogT25lIG9yIG1vcmUgY29tbWFuZHMgaW4gdGhpcyBzdGVwIGZhaWxlZFwiOyBmaScsXG4gIF07XG59XG5cbi8qKlxuICogQnVpbGQgYm9vdHN0cmFwLXByZWZpeGVkIGluc3RhbGwgYW5kIGJ1aWxkIGNvbW1hbmRzIGZyb20gcGx1Z2luIGNvbmZpZy5cbiAqIEVhY2ggY29tbWFuZCBsaXN0IGlzIHByZXBlbmRlZCB3aXRoIGEgV09SS0RJUiBib290c3RyYXAgdGhhdCBkZWZhdWx0cyB0byAnLi8nLlxuICogV2hlbiBjdXN0b20gY29tbWFuZHMgYXJlIHByb3ZpZGVkLCB0aGV5IGFyZSBpbmplY3RlZCBiZWZvcmUvYWZ0ZXIgdGhlIHBsdWdpbidzIGNvbW1hbmRzLlxuICogQnVpbGQgY29tbWFuZHMgYXJlIG9wdGlvbmFsbHkgd3JhcHBlZCBieSBmYWlsdXJlQmVoYXZpb3IgbG9naWMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkQ29tbWFuZHMocGx1Z2luOiBQbHVnaW4sIGN1c3RvbT86IFN0ZXBDdXN0b21pemF0aW9uLCBmYWlsdXJlQmVoYXZpb3I/OiAnZmFpbCcgfCAnd2FybicgfCAnaWdub3JlJyk6IHsgaW5zdGFsbENvbW1hbmRzOiBzdHJpbmdbXTsgY29tbWFuZHM6IHN0cmluZ1tdIH0ge1xuICBjb25zdCB1c2VyQ29tbWFuZHMgPSBbXG4gICAgLi4uKGN1c3RvbT8ucHJlQ29tbWFuZHMgPz8gW10pLFxuICAgIC4uLihwbHVnaW4uY29tbWFuZHM/Lmxlbmd0aCA/IHBsdWdpbi5jb21tYW5kcyA6IFtdKSxcbiAgICAuLi4oY3VzdG9tPy5wb3N0Q29tbWFuZHMgPz8gW10pLFxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgaW5zdGFsbENvbW1hbmRzOiBbXG4gICAgICBCT09UU1RSQVBfQ01ELFxuICAgICAgLi4uKGN1c3RvbT8ucHJlSW5zdGFsbENvbW1hbmRzID8/IFtdKSxcbiAgICAgIC4uLihwbHVnaW4uaW5zdGFsbENvbW1hbmRzID8/IFtdKSxcbiAgICAgIC4uLihjdXN0b20/LnBvc3RJbnN0YWxsQ29tbWFuZHMgPz8gW10pLFxuICAgIF0sXG4gICAgY29tbWFuZHM6IFtCT09UU1RSQVBfQ01ELCAuLi53cmFwQ29tbWFuZHNGb3JGYWlsdXJlQmVoYXZpb3IodXNlckNvbW1hbmRzLCBmYWlsdXJlQmVoYXZpb3IpXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgcGxhaW4gZW52IHJlY29yZCB0byBDb2RlQnVpbGQncyBlbnZpcm9ubWVudFZhcmlhYmxlcyBmb3JtYXQgKFBMQUlOVEVYVCkuXG4gKi9cbmZ1bmN0aW9uIHRvQ29kZUJ1aWxkRW52VmFycyhlbnY6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBzdHJpbmcgfT4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGVudikubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBbbmFtZSwgeyB2YWx1ZSB9XSksXG4gICk7XG59XG5cbi8qKlxuICogQnVpbGQgU0VDUkVUU19NQU5BR0VSLXR5cGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gcGx1Z2luIHNlY3JldCBkZWNsYXJhdGlvbnMuXG4gKiBVc2VzIG5hbWluZyBjb252ZW50aW9uOiBwaXBlbGluZS1idWlsZGVyL3tvcmdJZH0ve3NlY3JldE5hbWV9XG4gKiBFYWNoIG9yZyBtYW5hZ2VzIHRoZXNlIHNlY3JldHMgaW4gdGhlaXIgb3duIEFXUyBTZWNyZXRzIE1hbmFnZXIuXG4gKi9cbmNvbnN0IFZBTElEX1NFQ1JFVF9OQU1FID0gL15bYS16QS1aMC05L18rPS5ALV0rJC87XG5cbmZ1bmN0aW9uIHRvU2VjcmV0RW52VmFycyhcbiAgc2VjcmV0czogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHJlcXVpcmVkOiBib29sZWFuIH0+LFxuICBvcmdJZDogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgeyB2YWx1ZTogc3RyaW5nOyB0eXBlOiBCdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlIH0+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBzZWNyZXRzLm1hcCgoeyBuYW1lIH0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldFBhdGggPSBDb3JlQ29uc3RhbnRzLnNlY3JldFBhdGgob3JnSWQsIG5hbWUpO1xuICAgICAgaWYgKCFWQUxJRF9TRUNSRVRfTkFNRS50ZXN0KHNlY3JldFBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VjcmV0IHBhdGggXCIke3NlY3JldFBhdGh9XCIgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIGZvciBBV1MgU2VjcmV0cyBNYW5hZ2VyYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW1xuICAgICAgICBuYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IHNlY3JldFBhdGgsXG4gICAgICAgICAgdHlwZTogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5TRUNSRVRTX01BTkFHRVIsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0pLFxuICApO1xufVxuXG4vKipcbiAqIEluLWNsdXN0ZXIgLyBsb2NhbCByZWdpc3RyeSBob3N0bmFtZXMgdGhhdCBBV1MgQ29kZUJ1aWxkIChvdXQtb2YtY2x1c3RlcilcbiAqIGNhbm5vdCByZXNvbHZlLiBCYWtpbmcgb25lIG9mIHRoZXNlIGludG8gYSBDb2RlQnVpbGQgaW1hZ2UgVVJJIGd1YXJhbnRlZXMgYVxuICogYEJVSUxEX0NPTlRBSU5FUl9VTkFCTEVfVE9fUFVMTF9JTUFHRWAgZmFpbHVyZSBhdCBidWlsZCB0aW1lLCBzbyB3ZSBmYWlsIHRoZVxuICogc3ludGggZmFzdCBpbnN0ZWFkIOKAlCB3aXRoIGEgbWVzc2FnZSB0aGF0IHNheXMgaG93IHRvIGZpeCBpdC5cbiAqL1xuY29uc3QgVU5SRUFDSEFCTEVfUFVMTF9IT1NUUyA9IG5ldyBTZXQoWydyZWdpc3RyeScsICdsb2NhbGhvc3QnLCAnMTI3LjAuMC4xJywgJzo6MScsICcwLjAuMC4wJ10pO1xuXG4vKiogS3ViZXJuZXRlcyAvIG1ETlMgc3VmZml4ZXMgdGhhdCBvbmx5IHJlc29sdmUgaW5zaWRlIHRoZSBjbHVzdGVyL0xBTi4gKi9cbmNvbnN0IFVOUkVBQ0hBQkxFX0hPU1RfU1VGRklYRVMgPSBbJy5zdmMnLCAnLnN2Yy5jbHVzdGVyLmxvY2FsJywgJy5sb2NhbCddO1xuXG4vKipcbiAqIFJlZHVjZSBhIHJlZ2lzdHJ5IGhvc3QgdmFsdWUgdG8gaXRzIGJhcmUgaG9zdG5hbWUgZm9yIHRoZSByZWFjaGFiaWxpdHkgY2hlY2s6XG4gKiBzdHJpcCBJUHY2IGJyYWNrZXRzIGFuZCBhbnkgYDpwb3J0YCBzdWZmaXggKGFuIG9wZXJhdG9yIG1heSBwdXQgaG9zdCtwb3J0IGluXG4gKiBvbmUgZmllbGQpLCBzbyBgcmVnaXN0cnk6NTAwMGAgLyBgWzo6MV06NTAwMGAgYXJlIHN0aWxsIHJlY29nbml6ZWQuXG4gKi9cbmZ1bmN0aW9uIGJhcmVIb3N0bmFtZShyYXdIb3N0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaCA9IHJhd0hvc3QudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChoLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgIGNvbnN0IGVuZCA9IGguaW5kZXhPZignXScpO1xuICAgIGlmIChlbmQgIT09IC0xKSByZXR1cm4gaC5zbGljZSgxLCBlbmQpOyAvLyBbOjoxXTo1MDAwIC0+IDo6MVxuICB9XG4gIC8vIFN0cmlwIGEgdHJhaWxpbmcgOnBvcnQgb25seSBmb3Igbm9uLUlQdjYgdmFsdWVzIChJUHY2IGNvbnRhaW5zICc6Oicgb3IgPjEgJzonKS5cbiAgaWYgKGguaW5jbHVkZXMoJzonKSAmJiAoaC5tYXRjaCgvOi9nKT8ubGVuZ3RoID8/IDApID09PSAxKSBoID0gaC5zcGxpdCgnOicpWzBdO1xuICByZXR1cm4gaDtcbn1cblxuLyoqIFRydWUgd2hlbiBDb2RlQnVpbGQgKG91dC1vZi1jbHVzdGVyKSBjb3VsZCBub3QgcmVzb2x2ZSB0aGlzIHJlZ2lzdHJ5IGhvc3QuICovXG5mdW5jdGlvbiBpc1VucmVhY2hhYmxlUHVsbEhvc3QocmF3SG9zdDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGggPSBiYXJlSG9zdG5hbWUocmF3SG9zdCk7XG4gIGlmIChoID09PSAnJykgcmV0dXJuIHRydWU7IC8vIG5vIGhvc3Qg4oaSIG1hbGZvcm1lZCBVUklcbiAgaWYgKFVOUkVBQ0hBQkxFX1BVTExfSE9TVFMuaGFzKGgpKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIFVOUkVBQ0hBQkxFX0hPU1RfU1VGRklYRVMuc29tZSgocykgPT4gaC5lbmRzV2l0aChzKSk7XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZXh0ZXJuYWwgKG91dC1vZi1jbHVzdGVyKSByZWdpc3RyeSBwdWxsIGhvc3QgKyBgOnBvcnRgIHN1ZmZpeCBmb3JcbiAqIGEgQ29kZUJ1aWxkIGltYWdlIFVSSSwgYW5kIGZhaWwgZmFzdCBpZiBpdCByZXNvbHZlZCB0byBhbiBpbi1jbHVzdGVyL2xvY2FsXG4gKiBkZWZhdWx0IHRoYXQgQ29kZUJ1aWxkIGNhbid0IHJlYWNoLlxuICpcbiAqIFByZWZlcnMgYHB1bGxIb3N0YC9gcHVsbFBvcnRgICh0aGUgcHVibGljIGVuZHBvaW50IENvZGVCdWlsZCBjYW4gcmVzb2x2ZSkgYW5kXG4gKiBmYWxscyBiYWNrIHRvIGBob3N0YC9gcG9ydGAgZm9yIHNpbmdsZS1ob3N0IGRlcGxveXMuIHBpcGVsaW5lLW1hbmFnZXIgYmFrZXNcbiAqIHRoZSByaWdodCBwdWxsIGhvc3QgaW50byB0aGUgc3ludGggYXV0b21hdGljYWxseSBmcm9tIHRoZSBwbGF0Zm9ybSBVUkwgaXRcbiAqIGRlcGxveXMgYWdhaW5zdCAoYHByb3BzLnJlZ2lzdHJ5YCk7IHRoaXMgZ3VhcmQgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSBuZWl0aGVyXG4gKiB0aGF0IG5vciBgSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUYC9gUExBVEZPUk1fQkFTRV9VUkxgIHdhcyBzdXBwbGllZC5cbiAqXG4gKiBFc2NhcGUgaGF0Y2g6IGBBTExPV19JTkNMVVNURVJfUFVMTF9IT1NUPXRydWVgIChlLmcuIENvZGVCdWlsZCBpbiBhIFZQQyB3aG9zZVxuICogcHJpdmF0ZSBETlMgZ2VudWluZWx5IHJlc29sdmVzIHRoZSBpbi1jbHVzdGVyIG5hbWUpLlxuICovXG5mdW5jdGlvbiByZXNvbHZlRXh0ZXJuYWxQdWxsVGFyZ2V0KFxuICByZWdpc3RyeTogeyBob3N0Pzogc3RyaW5nOyBwb3J0PzogbnVtYmVyOyBwdWxsSG9zdD86IHN0cmluZzsgcHVsbFBvcnQ/OiBudW1iZXIgfSxcbik6IHsgaG9zdDogc3RyaW5nOyBwb3J0UGFydDogc3RyaW5nIH0ge1xuICBjb25zdCBob3N0ID0gcmVnaXN0cnkucHVsbEhvc3QgfHwgcmVnaXN0cnkuaG9zdCB8fCAnJztcbiAgY29uc3QgcG9ydCA9IHJlZ2lzdHJ5LnB1bGxQb3J0ID8/IHJlZ2lzdHJ5LnBvcnQ7XG4gIGlmIChwcm9jZXNzLmVudi5BTExPV19JTkNMVVNURVJfUFVMTF9IT1NUICE9PSAndHJ1ZScgJiYgaXNVbnJlYWNoYWJsZVB1bGxIb3N0KGhvc3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFJlZ2lzdHJ5IHB1bGwgaG9zdCByZXNvbHZlZCB0byAnJHtob3N0fScsIHdoaWNoIEFXUyBDb2RlQnVpbGQgY2Fubm90IHJlYWNoIOKAlCBpdCBpcyB0aGUgYCArXG4gICAgICAnaW4tY2x1c3Rlci9sb2NhbCBkZWZhdWx0LiBUaGUgc3ludGhlc2l6ZWQgcGlwZWxpbmUgd291bGQgZmFpbCBhdCBidWlsZCB0aW1lIHdpdGggJyArXG4gICAgICAnQlVJTERfQ09OVEFJTkVSX1VOQUJMRV9UT19QVUxMX0lNQUdFLiBTZXQgdGhlIHBsYXRmb3JtXFwncyBwdWJsaWMgaG9zdCB2aWEgJyArXG4gICAgICAnSU1BR0VfUkVHSVNUUllfUFVMTF9IT1NUIG9yIFBMQVRGT1JNX0JBU0VfVVJMIGJlZm9yZSBkZXBsb3lpbmcg4oCUIHBpcGVsaW5lLW1hbmFnZXIgYmFrZXMgJyArXG4gICAgICAndGhpcyBpbiBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHBsYXRmb3JtIFVSTCBpdCBkZXBsb3lzIGFnYWluc3QuICcgK1xuICAgICAgJ1NldCBBTExPV19JTkNMVVNURVJfUFVMTF9IT1NUPXRydWUgdG8gYnlwYXNzIChpbi1WUEMgcHJpdmF0ZSBETlMpLicsXG4gICAgKTtcbiAgfVxuICBjb25zdCBwb3J0UGFydCA9IHBvcnQgJiYgcG9ydCAhPT0gODAgJiYgcG9ydCAhPT0gNDQzID8gYDoke3BvcnR9YCA6ICcnO1xuICByZXR1cm4geyBob3N0LCBwb3J0UGFydCB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIENvZGVCdWlsZCBpbWFnZSB0byB1c2UgZm9yIGEgcGx1Z2luLlxuICpcbiAqIFN0cmF0ZWd5OlxuICogICAxLiBJZiB0aGUgcGx1Z2luIHNldHMgYGF3czpjZGs6Y29kZWJ1aWxkOmJ1aWxkZW52aXJvbm1lbnQ6YnVpbGRJbWFnZWBcbiAqICAgICAgZXhwbGljaXRseSBpbiBtZXRhZGF0YSwgdGhlIG1ldGFkYXRhLWJ1aWxkZXIgcGFzc3Rocm91Z2ggaGFuZGxlcyBpdFxuICogICAgICAodmlhIGBtZXRhZGF0YUZvckJ1aWxkRW52aXJvbm1lbnRgKS4gVGhpcyBmdW5jdGlvbiByZXR1cm5zXG4gKiAgICAgIGB1bmRlZmluZWRgIGFuZCB0aGUgbWV0YWRhdGEgd2lucy5cbiAqICAgMi4gT3RoZXJ3aXNlLCBpZiB0aGUgcGx1Z2luIGhhcyBhIGBuYW1lYCtgdmVyc2lvbmAgQU5EIHRoZSByZWdpc3RyeVxuICogICAgICBjb25maWcgaXMgcG9wdWxhdGVkLCBidWlsZCBhIGBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KClgXG4gKiAgICAgIGltYWdlIHBvaW50aW5nIGF0IGA8cmVnaXN0cnktaG9zdD46PHBvcnQ+Lzxucz4vPG5hbWU+Ojx2ZXJzaW9uPmBcbiAqICAgICAgd2hlcmUgYDxucz5gIGlzIGBzeXN0ZW1gIG9yIGBvcmctPG9yZ0lkPmAuIENvZGVCdWlsZCBhdXRoZW50aWNhdGVzIGJ5XG4gKiAgICAgIHNlbmRpbmcgdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGggdG9cbiAqICAgICAgYHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5YCdzIGAvdG9rZW5gIGVuZHBvaW50OyB0aGUgSldUIGluIGBwYXNzd29yZGBcbiAqICAgICAgcmVzb2x2ZXMgdG8gYSByZWdpc3RyeSB0b2tlbiBzY29wZWQgdG8gdGhlIG9yZy5cbiAqICAgMy4gSWYgYG1ldGFkYXRhX29ubHlgLCByZXR1cm4gYHVuZGVmaW5lZGAgc28gQ29kZUJ1aWxkIHVzZXMgaXRzIGRlZmF1bHRcbiAqICAgICAgKGBzdGFuZGFyZDo3LjBgKS5cbiAqXG4gKiBgc2NvcGVgIGFuZCBgb3JnSWRgIGFyZSByZXF1aXJlZDogdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGlzIG5hbWVkXG4gKiBgcGlwZWxpbmUtYnVpbGRlci88b3JnSWQ+L3BsYXRmb3JtYCwgYW5kIGBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMigpYFxuICogbmVlZHMgYSBDb25zdHJ1Y3QgdG8gYW5jaG9yIHRoZSBpbXBvcnRlZCBzZWNyZXQgdG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUGx1Z2luSW1hZ2Uoc2NvcGU6IENvbnN0cnVjdCB8IHVuZGVmaW5lZCwgcGx1Z2luOiBQbHVnaW4sIG9yZ0lkPzogc3RyaW5nKTogSUJ1aWxkSW1hZ2UgfCB1bmRlZmluZWQge1xuICAvLyBgbWV0YWRhdGFfb25seWAgcGx1Z2lucyBsZWdpdGltYXRlbHkgaGF2ZSBubyBpbWFnZSDigJQgdGhlaXIgd29yayBydW5zXG4gIC8vIGluIHRoZSBkZWZhdWx0IENvZGVCdWlsZCBpbWFnZS4gUXVpZXQgc2tpcC5cbiAgaWYgKHBsdWdpbi5idWlsZFR5cGUgPT09ICdtZXRhZGF0YV9vbmx5JykgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAvLyBidWlsZF9pbWFnZSAvIHByZWJ1aWx0IHBsdWdpbnMgbXVzdCBoYXZlIG5hbWUgKyB2ZXJzaW9uIChEQiBjb25zdHJhaW50XG4gIC8vIG1ha2VzIGJvdGggTk9UIE5VTEwpLiBEZWZlbnNpdmUgY2hlY2sgaW4gY2FzZSBhIG1hbGZvcm1lZCByb3cgc2xpcHMgaW4uXG4gIGlmICghcGx1Z2luLm5hbWUgfHwgIXBsdWdpbi52ZXJzaW9uKSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBoYXMgYnVpbGRUeXBlPSR7cGx1Z2luLmJ1aWxkVHlwZX0gYnV0IG1pc3NpbmcgbmFtZS92ZXJzaW9uIOKAlCBgICtcbiAgICAgICdDb2RlQnVpbGQgd2lsbCBydW4gb24gYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjAgYW5kIHdvblxcJ3QgaGF2ZSB0aGUgcGx1Z2luXFwncyBiYWtlZCB0b29scy4nLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCByZWdpc3RyeTtcbiAgdHJ5IHtcbiAgICByZWdpc3RyeSA9IENvbmZpZy5nZXQoJ3JlZ2lzdHJ5Jyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIENvbmZpZyBuYW1lc3BhY2Ugbm90IGxvYWRlZCAoZS5nLiwgdW5pdCB0ZXN0cyB3aXRob3V0IGZ1bGwgY29uZmlnKS5cbiAgICBsb2cud2FybihcbiAgICAgIGBQbHVnaW4gXCIke3BsdWdpbi5uYW1lfToke3BsdWdpbi52ZXJzaW9ufVwiIG5lZWRzIHRoZSByZWdpc3RyeSBjb25maWcgYnV0IGl0J3Mgbm90IGxvYWRlZCDigJQgYCArXG4gICAgICAnQ29kZUJ1aWxkIHdpbGwgZmFsbCBiYWNrIHRvIGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6OC4wLiAnICtcbiAgICAgICdTZXQgSU1BR0VfUkVHSVNUUllfSE9TVCArIElNQUdFX1JFR0lTVFJZX1BPUlQgaW4gcGlwZWxpbmUtbWFuYWdlclxcJ3MgZW52aXJvbm1lbnQuJyxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIXJlZ2lzdHJ5Py5ob3N0KSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX06JHtwbHVnaW4udmVyc2lvbn1cIiBuZWVkcyBJTUFHRV9SRUdJU1RSWV9IT1NUIGJ1dCBpdCdzIGVtcHR5IOKAlCBgICtcbiAgICAgICdDb2RlQnVpbGQgd2lsbCBmYWxsIGJhY2sgdG8gYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjAuICcgK1xuICAgICAgJ1NldCBJTUFHRV9SRUdJU1RSWV9IT1NUIGluIHBpcGVsaW5lLW1hbmFnZXJcXCdzIGVudmlyb25tZW50IHRvIHVzZSB0aGUgcGx1Z2luIGltYWdlLicsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICghc2NvcGUpIHtcbiAgICBsb2cud2FybihgUGx1Z2luIFwiJHtwbHVnaW4ubmFtZX1cIiBpbWFnZSByZXNvbHV0aW9uIHNraXBwZWQ6IG5vIGNvbnN0cnVjdCBzY29wZSBwcm92aWRlZGApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBQZXItb3JnIGF1dGggcmVxdWlyZXMgb3JnSWQg4oCUIHRoZSBTZWNyZXQgaXMgbmFtZWQgcGVyIG9yZy5cbiAgaWYgKCFvcmdJZCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgaW1hZ2UgcmVzb2x1dGlvbiBza2lwcGVkOiBvcmdJZCBpcyByZXF1aXJlZCB0byBgICtcbiAgICAgICdyZXNvbHZlIHRoZSBwZXItb3JnIHBsYXRmb3JtIFNlY3JldCB1c2VkIGZvciBDb2RlQnVpbGQgQmFzaWMgYXV0aC4nLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIENvbXBvc2UgdGhlIGltYWdlIFVSSS4gTmFtZXNwYWNlIGJ5IG93bmVyc2hpcDpcbiAgLy8gICAtIFBsdWdpbnMgb3duZWQgYnkgdGhlIHN5c3RlbSBvcmcg4oaSIGBzeXN0ZW0vPG5hbWU+Ojx2ZXJzaW9uPmAuXG4gIC8vICAgICBwaXBlbGluZS1pbWFnZS1yZWdpc3RyeSdzIHRva2VuIHNlcnZpY2UgZ3JhbnRzIHB1bGwgb24gYHN5c3RlbS8qYFxuICAvLyAgICAgdG8gYW55IGF1dGhlbnRpY2F0ZWQgb3JnIHVzZXIgKHJlYWQtb25seSBjYXRhbG9nIG9mIHNoYXJlZCBwbHVnaW5zKS5cbiAgLy8gICAtIFBsdWdpbnMgb3duZWQgYnkgYSB0ZW5hbnQgb3JnIOKGkiBgb3JnLTxvcmdJZD4vPG5hbWU+Ojx2ZXJzaW9uPmAuXG4gIC8vICAgICBUaGUgdG9rZW4gc2VydmljZSBncmFudHMgcHVsbCxwdXNoIG9ubHkgdG8gbWVtYmVycyBvZiB0aGF0IG9yZy5cbiAgLy8gVGhlIHBsdWdpbidzIG93biBgb3JnSWRgIChub3QgdGhlIGNhbGxlcidzKSBkZWNpZGVzIHRoZSBuYW1lc3BhY2Ug4oCUXG4gIC8vIHRlbmFudCBwaXBlbGluZXMgcHVsbGluZyBzaGFyZWQgc3lzdGVtIHBsdWdpbnMgc3RpbGwgZ2V0IHRoZSBgc3lzdGVtL2BcbiAgLy8gcGF0aCBiZWNhdXNlIHRoYXQncyB3aGVyZSB0aGUgaW1hZ2UgYWN0dWFsbHkgbGl2ZXMuXG4gIC8vIFVzZSB0aGUgZXh0ZXJuYWwgcHVsbCBob3N0L3BvcnQ6IHRoaXMgaW1hZ2UgVVJJIGlzIGNvbnN1bWVkIGJ5IEFXU1xuICAvLyBDb2RlQnVpbGQgKG91dC1vZi1jbHVzdGVyKSwgd2hpY2ggY2FuJ3QgcmVzb2x2ZSB0aGUgaW4tY2x1c3RlclxuICAvLyBgcmVnaXN0cnk6NTAwMGAgQ2x1c3RlcklQLiBGYWxsIGJhY2sgdG8gYGhvc3RgL2Bwb3J0YCBmb3Igc2luZ2xlLWhvc3QgL1xuICAvLyBpbi1jbHVzdGVyLW9ubHkgZGVwbG95cyB3aGVyZSBubyBzZXBhcmF0ZSBwdWxsIGhvc3QgaXMgY29uZmlndXJlZC5cbiAgY29uc3QgeyBob3N0OiBwdWxsSG9zdCwgcG9ydFBhcnQgfSA9IHJlc29sdmVFeHRlcm5hbFB1bGxUYXJnZXQocmVnaXN0cnkpO1xuICAvLyBNdXN0IG1hdGNoIHRoZSBQVVNIIHNpZGUgKGFwaS9wbHVnaW4gcGx1Z2luVXJpKSBleGFjdGx5LCBvciBhIHN5c3RlbVxuICAvLyBwbHVnaW4ncyBpbWFnZSBpcyBwdXNoZWQgdG8gYHN5c3RlbS/igKZgIGJ1dCB0aGlzIHN5bnRoIHB1bGxzIGZyb21cbiAgLy8gYG9yZy08b2JqZWN0aWQ+L+KApmAg4oaSIGJ1aWxkLXRpbWUgcHVsbCBmYWlsdXJlLiBgU1lTVEVNX09SR19JRGAgaXMgdGhlXG4gIC8vIHdlbGwta25vd24gT2JqZWN0SWQgKE5PVCB0aGUgc3RyaW5nICdzeXN0ZW0nKS5cbiAgY29uc3QgbmFtZXNwYWNlID0gcGx1Z2luLm9yZ0lkID09PSBTWVNURU1fT1JHX0lEID8gJ3N5c3RlbScgOiBgb3JnLSR7cGx1Z2luLm9yZ0lkfWA7XG4gIGNvbnN0IGltYWdlVXJpID0gYCR7cHVsbEhvc3R9JHtwb3J0UGFydH0vJHtuYW1lc3BhY2V9LyR7cGx1Z2luLm5hbWV9OiR7cGx1Z2luLnZlcnNpb259YDtcblxuICAvLyBDb2RlQnVpbGQgcmVhZHMgYHBpcGVsaW5lLWJ1aWxkZXIvPG9yZ0lkPi9wbGF0Zm9ybWAgYW5kIHNlbmRzIGl0c1xuICAvLyBgdXNlcm5hbWVgL2BwYXNzd29yZGAgZmllbGRzIGFzIEhUVFAgQmFzaWMgdG8gdGhlIHJlZ2lzdHJ5LiBUaGVcbiAgLy8gcmVnaXN0cnkgY2hhbGxlbmdlcyB3aXRoIGEgQmVhcmVyIHJlYWxtIHBvaW50aW5nIGF0XG4gIC8vIHBpcGVsaW5lLWltYWdlLXJlZ2lzdHJ5J3MgYC90b2tlbmAgZW5kcG9pbnQ7IHRoZSBEb2NrZXIgY2xpZW50IGZvcndhcmRzXG4gIC8vIHRob3NlIGNyZWRzLCB0aGUgcGFzc3dvcmQgaXMgdmVyaWZpZWQgYXMgYSBwbGF0Zm9ybSBKV1QsIGFuZCBhIHJlZ2lzdHJ5XG4gIC8vIHRva2VuIHNjb3BlZCB0byB0aGUgb3JnIGlzIGlzc3VlZC5cbiAgLy9cbiAgLy8gU2FtZSBTZWNyZXQgaXMgcmVhZCBieSB0aGUgcGx1Z2luLWxvb2t1cCBMYW1iZGEgKHZpYSB0aGUgYHBhc3N3b3JkYFxuICAvLyBmaWVsZCkg4oCUIG9uZSBTZWNyZXQgc2VydmVzIGJvdGggZmxvd3MuXG4gIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICBjb25zdCBzZWNyZXROYW1lID0gQ29yZUNvbnN0YW50cy5zZWNyZXRQYXRoKG9yZ0lkLCAncGxhdGZvcm0nKTtcbiAgLy8gQ0RLIGNvbnN0cnVjdCBJRHMgYWxsb3cgb25seSBbQS1aYS16MC05Xy1dOyBzYW5pdGl6ZSB0aGUgc2VjcmV0IG5hbWUuXG4gIGNvbnN0IHNlY3JldENvbnN0cnVjdElkID0gYFBsYXRmb3JtQ3JlZHNfJHtzZWNyZXROYW1lLnJlcGxhY2UoL1teQS1aYS16MC05Xy1dL2csICdfJyl9YDtcbiAgY29uc3QgY3JlZGVudGlhbHNTZWNyZXQgPSAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoc2VjcmV0Q29uc3RydWN0SWQpIGFzIFNlY3JldCB8IHVuZGVmaW5lZClcbiAgICA/PyBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihzdGFjaywgc2VjcmV0Q29uc3RydWN0SWQsIHNlY3JldE5hbWUpO1xuXG4gIHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KGltYWdlVXJpLCB7XG4gICAgc2VjcmV0c01hbmFnZXJDcmVkZW50aWFsczogY3JlZGVudGlhbHNTZWNyZXQsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIGZhbGxiYWNrIENvZGVCdWlsZCBpbWFnZSBmb3Igc3RlcHMgd2l0aG91dCBhIHBsdWdpbi1iYWtlZCBvbmUuXG4gKlxuICogUmVhZHMgYGF3cy5jb2RlQnVpbGQuZGVmYXVsdEltYWdlYCAoZW52OiBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0VgKS5cbiAqIERlZmF1bHQ6IGBwaXBlbGluZS1ib290c3RyYXA6MS4wYCDigJQgdGhlIGxvY2FsIHRhZyBidWlsdCBieVxuICogYGRlcGxveS9jb2RlYnVpbGQvYm9vdHN0cmFwL0RvY2tlcmZpbGVgLlxuICpcbiAqIC0gQVdTIGN1cmF0ZWQgaW1hZ2UgKGBhd3MvY29kZWJ1aWxkLypgKTogdXNlIHRoZSBtYXRjaGluZyBgTGludXhCdWlsZEltYWdlYFxuICogICBjb25zdGFudCBzbyBDREsgZW1pdHMgYGltYWdlUHVsbENyZWRlbnRpYWxzVHlwZTogQ09ERUJVSUxEYC4gVXNpbmdcbiAqICAgYGZyb21Eb2NrZXJSZWdpc3RyeSgpYCBoZXJlIHdvdWxkIHNldCBTRVJWSUNFX1JPTEUgY3JlZGVudGlhbHMsIHdoaWNoXG4gKiAgIENGTiByZWplY3RzIHdpdGggXCJjYW5ub3QgdXNlIGEgQ29kZUJ1aWxkIGN1cmF0ZWQgaW1hZ2Ugd2l0aFxuICogICBpbWFnZVB1bGxDcmVkZW50aWFsc1R5cGUgU0VSVklDRV9ST0xFXCIuXG4gKiAtIEJhcmUgdGFnIChubyBgL2ApOiBhdXRvLXByZWZpeGVkIHRvXG4gKiAgIGA8cmVnaXN0cnktaG9zdD46PHBvcnQ+L2xpYnJhcnkvPHRhZz5gIHVzaW5nIHRoZSByZWdpc3RyeSBjb25maWcsXG4gKiAgIHdpdGggdGhlIHBlci1vcmcgcGxhdGZvcm0gU2VjcmV0IGFzIEJhc2ljIGF1dGgg4oCUIHNhbWUgcGF0aFxuICogICBgcmVzb2x2ZVBsdWdpbkltYWdlKClgIHVzZXMgZm9yIHBsdWdpbiBpbWFnZXMuIE5lZWRzIGBzY29wZWAgKyBgb3JnSWRgLlxuICogLSBGdWxseS1xdWFsaWZpZWQgcmVnaXN0cnkgVVJJIChjb250YWlucyBgL2ApOiB1c2VkIGFzLWlzLCBubyBhdXRoIHdpcmVkLlxuICogLSBNaXNzaW5nIHJlZ2lzdHJ5IGNvbmZpZyBvciBzY29wZS9vcmdJZCDihpIgZmFsbHMgYmFjayB0b1xuICogICBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo4LjBgIChhcyBhIENVUkFURUQgaW1hZ2UsIHNlZSBhYm92ZSksIHdpdGggYVxuICogICB3YXJuaW5nIHNvIHN5bnRoIGRlZ3JhZGVzIGdyYWNlZnVsbHkgb24gcGFydGlhbGx5IGNvbmZpZ3VyZWQgZW52cy5cbiAqL1xuY29uc3QgU1RBTkRBUkRfOF8wID0gJ2F3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6OC4wJztcblxuLyoqXG4gKiBhd3MtY2RrLWxpYiAyLjI1OCBoYXMgbm8gYExpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF84XzBgIHN0YXRpYyB5ZXQsIHNvIHRoZVxuICogY3VyYXRlZCA4LjAgZmFsbGJhY2sgcmVzb2x2ZXMgdmlhIGBmcm9tQ29kZUJ1aWxkSW1hZ2VJZGAgKHN0aWxsIENPREVCVUlMRCBjcmVkcykuXG4gKi9cbmNvbnN0IGZhbGxiYWNrQnVpbGRJbWFnZSA9ICgpOiBJQnVpbGRJbWFnZSA9PiBMaW51eEJ1aWxkSW1hZ2UuZnJvbUNvZGVCdWlsZEltYWdlSWQoU1RBTkRBUkRfOF8wKTtcblxuLyoqXG4gKiBNYXAgQVdTIGN1cmF0ZWQgYGF3cy9jb2RlYnVpbGQvKmAgaW1hZ2Ugc3RyaW5ncyB0byB0aGUgbWF0Y2hpbmdcbiAqIGBMaW51eEJ1aWxkSW1hZ2VgIHN0YXRpYy4gRXh0ZW5kIHdoZW4gbmV3ZXIgc3RhbmRhcmQgaW1hZ2VzIHNoaXAuXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIGZvciBub24tY3VyYXRlZCBzdHJpbmdzIOKAlCBjYWxsZXIgc2hvdWxkIHVzZVxuICogYGZyb21Eb2NrZXJSZWdpc3RyeSgpYCBmb3IgdGhvc2UuXG4gKi9cbmZ1bmN0aW9uIGN1cmF0ZWRMaW51eEJ1aWxkSW1hZ2UoaW1hZ2VJZDogc3RyaW5nKTogSUJ1aWxkSW1hZ2UgfCB1bmRlZmluZWQge1xuICBpZiAoIWltYWdlSWQuc3RhcnRzV2l0aCgnYXdzL2NvZGVidWlsZC8nKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgc3dpdGNoIChpbWFnZUlkKSB7XG4gICAgY2FzZSAnYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo2LjAnOiByZXR1cm4gTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzZfMDtcbiAgICBjYXNlICdhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjUuMCc6IHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNV8wO1xuICAgIC8vIE5ld2VyIGNvZGVuYW1lZCBpbWFnZXMgcm91dGUgdGhyb3VnaCBmcm9tQ29kZUJ1aWxkSW1hZ2VJZCwgd2hpY2hcbiAgICAvLyBDREsgYWxzbyBtYXJrcyBhcyBDT0RFQlVJTEQgY3JlZGVudGlhbHMgKGN1cmF0ZWQpLlxuICAgIGRlZmF1bHQ6IHJldHVybiBMaW51eEJ1aWxkSW1hZ2UuZnJvbUNvZGVCdWlsZEltYWdlSWQoaW1hZ2VJZCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEZWZhdWx0QnVpbGRJbWFnZShzY29wZT86IENvbnN0cnVjdCwgb3JnSWQ/OiBzdHJpbmcpOiBJQnVpbGRJbWFnZSB7XG4gIGxldCBjb25maWd1cmVkOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgY29uZmlndXJlZCA9IENvbmZpZy5nZXQoJ2F3cycpLmNvZGVCdWlsZC5kZWZhdWx0SW1hZ2U7XG4gIH0gY2F0Y2gge1xuICAgIGNvbmZpZ3VyZWQgPSBTVEFOREFSRF84XzA7XG4gIH1cblxuICAvLyBBV1MgY3VyYXRlZCBpbWFnZSDihpIgQ09ERUJVSUxEIGNyZWRlbnRpYWxzLiBNVVNUIGdvIHRocm91Z2ggdGhlXG4gIC8vIExpbnV4QnVpbGRJbWFnZSBjb25zdGFudHMsIG5vdCBmcm9tRG9ja2VyUmVnaXN0cnkoKS5cbiAgY29uc3QgY3VyYXRlZCA9IGN1cmF0ZWRMaW51eEJ1aWxkSW1hZ2UoY29uZmlndXJlZCk7XG4gIGlmIChjdXJhdGVkKSByZXR1cm4gY3VyYXRlZDtcblxuICAvLyBGdWxseS1xdWFsaWZpZWQgVVJJIOKAlCBvcGVyYXRvciBvd25zIGl0LiBObyByZWdpc3RyeS9TZWNyZXQgd2lyaW5nLlxuICBpZiAoY29uZmlndXJlZC5pbmNsdWRlcygnLycpKSB7XG4gICAgcmV0dXJuIExpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoY29uZmlndXJlZCk7XG4gIH1cblxuICAvLyBCYXJlIHRhZyDihpIgYXV0by1wcmVmaXggd2l0aCB0aGUgcGxhdGZvcm0gcmVnaXN0cnksIG1pcnJvcmluZ1xuICAvLyByZXNvbHZlUGx1Z2luSW1hZ2UoKS4gQmFpbCB0byB0aGUgY3VyYXRlZCBzdGFuZGFyZDo4LjAgZmFsbGJhY2tcbiAgLy8gKHdpdGggYSB3YXJuaW5nKSBhdCBlYWNoIG1pc3NpbmcgcHJlcmVxdWlzaXRlIHNvIHN5bnRoIGRlZ3JhZGVzXG4gIC8vIGdyYWNlZnVsbHkgb24gcGFydGlhbGx5IGNvbmZpZ3VyZWQgZW52aXJvbm1lbnRzIGluc3RlYWQgb2YgZmFpbGluZy5cbiAgbGV0IHJlZ2lzdHJ5O1xuICB0cnkge1xuICAgIHJlZ2lzdHJ5ID0gQ29uZmlnLmdldCgncmVnaXN0cnknKTtcbiAgfSBjYXRjaCB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0U9JyR7Y29uZmlndXJlZH0nIGlzIGEgYmFyZSB0YWcgYnV0IHJlZ2lzdHJ5IGNvbmZpZyBub3QgbG9hZGVkIOKAlCBgICtcbiAgICAgIGBmYWxsaW5nIGJhY2sgdG8gJHtTVEFOREFSRF84XzB9LiBTZXQgSU1BR0VfUkVHSVNUUllfSE9TVCArIElNQUdFX1JFR0lTVFJZX1BPUlQuYCxcbiAgICApO1xuICAgIHJldHVybiBmYWxsYmFja0J1aWxkSW1hZ2UoKTtcbiAgfVxuICBpZiAoIXJlZ2lzdHJ5Py5ob3N0KSB7XG4gICAgbG9nLndhcm4oXG4gICAgICBgQ09ERUJVSUxEX0RFRkFVTFRfSU1BR0U9JyR7Y29uZmlndXJlZH0nIGlzIGEgYmFyZSB0YWcgYnV0IElNQUdFX1JFR0lTVFJZX0hPU1QgaXMgZW1wdHkg4oCUIGAgK1xuICAgICAgYGZhbGxpbmcgYmFjayB0byAke1NUQU5EQVJEXzhfMH0uYCxcbiAgICApO1xuICAgIHJldHVybiBmYWxsYmFja0J1aWxkSW1hZ2UoKTtcbiAgfVxuICBpZiAoIXNjb3BlIHx8ICFvcmdJZCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYENPREVCVUlMRF9ERUZBVUxUX0lNQUdFPScke2NvbmZpZ3VyZWR9JyBuZWVkcyBzY29wZStvcmdJZCBmb3IgU2VjcmV0IGF1dGgg4oCUIGAgK1xuICAgICAgYGZhbGxpbmcgYmFjayB0byAke1NUQU5EQVJEXzhfMH0uIChDYWxsZXIgZGlkIG5vdCBzdXBwbHkgdGhlbS4pYCxcbiAgICApO1xuICAgIHJldHVybiBmYWxsYmFja0J1aWxkSW1hZ2UoKTtcbiAgfVxuXG4gIC8vIFVzZSB0aGUgZXh0ZXJuYWwgcHVsbCBob3N0L3BvcnQgKG5vdCB0aGUgaW4tY2x1c3RlciBob3N0KSDigJQgdGhpcyBVUkkgaXNcbiAgLy8gY29uc3VtZWQgYnkgQVdTIENvZGVCdWlsZCwgd2hpY2ggY2FuJ3QgcmVzb2x2ZSB0aGUgYHJlZ2lzdHJ5OjUwMDBgIENsdXN0ZXJJUC5cbiAgY29uc3QgeyBob3N0OiBwdWxsSG9zdCwgcG9ydFBhcnQgfSA9IHJlc29sdmVFeHRlcm5hbFB1bGxUYXJnZXQocmVnaXN0cnkpO1xuICBjb25zdCBpbWFnZVVyaSA9IGAke3B1bGxIb3N0fSR7cG9ydFBhcnR9L2xpYnJhcnkvJHtjb25maWd1cmVkfWA7XG5cbiAgLy8gU2FtZSBTZWNyZXQgYXMgcmVzb2x2ZVBsdWdpbkltYWdlIOKAlCBwZXItb3JnIHBsYXRmb3JtIFNlY3JldCwgQ29kZUJ1aWxkXG4gIC8vIHNlbmRzIGl0IGFzIEJhc2ljIGF1dGgsIGltYWdlLXJlZ2lzdHJ5IHZlcmlmaWVzIHRoZSBKV1QgaW4gYHBhc3N3b3JkYC5cbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gIGNvbnN0IHNlY3JldE5hbWUgPSBDb3JlQ29uc3RhbnRzLnNlY3JldFBhdGgob3JnSWQsICdwbGF0Zm9ybScpO1xuICBjb25zdCBzZWNyZXRDb25zdHJ1Y3RJZCA9IGBQbGF0Zm9ybUNyZWRzXyR7c2VjcmV0TmFtZS5yZXBsYWNlKC9bXkEtWmEtejAtOV8tXS9nLCAnXycpfWA7XG4gIGNvbnN0IGNyZWRlbnRpYWxzU2VjcmV0ID0gKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKHNlY3JldENvbnN0cnVjdElkKSBhcyBTZWNyZXQgfCB1bmRlZmluZWQpXG4gICAgPz8gU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoc3RhY2ssIHNlY3JldENvbnN0cnVjdElkLCBzZWNyZXROYW1lKTtcblxuICByZXR1cm4gTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShpbWFnZVVyaSwge1xuICAgIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHM6IGNyZWRlbnRpYWxzU2VjcmV0LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBDb2RlQnVpbGQgc3RlcCBvciBTaGVsbCBzdGVwIGJhc2VkIG9uIHBsdWdpbiBjb25maWd1cmF0aW9uLlxuICpcbiAqIE1ldGFkYXRhIG1lcmdlIG9yZGVyIChsYXN0IHdpbnMpOlxuICogICAxLiBQbHVnaW4gbWV0YWRhdGEgKGZyb20gcGx1Z2luLm1ldGFkYXRhIGluIGRhdGFiYXNlKSDigJQgdGhlIHBsdWdpblxuICogICAgICBhdXRob3IncyBiYWtlZC1pbiBkZWZhdWx0c1xuICogICAyLiBTdGVwLWxldmVsIG1ldGFkYXRhIChmcm9tIG9wdGlvbnMubWV0YWRhdGEpIOKAlCB0aGUgcGlwZWxpbmUgYXV0aG9yJ3NcbiAqICAgICAgcGVyLXN0ZXAgb3ZlcnJpZGVzLCB3aGljaCBhcmUgbW9yZSBzcGVjaWZpYyBhbmQgbXVzdCB3aW5cbiAqXG4gKiBFbnZpcm9ubWVudCBtZXJnZSBvcmRlciAobGFzdCB3aW5zKTpcbiAqICAgMS4gUGx1Z2luIGVudiB2YXJzIChmcm9tIHBsdWdpbi5lbnYpXG4gKiAgIDIuIEN1c3RvbSBlbnYgdmFycyAoZnJvbSBvcHRpb25zLmVudilcbiAqICAgMy4gV09SS0RJUiBmcm9tIG1lcmdlZCBtZXRhZGF0YVxuICpcbiAqIENESyBwcm9wIHNwcmVhZCBvcmRlciAobGFzdCB3aW5zKTpcbiAqICAgcHJvZ3JhbW1hdGljIGRlZmF1bHRzIChpbnB1dCwgY29tbWFuZHMsIGVudiwgbmV0d29yaykg4oaSIG1ldGFkYXRhIG92ZXJyaWRlc1xuICpcbiAqIFRoaXMgbWVhbnMgbWV0YWRhdGEga2V5cyBsaWtlIGBhd3M6Y2RrOnBpcGVsaW5lczpjb2RlYnVpbGRzdGVwOmNvbW1hbmRzYFxuICogd2lsbCBvdmVycmlkZSB0aGUgcGx1Z2luLWRlcml2ZWQgY29tbWFuZHMgd2hlbiBleHBsaWNpdGx5IHNldC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvZGVCdWlsZFN0ZXAob3B0aW9uczogQ29kZUJ1aWxkU3RlcE9wdGlvbnMpOiBTaGVsbFN0ZXAgfCBDb2RlQnVpbGRTdGVwIHwgTWFudWFsQXBwcm92YWxTdGVwIHtcbiAgY29uc3Qge1xuICAgIGlkLCBpbnB1dCwgbWV0YWRhdGEsIG5ldHdvcmssIHNjb3BlLFxuICAgIHByZUluc3RhbGxDb21tYW5kcywgcG9zdEluc3RhbGxDb21tYW5kcywgcHJlQ29tbWFuZHMsIHBvc3RDb21tYW5kcyxcbiAgICBlbnY6IGN1c3RvbUVudiwgYWRkaXRpb25hbElucHV0cywgdGltZW91dCwgZmFpbHVyZUJlaGF2aW9yLFxuICAgIGFydGlmYWN0TWFuYWdlciwgc3RhZ2VOYW1lLCBzdGFnZUFsaWFzLCBwbHVnaW5BbGlhcywgb3JnSWQsIHBpcGVsaW5lU2NvcGUsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFJlc29sdmUge3sgLi4uIH19IHRlbXBsYXRlcyBpbiBwbHVnaW4gc3BlYyBmaWVsZHMgYWdhaW5zdCB0aGUgcGlwZWxpbmUgc2NvcGUuXG4gIC8vIEV2ZXJ5IGNhbGwgZ29lcyB0aHJvdWdoIHRoZSByZXNvbHZlciDigJQgcGx1Z2lucyB3aXRob3V0IHRlbXBsYXRlIHRva2VucyBhcmVcbiAgLy8gYSBuby1vcCBmYXN0IHBhdGggaW5zaWRlIHJlc29sdmVQbHVnaW5UZW1wbGF0ZXMoKS5cbiAgY29uc3QgcGx1Z2luID0gcmVzb2x2ZVBsdWdpblRlbXBsYXRlcyhvcHRpb25zLnBsdWdpbiwgcGlwZWxpbmVTY29wZSk7XG5cbiAgLy8gUGVyLXN0ZXAgbWV0YWRhdGEgKHRoZSBwaXBlbGluZSBhdXRob3IncyBvdmVycmlkZXMsIGUuZy4gSkFWQV9WRVJTSU9OPTI1KVxuICAvLyBtdXN0IHdpbiBvdmVyIHRoZSBwbHVnaW4ncyBjYXRhbG9nIGBtZXRhZGF0YWAgZGVmYXVsdHMsIHNvIGl0IGdvZXMgTEFTVC5cbiAgLy8gUmV2ZXJzaW5nIHRoZXNlIHNpbGVudGx5IGRyb3BwZWQgcGVyLXN0ZXAgb3ZlcnJpZGVzIGZvciBhbnkgcGx1Z2luIHRoYXRcbiAgLy8gc2hpcHMgbm9uLWVtcHR5IGNhdGFsb2cgbWV0YWRhdGEgKHBsdWdpbnMgdGhhdCBjYXJyeSBkZWZhdWx0cyB1bmRlciBgZW52YFxuICAvLyBpbnN0ZWFkIOKAlCBsaWtlIGphdmEtY29ycmV0dG8g4oCUIHdlcmUgdW5hZmZlY3RlZCwgd2hpY2ggbWFza2VkIHRoaXMpLlxuICBjb25zdCBtZXJnZWQgPSBtZXJnZShwbHVnaW4ubWV0YWRhdGEgPz8ge30sIG1ldGFkYXRhID8/IHt9KTtcblxuICAvLyBNYW51YWxBcHByb3ZhbFN0ZXA6IG5vIGNvbW1hbmRzLCBlbnYsIGNvbXB1dGUsIG9yIG5ldHdvcmsg4oCUIGp1c3QgaWQgKyBvcHRpb25hbCBjb21tZW50XG4gIGlmIChwbHVnaW4ucGx1Z2luVHlwZSA9PT0gUGx1Z2luVHlwZS5NQU5VQUxfQVBQUk9WQUxfU1RFUCkge1xuICAgIHJldHVybiBuZXcgTWFudWFsQXBwcm92YWxTdGVwKGlkLCB7XG4gICAgICBjb21tZW50OiB0eXBlb2YgbWVyZ2VkLkFQUFJPVkFMX0NPTU1FTlQgPT09ICdzdHJpbmcnID8gbWVyZ2VkLkFQUFJPVkFMX0NPTU1FTlQgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICBsb2cuZGVidWcoJ1tDcmVhdGVDb2RlQnVpbGRTdGVwXSBCdWlsZGluZyBzdGVwIHdpdGggbWVyZ2VkIG1ldGFkYXRhJyk7XG5cbiAgLy8gV2FybiBhYm91dCByZXF1aXJlZCBzZWNyZXRzIHdpdGhvdXQgb3JnSWQgKGNhbid0IHJlc29sdmUpXG4gIGNvbnN0IHJlcXVpcmVkU2VjcmV0cyA9IHBsdWdpbi5zZWNyZXRzPy5maWx0ZXIocyA9PiBzLnJlcXVpcmVkKSA/PyBbXTtcbiAgaWYgKHJlcXVpcmVkU2VjcmV0cy5sZW5ndGggPiAwICYmICFvcmdJZCkge1xuICAgIGxvZy53YXJuKFxuICAgICAgYFBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgZGVjbGFyZXMgJHtyZXF1aXJlZFNlY3JldHMubGVuZ3RofSByZXF1aXJlZCBzZWNyZXQocykgYnV0IG5vIG9yZ0lkIGlzIGF2YWlsYWJsZS4gYCArXG4gICAgICBgU2VjcmV0cyB3aWxsIG5vdCBiZSBpbmplY3RlZDogJHtyZXF1aXJlZFNlY3JldHMubWFwKHMgPT4gcy5uYW1lKS5qb2luKCcsICcpfWAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIFJlc29sdmUgcGx1Z2luIHNlY3JldHMgYXMgU0VDUkVUU19NQU5BR0VSIGVudiB2YXJzIOKAlCBvbmx5IFJFUVVJUkVEIG9uZXMuXG4gIC8vIENvZGVCdWlsZCB0cmVhdHMgYSBTRUNSRVRTX01BTkFHRVIgZW52IHZhciBhcyBNQU5EQVRPUlk6IGl0IGZhaWxzIHRoZSBidWlsZFxuICAvLyBhdCBET1dOTE9BRF9TT1VSQ0UgKFwiUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbjogY2FuJ3QgZmluZCB0aGUgc3BlY2lmaWVkXG4gIC8vIHNlY3JldFwiKSBpZiB0aGUgc2VjcmV0IGlzIGFic2VudC4gQXV0by13aXJpbmcgYW4gT1BUSU9OQUwgc2VjcmV0XG4gIC8vIChgcmVxdWlyZWQ6IGZhbHNlYCwgZS5nLiBOVkRfQVBJX0tFWSAvIFNFTUdSRVBfQVBQX1RPS0VOKSB0aGUgb3BlcmF0b3IgaGFzbid0XG4gIC8vIGNyZWF0ZWQgd291bGQgdGhlcmVmb3JlIGJyZWFrIGV2ZXJ5IGJ1aWxkIOKAlCB0aGUgZXhhY3Qgb3Bwb3NpdGUgb2YgXCJvcHRpb25hbFwiLlxuICAvLyBPcHRpb25hbCBzZWNyZXRzIGFyZSBsZWZ0IGZvciB0aGUgcGx1Z2luIHRvIHJlYWQgb25seSB3aGVyZSB0aGUgb3BlcmF0b3IgaGFzXG4gIC8vIHByb3Zpc2lvbmVkIHRoZW0gKG91dC1vZi1iYW5kIGVudi9zZWNyZXQpLCBub3QgZm9yY2UtaW5qZWN0ZWQgaGVyZS5cbiAgY29uc3Qgc2VjcmV0RW52VmFycyA9IChyZXF1aXJlZFNlY3JldHMubGVuZ3RoICYmIG9yZ0lkKVxuICAgID8gdG9TZWNyZXRFbnZWYXJzKHJlcXVpcmVkU2VjcmV0cywgb3JnSWQpXG4gICAgOiB7fTtcblxuICBjb25zdCBlbnYgPSBidWlsZEVudihwbHVnaW4sIG1lcmdlZCwgY3VzdG9tRW52KTtcblxuICAvLyBDb2RlUGlwZWxpbmUgcmVzb2x2ZWQgdmFyaWFibGVzIOKAlCBtdXN0IGJlIGluIENvZGVCdWlsZFN0ZXAuZW52IChhY3Rpb24tbGV2ZWwpLFxuICAvLyBub3QgYnVpbGRFbnZpcm9ubWVudC5lbnZpcm9ubWVudFZhcmlhYmxlcyAocHJvamVjdC1sZXZlbClcbiAgY29uc3QgYWN0aW9uRW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIFBJUEVMSU5FX0VYRUNVVElPTl9JRDogJyN7Y29kZXBpcGVsaW5lLlBpcGVsaW5lRXhlY3V0aW9uSWR9JyxcbiAgfTtcblxuICBjb25zdCBvdXRwdXREaXIgPSBwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeTtcbiAgY29uc3QgZW5zdXJlT3V0cHV0RGlyID0gKG91dHB1dERpciAmJiAhb3V0cHV0RGlyLmluY2x1ZGVzKCcqJykpXG4gICAgPyBbYG1rZGlyIC1wIFwiJHtvdXRwdXREaXJ9XCIgJiYgdG91Y2ggXCIke291dHB1dERpcn0vLmdpdGtlZXBcImBdXG4gICAgOiBbXTtcblxuICBjb25zdCB7IGluc3RhbGxDb21tYW5kcywgY29tbWFuZHMgfSA9IGJ1aWxkQ29tbWFuZHMocGx1Z2luLCB7XG4gICAgcHJlSW5zdGFsbENvbW1hbmRzOiBbLi4uZW5zdXJlT3V0cHV0RGlyLCAuLi4ocHJlSW5zdGFsbENvbW1hbmRzID8/IFtdKV0sXG4gICAgcG9zdEluc3RhbGxDb21tYW5kcyxcbiAgICBwcmVDb21tYW5kcyxcbiAgICBwb3N0Q29tbWFuZHMsXG4gIH0sIGZhaWx1cmVCZWhhdmlvcik7XG5cbiAgY29uc3QgcHJvZ3JhbW1hdGljID0geyBpbnB1dCwgaW5zdGFsbENvbW1hbmRzLCBjb21tYW5kcyB9O1xuXG4gIC8vIFJlc29sdmUgdGhlIHBsdWdpbidzIHJ1bnRpbWUgaW1hZ2UuIENvZGVCdWlsZCBkZWZhdWx0cyB0b1xuICAvLyBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIHdoZW4gbm8gYGJ1aWxkSW1hZ2VgIGlzIHNldCDigJQgdGhhdCdzIHRoZVxuICAvLyBBV1MtbWFuYWdlZCBVYnVudHUgaW1hZ2UgYW5kIERPRVMgTk9UIGhhdmUgYW55IHBsdWdpbi1iYWtlZCB0b29sc1xuICAvLyAocGlwZWxpbmUtbWFuYWdlciwgc255aywgdGVycmFmb3JtLCBldGMuKS4gV2lyaW5nIHRoZSBwbHVnaW4ncyBpbWFnZVxuICAvLyBoZXJlIG1lYW5zIENvZGVCdWlsZCBwdWxscyBmcm9tIG91ciBwcml2YXRlIHJlZ2lzdHJ5IGFuZCB0aGUgdG9vbHNcbiAgLy8gaW5zdGFsbGVkIGluIHRoZSBwbHVnaW4ncyBEb2NrZXJmaWxlIGFyZSBhY3R1YWxseSBhdmFpbGFibGUuXG4gIGNvbnN0IHBsdWdpbkJ1aWxkSW1hZ2UgPSByZXNvbHZlUGx1Z2luSW1hZ2Uoc2NvcGUsIHBsdWdpbiwgb3JnSWQpO1xuXG4gIC8vIFNoZWxsU3RlcCBicmFuY2guXG4gIC8vIFNoZWxsU3RlcCBpdHNlbGYgZG9lc24ndCBhY2NlcHQgYGJ1aWxkRW52aXJvbm1lbnRgL2BidWlsZEltYWdlYC4gQ0RLXG4gIC8vIHBpcGVsaW5lcyB3cmFwcyBTaGVsbFN0ZXBzIGluIGEgZGVmYXVsdCBDb2RlQnVpbGQgYWN0aW9uIHRoYXQgcnVucyBvblxuICAvLyBgYXdzL2NvZGVidWlsZC9zdGFuZGFyZDo3LjBgIOKAlCB3aGljaCB3b24ndCBoYXZlIHRoZSBwbHVnaW4ncyB0b29scy5cbiAgLy9cbiAgLy8gU28gd2hlbiBhIFNIRUxMX1NURVAgcGx1Z2luIERPRVMgaGF2ZSBhbiBpbWFnZSAoYmVjYXVzZSBpdHMgYXV0aG9yXG4gIC8vIGJha2VkIHRvb2xzIGludG8gYSBEb2NrZXJmaWxlKSwgd2UgUFJPTU9URSBpdCB0byBhIENvZGVCdWlsZFN0ZXAgd2l0aFxuICAvLyB0aGUgcmVzb2x2ZWQgaW1hZ2UuIFRoZSBwbHVnaW4gYXV0aG9yJ3MgaW50ZW50IChcInVzZSBteSBiYWtlZCB0b29sc1wiKVxuICAvLyBpcyBwcmVzZXJ2ZWQgd2l0aG91dCBmb3JjaW5nIHRoZW0gdG8gY2hhbmdlIHBsdWdpblR5cGUuXG4gIC8vXG4gIC8vIFdoZW4gdGhlIHBsdWdpbiBoYXMgbm8gaW1hZ2UgKG9yIHJlZ2lzdHJ5IGlzbid0IGNvbmZpZ3VyZWQpLCB3ZSBrZWVwXG4gIC8vIHRoZSBvcmlnaW5hbCBTaGVsbFN0ZXAg4oCUIGl0J3MgbGlnaHRlciB3ZWlnaHQgYW5kIHRoZSBkZWZhdWx0XG4gIC8vIENvZGVCdWlsZCBpbWFnZSBpcyBmaW5lLlxuICBpZiAocGx1Z2luLnBsdWdpblR5cGUgPT09IFBsdWdpblR5cGUuU0hFTExfU1RFUCkge1xuICAgIGlmICghcGx1Z2luQnVpbGRJbWFnZSkge1xuICAgICAgcmV0dXJuIG5ldyBTaGVsbFN0ZXAoaWQsIHtcbiAgICAgICAgLi4ucHJvZ3JhbW1hdGljLFxuICAgICAgICBlbnY6IHsgLi4uZW52LCAuLi5hY3Rpb25FbnYgfSxcbiAgICAgICAgLi4ubWV0YWRhdGFGb3JTaGVsbFN0ZXAobWVyZ2VkKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYFtDcmVhdGVDb2RlQnVpbGRTdGVwXSBTSEVMTF9TVEVQIHBsdWdpbiBcIiR7cGx1Z2luLm5hbWV9XCIgaGFzIGEgcmVnaXN0cnkgaW1hZ2Ug4oCUIHByb21vdGluZyB0byBDb2RlQnVpbGRTdGVwIHNvIHRoZSBwbHVnaW4gaW1hZ2UgaXMgYWN0dWFsbHkgdXNlZGApO1xuICAgIC8vIEZhbGwgdGhyb3VnaCB0byB0aGUgQ29kZUJ1aWxkU3RlcCBwYXRoIGJlbG93LlxuICB9XG5cbiAgY29uc3QgY29tcHV0ZVR5cGUgPSBnZXRDb21wdXRlVHlwZShcbiAgICBwbHVnaW4uY29tcHV0ZVR5cGUgPz8gb3B0aW9ucy5kZWZhdWx0Q29tcHV0ZVR5cGUgPz8gJ1NNQUxMJyxcbiAgKTtcblxuICAvLyBTdGVwIG5ldHdvcms6IGV4cGxpY2l0IHN0ZXAgY29uZmlnIHdpbnMsIGVsc2UgdGhpcyBzdGVwJ3MgYGVjMjpuZXR3b3JrYCBtZXRhZGF0YS5cbiAgY29uc3QgcmVzb2x2ZWROZXR3b3JrID0gbmV0d29yayA/PyBuZXR3b3JrQ29uZmlnRnJvbU1ldGFkYXRhKG1lcmdlZCk7XG4gIGNvbnN0IG5ldHdvcmtQcm9wcyA9IHJlc29sdmVkTmV0d29ya1xuICAgID8gcmVzb2x2ZU5ldHdvcmsoc2NvcGUsIG9wdGlvbnMudW5pcXVlSWQsIHJlc29sdmVkTmV0d29yaylcbiAgICA6IHt9O1xuXG4gIC8vIE1ldGFkYXRhIHNwcmVhZCBsYXN0IHNvIGl0IGNhbiBvdmVycmlkZSBwcm9ncmFtbWF0aWMgZGVmYXVsdHMuXG4gIC8vIE5PVEU6IENhY2hpbmcgaXMgc3VwcG9ydGVkIHZpYSB0d28gbWV0YWRhdGEgcGF0aHM6XG4gIC8vICAgMS4gTWV0YWRhdGFLZXlzLkNBQ0hFICgnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpjYWNoZScpIOKAlCBwYXNzZWQgZGlyZWN0bHlcbiAgLy8gICAgICBhcyB0aGUgQ29kZUJ1aWxkU3RlcCBgY2FjaGVgIHByb3AgKGV4cGVjdHMgYSBjb2RlYnVpbGQuQ2FjaGUgb2JqZWN0KS5cbiAgLy8gICAyLiBNZXRhZGF0YUtleXMuUEFSVElBTF9CVUlMRF9TUEVDICgnYXdzOmNkazpwaXBlbGluZXM6Y29kZWJ1aWxkc3RlcDpwYXJ0aWFsYnVpbGRzcGVjJylcbiAgLy8gICAgICDigJQgcGFzc2VkIGFzIGBwYXJ0aWFsQnVpbGRTcGVjYCwgd2hpY2ggY2FuIGluY2x1ZGUgYSBgY2FjaGU6YCBzZWN0aW9uIGZvclxuICAvLyAgICAgIFMzIG9yIGxvY2FsIGNhY2hpbmcgKGUuZy4sIEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHsgY2FjaGU6IHsgcGF0aHM6IFsuLi5dIH0gfSkpLlxuICAvLyBQZXItc3RlcCBidWlsZEVudmlyb25tZW50IG92ZXJyaWRlcyBmcm9tIG1ldGFkYXRhIChhd3M6Y2RrOmNvZGVidWlsZDpidWlsZGVudmlyb25tZW50OiopLlxuICAvLyBBIG1ldGFkYXRhLXByb3ZpZGVkIGNvbXB1dGVUeXBlIGlzIGEgcmF3IHBhc3N0aHJvdWdoLCBzbyBub3JtYWxpemUgaXQgdGhyb3VnaFxuICAvLyBnZXRDb21wdXRlVHlwZSDigJQgb3RoZXJ3aXNlIGEgZnJpZW5kbHkgdmFsdWUgbGlrZSBcIkxBUkdFXCIgcmVhY2hlcyBDb2RlQnVpbGQgdmVyYmF0aW1cbiAgLy8gYW5kIGZhaWxzIHdpdGggXCJJbnZhbGlkIGNvbXB1dGUgdHlwZSBwcm92aWRlZFwiIChpdCBuZWVkcyBCVUlMRF9HRU5FUkFMMV9MQVJHRSkuXG4gIGNvbnN0IHJhd01ldGFCdWlsZEVudiA9IG1ldGFkYXRhRm9yQnVpbGRFbnZpcm9ubWVudChtZXJnZWQpO1xuICBjb25zdCBtZXRhQnVpbGRFbnYgPSB0eXBlb2YgcmF3TWV0YUJ1aWxkRW52LmNvbXB1dGVUeXBlID09PSAnc3RyaW5nJ1xuICAgID8geyAuLi5yYXdNZXRhQnVpbGRFbnYsIGNvbXB1dGVUeXBlOiBnZXRDb21wdXRlVHlwZShyYXdNZXRhQnVpbGRFbnYuY29tcHV0ZVR5cGUpIH1cbiAgICA6IHJhd01ldGFCdWlsZEVudjtcblxuICBjb25zdCBzdGVwID0gbmV3IENvZGVCdWlsZFN0ZXAoaWQsIHtcbiAgICAuLi5wcm9ncmFtbWF0aWMsXG4gICAgLi4ubmV0d29ya1Byb3BzLFxuICAgIC4uLihhZGRpdGlvbmFsSW5wdXRzICYmIHsgYWRkaXRpb25hbElucHV0cyB9KSxcbiAgICAuLi4odGltZW91dCAmJiB7IHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXModGltZW91dCkgfSksXG4gICAgZW52OiBhY3Rpb25FbnYsXG4gICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogcGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3RvcnkgPz8gdW5kZWZpbmVkLFxuICAgIC8vIFBpbiB0aGUgYnVpbGRzcGVjIHNoZWxsIHRvIFBPU0lYIC9iaW4vc2ggc28gZXhlY3V0aW9uIGlzIGlkZW50aWNhbCB0b1xuICAgIC8vIENvZGVCdWlsZCdzIGRlZmF1bHQgYW5kIHBvcnRhYmxlIGFjcm9zcyBtaW5pbWFsIGJhc2UgaW1hZ2VzIChubyBiYXNoXG4gICAgLy8gZGVwZW5kZW5jeSkuIFBsdWdpbiBzcGVjcyBhcmUgYXV0aG9yZWQgUE9TSVgtY2xlYW4gdG8gbWF0Y2gg4oCUIG5vIGJhc2gtb25seVxuICAgIC8vIGBbWyBdXWAsIGFycmF5cywgYHJlYWQgLXJhIDw8PGAsIG9yIGBzb3VyY2VgL2Budm0gdXNlYC9gc2RrIHVzZWAuIEFcbiAgICAvLyBwbHVnaW4tc3VwcGxpZWQgcGFydGlhbEJ1aWxkU3BlYyAobm9uZSB0b2RheSkgd291bGQgb3ZlcnJpZGUgdGhpcyB2aWEgdGhlXG4gICAgLy8gbWV0YWRhdGEgc3ByZWFkIGJlbG93IGFuZCBtdXN0IHRoZW4gc2V0IGBlbnYuc2hlbGxgIGl0c2VsZi5cbiAgICBwYXJ0aWFsQnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdCh7IGVudjogeyBzaGVsbDogJy9iaW4vc2gnIH0gfSksXG4gICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgY29tcHV0ZVR5cGUsXG4gICAgICBidWlsZEltYWdlOiBwbHVnaW5CdWlsZEltYWdlID8/IHJlc29sdmVEZWZhdWx0QnVpbGRJbWFnZShzY29wZSwgb3JnSWQpLFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgLi4udG9Db2RlQnVpbGRFbnZWYXJzKGVudiksXG4gICAgICAgIC4uLnNlY3JldEVudlZhcnMsXG4gICAgICB9LFxuICAgICAgLi4ubWV0YUJ1aWxkRW52LFxuICAgIH0sXG4gICAgLi4ubWV0YWRhdGFGb3JDb2RlQnVpbGRTdGVwKG1lcmdlZCksXG4gIH0pO1xuXG4gIC8vIFJlZ2lzdGVyIHdpdGggYXJ0aWZhY3QgbWFuYWdlciBpZiBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5IGlzIHNldFxuICBpZiAocGx1Z2luLnByaW1hcnlPdXRwdXREaXJlY3RvcnkgJiYgYXJ0aWZhY3RNYW5hZ2VyICYmIHN0YWdlTmFtZSkge1xuICAgIGNvbnN0IGFydGlmYWN0S2V5OiBBcnRpZmFjdEtleSA9IHtcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIHN0YWdlQWxpYXM6IHN0YWdlQWxpYXMgPz8gYCR7c3RhZ2VOYW1lfS1hbGlhc2AsXG4gICAgICBwbHVnaW5OYW1lOiBwbHVnaW4ubmFtZSxcbiAgICAgIHBsdWdpbkFsaWFzOiBwbHVnaW5BbGlhcyA/PyBgJHtwbHVnaW4ubmFtZX0tYWxpYXNgLFxuICAgICAgb3V0cHV0RGlyZWN0b3J5OiBwbHVnaW4ucHJpbWFyeU91dHB1dERpcmVjdG9yeSxcbiAgICB9O1xuICAgIGFydGlmYWN0TWFuYWdlci5hZGQoYXJ0aWZhY3RLZXksIHN0ZXApO1xuICB9XG5cbiAgcmV0dXJuIHN0ZXA7XG59XG5cbi8qKlxuICogQ29udmVydCBzdHJpbmcgb3IgQ29tcHV0ZVR5cGUgZW51bSB0byBDREsgQ29tcHV0ZVR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbXB1dGVUeXBlKGlucHV0OiBzdHJpbmcgfCBDREtDb21wdXRlVHlwZSA9ICdTTUFMTCcpOiBDREtDb21wdXRlVHlwZSB7XG4gIC8vIElmIGFscmVhZHkgYSBDREsgQ29tcHV0ZVR5cGUsIHJldHVybiBhcy1pc1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIC8vIEFscmVhZHkgYSBuYXRpdmUgQ29kZUJ1aWxkIENvbXB1dGVUeXBlIChlLmcuIFwiQlVJTERfR0VORVJBTDFfTEFSR0VcIik/IEFjY2VwdCBhcy1pc1xuICAvLyBzbyBib3RoIGZyaWVuZGx5IChMQVJHRSkgYW5kIG5hdGl2ZSB2YWx1ZXMgcm91bmQtdHJpcCB3aXRob3V0IGZhbGxpbmcgYmFjayB0byBTTUFMTC5cbiAgaWYgKChPYmplY3QudmFsdWVzKENES0NvbXB1dGVUeXBlKSBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGlucHV0IGFzIENES0NvbXB1dGVUeXBlO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZCA9IGlucHV0LnRvVXBwZXJDYXNlKCkgYXMgQ29tcHV0ZVR5cGU7XG5cbiAgY29uc3QgbWFwcGluZzogUmVjb3JkPENvbXB1dGVUeXBlLCBDREtDb21wdXRlVHlwZT4gPSB7XG4gICAgW0NvbXB1dGVUeXBlLlNNQUxMXTogQ0RLQ29tcHV0ZVR5cGUuU01BTEwsXG4gICAgW0NvbXB1dGVUeXBlLk1FRElVTV06IENES0NvbXB1dGVUeXBlLk1FRElVTSxcbiAgICBbQ29tcHV0ZVR5cGUuTEFSR0VdOiBDREtDb21wdXRlVHlwZS5MQVJHRSxcbiAgICBbQ29tcHV0ZVR5cGUuWDJfTEFSR0VdOiBDREtDb21wdXRlVHlwZS5YMl9MQVJHRSxcbiAgfTtcblxuICBjb25zdCByZXN1bHQgPSBtYXBwaW5nW25vcm1hbGl6ZWRdO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIGxvZy53YXJuKGBVbmtub3duIGNvbXB1dGUgdHlwZSBcIiR7aW5wdXR9XCIsIGZhbGxpbmcgYmFjayB0byBTTUFMTGApO1xuICAgIHJldHVybiBDREtDb21wdXRlVHlwZS5TTUFMTDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFJlcGxhY2VzIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBsZXR0ZXJzIG9yIG51bWJlcnMgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlXG4gKiBAcGFyYW0gaW5wdXQgLSBUaGUgc3RyaW5nIHRvIHByb2Nlc3NcbiAqIEBwYXJhbSByZXBsYWNlVmFsdWUgLSBUaGUgY2hhcmFjdGVyKHMpIHRvIHJlcGxhY2Ugbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggKGRlZmF1bHQ6ICdfJylcbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgcmVwbGFjZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VOb25BbHBoYW51bWVyaWMoaW5wdXQ6IHN0cmluZywgcmVwbGFjZVZhbHVlOiBzdHJpbmcgPSAnXycpOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvW15hLXpBLVowLTldL2csIHJlcGxhY2VWYWx1ZSk7XG59XG5cbi8qKlxuICogVW53cmFwIGEgU2VjcmV0VmFsdWUgfCBzdHJpbmcgaW50byBhIHBsYWluIHN0cmluZy5cbiAqIFdoZW4gYSBTZWNyZXRWYWx1ZSBpcyBwcm92aWRlZCAoZS5nLiBmcm9tIFNlY3JldHMgTWFuYWdlciksIGNhbGxzIHVuc2FmZVVud3JhcCgpXG4gKiB0byBleHRyYWN0IHRoZSB1bmRlcmx5aW5nIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW53cmFwU2VjcmV0KHZhbHVlOiBTZWNyZXRWYWx1ZSB8IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUgOiB2YWx1ZS51bnNhZmVVbndyYXAoKTtcbn1cbiJdfQ==
|
|
@@ -7,11 +7,11 @@ export { AccessModifier, ComputeType, PluginType, type MetaDataType } from '@pip
|
|
|
7
7
|
* @property AUTO - Automatic trigger on source changes (S3/GitHub: polling, CodeStar: push-based webhook)
|
|
8
8
|
*/
|
|
9
9
|
export declare const TriggerType: {
|
|
10
|
-
readonly NONE:
|
|
10
|
+
readonly NONE: 'NONE';
|
|
11
11
|
/** Automatic trigger on source changes. Uses polling for S3/GitHub, push-based webhook for CodeStar. */
|
|
12
|
-
readonly AUTO:
|
|
12
|
+
readonly AUTO: 'AUTO';
|
|
13
13
|
/** Scheduled trigger via EventBridge rule. Requires a cron expression in the source options. */
|
|
14
|
-
readonly SCHEDULE:
|
|
14
|
+
readonly SCHEDULE: 'SCHEDULE';
|
|
15
15
|
};
|
|
16
16
|
export type TriggerType = (typeof TriggerType)[keyof typeof TriggerType];
|
|
17
17
|
/**
|
|
@@ -40,86 +40,86 @@ export type SourceType = S3SourceConfig | GitHubSourceConfig | CodeStarSourceCon
|
|
|
40
40
|
* ```
|
|
41
41
|
*/
|
|
42
42
|
export declare const MetadataKeys: {
|
|
43
|
-
readonly SELF_MUTATION:
|
|
44
|
-
readonly CROSS_ACCOUNT_KEYS:
|
|
45
|
-
readonly DOCKER_ENABLED_FOR_SELF_MUTATION:
|
|
46
|
-
readonly DOCKER_ENABLED_FOR_SYNTH:
|
|
47
|
-
readonly ENABLE_KEY_ROTATION:
|
|
48
|
-
readonly PUBLISH_ASSETS_IN_PARALLEL:
|
|
49
|
-
readonly REUSE_CROSS_REGION_SUPPORT_STACKS:
|
|
50
|
-
readonly USE_CHANGE_SETS:
|
|
51
|
-
readonly USE_PIPELINE_ROLE_FOR_ACTIONS:
|
|
52
|
-
readonly ARTIFACT_BUCKET:
|
|
53
|
-
readonly ASSET_PUBLISHING_CODE_BUILD_DEFAULTS:
|
|
54
|
-
readonly CDK_ASSETS_CLI_VERSION:
|
|
55
|
-
readonly CLI_VERSION:
|
|
56
|
-
readonly CODE_BUILD_DEFAULTS:
|
|
57
|
-
readonly CODE_PIPELINE:
|
|
58
|
-
readonly CROSS_REGION_REPLICATION_BUCKETS:
|
|
59
|
-
readonly DOCKER_CREDENTIALS:
|
|
60
|
-
readonly PIPELINE_NAME:
|
|
61
|
-
readonly PIPELINE_TYPE:
|
|
62
|
-
readonly PIPELINE_ROLE:
|
|
63
|
-
readonly SELF_MUTATION_CODE_BUILD_DEFAULTS:
|
|
64
|
-
readonly SYNTH:
|
|
65
|
-
readonly SYNTH_CODE_BUILD_DEFAULTS:
|
|
66
|
-
readonly ACTION_ROLE:
|
|
67
|
-
readonly ADDITIONAL_INPUTS:
|
|
68
|
-
readonly BUILD_ENVIRONMENT:
|
|
69
|
-
readonly CACHE:
|
|
70
|
-
readonly COMMANDS:
|
|
71
|
-
readonly CODE_BUILD_ENV:
|
|
72
|
-
readonly ENV_FROM_CFN_OUTPUTS:
|
|
73
|
-
readonly FILE_SYSTEM_LOCATIONS:
|
|
74
|
-
readonly INPUT:
|
|
75
|
-
readonly INSTALL_COMMANDS:
|
|
76
|
-
readonly LOGGING:
|
|
77
|
-
readonly PARTIAL_BUILD_SPEC:
|
|
78
|
-
readonly PRIMARY_OUTPUT_DIRECTORY:
|
|
79
|
-
readonly PROJECT_NAME:
|
|
80
|
-
readonly STEP_ROLE:
|
|
81
|
-
readonly ROLE_POLICY_STATEMENTS:
|
|
82
|
-
readonly TIMEOUT:
|
|
83
|
-
readonly SHELL_ADDITIONAL_INPUTS:
|
|
84
|
-
readonly SHELL_COMMANDS:
|
|
85
|
-
readonly SHELL_ENV:
|
|
86
|
-
readonly SHELL_ENV_FROM_CFN_OUTPUTS:
|
|
87
|
-
readonly SHELL_INPUT:
|
|
88
|
-
readonly SHELL_INSTALL_COMMANDS:
|
|
89
|
-
readonly SHELL_PRIMARY_OUTPUT_DIRECTORY:
|
|
90
|
-
readonly PRIVILEGED:
|
|
91
|
-
readonly BUILD_IMAGE:
|
|
92
|
-
readonly CERTIFICATE:
|
|
93
|
-
readonly COMPUTE_TYPE:
|
|
94
|
-
readonly DOCKER_SERVER:
|
|
95
|
-
readonly ENVIRONMENT_VARIABLES:
|
|
96
|
-
readonly FLEET:
|
|
97
|
-
readonly NETWORK_TYPE:
|
|
98
|
-
readonly NETWORK_VPC_ID:
|
|
99
|
-
readonly NETWORK_SUBNET_IDS:
|
|
100
|
-
readonly NETWORK_SUBNET_TYPE:
|
|
101
|
-
readonly NETWORK_AVAILABILITY_ZONES:
|
|
102
|
-
readonly NETWORK_SUBNET_GROUP_NAME:
|
|
103
|
-
readonly NETWORK_SECURITY_GROUP_IDS:
|
|
104
|
-
readonly NETWORK_TAGS:
|
|
105
|
-
readonly NETWORK_VPC_NAME:
|
|
106
|
-
readonly NETWORK_REGION:
|
|
107
|
-
readonly ROLE_TYPE:
|
|
108
|
-
readonly ROLE_ARN:
|
|
109
|
-
readonly ROLE_NAME:
|
|
110
|
-
readonly ROLE_MUTABLE:
|
|
111
|
-
readonly SECURITY_GROUP_TYPE:
|
|
112
|
-
readonly SECURITY_GROUP_IDS:
|
|
113
|
-
readonly SECURITY_GROUP_MUTABLE:
|
|
114
|
-
readonly SECURITY_GROUP_NAME:
|
|
115
|
-
readonly SECURITY_GROUP_VPC_ID:
|
|
116
|
-
readonly NOTIFICATION_TOPIC_ARN:
|
|
117
|
-
readonly NOTIFICATION_EVENTS:
|
|
118
|
-
readonly ENABLE_EXECUTION_EVENTS:
|
|
119
|
-
readonly ENABLE_METRICS:
|
|
120
|
-
readonly ARTIFACT_RETENTION_DAYS:
|
|
121
|
-
readonly PIPELINE_VARIABLES:
|
|
122
|
-
readonly KMS_KEY_ARN:
|
|
43
|
+
readonly SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:selfmutation';
|
|
44
|
+
readonly CROSS_ACCOUNT_KEYS: 'aws:cdk:pipelines:codepipeline:crossaccountkeys';
|
|
45
|
+
readonly DOCKER_ENABLED_FOR_SELF_MUTATION: 'aws:cdk:pipelines:codepipeline:dockerenabledforselfmutation';
|
|
46
|
+
readonly DOCKER_ENABLED_FOR_SYNTH: 'aws:cdk:pipelines:codepipeline:dockerenabledforsynth';
|
|
47
|
+
readonly ENABLE_KEY_ROTATION: 'aws:cdk:pipelines:codepipeline:enablekeyrotation';
|
|
48
|
+
readonly PUBLISH_ASSETS_IN_PARALLEL: 'aws:cdk:pipelines:codepipeline:publishassetsinparallel';
|
|
49
|
+
readonly REUSE_CROSS_REGION_SUPPORT_STACKS: 'aws:cdk:pipelines:codepipeline:reusecrossregionsupportstacks';
|
|
50
|
+
readonly USE_CHANGE_SETS: 'aws:cdk:pipelines:codepipeline:usechangesets';
|
|
51
|
+
readonly USE_PIPELINE_ROLE_FOR_ACTIONS: 'aws:cdk:pipelines:codepipeline:usepipelineroleforactions';
|
|
52
|
+
readonly ARTIFACT_BUCKET: 'aws:cdk:pipelines:codepipeline:artifactbucket';
|
|
53
|
+
readonly ASSET_PUBLISHING_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:assetpublishingcodebuilddefaults';
|
|
54
|
+
readonly CDK_ASSETS_CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cdkassetscliversion';
|
|
55
|
+
readonly CLI_VERSION: 'aws:cdk:pipelines:codepipeline:cliversion';
|
|
56
|
+
readonly CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:codebuilddefaults';
|
|
57
|
+
readonly CODE_PIPELINE: 'aws:cdk:pipelines:codepipeline:codepipeline';
|
|
58
|
+
readonly CROSS_REGION_REPLICATION_BUCKETS: 'aws:cdk:pipelines:codepipeline:crossregionreplicationbuckets';
|
|
59
|
+
readonly DOCKER_CREDENTIALS: 'aws:cdk:pipelines:codepipeline:dockercredentials';
|
|
60
|
+
readonly PIPELINE_NAME: 'aws:cdk:pipelines:codepipeline:pipelinename';
|
|
61
|
+
readonly PIPELINE_TYPE: 'aws:cdk:pipelines:codepipeline:pipelinetype';
|
|
62
|
+
readonly PIPELINE_ROLE: 'aws:cdk:pipelines:codepipeline:role';
|
|
63
|
+
readonly SELF_MUTATION_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:selfmutationcodebuilddefaults';
|
|
64
|
+
readonly SYNTH: 'aws:cdk:pipelines:codepipeline:synth';
|
|
65
|
+
readonly SYNTH_CODE_BUILD_DEFAULTS: 'aws:cdk:pipelines:codepipeline:synthcodebuilddefaults';
|
|
66
|
+
readonly ACTION_ROLE: 'aws:cdk:pipelines:codebuildstep:actionrole';
|
|
67
|
+
readonly ADDITIONAL_INPUTS: 'aws:cdk:pipelines:codebuildstep:additionalinputs';
|
|
68
|
+
readonly BUILD_ENVIRONMENT: 'aws:cdk:pipelines:codebuildstep:buildenvironment';
|
|
69
|
+
readonly CACHE: 'aws:cdk:pipelines:codebuildstep:cache';
|
|
70
|
+
readonly COMMANDS: 'aws:cdk:pipelines:codebuildstep:commands';
|
|
71
|
+
readonly CODE_BUILD_ENV: 'aws:cdk:pipelines:codebuildstep:env';
|
|
72
|
+
readonly ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:codebuildstep:envfromcfnoutputs';
|
|
73
|
+
readonly FILE_SYSTEM_LOCATIONS: 'aws:cdk:pipelines:codebuildstep:filesystemlocations';
|
|
74
|
+
readonly INPUT: 'aws:cdk:pipelines:codebuildstep:input';
|
|
75
|
+
readonly INSTALL_COMMANDS: 'aws:cdk:pipelines:codebuildstep:installcommands';
|
|
76
|
+
readonly LOGGING: 'aws:cdk:pipelines:codebuildstep:logging';
|
|
77
|
+
readonly PARTIAL_BUILD_SPEC: 'aws:cdk:pipelines:codebuildstep:partialbuildspec';
|
|
78
|
+
readonly PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:codebuildstep:primaryoutputdirectory';
|
|
79
|
+
readonly PROJECT_NAME: 'aws:cdk:pipelines:codebuildstep:projectname';
|
|
80
|
+
readonly STEP_ROLE: 'aws:cdk:pipelines:codebuildstep:role';
|
|
81
|
+
readonly ROLE_POLICY_STATEMENTS: 'aws:cdk:pipelines:codebuildstep:rolepolicystatements';
|
|
82
|
+
readonly TIMEOUT: 'aws:cdk:pipelines:codebuildstep:timeout';
|
|
83
|
+
readonly SHELL_ADDITIONAL_INPUTS: 'aws:cdk:pipelines:shellstep:additionalinputs';
|
|
84
|
+
readonly SHELL_COMMANDS: 'aws:cdk:pipelines:shellstep:commands';
|
|
85
|
+
readonly SHELL_ENV: 'aws:cdk:pipelines:shellstep:env';
|
|
86
|
+
readonly SHELL_ENV_FROM_CFN_OUTPUTS: 'aws:cdk:pipelines:shellstep:envfromcfnoutputs';
|
|
87
|
+
readonly SHELL_INPUT: 'aws:cdk:pipelines:shellstep:input';
|
|
88
|
+
readonly SHELL_INSTALL_COMMANDS: 'aws:cdk:pipelines:shellstep:installcommands';
|
|
89
|
+
readonly SHELL_PRIMARY_OUTPUT_DIRECTORY: 'aws:cdk:pipelines:shellstep:primaryoutputdirectory';
|
|
90
|
+
readonly PRIVILEGED: 'aws:cdk:codebuild:buildenvironment:privileged';
|
|
91
|
+
readonly BUILD_IMAGE: 'aws:cdk:codebuild:buildenvironment:buildimage';
|
|
92
|
+
readonly CERTIFICATE: 'aws:cdk:codebuild:buildenvironment:certificate';
|
|
93
|
+
readonly COMPUTE_TYPE: 'aws:cdk:codebuild:buildenvironment:computetype';
|
|
94
|
+
readonly DOCKER_SERVER: 'aws:cdk:codebuild:buildenvironment:dockerserver';
|
|
95
|
+
readonly ENVIRONMENT_VARIABLES: 'aws:cdk:codebuild:buildenvironment:environmentvariables';
|
|
96
|
+
readonly FLEET: 'aws:cdk:codebuild:buildenvironment:fleet';
|
|
97
|
+
readonly NETWORK_TYPE: 'aws:cdk:ec2:network:type';
|
|
98
|
+
readonly NETWORK_VPC_ID: 'aws:cdk:ec2:network:vpcid';
|
|
99
|
+
readonly NETWORK_SUBNET_IDS: 'aws:cdk:ec2:network:subnetids';
|
|
100
|
+
readonly NETWORK_SUBNET_TYPE: 'aws:cdk:ec2:network:subnettype';
|
|
101
|
+
readonly NETWORK_AVAILABILITY_ZONES: 'aws:cdk:ec2:network:availabilityzones';
|
|
102
|
+
readonly NETWORK_SUBNET_GROUP_NAME: 'aws:cdk:ec2:network:subnetgroupname';
|
|
103
|
+
readonly NETWORK_SECURITY_GROUP_IDS: 'aws:cdk:ec2:network:securitygroupids';
|
|
104
|
+
readonly NETWORK_TAGS: 'aws:cdk:ec2:network:tags';
|
|
105
|
+
readonly NETWORK_VPC_NAME: 'aws:cdk:ec2:network:vpcname';
|
|
106
|
+
readonly NETWORK_REGION: 'aws:cdk:ec2:network:region';
|
|
107
|
+
readonly ROLE_TYPE: 'aws:cdk:iam:role:type';
|
|
108
|
+
readonly ROLE_ARN: 'aws:cdk:iam:role:rolearn';
|
|
109
|
+
readonly ROLE_NAME: 'aws:cdk:iam:role:rolename';
|
|
110
|
+
readonly ROLE_MUTABLE: 'aws:cdk:iam:role:mutable';
|
|
111
|
+
readonly SECURITY_GROUP_TYPE: 'aws:cdk:ec2:securitygroup:type';
|
|
112
|
+
readonly SECURITY_GROUP_IDS: 'aws:cdk:ec2:securitygroup:securitygroupids';
|
|
113
|
+
readonly SECURITY_GROUP_MUTABLE: 'aws:cdk:ec2:securitygroup:mutable';
|
|
114
|
+
readonly SECURITY_GROUP_NAME: 'aws:cdk:ec2:securitygroup:securitygroupname';
|
|
115
|
+
readonly SECURITY_GROUP_VPC_ID: 'aws:cdk:ec2:securitygroup:vpcid';
|
|
116
|
+
readonly NOTIFICATION_TOPIC_ARN: 'aws:cdk:notifications:topic:arn';
|
|
117
|
+
readonly NOTIFICATION_EVENTS: 'aws:cdk:notifications:events';
|
|
118
|
+
readonly ENABLE_EXECUTION_EVENTS: 'aws:cdk:operations:executionevents';
|
|
119
|
+
readonly ENABLE_METRICS: 'aws:cdk:operations:metrics';
|
|
120
|
+
readonly ARTIFACT_RETENTION_DAYS: 'aws:cdk:operations:artifactretentiondays';
|
|
121
|
+
readonly PIPELINE_VARIABLES: 'aws:cdk:operations:variables';
|
|
122
|
+
readonly KMS_KEY_ARN: 'aws:cdk:encryption:kmskeyarn';
|
|
123
123
|
};
|
|
124
124
|
/**
|
|
125
125
|
* Prefix for AWS CDK metadata keys.
|
package/lib/core/role.js
CHANGED
|
@@ -114,4 +114,4 @@ function createOidcRole(scope, id, options) {
|
|
|
114
114
|
}
|
|
115
115
|
return role;
|
|
116
116
|
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3JvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsTUFBTSxFQUdOLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixJQUFJLEVBQ0osZ0JBQWdCLEdBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsS0FBZ0IsRUFDaEIsRUFBWSxFQUNaLE1BQWtCO0lBRWxCLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLEtBQUssU0FBUztZQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDOUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTzthQUNoQyxDQUFDLENBQUM7UUFDTCxLQUFLLFVBQVU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pGLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU87YUFDaEMsQ0FBQyxDQUFDO1FBQ0wsS0FBSyxrQkFB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Q0FBQztJQUVELElBQUksT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsV0FBVyxDQUNkLElBQUksZUFBZSxDQUFDO2dCQUNsQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUMzRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzthQUMxQixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEVmZmVjdCxcbiAgdHlwZSBJT3BlbklkQ29ubmVjdFByb3ZpZGVyLFxuICB0eXBlIElSb2xlLFxuICBNYW5hZ2VkUG9saWN5LFxuICBPcGVuSWRDb25uZWN0UHJpbmNpcGFsLFxuICBPcGVuSWRDb25uZWN0UHJvdmlkZXIsXG4gIFBvbGljeVN0YXRlbWVudCxcbiAgUm9sZSxcbiAgU2VydmljZVByaW5jaXBhbCxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFVuaXF1ZUlkIH0gZnJvbSAnLi9pZC1nZW5lcmF0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBDb2RlQnVpbGREZWZhdWx0Um9sZU9wdGlvbnMsIE9pZGNSb2xlT3B0aW9ucywgUm9sZUNvbmZpZyB9IGZyb20gJy4vcm9sZS10eXBlcy5qcyc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi9jb25maWcvYXBwLWNvbmZpZy5qcyc7XG5cbi8qKlxuICogUmVzb2x2ZSBhIFJvbGVDb25maWcgaW50byBhIENESyBJUm9sZS5cbiAqIFVzZXMgZGlzY3JpbWluYXRlZCB1bmlvbiBuYXJyb3dpbmcgdG8gZGVsZWdhdGUgdG8gdGhlIGFwcHJvcHJpYXRlIENESyBsb29rdXAuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gQ0RLIGNvbnN0cnVjdCBzY29wZVxuICogQHBhcmFtIGlkIC0gVW5pcXVlSWQgaW5zdGFuY2UgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGNvbnN0cnVjdCBJRHNcbiAqIEBwYXJhbSBjb25maWcgLSBSb2xlIGNvbmZpZ3VyYXRpb24gdG8gcmVzb2x2ZVxuICogQHJldHVybnMgUmVzb2x2ZWQgQ0RLIElSb2xlIHJlYWR5IHRvIHBhc3MgdG8gQ29kZVBpcGVsaW5lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUm9sZShcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IFVuaXF1ZUlkLFxuICBjb25maWc6IFJvbGVDb25maWcsXG4pOiBJUm9sZSB7XG4gIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICBjYXNlICdyb2xlQXJuJzpcbiAgICAgIHJldHVybiBSb2xlLmZyb21Sb2xlQXJuKHNjb3BlLCBpZC5nZW5lcmF0ZSgncm9sZTphcm4nKSwgY29uZmlnLm9wdGlvbnMucm9sZUFybiwge1xuICAgICAgICBtdXRhYmxlOiBjb25maWcub3B0aW9ucy5tdXRhYmxlLFxuICAgICAgfSk7XG4gICAgY2FzZSAncm9sZU5hbWUnOlxuICAgICAgcmV0dXJuIFJvbGUuZnJvbVJvbGVOYW1lKHNjb3BlLCBpZC5nZW5lcmF0ZSgncm9sZTpuYW1lJyksIGNvbmZpZy5vcHRpb25zLnJvbGVOYW1lLCB7XG4gICAgICAgIG11dGFibGU6IGNvbmZpZy5vcHRpb25zLm11dGFibGUsXG4gICAgICB9KTtcbiAgICBjYXNlICdjb2RlQnVpbGREZWZhdWx0JzpcbiAgICAgIHJldHVybiBjcmVhdGVDb2RlQnVpbGREZWZhdWx0Um9sZShzY29wZSwgaWQsIGNvbmZpZy5vcHRpb25zKTtcbiAgICBjYXNlICdvaWRjJzpcbiAgICAgIHJldHVybiBjcmVhdGVPaWRjUm9sZShzY29wZSwgaWQsIGNvbmZpZy5vcHRpb25zKTtcbiAgICBkZWZhdWx0OiB7XG4gICAgICBjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBjb25maWc7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcm9sZSBjb25maWcgdHlwZTogJHsoX2V4aGF1c3RpdmUgYXMgUm9sZUNvbmZpZykudHlwZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IElBTSByb2xlIHdpdGggQ29kZUJ1aWxkIHNlcnZpY2UgcHJpbmNpcGFsIGFuZCBDbG91ZFdhdGNoIExvZ3MgcGVybWlzc2lvbnMuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvZGVCdWlsZERlZmF1bHRSb2xlKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIG9wdGlvbnM6IENvZGVCdWlsZERlZmF1bHRSb2xlT3B0aW9ucyxcbik6IElSb2xlIHtcbiAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHNjb3BlLCBpZC5nZW5lcmF0ZSgncm9sZTpjb2RlYnVpbGQnKSwge1xuICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2NvZGVidWlsZC5hbWF6b25hd3MuY29tJyksXG4gICAgLi4uKG9wdGlvbnMucm9sZU5hbWUgJiYgeyByb2xlTmFtZTogb3B0aW9ucy5yb2xlTmFtZSB9KSxcbiAgfSk7XG5cbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gIGNvbnN0IGxvZ0dyb3VwUHJlZml4ID0gQ29uZmlnLmdldCgnYXdzJykubG9nZ2luZy5ncm91cE5hbWU7XG4gIC8vIERlcml2ZSBBUk4gcGF0dGVybiBmcm9tIHRoZSBjb25maWd1cmVkIGxvZyBncm91cCBuYW1lIChzdHJpcCB0cmFpbGluZyBzZWdtZW50IGZvciB3aWxkY2FyZClcbiAgY29uc3QgbG9nR3JvdXBQYXR0ZXJuID0gbG9nR3JvdXBQcmVmaXgucmVwbGFjZSgvXFwvW14vXSokLywgJy8qJyk7XG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDoke2xvZ0dyb3VwUGF0dGVybn06KmAsXG4gICAgICBdLFxuICAgIH0pLFxuICApO1xuXG4gIHJldHVybiByb2xlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgSUFNIHJvbGUgd2l0aCBhbiBPSURDIGZlZGVyYXRlZCB0cnVzdCBwcmluY2lwYWwuXG4gKlxuICogU3VwcG9ydHMgZWl0aGVyIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIE9JREMgcHJvdmlkZXIgYnkgQVJOXG4gKiBvciBjcmVhdGluZyBhIG5ldyBvbmUgZnJvbSBpc3N1ZXIgVVJMICsgY2xpZW50IElEcy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlT2lkY1JvbGUoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBVbmlxdWVJZCxcbiAgb3B0aW9uczogT2lkY1JvbGVPcHRpb25zLFxuKTogSVJvbGUge1xuICBpZiAob3B0aW9ucy5wcm92aWRlckFybiAmJiBvcHRpb25zLmlzc3Vlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignT0lEQyByb2xlIGNvbmZpZyBtdXN0IHNwZWNpZnkgZWl0aGVyIHByb3ZpZGVyQXJuIG9yIGlzc3Vlciwgbm90IGJvdGgnKTtcbiAgfVxuXG4gIGxldCBwcm92aWRlcjogSU9wZW5JZENvbm5lY3RQcm92aWRlcjtcblxuICBpZiAob3B0aW9ucy5wcm92aWRlckFybikge1xuICAgIHByb3ZpZGVyID0gT3BlbklkQ29ubmVjdFByb3ZpZGVyLmZyb21PcGVuSWRDb25uZWN0UHJvdmlkZXJBcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLmdlbmVyYXRlKCdvaWRjOnByb3ZpZGVyJyksXG4gICAgICBvcHRpb25zLnByb3ZpZGVyQXJuLFxuICAgICk7XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5pc3N1ZXIpIHtcbiAgICBwcm92aWRlciA9IG5ldyBPcGVuSWRDb25uZWN0UHJvdmlkZXIoc2NvcGUsIGlkLmdlbmVyYXRlKCdvaWRjOnByb3ZpZGVyJyksIHtcbiAgICAgIHVybDogb3B0aW9ucy5pc3N1ZXIsXG4gICAgICBjbGllbnRJZHM6IG9wdGlvbnMuY2xpZW50SWRzID8/IFsnc3RzLmFtYXpvbmF3cy5jb20nXSxcbiAgICAgIHRodW1icHJpbnRzOiBvcHRpb25zLnRodW1icHJpbnRzLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignT0lEQyByb2xlIGNvbmZpZyByZXF1aXJlcyBlaXRoZXIgcHJvdmlkZXJBcm4gb3IgaXNzdWVyJyk7XG4gIH1cblxuICBjb25zdCBwcmluY2lwYWwgPSBuZXcgT3BlbklkQ29ubmVjdFByaW5jaXBhbChwcm92aWRlciwge1xuICAgIC4uLihvcHRpb25zLmNvbmRpdGlvbnMgJiYgeyBTdHJpbmdFcXVhbHM6IG9wdGlvbnMuY29uZGl0aW9ucyB9KSxcbiAgICAuLi4ob3B0aW9ucy5jb25kaXRpb25zTGlrZSAmJiB7IFN0cmluZ0xpa2U6IG9wdGlvbnMuY29uZGl0aW9uc0xpa2UgfSksXG4gIH0pO1xuXG4gIGNvbnN0IHJvbGUgPSBuZXcgUm9sZShzY29wZSwgaWQuZ2VuZXJhdGUoJ3JvbGU6b2lkYycpLCB7XG4gICAgYXNzdW1lZEJ5OiBwcmluY2lwYWwsXG4gICAgLi4uKG9wdGlvbnMucm9sZU5hbWUgJiYgeyByb2xlTmFtZTogb3B0aW9ucy5yb2xlTmFtZSB9KSxcbiAgICAuLi4ob3B0aW9ucy5kZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uIH0pLFxuICAgIC4uLihvcHRpb25zLm1heFNlc3Npb25EdXJhdGlvbiAmJiB7XG4gICAgICBtYXhTZXNzaW9uRHVyYXRpb246IER1cmF0aW9uLnNlY29uZHMob3B0aW9ucy5tYXhTZXNzaW9uRHVyYXRpb24pLFxuICAgIH0pLFxuICAgIC4uLihvcHRpb25zLnBlcm1pc3Npb25zQm91bmRhcnlBcm4gJiYge1xuICAgICAgcGVybWlzc2lvbnNCb3VuZGFyeTogTWFuYWdlZFBvbGljeS5mcm9tTWFuYWdlZFBvbGljeUFybihcbiAgICAgICAgc2NvcGUsXG4gICAgICAgIGlkLmdlbmVyYXRlKCdvaWRjOmJvdW5kYXJ5JyksXG4gICAgICAgIG9wdGlvbnMucGVybWlzc2lvbnNCb3VuZGFyeUFybixcbiAgICAgICksXG4gICAgfSksXG4gIH0pO1xuXG4gIGlmIChvcHRpb25zLm1hbmFnZWRQb2xpY3lBcm5zKSB7XG4gICAgZm9yIChjb25zdCBhcm4gb2Ygb3B0aW9ucy5tYW5hZ2VkUG9saWN5QXJucykge1xuICAgICAgcm9sZS5hZGRNYW5hZ2VkUG9saWN5KE1hbmFnZWRQb2xpY3kuZnJvbU1hbmFnZWRQb2xpY3lBcm4oc2NvcGUsIGlkLmdlbmVyYXRlKCdvaWRjOnBvbGljeScpLCBhcm4pKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5wb2xpY3lTdGF0ZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBzdG10IG9mIG9wdGlvbnMucG9saWN5U3RhdGVtZW50cykge1xuICAgICAgcm9sZS5hZGRUb1BvbGljeShcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBzdG10LmVmZmVjdCA9PT0gJ0RlbnknID8gRWZmZWN0LkRFTlkgOiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgYWN0aW9uczogc3RtdC5hY3Rpb25zLFxuICAgICAgICAgIHJlc291cmNlczogc3RtdC5yZXNvdXJjZXMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcm9sZTtcbn1cbiJdfQ==
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3JvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsTUFBTSxFQUdOLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixJQUFJLEVBQ0osZ0JBQWdCLEdBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsS0FBZ0IsRUFDaEIsRUFBWSxFQUNaLE1BQWtCO0lBRWxCLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLEtBQUssU0FBUztZQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDOUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTzthQUNoQyxDQUFDLENBQUM7UUFDTCxLQUFLLFVBQVU7WUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pGLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU87YUFDaEMsQ0FBQyxDQUFDO1FBQ0wsS0FBSyxrQkFB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SUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxlQUFlLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUs7Z0JBQzNELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2FBQzFCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgRWZmZWN0LFxuICB0eXBlIElPcGVuSWRDb25uZWN0UHJvdmlkZXIsXG4gIHR5cGUgSVJvbGUsXG4gIE1hbmFnZWRQb2xpY3ksXG4gIE9wZW5JZENvbm5lY3RQcmluY2lwYWwsXG4gIE9wZW5JZENvbm5lY3RQcm92aWRlcixcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVW5pcXVlSWQgfSBmcm9tICcuL2lkLWdlbmVyYXRvci5qcyc7XG5pbXBvcnQgdHlwZSB7IENvZGVCdWlsZERlZmF1bHRSb2xlT3B0aW9ucywgT2lkY1JvbGVPcHRpb25zLCBSb2xlQ29uZmlnIH0gZnJvbSAnLi9yb2xlLXR5cGVzLmpzJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9hcHAtY29uZmlnLmpzJztcblxuLyoqXG4gKiBSZXNvbHZlIGEgUm9sZUNvbmZpZyBpbnRvIGEgQ0RLIElSb2xlLlxuICogVXNlcyBkaXNjcmltaW5hdGVkIHVuaW9uIG5hcnJvd2luZyB0byBkZWxlZ2F0ZSB0byB0aGUgYXBwcm9wcmlhdGUgQ0RLIGxvb2t1cC5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgLSBDREsgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gaWQgLSBVbmlxdWVJZCBpbnN0YW5jZSBmb3IgZ2VuZXJhdGluZyB1bmlxdWUgY29uc3RydWN0IElEc1xuICogQHBhcmFtIGNvbmZpZyAtIFJvbGUgY29uZmlndXJhdGlvbiB0byByZXNvbHZlXG4gKiBAcmV0dXJucyBSZXNvbHZlZCBDREsgSVJvbGUgcmVhZHkgdG8gcGFzcyB0byBDb2RlUGlwZWxpbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSb2xlKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBpZDogVW5pcXVlSWQsXG4gIGNvbmZpZzogUm9sZUNvbmZpZyxcbik6IElSb2xlIHtcbiAgc3dpdGNoIChjb25maWcudHlwZSkge1xuICAgIGNhc2UgJ3JvbGVBcm4nOlxuICAgICAgcmV0dXJuIFJvbGUuZnJvbVJvbGVBcm4oc2NvcGUsIGlkLmdlbmVyYXRlKCdyb2xlOmFybicpLCBjb25maWcub3B0aW9ucy5yb2xlQXJuLCB7XG4gICAgICAgIG11dGFibGU6IGNvbmZpZy5vcHRpb25zLm11dGFibGUsXG4gICAgICB9KTtcbiAgICBjYXNlICdyb2xlTmFtZSc6XG4gICAgICByZXR1cm4gUm9sZS5mcm9tUm9sZU5hbWUoc2NvcGUsIGlkLmdlbmVyYXRlKCdyb2xlOm5hbWUnKSwgY29uZmlnLm9wdGlvbnMucm9sZU5hbWUsIHtcbiAgICAgICAgbXV0YWJsZTogY29uZmlnLm9wdGlvbnMubXV0YWJsZSxcbiAgICAgIH0pO1xuICAgIGNhc2UgJ2NvZGVCdWlsZERlZmF1bHQnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUNvZGVCdWlsZERlZmF1bHRSb2xlKHNjb3BlLCBpZCwgY29uZmlnLm9wdGlvbnMpO1xuICAgIGNhc2UgJ29pZGMnOlxuICAgICAgcmV0dXJuIGNyZWF0ZU9pZGNSb2xlKHNjb3BlLCBpZCwgY29uZmlnLm9wdGlvbnMpO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IGNvbmZpZztcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biByb2xlIGNvbmZpZyB0eXBlOiAkeyhfZXhoYXVzdGl2ZSBhcyBSb2xlQ29uZmlnKS50eXBlfWApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgSUFNIHJvbGUgd2l0aCBDb2RlQnVpbGQgc2VydmljZSBwcmluY2lwYWwgYW5kIENsb3VkV2F0Y2ggTG9ncyBwZXJtaXNzaW9ucy5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ29kZUJ1aWxkRGVmYXVsdFJvbGUoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBVbmlxdWVJZCxcbiAgb3B0aW9uczogQ29kZUJ1aWxkRGVmYXVsdFJvbGVPcHRpb25zLFxuKTogSVJvbGUge1xuICBjb25zdCByb2xlID0gbmV3IFJvbGUoc2NvcGUsIGlkLmdlbmVyYXRlKCdyb2xlOmNvZGVidWlsZCcpLCB7XG4gICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbCgnY29kZWJ1aWxkLmFtYXpvbmF3cy5jb20nKSxcbiAgICAuLi4ob3B0aW9ucy5yb2xlTmFtZSAmJiB7IHJvbGVOYW1lOiBvcHRpb25zLnJvbGVOYW1lIH0pLFxuICB9KTtcblxuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgY29uc3QgbG9nR3JvdXBQcmVmaXggPSBDb25maWcuZ2V0KCdhd3MnKS5sb2dnaW5nLmdyb3VwTmFtZTtcbiAgLy8gRGVyaXZlIEFSTiBwYXR0ZXJuIGZyb20gdGhlIGNvbmZpZ3VyZWQgbG9nIGdyb3VwIG5hbWUgKHN0cmlwIHRyYWlsaW5nIHNlZ21lbnQgZm9yIHdpbGRjYXJkKVxuICBjb25zdCBsb2dHcm91cFBhdHRlcm4gPSBsb2dHcm91cFByZWZpeC5yZXBsYWNlKC9cXC9bXi9dKiQvLCAnLyonKTtcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG4gICAgICAgICdsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsXG4gICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46YXdzOmxvZ3M6JHtzdGFjay5yZWdpb259OiR7c3RhY2suYWNjb3VudH06bG9nLWdyb3VwOiR7bG9nR3JvdXBQYXR0ZXJufToqYCxcbiAgICAgIF0sXG4gICAgfSksXG4gICk7XG5cbiAgcmV0dXJuIHJvbGU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBJQU0gcm9sZSB3aXRoIGFuIE9JREMgZmVkZXJhdGVkIHRydXN0IHByaW5jaXBhbC5cbiAqXG4gKiBTdXBwb3J0cyBlaXRoZXIgcmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgT0lEQyBwcm92aWRlciBieSBBUk5cbiAqIG9yIGNyZWF0aW5nIGEgbmV3IG9uZSBmcm9tIGlzc3VlciBVUkwgKyBjbGllbnQgSURzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVPaWRjUm9sZShcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IFVuaXF1ZUlkLFxuICBvcHRpb25zOiBPaWRjUm9sZU9wdGlvbnMsXG4pOiBJUm9sZSB7XG4gIGlmIChvcHRpb25zLnByb3ZpZGVyQXJuICYmIG9wdGlvbnMuaXNzdWVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPSURDIHJvbGUgY29uZmlnIG11c3Qgc3BlY2lmeSBlaXRoZXIgcHJvdmlkZXJBcm4gb3IgaXNzdWVyLCBub3QgYm90aCcpO1xuICB9XG5cbiAgbGV0IHByb3ZpZGVyOiBJT3BlbklkQ29ubmVjdFByb3ZpZGVyO1xuXG4gIGlmIChvcHRpb25zLnByb3ZpZGVyQXJuKSB7XG4gICAgcHJvdmlkZXIgPSBPcGVuSWRDb25uZWN0UHJvdmlkZXIuZnJvbU9wZW5JZENvbm5lY3RQcm92aWRlckFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQuZ2VuZXJhdGUoJ29pZGM6cHJvdmlkZXInKSxcbiAgICAgIG9wdGlvbnMucHJvdmlkZXJBcm4sXG4gICAgKTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLmlzc3Vlcikge1xuICAgIHByb3ZpZGVyID0gbmV3IE9wZW5JZENvbm5lY3RQcm92aWRlcihzY29wZSwgaWQuZ2VuZXJhdGUoJ29pZGM6cHJvdmlkZXInKSwge1xuICAgICAgdXJsOiBvcHRpb25zLmlzc3VlcixcbiAgICAgIGNsaWVudElkczogb3B0aW9ucy5jbGllbnRJZHMgPz8gWydzdHMuYW1hem9uYXdzLmNvbSddLFxuICAgICAgdGh1bWJwcmludHM6IG9wdGlvbnMudGh1bWJwcmludHMsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdPSURDIHJvbGUgY29uZmlnIHJlcXVpcmVzIGVpdGhlciBwcm92aWRlckFybiBvciBpc3N1ZXInKTtcbiAgfVxuXG4gIGNvbnN0IHByaW5jaXBhbCA9IG5ldyBPcGVuSWRDb25uZWN0UHJpbmNpcGFsKHByb3ZpZGVyLCB7XG4gICAgLi4uKG9wdGlvbnMuY29uZGl0aW9ucyAmJiB7IFN0cmluZ0VxdWFsczogb3B0aW9ucy5jb25kaXRpb25zIH0pLFxuICAgIC4uLihvcHRpb25zLmNvbmRpdGlvbnNMaWtlICYmIHsgU3RyaW5nTGlrZTogb3B0aW9ucy5jb25kaXRpb25zTGlrZSB9KSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHNjb3BlLCBpZC5nZW5lcmF0ZSgncm9sZTpvaWRjJyksIHtcbiAgICBhc3N1bWVkQnk6IHByaW5jaXBhbCxcbiAgICAuLi4ob3B0aW9ucy5yb2xlTmFtZSAmJiB7IHJvbGVOYW1lOiBvcHRpb25zLnJvbGVOYW1lIH0pLFxuICAgIC4uLihvcHRpb25zLmRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IG9wdGlvbnMuZGVzY3JpcHRpb24gfSksXG4gICAgLi4uKG9wdGlvbnMubWF4U2Vzc2lvbkR1cmF0aW9uICYmIHtcbiAgICAgIG1heFNlc3Npb25EdXJhdGlvbjogRHVyYXRpb24uc2Vjb25kcyhvcHRpb25zLm1heFNlc3Npb25EdXJhdGlvbiksXG4gICAgfSksXG4gICAgLi4uKG9wdGlvbnMucGVybWlzc2lvbnNCb3VuZGFyeUFybiAmJiB7XG4gICAgICBwZXJtaXNzaW9uc0JvdW5kYXJ5OiBNYW5hZ2VkUG9saWN5LmZyb21NYW5hZ2VkUG9saWN5QXJuKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgaWQuZ2VuZXJhdGUoJ29pZGM6Ym91bmRhcnknKSxcbiAgICAgICAgb3B0aW9ucy5wZXJtaXNzaW9uc0JvdW5kYXJ5QXJuLFxuICAgICAgKSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgaWYgKG9wdGlvbnMubWFuYWdlZFBvbGljeUFybnMpIHtcbiAgICBmb3IgKGNvbnN0IGFybiBvZiBvcHRpb25zLm1hbmFnZWRQb2xpY3lBcm5zKSB7XG4gICAgICByb2xlLmFkZE1hbmFnZWRQb2xpY3koTWFuYWdlZFBvbGljeS5mcm9tTWFuYWdlZFBvbGljeUFybihzY29wZSwgaWQuZ2VuZXJhdGUoJ29pZGM6cG9saWN5JyksIGFybikpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnBvbGljeVN0YXRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IHN0bXQgb2Ygb3B0aW9ucy5wb2xpY3lTdGF0ZW1lbnRzKSB7XG4gICAgICByb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBlZmZlY3Q6IHN0bXQuZWZmZWN0ID09PSAnRGVueScgPyBFZmZlY3QuREVOWSA6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICBhY3Rpb25zOiBzdG10LmFjdGlvbnMsXG4gICAgICAgICAgcmVzb3VyY2VzOiBzdG10LnJlc291cmNlcyxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByb2xlO1xufVxuIl19
|
|
@@ -30,4 +30,4 @@ export function resolveSecurityGroup(scope, id, config) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9zZWN1cml0eS1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBdUIsYUFBYSxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzdDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxLQUFnQixFQUNoQixFQUFZLEVBQ1osTUFBMkI7SUFFM0IsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsS0FBSyxrQkFBa0I7WUFDckIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FDeEMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FDekMsS0FBSyxFQUNMLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQ3BCLElBQUksRUFDSixFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUNwQyxDQUNGLENBQUM7UUFDSixLQUFLLHFCQUFxQixFQUFFLENBQUM7WUFDM0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDdkQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSzthQUM1QixDQUFDLENBQUM7WUFDSCxPQUFPO2dCQUNMLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDNUIsS0FBSyxFQUNMLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQ2hDLEdBQUcsQ0FDSjthQUNGLENBQUM7UUFDSixDQUFDO1FBQ0QsU0FBUyxDQUFDO1lBQ1IsTUFBTSxXQUFXLEdBQVUsTUFBTSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXdDLFdBQW1DLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgdHlwZSBJU2VjdXJpdHlHcm91cCwgU2VjdXJpdHlHcm91cCwgVnBjIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IFVuaXF1ZUlkIH0gZnJvbSAnLi9pZC1nZW5lcmF0b3IuanMnO1xuaW1wb3J0IHR5cGUgeyBTZWN1cml0eUdyb3VwQ29uZmlnIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC10eXBlcy5qcyc7XG5cbi8qKlxuICogUmVzb2x2ZSBhIFNlY3VyaXR5R3JvdXBDb25maWcgaW50byBDREsgSVNlY3VyaXR5R3JvdXBbXS5cbiAqIFVzZXMgZGlzY3JpbWluYXRlZCB1bmlvbiBuYXJyb3dpbmcgdG8gZGVsZWdhdGUgdG8gdGhlIGFwcHJvcHJpYXRlIENESyBsb29rdXAuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gQ0RLIGNvbnN0cnVjdCBzY29wZVxuICogQHBhcmFtIGlkIC0gVW5pcXVlSWQgaW5zdGFuY2UgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGNvbnN0cnVjdCBJRHNcbiAqIEBwYXJhbSBjb25maWcgLSBTZWN1cml0eSBncm91cCBjb25maWd1cmF0aW9uIHRvIHJlc29sdmVcbiAqIEByZXR1cm5zIFJlc29sdmVkIENESyBJU2VjdXJpdHlHcm91cCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNlY3VyaXR5R3JvdXAoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIGlkOiBVbmlxdWVJZCxcbiAgY29uZmlnOiBTZWN1cml0eUdyb3VwQ29uZmlnLFxuKTogSVNlY3VyaXR5R3JvdXBbXSB7XG4gIHN3aXRjaCAoY29uZmlnLnR5cGUpIHtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwSWRzJzpcbiAgICAgIHJldHVybiBjb25maWcub3B0aW9ucy5zZWN1cml0eUdyb3VwSWRzLm1hcChcbiAgICAgICAgKHNnSWQpID0+IFNlY3VyaXR5R3JvdXAuZnJvbVNlY3VyaXR5R3JvdXBJZChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBpZC5nZW5lcmF0ZSgnc2c6aWQnKSxcbiAgICAgICAgICBzZ0lkLFxuICAgICAgICAgIHsgbXV0YWJsZTogY29uZmlnLm9wdGlvbnMubXV0YWJsZSB9LFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICBjYXNlICdzZWN1cml0eUdyb3VwTG9va3VwJzoge1xuICAgICAgY29uc3QgdnBjID0gVnBjLmZyb21Mb29rdXAoc2NvcGUsIGlkLmdlbmVyYXRlKCdzZzp2cGMnKSwge1xuICAgICAgICB2cGNJZDogY29uZmlnLm9wdGlvbnMudnBjSWQsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIFNlY3VyaXR5R3JvdXAuZnJvbUxvb2t1cEJ5TmFtZShcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBpZC5nZW5lcmF0ZSgnc2c6bG9va3VwJyksXG4gICAgICAgICAgY29uZmlnLm9wdGlvbnMuc2VjdXJpdHlHcm91cE5hbWUsXG4gICAgICAgICAgdnBjLFxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gY29uZmlnO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHNlY3VyaXR5IGdyb3VwIGNvbmZpZyB0eXBlOiAkeyhfZXhoYXVzdGl2ZSBhcyBTZWN1cml0eUdyb3VwQ29uZmlnKS50eXBlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
|