@dollhousemcp/mcp-server 2.0.30 → 2.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/data/ensembles/welcome-to-the-dollhouse.md +94 -0
  3. package/data/personas/dollhouse-expert.md +242 -14
  4. package/data/skills/research-to-elements.md +136 -0
  5. package/dist/elements/agents/AgentManager.d.ts +8 -1
  6. package/dist/elements/agents/AgentManager.d.ts.map +1 -1
  7. package/dist/elements/agents/AgentManager.js +49 -9
  8. package/dist/elements/ensembles/EnsembleManager.d.ts +36 -0
  9. package/dist/elements/ensembles/EnsembleManager.d.ts.map +1 -1
  10. package/dist/elements/ensembles/EnsembleManager.js +94 -5
  11. package/dist/generated/version.d.ts +2 -2
  12. package/dist/generated/version.js +3 -3
  13. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  14. package/dist/handlers/mcp-aql/MCPAQLHandler.js +31 -2
  15. package/dist/handlers/mcp-aql/OperationSchema.d.ts.map +1 -1
  16. package/dist/handlers/mcp-aql/OperationSchema.js +8 -7
  17. package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -1
  18. package/dist/handlers/mcp-aql/evaluatePermission.js +6 -3
  19. package/dist/server/tools/MCPAQLTools.js +21 -5
  20. package/dist/services/BuildInfoService.d.ts +3 -1
  21. package/dist/services/BuildInfoService.d.ts.map +1 -1
  22. package/dist/services/BuildInfoService.js +27 -5
  23. package/dist/utils/permissionHookShared.d.ts +39 -0
  24. package/dist/utils/permissionHookShared.d.ts.map +1 -1
  25. package/dist/utils/permissionHookShared.js +38 -1
  26. package/dist/utils/permissionHookStatus.d.ts.map +1 -1
  27. package/dist/utils/permissionHookStatus.js +6 -2
  28. package/dist/utils/permissionHooks.d.ts +1 -1
  29. package/dist/utils/permissionHooks.d.ts.map +1 -1
  30. package/dist/utils/permissionHooks.js +2 -2
  31. package/dist/web/public/app.js +213 -12
  32. package/dist/web/public/index.html +16 -7
  33. package/dist/web/public/styles.css +229 -30
  34. package/dist/web/routes/healthRoutes.d.ts.map +1 -1
  35. package/dist/web/routes/healthRoutes.js +3 -1
  36. package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
  37. package/dist/web/routes/permissionRoutes.js +10 -2
  38. package/package.json +1 -1
  39. package/scripts/pretooluse-dollhouse.sh +157 -39
  40. package/server.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"evaluatePermission.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/evaluatePermission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,wEAAwE;AACxE,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAgB,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,CAAC;IACpF,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAG/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,EACnE,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO;CAOlB;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,EAAE,WAAW,CAAC;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,wBAAwB,CAAC;IACjG,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,mBAAmB,CAAC;IAChI,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACrE;AAqDD,iCAAiC;AACjC,eAAO,MAAM,mBAAmB,UAAkC,CAAC;AAiBnE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1F,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiDlC"}
1
+ {"version":3,"file":"evaluatePermission.d.ts","sourceRoot":"","sources":["../../../src/handlers/mcp-aql/evaluatePermission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,wEAAwE;AACxE,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAgB,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,CAAC;IACpF,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBAG/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,GAAG,eAAe,EACnE,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,OAAO;CAOlB;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,uBAAuB,EAAE,WAAW,CAAC;IACrC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,wBAAwB,CAAC;IACjG,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,mBAAmB,CAAC;IAChI,iBAAiB,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACrE;AAyDD,iCAAiC;AACjC,eAAO,MAAM,mBAAmB,UAAkC,CAAC;AAiBnE;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1F,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiDlC"}
@@ -40,13 +40,16 @@ function formatCursor(decision, reason) {
40
40
  function formatWindsurf(decision, reason) {
41
41
  return withReason({ allowed: decision === 'allow' }, reason);
42
42
  }
43
- /** Codex: explicit PreToolUse payload, maps 'ask' to 'deny' */
43
+ /** Codex PreToolUse currently supports block/deny only; allow is empty stdout. */
44
44
  function formatCodex(decision, reason) {
45
+ if (decision === 'allow') {
46
+ return {};
47
+ }
45
48
  return {
46
49
  hookSpecificOutput: {
47
50
  hookEventName: 'PreToolUse',
48
51
  permissionDecision: decision === 'ask' ? 'deny' : decision,
49
- permissionDecisionReason: reason ?? '',
52
+ ...(reason ? { permissionDecisionReason: reason } : {}),
50
53
  },
51
54
  };
52
55
  }
@@ -147,4 +150,4 @@ export async function evaluatePermission(params, deps) {
147
150
  // Default: allow
148
151
  return formatPermissionResponse('allow', platform, input);
149
152
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGVQZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvZXZhbHVhdGVQZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsd0VBQXdFO0FBQ3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxLQUFLO0lBQ2xDLEtBQUssQ0FBK0Q7SUFDcEUsUUFBUSxDQUFTO0lBRWpDLFlBQ0UsT0FBZSxFQUNmLEtBQW1FLEVBQ25FLFFBQWdCLEVBQ2hCLEtBQWU7UUFFZixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFVRCxtRUFBbUU7QUFDbkUsU0FBUyxVQUFVLENBQUMsR0FBNEIsRUFBRSxNQUFlLEVBQUUsR0FBRyxHQUFHLFFBQVE7SUFDL0UsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xELENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBUyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFlO0lBQ3JELE9BQU8sVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFT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T0FBTyxJQUFJLDBDQUEwQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixPQUFPLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVybWlzc2lvbiBldmFsdWF0aW9uIGZvciBQcmVUb29sVXNlIGhvb2tzIGFjcm9zcyBhbGwgQUkgcGxhdGZvcm1zLlxuICpcbiAqIFByb3ZpZGVzIHRoZSBgZXZhbHVhdGVfcGVybWlzc2lvbmAgTUNQLUFRTCBSRUFEIG9wZXJhdGlvbiwgZW5hYmxpbmdcbiAqIENsYXVkZSBDb2RlLCBDdXJzb3IsIEdlbWluaSBDTEksIFdpbmRzdXJmLCBhbmQgQ29kZXggdG8gdXNlXG4gKiBEb2xsaG91c2VNQ1AgYXMgdGhlaXIgcGVybWlzc2lvbiBldmFsdWF0aW9uIGJhY2tlbmQgdmlhIGhvb2tzLlxuICpcbiAqIFRocmVlLXN0YWdlIGV2YWx1YXRpb24gcGlwZWxpbmU6XG4gKiAxLiBSYXRlIGxpbWl0aW5nIOKAlCBwcmV2ZW50cyBhYnVzZVxuICogMi4gU3RhdGljIHRvb2wgY2xhc3NpZmljYXRpb24g4oCUIGJ1aWx0LWluIGFsbG93L2RlbnkgcnVsZXNcbiAqIDMuIEVsZW1lbnQgcG9saWN5IGV2YWx1YXRpb24g4oCUIGFjdGl2ZSBlbGVtZW50IGdhdGVrZWVwZXIgcG9saWNpZXNcbiAqXG4gKiBSZXR1cm5zIHBsYXRmb3JtLXNwZWNpZmljIHJlc3BvbnNlIGZvcm1hdHMgc28gZWFjaCBwbGF0Zm9ybSdzIGhvb2tcbiAqIHNjcmlwdCByZWNlaXZlcyB0aGUgSlNPTiBzaGFwZSBpdCBleHBlY3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmF0ZUxpbWl0ZXIgfSBmcm9tICcuLi8uLi91dGlscy9SYXRlTGltaXRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdCwgQ2xpVG9vbFBvbGljeVJlc3VsdCB9IGZyb20gJy4vcG9saWNpZXMvVG9vbENsYXNzaWZpY2F0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgQWN0aXZlRWxlbWVudCB9IGZyb20gJy4vcG9saWNpZXMvRWxlbWVudFBvbGljaWVzLmpzJztcblxuLyoqIEVycm9yIHRocm93biB3aGVuIHBlcm1pc3Npb24gZXZhbHVhdGlvbiBmYWlscyBhdCBhIHNwZWNpZmljIHN0YWdlICovXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbkV2YWx1YXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0YWdlOiAncmF0ZV9saW1pdCcgfCAnY2xhc3NpZmljYXRpb24nIHwgJ3BvbGljeScgfCAnZWxlbWVudF9mZXRjaCc7XG4gIHB1YmxpYyByZWFkb25seSB0b29sTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdGFnZTogJ3JhdGVfbGltaXQnIHwgJ2NsYXNzaWZpY2F0aW9uJyB8ICdwb2xpY3knIHwgJ2VsZW1lbnRfZmV0Y2gnLFxuICAgIHRvb2xOYW1lOiBzdHJpbmcsXG4gICAgY2F1c2U/OiB1bmtub3duLFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBjYXVzZSA/IHsgY2F1c2UgfSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5uYW1lID0gJ1Blcm1pc3Npb25FdmFsdWF0aW9uRXJyb3InO1xuICAgIHRoaXMuc3RhZ2UgPSBzdGFnZTtcbiAgICB0aGlzLnRvb2xOYW1lID0gdG9vbE5hbWU7XG4gIH1cbn1cblxuLyoqIERlcGVuZGVuY2llcyBpbmplY3RlZCBmcm9tIE1DUEFRTEhhbmRsZXIgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbHVhdGVQZXJtaXNzaW9uRGVwcyB7XG4gIHBlcm1pc3Npb25Qcm9tcHRMaW1pdGVyOiBSYXRlTGltaXRlcjtcbiAgY2xhc3NpZnlUb29sOiAodG9vbE5hbWU6IHN0cmluZywgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gVG9vbENsYXNzaWZpY2F0aW9uUmVzdWx0O1xuICBldmFsdWF0ZUNsaVRvb2xQb2xpY3k6ICh0b29sTmFtZTogc3RyaW5nLCB0b29sSW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBlbGVtZW50czogQWN0aXZlRWxlbWVudFtdKSA9PiBDbGlUb29sUG9saWN5UmVzdWx0O1xuICBnZXRBY3RpdmVFbGVtZW50czogKHNlc3Npb25JZD86IHN0cmluZykgPT4gUHJvbWlzZTxBY3RpdmVFbGVtZW50W10+O1xufVxuXG4vKiogT3B0aW9uYWwgcmVhc29uIGZpZWxkLCBvbmx5IGluY2x1ZGVkIHdoZW4gcmVhc29uIGlzIHByb3ZpZGVkICovXG5mdW5jdGlvbiB3aXRoUmVhc29uKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHJlYXNvbj86IHN0cmluZywga2V5ID0gJ3JlYXNvbicpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiByZWFzb24gPyB7IC4uLm9iaiwgW2tleV06IHJlYXNvbiB9IDogb2JqO1xufVxuXG4vKiogR2VtaW5pOiBtYXBzICdhc2snIHRvICdkZW55JyAobm8gaW50ZXJhY3RpdmUgc3VwcG9ydCkgKi9cbmZ1bmN0aW9uIGZvcm1hdEdlbWluaShkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB3aXRoUmVhc29uKHsgZGVjaXNpb246IGRlY2lzaW9uID09PSAnYXNrJyA/ICdkZW55JyA6IGRlY2lzaW9uIH0sIHJlYXNvbik7XG59XG5cbi8qKiBDdXJzb3I6IHVzZXMgJ3Blcm1pc3Npb24nIGZpZWxkIGluc3RlYWQgb2YgJ2RlY2lzaW9uJyAqL1xuZnVuY3Rpb24gZm9ybWF0Q3Vyc29yKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBwZXJtaXNzaW9uOiBkZWNpc2lvbiB9LCByZWFzb24pO1xufVxuXG4vKiogV2luZHN1cmY6IHVzZXMgYm9vbGVhbiAnYWxsb3dlZCcgZmllbGQgKi9cbmZ1bmN0aW9uIGZvcm1hdFdpbmRzdXJmKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHdpdGhSZWFzb24oeyBhbGxvd2VkOiBkZWNpc2lvbiA9PT0gJ2FsbG93JyB9LCByZWFzb24pO1xufVxuXG4vKiogQ29kZXg6IGV4cGxpY2l0IFByZVRvb2xVc2UgcGF5bG9hZCwgbWFwcyAnYXNrJyB0byAnZGVueScgKi9cbmZ1bmN0aW9uIGZvcm1hdENvZGV4KGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBob29rU3BlY2lmaWNPdXRwdXQ6IHtcbiAgICAgIGhvb2tFdmVudE5hbWU6ICdQcmVUb29sVXNlJyxcbiAgICAgIHBlcm1pc3Npb25EZWNpc2lvbjogZGVjaXNpb24gPT09ICdhc2snID8gJ2RlbnknIDogZGVjaXNpb24sXG4gICAgICBwZXJtaXNzaW9uRGVjaXNpb25SZWFzb246IHJlYXNvbiA/PyAnJyxcbiAgICB9LFxuICB9O1xufVxuXG4vKiogQ2xhdWRlIENvZGUgKGRlZmF1bHQpOiB1c2VzIGhvb2tTcGVjaWZpY091dHB1dC5wZXJtaXNzaW9uRGVjaXNpb24gZm9yIFByZVRvb2xVc2UgKi9cbmZ1bmN0aW9uIGZvcm1hdENsYXVkZUNvZGUoZGVjaXNpb246IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4ge1xuICAgIGhvb2tTcGVjaWZpY091dHB1dDogd2l0aFJlYXNvbih7XG4gICAgICBob29rRXZlbnROYW1lOiAnUHJlVG9vbFVzZScsXG4gICAgICBwZXJtaXNzaW9uRGVjaXNpb246IGRlY2lzaW9uLFxuICAgIH0sIHJlYXNvbiwgJ3Blcm1pc3Npb25EZWNpc2lvblJlYXNvbicpLFxuICB9O1xufVxuXG4vKiogUGxhdGZvcm0gZm9ybWF0dGVyIGxvb2t1cCAqL1xuY29uc3QgcGxhdGZvcm1Gb3JtYXR0ZXJzOiBSZWNvcmQ8c3RyaW5nLCAoZGVjaXNpb246IHN0cmluZywgcmVhc29uPzogc3RyaW5nKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSB7XG4gIGdlbWluaTogZm9ybWF0R2VtaW5pLFxuICBjdXJzb3I6IGZvcm1hdEN1cnNvcixcbiAgd2luZHN1cmY6IGZvcm1hdFdpbmRzdXJmLFxuICBjb2RleDogZm9ybWF0Q29kZXgsXG4gIHZzY29kZTogZm9ybWF0Q2xhdWRlQ29kZSxcbiAgY2xhdWRlX2NvZGU6IGZvcm1hdENsYXVkZUNvZGUsXG59O1xuXG4vKiogS25vd24gcGxhdGZvcm0gaWRlbnRpZmllcnMgKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JURURfUExBVEZPUk1TID0gT2JqZWN0LmtleXMocGxhdGZvcm1Gb3JtYXR0ZXJzKTtcblxuZnVuY3Rpb24gd2Fybk9uVW5rbm93blBsYXRmb3JtKHBsYXRmb3JtOiBzdHJpbmcpOiB2b2lkIHtcbiAgdm9pZCBpbXBvcnQoJy4uLy4uL3V0aWxzL2xvZ2dlci5qcycpXG4gICAgLnRoZW4oKHsgbG9nZ2VyIH0pID0+IHtcbiAgICAgIGxvZ2dlci53YXJuKFxuICAgICAgICBgW2V2YWx1YXRlUGVybWlzc2lvbl0gVW5rbm93biBwbGF0Zm9ybSBcIiR7cGxhdGZvcm19XCIsIGRlZmF1bHRpbmcgdG8gY2xhdWRlX2NvZGUgZm9ybWF0LiBTdXBwb3J0ZWQ6ICR7U1VQUE9SVEVEX1BMQVRGT1JNUy5qb2luKCcsICcpfWAsXG4gICAgICApO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgW2V2YWx1YXRlUGVybWlzc2lvbl0gRmFpbGVkIHRvIGxvYWQgbG9nZ2VyIHdoaWxlIGhhbmRsaW5nIHVua25vd24gcGxhdGZvcm0gXCIke3BsYXRmb3JtfVwiLmAsXG4gICAgICAgIGVycm9yLFxuICAgICAgKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgcGVybWlzc2lvbiBldmFsdWF0aW9uIHJlc3BvbnNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBob29rIHNjcmlwdHMuXG4gKiBFYWNoIHBsYXRmb3JtIGV4cGVjdHMgYSBkaWZmZXJlbnQgSlNPTiBzaGFwZSBmcm9tIGl0cyBob29rIHJlc3BvbnNlLlxuICpcbiAqIFVua25vd24gcGxhdGZvcm1zIGRlZmF1bHQgdG8gY2xhdWRlX2NvZGUgZm9ybWF0IHdpdGggYSB3YXJuaW5nIGxvZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZShcbiAgZGVjaXNpb246ICdhbGxvdycgfCAnZGVueScgfCAnYXNrJyxcbiAgcGxhdGZvcm06IHN0cmluZyxcbiAgX2lucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgcmVhc29uPzogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBzd2l0Y2ggKHBsYXRmb3JtKSB7XG4gICAgY2FzZSAnZ2VtaW5pJzogcmV0dXJuIGZvcm1hdEdlbWluaShkZWNpc2lvbiwgcmVhc29uKTtcbiAgICBjYXNlICdjdXJzb3InOiByZXR1cm4gZm9ybWF0Q3Vyc29yKGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ3dpbmRzdXJmJzogcmV0dXJuIGZvcm1hdFdpbmRzdXJmKGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ2NvZGV4JzogcmV0dXJuIGZvcm1hdENvZGV4KGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGNhc2UgJ2NsYXVkZV9jb2RlJzogcmV0dXJuIGZvcm1hdENsYXVkZUNvZGUoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEltcG9ydCBsYXppbHkgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jeSBhdCBtb2R1bGUgbG9hZCB0aW1lXG4gICAgICB3YXJuT25Vbmtub3duUGxhdGZvcm0ocGxhdGZvcm0pO1xuICAgICAgcmV0dXJuIGZvcm1hdENsYXVkZUNvZGUoZGVjaXNpb24sIHJlYXNvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBFdmFsdWF0ZSBhIENMSSBwZXJtaXNzaW9uIHJlcXVlc3QgZm9yIFByZVRvb2xVc2UgaG9va3MuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRvb2wgbmFtZSwgaW5wdXQsIGFuZCB0YXJnZXQgcGxhdGZvcm1cbiAqIEBwYXJhbSBkZXBzIC0gSW5qZWN0ZWQgZGVwZW5kZW5jaWVzIGZyb20gTUNQQVFMSGFuZGxlclxuICogQHJldHVybnMgUGxhdGZvcm0tZm9ybWF0dGVkIHBlcm1pc3Npb24gZGVjaXNpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV2YWx1YXRlUGVybWlzc2lvbihcbiAgcGFyYW1zOiB7IHRvb2xfbmFtZT86IHVua25vd247IGlucHV0PzogdW5rbm93bjsgcGxhdGZvcm0/OiB1bmtub3duOyBzZXNzaW9uX2lkPzogdW5rbm93biB9LFxuICBkZXBzOiBFdmFsdWF0ZVBlcm1pc3Npb25EZXBzLFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCB0b29sTmFtZSA9IHR5cGVvZiBwYXJhbXMudG9vbF9uYW1lID09PSAnc3RyaW5nJyA/IHBhcmFtcy50b29sX25hbWUgOiAnJztcbiAgY29uc3QgaW5wdXRSYXcgPSBwYXJhbXMuaW5wdXQ7XG4gIGNvbnN0IGlucHV0ID0gKGlucHV0UmF3ICYmIHR5cGVvZiBpbnB1dFJhdyA9PT0gJ29iamVjdCcpXG4gICAgPyBpbnB1dFJhdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIDoge307XG4gIGNvbnN0IHBsYXRmb3JtID0gdHlwZW9mIHBhcmFtcy5wbGF0Zm9ybSA9PT0gJ3N0cmluZycgPyBwYXJhbXMucGxhdGZvcm0gOiAnY2xhdWRlX2NvZGUnO1xuICBjb25zdCBzZXNzaW9uSWQgPSB0eXBlb2YgcGFyYW1zLnNlc3Npb25faWQgPT09ICdzdHJpbmcnICYmIHBhcmFtcy5zZXNzaW9uX2lkLnRyaW0oKSAhPT0gJydcbiAgICA/IHBhcmFtcy5zZXNzaW9uX2lkXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgLy8gUmF0ZSBsaW1pdFxuICBjb25zdCByYXRlU3RhdHVzID0gZGVwcy5wZXJtaXNzaW9uUHJvbXB0TGltaXRlci5jaGVja0xpbWl0KCk7XG4gIGlmICghcmF0ZVN0YXR1cy5hbGxvd2VkKSB7XG4gICAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnZGVueScsIHBsYXRmb3JtLCBpbnB1dCwgJ1JhdGUgbGltaXQgZXhjZWVkZWQnKTtcbiAgfVxuICBkZXBzLnBlcm1pc3Npb25Qcm9tcHRMaW1pdGVyLmNvbnN1bWVUb2tlbigpO1xuXG4gIC8vIFN0YWdlIDE6IFN0YXRpYyBjbGFzc2lmaWNhdGlvblxuICBjb25zdCBjbGFzc2lmaWNhdGlvbiA9IGRlcHMuY2xhc3NpZnlUb29sKHRvb2xOYW1lLCBpbnB1dCk7XG4gIGlmIChjbGFzc2lmaWNhdGlvbi5iZWhhdmlvciA9PT0gJ2FsbG93Jykge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2FsbG93JywgcGxhdGZvcm0sIGlucHV0KTtcbiAgfVxuICBpZiAoY2xhc3NpZmljYXRpb24uYmVoYXZpb3IgPT09ICdkZW55Jykge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2RlbnknLCBwbGF0Zm9ybSwgaW5wdXQsIGNsYXNzaWZpY2F0aW9uLnJlYXNvbik7XG4gIH1cblxuICAvLyBTdGFnZSAyOiBFbGVtZW50IHBvbGljeSBldmFsdWF0aW9uXG4gIGxldCBlbGVtZW50czogQWN0aXZlRWxlbWVudFtdO1xuICB0cnkge1xuICAgIGVsZW1lbnRzID0gYXdhaXQgZGVwcy5nZXRBY3RpdmVFbGVtZW50cyhzZXNzaW9uSWQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvdyBuZXcgUGVybWlzc2lvbkV2YWx1YXRpb25FcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggYWN0aXZlIGVsZW1lbnRzIGZvciBwb2xpY3kgZXZhbHVhdGlvbjogJHtlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycil9YCxcbiAgICAgICdlbGVtZW50X2ZldGNoJywgdG9vbE5hbWUsIGVycixcbiAgICApO1xuICB9XG4gIGNvbnN0IGRlY2lzaW9uID0gZGVwcy5ldmFsdWF0ZUNsaVRvb2xQb2xpY3kodG9vbE5hbWUsIGlucHV0LCBlbGVtZW50cyk7XG5cbiAgaWYgKGRlY2lzaW9uLmJlaGF2aW9yID09PSAnZGVueScpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdkZW55JywgcGxhdGZvcm0sIGlucHV0LCBkZWNpc2lvbi5tZXNzYWdlKTtcbiAgfVxuICBpZiAoZGVjaXNpb24uYmVoYXZpb3IgPT09ICdjb25maXJtJykge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2FzaycsIHBsYXRmb3JtLCBpbnB1dCxcbiAgICAgIGRlY2lzaW9uLm1lc3NhZ2UgfHwgJ1JlcXVpcmVzIGNvbmZpcm1hdGlvbiBwZXIgZWxlbWVudCBwb2xpY3knKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQ6IGFsbG93XG4gIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2FsbG93JywgcGxhdGZvcm0sIGlucHV0KTtcbn1cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGVQZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL21jcC1hcWwvZXZhbHVhdGVQZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsd0VBQXdFO0FBQ3hFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxLQUFLO0lBQ2xDLEtBQUssQ0FBK0Q7SUFDcEUsUUFBUSxDQUFTO0lBRWpDLFlBQ0UsT0FBZSxFQUNmLEtBQW1FLEVBQ25FLFFBQWdCLEVBQ2hCLEtBQWU7UUFFZixLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksR0FBRywyQkFBMkIsQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFVRCxtRUFBbUU7QUFDbkUsU0FBUyxVQUFVLENBQUMsR0FBNEIsRUFBRSxNQUFlLEVBQUUsR0FBRyxHQUFHLFFBQVE7SUFDL0UsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xELENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBUyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFlO0lBQ3JELE9BQU8sVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFT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O0lBQzdFLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDcEMsT0FBTyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFDcEQsUUFBUSxDQUFDLE9BQU8sSUFBSSwwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsT0FBTyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBlcm1pc3Npb24gZXZhbHVhdGlvbiBmb3IgUHJlVG9vbFVzZSBob29rcyBhY3Jvc3MgYWxsIEFJIHBsYXRmb3Jtcy5cbiAqXG4gKiBQcm92aWRlcyB0aGUgYGV2YWx1YXRlX3Blcm1pc3Npb25gIE1DUC1BUUwgUkVBRCBvcGVyYXRpb24sIGVuYWJsaW5nXG4gKiBDbGF1ZGUgQ29kZSwgQ3Vyc29yLCBHZW1pbmkgQ0xJLCBXaW5kc3VyZiwgYW5kIENvZGV4IHRvIHVzZVxuICogRG9sbGhvdXNlTUNQIGFzIHRoZWlyIHBlcm1pc3Npb24gZXZhbHVhdGlvbiBiYWNrZW5kIHZpYSBob29rcy5cbiAqXG4gKiBUaHJlZS1zdGFnZSBldmFsdWF0aW9uIHBpcGVsaW5lOlxuICogMS4gUmF0ZSBsaW1pdGluZyDigJQgcHJldmVudHMgYWJ1c2VcbiAqIDIuIFN0YXRpYyB0b29sIGNsYXNzaWZpY2F0aW9uIOKAlCBidWlsdC1pbiBhbGxvdy9kZW55IHJ1bGVzXG4gKiAzLiBFbGVtZW50IHBvbGljeSBldmFsdWF0aW9uIOKAlCBhY3RpdmUgZWxlbWVudCBnYXRla2VlcGVyIHBvbGljaWVzXG4gKlxuICogUmV0dXJucyBwbGF0Zm9ybS1zcGVjaWZpYyByZXNwb25zZSBmb3JtYXRzIHNvIGVhY2ggcGxhdGZvcm0ncyBob29rXG4gKiBzY3JpcHQgcmVjZWl2ZXMgdGhlIEpTT04gc2hhcGUgaXQgZXhwZWN0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJhdGVMaW1pdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvUmF0ZUxpbWl0ZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBUb29sQ2xhc3NpZmljYXRpb25SZXN1bHQsIENsaVRvb2xQb2xpY3lSZXN1bHQgfSBmcm9tICcuL3BvbGljaWVzL1Rvb2xDbGFzc2lmaWNhdGlvbi5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGl2ZUVsZW1lbnQgfSBmcm9tICcuL3BvbGljaWVzL0VsZW1lbnRQb2xpY2llcy5qcyc7XG5cbi8qKiBFcnJvciB0aHJvd24gd2hlbiBwZXJtaXNzaW9uIGV2YWx1YXRpb24gZmFpbHMgYXQgYSBzcGVjaWZpYyBzdGFnZSAqL1xuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25FdmFsdWF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHB1YmxpYyByZWFkb25seSBzdGFnZTogJ3JhdGVfbGltaXQnIHwgJ2NsYXNzaWZpY2F0aW9uJyB8ICdwb2xpY3knIHwgJ2VsZW1lbnRfZmV0Y2gnO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9vbE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RhZ2U6ICdyYXRlX2xpbWl0JyB8ICdjbGFzc2lmaWNhdGlvbicgfCAncG9saWN5JyB8ICdlbGVtZW50X2ZldGNoJyxcbiAgICB0b29sTmFtZTogc3RyaW5nLFxuICAgIGNhdXNlPzogdW5rbm93bixcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgY2F1c2UgPyB7IGNhdXNlIH0gOiB1bmRlZmluZWQpO1xuICAgIHRoaXMubmFtZSA9ICdQZXJtaXNzaW9uRXZhbHVhdGlvbkVycm9yJztcbiAgICB0aGlzLnN0YWdlID0gc3RhZ2U7XG4gICAgdGhpcy50b29sTmFtZSA9IHRvb2xOYW1lO1xuICB9XG59XG5cbi8qKiBEZXBlbmRlbmNpZXMgaW5qZWN0ZWQgZnJvbSBNQ1BBUUxIYW5kbGVyICovXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlUGVybWlzc2lvbkRlcHMge1xuICBwZXJtaXNzaW9uUHJvbXB0TGltaXRlcjogUmF0ZUxpbWl0ZXI7XG4gIGNsYXNzaWZ5VG9vbDogKHRvb2xOYW1lOiBzdHJpbmcsIHRvb2xJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFRvb2xDbGFzc2lmaWNhdGlvblJlc3VsdDtcbiAgZXZhbHVhdGVDbGlUb29sUG9saWN5OiAodG9vbE5hbWU6IHN0cmluZywgdG9vbElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZWxlbWVudHM6IEFjdGl2ZUVsZW1lbnRbXSkgPT4gQ2xpVG9vbFBvbGljeVJlc3VsdDtcbiAgZ2V0QWN0aXZlRWxlbWVudHM6IChzZXNzaW9uSWQ/OiBzdHJpbmcpID0+IFByb21pc2U8QWN0aXZlRWxlbWVudFtdPjtcbn1cblxuLyoqIE9wdGlvbmFsIHJlYXNvbiBmaWVsZCwgb25seSBpbmNsdWRlZCB3aGVuIHJlYXNvbiBpcyBwcm92aWRlZCAqL1xuZnVuY3Rpb24gd2l0aFJlYXNvbihvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCByZWFzb24/OiBzdHJpbmcsIGtleSA9ICdyZWFzb24nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gcmVhc29uID8geyAuLi5vYmosIFtrZXldOiByZWFzb24gfSA6IG9iajtcbn1cblxuLyoqIEdlbWluaTogbWFwcyAnYXNrJyB0byAnZGVueScgKG5vIGludGVyYWN0aXZlIHN1cHBvcnQpICovXG5mdW5jdGlvbiBmb3JtYXRHZW1pbmkoZGVjaXNpb246IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gd2l0aFJlYXNvbih7IGRlY2lzaW9uOiBkZWNpc2lvbiA9PT0gJ2FzaycgPyAnZGVueScgOiBkZWNpc2lvbiB9LCByZWFzb24pO1xufVxuXG4vKiogQ3Vyc29yOiB1c2VzICdwZXJtaXNzaW9uJyBmaWVsZCBpbnN0ZWFkIG9mICdkZWNpc2lvbicgKi9cbmZ1bmN0aW9uIGZvcm1hdEN1cnNvcihkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB3aXRoUmVhc29uKHsgcGVybWlzc2lvbjogZGVjaXNpb24gfSwgcmVhc29uKTtcbn1cblxuLyoqIFdpbmRzdXJmOiB1c2VzIGJvb2xlYW4gJ2FsbG93ZWQnIGZpZWxkICovXG5mdW5jdGlvbiBmb3JtYXRXaW5kc3VyZihkZWNpc2lvbjogc3RyaW5nLCByZWFzb24/OiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB3aXRoUmVhc29uKHsgYWxsb3dlZDogZGVjaXNpb24gPT09ICdhbGxvdycgfSwgcmVhc29uKTtcbn1cblxuLyoqIENvZGV4IFByZVRvb2xVc2UgY3VycmVudGx5IHN1cHBvcnRzIGJsb2NrL2Rlbnkgb25seTsgYWxsb3cgaXMgZW1wdHkgc3Rkb3V0LiAqL1xuZnVuY3Rpb24gZm9ybWF0Q29kZXgoZGVjaXNpb246IHN0cmluZywgcmVhc29uPzogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBpZiAoZGVjaXNpb24gPT09ICdhbGxvdycpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGhvb2tTcGVjaWZpY091dHB1dDoge1xuICAgICAgaG9va0V2ZW50TmFtZTogJ1ByZVRvb2xVc2UnLFxuICAgICAgcGVybWlzc2lvbkRlY2lzaW9uOiBkZWNpc2lvbiA9PT0gJ2FzaycgPyAnZGVueScgOiBkZWNpc2lvbixcbiAgICAgIC4uLihyZWFzb24gPyB7IHBlcm1pc3Npb25EZWNpc2lvblJlYXNvbjogcmVhc29uIH0gOiB7fSksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIENsYXVkZSBDb2RlIChkZWZhdWx0KTogdXNlcyBob29rU3BlY2lmaWNPdXRwdXQucGVybWlzc2lvbkRlY2lzaW9uIGZvciBQcmVUb29sVXNlICovXG5mdW5jdGlvbiBmb3JtYXRDbGF1ZGVDb2RlKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBob29rU3BlY2lmaWNPdXRwdXQ6IHdpdGhSZWFzb24oe1xuICAgICAgaG9va0V2ZW50TmFtZTogJ1ByZVRvb2xVc2UnLFxuICAgICAgcGVybWlzc2lvbkRlY2lzaW9uOiBkZWNpc2lvbixcbiAgICB9LCByZWFzb24sICdwZXJtaXNzaW9uRGVjaXNpb25SZWFzb24nKSxcbiAgfTtcbn1cblxuLyoqIFBsYXRmb3JtIGZvcm1hdHRlciBsb29rdXAgKi9cbmNvbnN0IHBsYXRmb3JtRm9ybWF0dGVyczogUmVjb3JkPHN0cmluZywgKGRlY2lzaW9uOiBzdHJpbmcsIHJlYXNvbj86IHN0cmluZykgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+ID0ge1xuICBnZW1pbmk6IGZvcm1hdEdlbWluaSxcbiAgY3Vyc29yOiBmb3JtYXRDdXJzb3IsXG4gIHdpbmRzdXJmOiBmb3JtYXRXaW5kc3VyZixcbiAgY29kZXg6IGZvcm1hdENvZGV4LFxuICB2c2NvZGU6IGZvcm1hdENsYXVkZUNvZGUsXG4gIGNsYXVkZV9jb2RlOiBmb3JtYXRDbGF1ZGVDb2RlLFxufTtcblxuLyoqIEtub3duIHBsYXRmb3JtIGlkZW50aWZpZXJzICovXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX1BMQVRGT1JNUyA9IE9iamVjdC5rZXlzKHBsYXRmb3JtRm9ybWF0dGVycyk7XG5cbmZ1bmN0aW9uIHdhcm5PblVua25vd25QbGF0Zm9ybShwbGF0Zm9ybTogc3RyaW5nKTogdm9pZCB7XG4gIHZvaWQgaW1wb3J0KCcuLi8uLi91dGlscy9sb2dnZXIuanMnKVxuICAgIC50aGVuKCh7IGxvZ2dlciB9KSA9PiB7XG4gICAgICBsb2dnZXIud2FybihcbiAgICAgICAgYFtldmFsdWF0ZVBlcm1pc3Npb25dIFVua25vd24gcGxhdGZvcm0gXCIke3BsYXRmb3JtfVwiLCBkZWZhdWx0aW5nIHRvIGNsYXVkZV9jb2RlIGZvcm1hdC4gU3VwcG9ydGVkOiAke1NVUFBPUlRFRF9QTEFURk9STVMuam9pbignLCAnKX1gLFxuICAgICAgKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtldmFsdWF0ZVBlcm1pc3Npb25dIEZhaWxlZCB0byBsb2FkIGxvZ2dlciB3aGlsZSBoYW5kbGluZyB1bmtub3duIHBsYXRmb3JtIFwiJHtwbGF0Zm9ybX1cIi5gLFxuICAgICAgICBlcnJvcixcbiAgICAgICk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogRm9ybWF0IHBlcm1pc3Npb24gZXZhbHVhdGlvbiByZXNwb25zZSBmb3IgcGxhdGZvcm0tc3BlY2lmaWMgaG9vayBzY3JpcHRzLlxuICogRWFjaCBwbGF0Zm9ybSBleHBlY3RzIGEgZGlmZmVyZW50IEpTT04gc2hhcGUgZnJvbSBpdHMgaG9vayByZXNwb25zZS5cbiAqXG4gKiBVbmtub3duIHBsYXRmb3JtcyBkZWZhdWx0IHRvIGNsYXVkZV9jb2RlIGZvcm1hdCB3aXRoIGEgd2FybmluZyBsb2cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoXG4gIGRlY2lzaW9uOiAnYWxsb3cnIHwgJ2RlbnknIHwgJ2FzaycsXG4gIHBsYXRmb3JtOiBzdHJpbmcsXG4gIF9pbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHJlYXNvbj86IHN0cmluZyxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgc3dpdGNoIChwbGF0Zm9ybSkge1xuICAgIGNhc2UgJ2dlbWluaSc6IHJldHVybiBmb3JtYXRHZW1pbmkoZGVjaXNpb24sIHJlYXNvbik7XG4gICAgY2FzZSAnY3Vyc29yJzogcmV0dXJuIGZvcm1hdEN1cnNvcihkZWNpc2lvbiwgcmVhc29uKTtcbiAgICBjYXNlICd3aW5kc3VyZic6IHJldHVybiBmb3JtYXRXaW5kc3VyZihkZWNpc2lvbiwgcmVhc29uKTtcbiAgICBjYXNlICdjb2RleCc6IHJldHVybiBmb3JtYXRDb2RleChkZWNpc2lvbiwgcmVhc29uKTtcbiAgICBjYXNlICdjbGF1ZGVfY29kZSc6IHJldHVybiBmb3JtYXRDbGF1ZGVDb2RlKGRlY2lzaW9uLCByZWFzb24pO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBJbXBvcnQgbGF6aWx5IHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY3kgYXQgbW9kdWxlIGxvYWQgdGltZVxuICAgICAgd2Fybk9uVW5rbm93blBsYXRmb3JtKHBsYXRmb3JtKTtcbiAgICAgIHJldHVybiBmb3JtYXRDbGF1ZGVDb2RlKGRlY2lzaW9uLCByZWFzb24pO1xuICB9XG59XG5cbi8qKlxuICogRXZhbHVhdGUgYSBDTEkgcGVybWlzc2lvbiByZXF1ZXN0IGZvciBQcmVUb29sVXNlIGhvb2tzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUb29sIG5hbWUsIGlucHV0LCBhbmQgdGFyZ2V0IHBsYXRmb3JtXG4gKiBAcGFyYW0gZGVwcyAtIEluamVjdGVkIGRlcGVuZGVuY2llcyBmcm9tIE1DUEFRTEhhbmRsZXJcbiAqIEByZXR1cm5zIFBsYXRmb3JtLWZvcm1hdHRlZCBwZXJtaXNzaW9uIGRlY2lzaW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBldmFsdWF0ZVBlcm1pc3Npb24oXG4gIHBhcmFtczogeyB0b29sX25hbWU/OiB1bmtub3duOyBpbnB1dD86IHVua25vd247IHBsYXRmb3JtPzogdW5rbm93bjsgc2Vzc2lvbl9pZD86IHVua25vd24gfSxcbiAgZGVwczogRXZhbHVhdGVQZXJtaXNzaW9uRGVwcyxcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgdG9vbE5hbWUgPSB0eXBlb2YgcGFyYW1zLnRvb2xfbmFtZSA9PT0gJ3N0cmluZycgPyBwYXJhbXMudG9vbF9uYW1lIDogJyc7XG4gIGNvbnN0IGlucHV0UmF3ID0gcGFyYW1zLmlucHV0O1xuICBjb25zdCBpbnB1dCA9IChpbnB1dFJhdyAmJiB0eXBlb2YgaW5wdXRSYXcgPT09ICdvYmplY3QnKVxuICAgID8gaW5wdXRSYXcgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICA6IHt9O1xuICBjb25zdCBwbGF0Zm9ybSA9IHR5cGVvZiBwYXJhbXMucGxhdGZvcm0gPT09ICdzdHJpbmcnID8gcGFyYW1zLnBsYXRmb3JtIDogJ2NsYXVkZV9jb2RlJztcbiAgY29uc3Qgc2Vzc2lvbklkID0gdHlwZW9mIHBhcmFtcy5zZXNzaW9uX2lkID09PSAnc3RyaW5nJyAmJiBwYXJhbXMuc2Vzc2lvbl9pZC50cmltKCkgIT09ICcnXG4gICAgPyBwYXJhbXMuc2Vzc2lvbl9pZFxuICAgIDogdW5kZWZpbmVkO1xuXG4gIC8vIFJhdGUgbGltaXRcbiAgY29uc3QgcmF0ZVN0YXR1cyA9IGRlcHMucGVybWlzc2lvblByb21wdExpbWl0ZXIuY2hlY2tMaW1pdCgpO1xuICBpZiAoIXJhdGVTdGF0dXMuYWxsb3dlZCkge1xuICAgIHJldHVybiBmb3JtYXRQZXJtaXNzaW9uUmVzcG9uc2UoJ2RlbnknLCBwbGF0Zm9ybSwgaW5wdXQsICdSYXRlIGxpbWl0IGV4Y2VlZGVkJyk7XG4gIH1cbiAgZGVwcy5wZXJtaXNzaW9uUHJvbXB0TGltaXRlci5jb25zdW1lVG9rZW4oKTtcblxuICAvLyBTdGFnZSAxOiBTdGF0aWMgY2xhc3NpZmljYXRpb25cbiAgY29uc3QgY2xhc3NpZmljYXRpb24gPSBkZXBzLmNsYXNzaWZ5VG9vbCh0b29sTmFtZSwgaW5wdXQpO1xuICBpZiAoY2xhc3NpZmljYXRpb24uYmVoYXZpb3IgPT09ICdhbGxvdycpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdhbGxvdycsIHBsYXRmb3JtLCBpbnB1dCk7XG4gIH1cbiAgaWYgKGNsYXNzaWZpY2F0aW9uLmJlaGF2aW9yID09PSAnZGVueScpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdkZW55JywgcGxhdGZvcm0sIGlucHV0LCBjbGFzc2lmaWNhdGlvbi5yZWFzb24pO1xuICB9XG5cbiAgLy8gU3RhZ2UgMjogRWxlbWVudCBwb2xpY3kgZXZhbHVhdGlvblxuICBsZXQgZWxlbWVudHM6IEFjdGl2ZUVsZW1lbnRbXTtcbiAgdHJ5IHtcbiAgICBlbGVtZW50cyA9IGF3YWl0IGRlcHMuZ2V0QWN0aXZlRWxlbWVudHMoc2Vzc2lvbklkKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IFBlcm1pc3Npb25FdmFsdWF0aW9uRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIGZldGNoIGFjdGl2ZSBlbGVtZW50cyBmb3IgcG9saWN5IGV2YWx1YXRpb246ICR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpfWAsXG4gICAgICAnZWxlbWVudF9mZXRjaCcsIHRvb2xOYW1lLCBlcnIsXG4gICAgKTtcbiAgfVxuICBjb25zdCBkZWNpc2lvbiA9IGRlcHMuZXZhbHVhdGVDbGlUb29sUG9saWN5KHRvb2xOYW1lLCBpbnB1dCwgZWxlbWVudHMpO1xuXG4gIGlmIChkZWNpc2lvbi5iZWhhdmlvciA9PT0gJ2RlbnknKSB7XG4gICAgcmV0dXJuIGZvcm1hdFBlcm1pc3Npb25SZXNwb25zZSgnZGVueScsIHBsYXRmb3JtLCBpbnB1dCwgZGVjaXNpb24ubWVzc2FnZSk7XG4gIH1cbiAgaWYgKGRlY2lzaW9uLmJlaGF2aW9yID09PSAnY29uZmlybScpIHtcbiAgICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdhc2snLCBwbGF0Zm9ybSwgaW5wdXQsXG4gICAgICBkZWNpc2lvbi5tZXNzYWdlIHx8ICdSZXF1aXJlcyBjb25maXJtYXRpb24gcGVyIGVsZW1lbnQgcG9saWN5Jyk7XG4gIH1cblxuICAvLyBEZWZhdWx0OiBhbGxvd1xuICByZXR1cm4gZm9ybWF0UGVybWlzc2lvblJlc3BvbnNlKCdhbGxvdycsIHBsYXRmb3JtLCBpbnB1dCk7XG59XG4iXX0=
@@ -183,6 +183,13 @@ Quick start examples:
183
183
  { operation: "create_element", element_type: "memory", params: { element_name: "session-notes", description: "Session context and notes" } }
184
184
  { operation: "addEntry", params: { element_name: "session-notes", content: "Remember this fact", tags: ["important"] } }
185
185
  { operation: "execute_agent", params: { element_name: "MyAgent", parameters: { objective: "Review code" } } }
186
+ { operation: "record_execution_step", params: { element_name: "MyAgent", stepDescription: "Reviewed auth module", outcome: "success", findings: "Found 2 issues" } }
187
+ { operation: "complete_execution", params: { element_name: "MyAgent", outcome: "success", summary: "Review complete" } }
188
+
189
+ Execution loop: call execute_agent once to start, then record_execution_step after
190
+ each work chunk, then complete_execution when done. Use continue_execution only to
191
+ resume a paused execution, and pass the same goal parameters you used for
192
+ execute_agent when resuming.
186
193
 
187
194
  Gatekeeper: Some operations may return a confirmation prompt instead of executing immediately. Use confirm_operation to approve, then retry.
188
195
 
@@ -249,6 +256,7 @@ Note: addEntry content supports markdown (headers, lists, bold, tables, code blo
249
256
 
250
257
  Execution lifecycle — record agent progress (appends step records, like addEntry):
251
258
  { operation: "record_execution_step", params: { element_name: "code-reviewer", stepDescription: "Analyzed files", outcome: "success", findings: "Found 3 issues" } }
259
+ This is the normal next lifecycle call after mcp_aql_execute { operation: "execute_agent", ... }.
252
260
  Response flow: record_execution_step returns { autonomy: { continue, factors, notifications? } }. Check autonomy.continue to decide whether to proceed. Check autonomy.notifications for permission_pending (gatekeeper blocks), autonomy_pause, or danger_zone alerts to relay to human operators.
253
261
 
254
262
  Import & portfolio:
@@ -330,6 +338,7 @@ Memory-specific search (filter by tags):
330
338
  Execution lifecycle — read-only queries:
331
339
  { operation: "get_execution_state", params: { element_name: "code-reviewer" } }
332
340
  { operation: "get_gathered_data", params: { element_name: "code-reviewer", goalId: "goal-id" } }
341
+ For execution-state reads, reuse the same element_name you passed to execute_agent. If element_name is missing, retry with the same agent name rather than inventing a new one.
333
342
 
334
343
  Collection:
335
344
  { operation: "browse_collection", params: { section: "personas" } }
@@ -484,8 +493,8 @@ Supported operations: ${getOperationsString('EXECUTE')}
484
493
 
485
494
  These operations manage runtime execution state. Unlike CRUD operations (which manage definitions), Execute operations handle the execution lifecycle:
486
495
  - execute_agent: Start a new execution (returns goalId and stateVersion for tracking)
487
- - complete_execution: Signal successful completion
488
- - continue_execution: Resume from saved state
496
+ - complete_execution: Signal successful completion once the goal is done
497
+ - continue_execution: Resume a previously paused execution with the same goal parameters
489
498
  - abort_execution: Abort a running execution, rejecting further operations
490
499
  - confirm_operation: Confirm a pending operation that requires user approval (Gatekeeper flow)
491
500
  - approve_cli_permission: Approve a pending CLI tool permission request
@@ -496,13 +505,20 @@ IMPORTANT: Execute operations are potentially destructive (agents can perform an
496
505
 
497
506
  ⚠️ SECURITY: Do not auto-allow this endpoint in your host settings (e.g., Claude Code settings.json). Each execution should require explicit human approval. Auto-allowing bypasses the per-operation confirmation gate. While DangerZone verification and element deny policies still provide protection, the primary human review checkpoint is lost.
498
507
 
499
- Response flow: execute_agent returns { goalId, stateVersion, activeElements, safetyTier, ... }. Use goalId with record_execution_step and complete_execution. stateVersion enables optimistic locking. record_execution_step returns { autonomy: { continue, notifications? } } — check notifications for gatekeeper blocks and danger zone alerts.
508
+ Canonical loop:
509
+ 1. Call execute_agent once to start the goal and receive { goalId, stateVersion, activeElements, safetyTier, ... }.
510
+ 2. After each chunk of work, use mcp_aql_create: { operation: "record_execution_step", ... }.
511
+ 3. Read record_execution_step.autonomy.continue and any autonomy.notifications to decide whether to continue, pause for a human, or handle a gatekeeper block.
512
+ 4. When the goal is finished, call complete_execution.
513
+ Use continue_execution only when an already-started goal was paused and you are resuming it with the same goal parameters. It is not the normal next call after execute_agent.
500
514
 
501
515
  Quick start examples:
502
516
  { operation: "execute_agent", params: { element_name: "code-reviewer", parameters: { objective: "Review code" } } }
517
+ Next lifecycle step — use mcp_aql_create:
518
+ { operation: "record_execution_step", params: { element_name: "code-reviewer", stepDescription: "Reviewed auth module", outcome: "success", findings: "Found 2 security issues" } }
503
519
  { operation: "complete_execution", params: { element_name: "code-reviewer", outcome: "success", summary: "Completed review" } }
504
520
  { operation: "abort_execution", params: { element_name: "data-collector", reason: "User requested cancellation" } }
505
- { operation: "continue_execution", params: { element_name: "code-reviewer" } }
521
+ { operation: "continue_execution", params: { element_name: "rubric-qa-agent", previousStepResult: "Verified citation set", parameters: { run_dir: "/app/run", deliverable_path: "/app/run/output.docx" } } }
506
522
  { operation: "confirm_operation", params: { operation: "execute_agent" } }
507
523
  { operation: "approve_cli_permission", params: { request_id: "req-123", decision: "allow" } }
508
524
  { operation: "prepare_handoff", params: { element_name: "code-reviewer" } }
@@ -530,4 +546,4 @@ Discover required parameters — use mcp_aql_read:
530
546
  }
531
547
  ];
532
548
  }
533
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQVFMVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL01DUEFRTFRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RUc7QUFHSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFxQixNQUFNLDJDQUEyQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXRFLCtFQUErRTtBQUMvRSxpQ0FBaUM7QUFDakMsK0VBQStFO0FBRS9FOzs7R0FHRztBQUNILFNBQVMscUJBQXFCO0lBQzVCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQUMsUUFBc0I7SUFDakQsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxjQUFjO0FBQ2QsK0VBQStFO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsSUFBSSxFQUFFLFFBQWlCO0lBQ3ZCLFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLDJCQUEyQjtTQUN6QztRQUNELFlBQVksRUFBRTtZQUNaLElBQUksRUFB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QUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzt5QkFDdEM7cUJBQ0Y7aUJBQ0YsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUVELGlFQUFpRTtRQUNqRTtZQUNFLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixXQUFXLEVBQUU7O3dCQUVHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0ZBNkI4QjtnQkFDNUUsV0FBVyxFQUFFLG9CQUFvQjtnQkFDakMsV0FBVyxFQUFFO29CQUNYLFlBQVksRUFBRSxLQUFLO29CQUNuQixlQUFlLEVBQUUsSUFBSSxDQUFFLDBEQUEwRDtpQkFDbEY7YUFDRjtZQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBUyxFQUFFLEVBQUU7Z0JBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakQsT0FBTztvQkFDTCxPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7eUJBQ3RDO3FCQUNGO2lCQUNGLENBQUM7WUFDSixDQUFDO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTUNQLUFRTCBUb29scyAtIFVuaWZpZWQgcXVlcnkgaW50ZXJmYWNlIGZvciBBSSBhZ2VudHNcbiAqXG4gKiBQcm92aWRlcyB0d28gZW5kcG9pbnQgbW9kZXMgY29uZmlndXJhYmxlIHZpYSBNQ1BfQVFMX0VORFBPSU5UX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGU6XG4gKlxuICogIyMgTW9kZSAxOiBDUlVERSBFbmRwb2ludHMgKERlZmF1bHQpIC0gTUNQX0FRTF9FTkRQT0lOVF9NT0RFPWNydWRlXG4gKiA1IHRvb2xzOiBtY3BfYXFsX2NyZWF0ZSwgbWNwX2FxbF9yZWFkLCBtY3BfYXFsX3VwZGF0ZSwgbWNwX2FxbF9kZWxldGUsIG1jcF9hcWxfZXhlY3V0ZSAofjQsMzAwIHRva2VucylcbiAqXG4gKiAjIyBNb2RlIDI6IFNpbmdsZSBFbmRwb2ludCAoTWluaW1hbCkgLSBNQ1BfQVFMX0VORFBPSU5UX01PREU9c2luZ2xlXG4gKiAxIHRvb2w6IG1jcF9hcWwgKH4zNTAgdG9rZW5zKVxuICogSWRlYWwgZm9yIG11bHRpLXNlcnZlciBkZXBsb3ltZW50cyB3aGVyZSB0b2tlbiBidWRnZXQgaXMgY29uc3RyYWluZWQuXG4gKlxuICogTm90ZTogVGhlc2UgdG9vbHMgYXJlIG9ubHkgcmVnaXN0ZXJlZCB3aGVuIE1DUF9JTlRFUkZBQ0VfTU9ERT1tY3BhcWwgKGRlZmF1bHQpLlxuICogV2hlbiBNQ1BfSU5URVJGQUNFX01PREU9ZGlzY3JldGUsIGRpc2NyZXRlIHRvb2xzIGFyZSByZWdpc3RlcmVkIGluc3RlYWQuXG4gKlxuICogIyMgV2h5IDUgQ1JVREUgRW5kcG9pbnRzPyAoRGVmYXVsdCBNb2RlKVxuICpcbiAqIFRoZSA1LWVuZHBvaW50IENSVURFIHBhdHRlcm4gKENyZWF0ZSwgUmVhZCwgVXBkYXRlLCBEZWxldGUsIEV4ZWN1dGUpIHdhcyBjaG9zZW4gZm9yOlxuICpcbiAqIDEuICoqVXNlciBDb21wcmVoZW5zaW9uKio6IENSVURFIGV4dGVuZHMgQ1JVRCB3aXRoIEV4ZWN1dGUgZm9yIG5vbi1pZGVtcG90ZW50XG4gKiAgICBvcGVyYXRpb25zLCBtYWtpbmcgaXQgZWFzeSBmb3IgdXNlcnMgdG8gcmVhc29uIGFib3V0IHdoYXQgZWFjaCBlbmRwb2ludCBjYW4gZG8uXG4gKlxuICogMi4gKipQbGF0Zm9ybSBBbm5vdGF0aW9ucyoqOiBNQ1AgcGxhdGZvcm1zIGxpa2UgQ2hhdEdQVCdzIGFwcHMgcmVxdWlyZVxuICogICAgdG9vbCBhbm5vdGF0aW9ucyB0aGF0IGRlc2NyaWJlIHNhZmV0eSBhbmQgZGVzdHJ1Y3RpdmVuZXNzLiBUaGUgNS1lbmRwb2ludFxuICogICAgc3BsaXQgbWFwcyBkaXJlY3RseSB0byBkaXN0aW5jdCBwZXJtaXNzaW9uIGxldmVsczpcbiAqICAgIC0gQ1JFQVRFOiBhZGRpdGl2ZSwgbm9uLWRlc3RydWN0aXZlIChyZWFkT25seUhpbnQ6IGZhbHNlLCBkZXN0cnVjdGl2ZUhpbnQ6IGZhbHNlKVxuICogICAgLSBSRUFEOiBzYWZlLCByZWFkLW9ubHkgKHJlYWRPbmx5SGludDogdHJ1ZSwgZGVzdHJ1Y3RpdmVIaW50OiBmYWxzZSlcbiAqICAgIC0gVVBEQVRFOiBtb2RpZnlpbmcsIHBvdGVudGlhbGx5IGRlc3RydWN0aXZlIChyZWFkT25seUhpbnQ6IGZhbHNlLCBkZXN0cnVjdGl2ZUhpbnQ6IHRydWUpXG4gKiAgICAtIERFTEVURTogZGVzdHJ1Y3RpdmUgKHJlYWRPbmx5SGludDogZmFsc2UsIGRlc3RydWN0aXZlSGludDogdHJ1ZSlcbiAqICAgIC0gRVhFQ1VURTogbm9uLWlkZW1wb3RlbnQsIHBvdGVudGlhbGx5IGRlc3RydWN0aXZlIChyZWFkT25seUhpbnQ6IGZhbHNlLCBkZXN0cnVjdGl2ZUhpbnQ6IHRydWUpXG4gKlxuICogMy4gKipHcmFudWxhciBQZXJtaXNzaW9uIENvbnRyb2wqKjogVXNlcnMgY2FuIGdyYW50IFJFQUQgZW5kcG9pbnQgZnVsbCBhY2Nlc3NcbiAqICAgIHdoaWxlIGxvY2tpbmcgZG93biBDUkVBVEUsIFVQREFURSwgREVMRVRFLCBhbmQgRVhFQ1VURS4gVGhpcyBlbmFibGVzIHNhZmVcbiAqICAgIHJlYWQtb25seSBpbnRlZ3JhdGlvbnMgd2l0aG91dCBleHBvc2luZyBtdXRhdGlvbiBjYXBhYmlsaXRpZXMuXG4gKlxuICogIyMgV2h5IFNpbmdsZSBFbmRwb2ludD8gKE1pbmltYWwgTW9kZSlcbiAqXG4gKiBUaGUgc2luZ2xlLWVuZHBvaW50IG1vZGUgd2FzIGFkZGVkIGZvcjpcbiAqXG4gKiAxLiAqKlRva2VuIEVmZmljaWVuY3kqKjogfjM1MCB0b2tlbnMgdnMgfjQsMzAwIHRva2VucyAoOTIlIHJlZHVjdGlvbilcbiAqIDIuICoqTXVsdGktU2VydmVyIERlcGxveW1lbnRzKio6IFdoZW4gcnVubmluZyBtdWx0aXBsZSBNQ1Agc2VydmVycywgdG9rZW5cbiAqICAgIGJ1ZGdldHMgY2FuIGJlIGNvbnN0cmFpbmVkLiBTaW5nbGUgZW5kcG9pbnQgcmVkdWNlcyBvdmVyaGVhZC5cbiAqIDMuICoqU2ltcGxpZmllZCBJbnRlZ3JhdGlvbioqOiBTb21lIGNsaWVudHMgcHJlZmVyIGEgc2luZ2xlIGVudHJ5IHBvaW50LlxuICpcbiAqIFNlY3VyaXR5IGlzIG1haW50YWluZWQgdGhyb3VnaCBzZXJ2ZXItc2lkZSBHYXRla2VlcGVyIGVuZm9yY2VtZW50IC0gdGhlXG4gKiBzZXJ2ZXIgZGV0ZXJtaW5lcyB3aGljaCBvcGVyYXRpb24gdHlwZSBpcyBiZWluZyBleGVjdXRlZCBhbmQgYXBwbGllc1xuICogYXBwcm9wcmlhdGUgcGVybWlzc2lvbiBjaGVja3MuXG4gKlxuICogIyMgR3JhcGhRTC1TdHlsZSBJbnRyb3NwZWN0aW9uXG4gKlxuICogTUNQLUFRTCBmb2xsb3dzIEdyYXBoUUwgcGF0dGVybnMgZm9yIHNlbGYtZG9jdW1lbnRhdGlvbi4gVG9vbCBkZXNjcmlwdGlvbnNcbiAqIGFyZSBnZW5lcmF0ZWQgZHluYW1pY2FsbHkgZnJvbSBPUEVSQVRJT05fUk9VVEVTLCBlbnN1cmluZyB0aGV5IGFsd2F5cyByZWZsZWN0XG4gKiB0aGUgY3VycmVudCBhdmFpbGFibGUgb3BlcmF0aW9ucy5cbiAqXG4gKiAjIyMgSW50cm9zcGVjdGlvbiBFeGFtcGxlc1xuICpcbiAqIExpc3QgYWxsIGF2YWlsYWJsZSBvcGVyYXRpb25zOlxuICogYGBganNvblxuICogeyBcIm9wZXJhdGlvblwiOiBcImludHJvc3BlY3RcIiwgXCJwYXJhbXNcIjogeyBcInF1ZXJ5XCI6IFwib3BlcmF0aW9uc1wiIH0gfVxuICogYGBgXG4gKlxuICogR2V0IGRldGFpbHMgZm9yIGEgc3BlY2lmaWMgb3BlcmF0aW9uIChwYXJhbWV0ZXJzLCBleGFtcGxlcywgcmV0dXJuIHR5cGVzKTpcbiAqIGBgYGpzb25cbiAqIHsgXCJvcGVyYXRpb25cIjogXCJpbnRyb3NwZWN0XCIsIFwicGFyYW1zXCI6IHsgXCJxdWVyeVwiOiBcIm9wZXJhdGlvbnNcIiwgXCJuYW1lXCI6IFwiY3JlYXRlX2VsZW1lbnRcIiB9IH1cbiAqIGBgYFxuICpcbiAqIERpc2NvdmVyIGF2YWlsYWJsZSB0eXBlcyAoZS5nLiwgRWxlbWVudFR5cGUgZW51bSB2YWx1ZXMpOlxuICogYGBganNvblxuICogeyBcIm9wZXJhdGlvblwiOiBcImludHJvc3BlY3RcIiwgXCJwYXJhbXNcIjogeyBcInF1ZXJ5XCI6IFwidHlwZXNcIiwgXCJuYW1lXCI6IFwiRWxlbWVudFR5cGVcIiB9IH1cbiAqIGBgYFxuICpcbiAqICMjIyBEZXNpZ24gUGhpbG9zb3BoeVxuICpcbiAqIC0gKipTaW5nbGUgc291cmNlIG9mIHRydXRoKio6IE9QRVJBVElPTl9ST1VURVMgZGVmaW5lcyBhbGwgb3BlcmF0aW9uc1xuICogLSAqKkR5bmFtaWMgZGVzY3JpcHRpb25zKio6IEFkZGluZyBhbiBvcGVyYXRpb24gdG8gT1BFUkFUSU9OX1JPVVRFUyBhdXRvbWF0aWNhbGx5XG4gKiAgIHVwZGF0ZXMgdG9vbCBkZXNjcmlwdGlvbnMgLSBubyBtYW51YWwgc3luY2hyb25pemF0aW9uIG5lZWRlZFxuICogLSAqKkludHJvc3BlY3Rpb24tZmlyc3QqKjogTExNcyBkaXNjb3ZlciBwYXJhbWV0ZXJzIHZpYSBpbnRyb3NwZWN0LCBub3Qgc3RhdGljIGRvY3NcbiAqIC0gKipHcmFwaFFMIGhlcml0YWdlKio6IFBhdHRlcm5zIGZhbWlsaWFyIHRvIGFueSBMTE0gdHJhaW5lZCBvbiBHcmFwaFFMXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNQ1BBUUxIYW5kbGVyIH0gZnJvbSAnLi4vLi4vaGFuZGxlcnMvbWNwLWFxbC9NQ1BBUUxIYW5kbGVyLmpzJztcbmltcG9ydCB7IFVuaWZpZWRFbmRwb2ludCB9IGZyb20gJy4uLy4uL2hhbmRsZXJzL21jcC1hcWwvVW5pZmllZEVuZHBvaW50LmpzJztcbmltcG9ydCB7IGdldE9wZXJhdGlvbnNGb3JFbmRwb2ludCwgdHlwZSBDUlVERW5kcG9pbnQgfSBmcm9tICcuLi8uLi9oYW5kbGVycy9tY3AtYXFsL09wZXJhdGlvblJvdXRlci5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4uLy4uL2hhbmRsZXJzL21jcC1hcWwvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBUb29sRGVmaW5pdGlvbiwgVG9vbEhhbmRsZXIgfSBmcm9tICcuLi8uLi9oYW5kbGVycy90eXBlcy9Ub29sVHlwZXMuanMnO1xuaW1wb3J0IHsgZW52IH0gZnJvbSAnLi4vLi4vY29uZmlnL2Vudi5qcyc7XG5pbXBvcnQgeyBFTEVNRU5UX1JPTEVTIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvZW5zZW1ibGVzL2NvbnN0YW50cy5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIER5bmFtaWMgRGVzY3JpcHRpb24gR2VuZXJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBlbGVtZW50IHR5cGVzIGFzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZy5cbiAqIERlcml2ZWQgZnJvbSB0aGUgRWxlbWVudFR5cGUgZW51bSB0byBlbnN1cmUgY29uc2lzdGVuY3kuXG4gKi9cbmZ1bmN0aW9uIGdldEVsZW1lbnRUeXBlc1N0cmluZygpOiBzdHJpbmcge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhFbGVtZW50VHlwZSkuam9pbignLCAnKTtcbn1cblxuLyoqXG4gKiBHZXQgb3BlcmF0aW9ucyBmb3IgYW4gZW5kcG9pbnQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLlxuICogRGVyaXZlZCBmcm9tIE9QRVJBVElPTl9ST1VURVMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5LlxuICovXG5mdW5jdGlvbiBnZXRPcGVyYXRpb25zU3RyaW5nKGVuZHBvaW50OiBDUlVERW5kcG9pbnQpOiBzdHJpbmcge1xuICByZXR1cm4gZ2V0T3BlcmF0aW9uc0ZvckVuZHBvaW50KGVuZHBvaW50KS5qb2luKCcsICcpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUb29sIFNjaGVtYVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNoYXJlZCBpbnB1dCBzY2hlbWEgZm9yIENSVUQgb3BlcmF0aW9ucyAoY3JlYXRlLCByZWFkLCB1cGRhdGUsIGRlbGV0ZSlcbiAqIEFsbCBvcGVyYXRpb25zIHVzZSB0aGUgT3BlcmF0aW9uSW5wdXQgc3RydWN0dXJlIGZyb20gdGhlIEdyYXBoUUwgc2NoZW1hXG4gKi9cbmNvbnN0IG9wZXJhdGlvbklucHV0U2NoZW1hID0ge1xuICB0eXBlOiBcIm9iamVjdFwiIGFzIGNvbnN0LFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgb3BlcmF0aW9uOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVzY3JpcHRpb246IFwiT3BlcmF0aW9uIG5hbWUgdG8gZXhlY3V0ZVwiXG4gICAgfSxcbiAgICBlbGVtZW50X3R5cGU6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUYXJnZXQgZWxlbWVudCB0eXBlIChvcHRpb25hbClcIlxuICAgIH0sXG4gICAgcGFyYW1zOiB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiT3BlcmF0aW9uIHBhcmFtZXRlcnNcIlxuICAgIH0sXG4gICAgb3BlcmF0aW9uczoge1xuICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQXJyYXkgb2Ygb3BlcmF0aW9ucyBmb3IgYmF0Y2ggZXhlY3V0aW9uXCIsXG4gICAgICBpdGVtczoge1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgb3BlcmF0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICBlbGVtZW50X3R5cGU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgIHBhcmFtczogeyB0eXBlOiBcIm9iamVjdFwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgcmVxdWlyZWQ6IFtcIm9wZXJhdGlvblwiXVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVxdWlyZWQ6IFtcIm9wZXJhdGlvblwiIGFzIGNvbnN0XVxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVG9vbCBSZWdpc3RyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHZXQgTUNQLUFRTCB0b29scyBmb3IgcmVnaXN0cmF0aW9uIGluIHRoZSBUb29sUmVnaXN0cnkuXG4gKlxuICogUmV0dXJucyBkaWZmZXJlbnQgdG9vbHMgYmFzZWQgb24gTUNQX0FRTF9FTkRQT0lOVF9NT0RFIGVudmlyb25tZW50IHZhcmlhYmxlOlxuICogLSAnY3J1ZGUnIChkZWZhdWx0KTogNSBDUlVERSBlbmRwb2ludHMgKENyZWF0ZSwgUmVhZCwgVXBkYXRlLCBEZWxldGUsIEV4ZWN1dGUpICh+NCwzMDAgdG9rZW5zKVxuICogLSAnc2luZ2xlJzogMSB1bmlmaWVkIGVuZHBvaW50ICh+MzUwIHRva2VucylcbiAqXG4gKiBOb3RlOiBNQ1BfQVFMX01PREUgaXMgc3VwcG9ydGVkIGFzIGEgZGVwcmVjYXRlZCBhbGlhcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1DUEFRTFRvb2xzKGhhbmRsZXI6IE1DUEFRTEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBUb29sSGFuZGxlciB9PiB7XG4gIC8vIFVzZSBNQ1BfQVFMX0VORFBPSU5UX01PREUsIGZhbGxpbmcgYmFjayB0byBkZXByZWNhdGVkIE1DUF9BUUxfTU9ERSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICBjb25zdCBtb2RlID0gZW52Lk1DUF9BUUxfRU5EUE9JTlRfTU9ERSA/PyBlbnYuTUNQX0FRTF9NT0RFID8/ICdjcnVkZSc7XG5cbiAgaWYgKG1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgcmV0dXJuIGdldFVuaWZpZWRUb29scyhoYW5kbGVyKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQ6IENSVURFIG1vZGUgKDUgZW5kcG9pbnRzKVxuICByZXR1cm4gZ2V0Q1JVREVUb29scyhoYW5kbGVyKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHVuaWZpZWQgc2luZ2xlIGVuZHBvaW50IHRvb2wgKE1DUF9BUUxfTU9ERT1zaW5nbGUpXG4gKiBUb2tlbiBmb290cHJpbnQ6IH4zMDAtNDAwIHRva2Vuc1xuICovXG5mdW5jdGlvbiBnZXRVbmlmaWVkVG9vbHMoaGFuZGxlcjogTUNQQVFMSGFuZGxlcik6IEFycmF5PHsgdG9vbDogVG9vbERlZmluaXRpb247IGhhbmRsZXI6IFRvb2xIYW5kbGVyIH0+IHtcbiAgY29uc3QgdW5pZmllZEVuZHBvaW50ID0gbmV3IFVuaWZpZWRFbmRwb2ludChoYW5kbGVyKTtcblxuICAvLyBCdWlsZCBkeW5hbWljIGRlc2NyaXB0aW9uIGZyb20gT1BFUkFUSU9OX1JPVVRFU1xuICBjb25zdCBkZXNjcmlwdGlvbiA9IGBEb2xsaG91c2VNQ1AgdW5pZmllZCBBUEkgLSBHcmFwaFFMLXN0eWxlIHF1ZXJ5IGludGVyZmFjZSBmb3IgQUkgZWxlbWVudCBtYW5hZ2VtZW50LlxuXG5DUlVERSBPcGVyYXRpb25zOlxuLSBDUkVBVEU6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnQ1JFQVRFJyl9XG4tIFJFQUQ6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnUkVBRCcpfVxuLSBVUERBVEU6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnVVBEQVRFJyl9XG4tIERFTEVURTogJHtnZXRPcGVyYXRpb25zU3RyaW5nKCdERUxFVEUnKX1cbi0gRVhFQ1VURTogJHtnZXRPcGVyYXRpb25zU3RyaW5nKCdFWEVDVVRFJyl9XG5cbkVsZW1lbnQgdHlwZXM6ICR7Z2V0RWxlbWVudFR5cGVzU3RyaW5nKCl9XG5cblF1aWNrIHN0YXJ0IGV4YW1wbGVzOlxueyBvcGVyYXRpb246IFwibGlzdF9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIsIGRlc2NyaXB0aW9uOiBcIkEgaGVscGZ1bCBhc3Npc3RhbnRcIiwgaW5zdHJ1Y3Rpb25zOiBcIllvdSBBUkUgYSBoZWxwZnVsIGFzc2lzdGFudC4gQUxXQVlTIHByb3ZpZGUgY2xlYXIsIGFjY3VyYXRlIHJlc3BvbnNlcy5cIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJhZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15QWdlbnRcIiwgZGVzY3JpcHRpb246IFwiVGFzayBleGVjdXRvclwiLCBpbnN0cnVjdGlvbnM6IFwiRXhlY3V0ZSBnb2FscyBtZXRob2RpY2FsbHkuIFJlcG9ydCBwcm9ncmVzcyBhdCBlYWNoIHN0ZXAuXCIsIGdvYWw6IHsgdGVtcGxhdGU6IFwiQ29tcGxldGU6IHtvYmplY3RpdmV9XCIsIHBhcmFtZXRlcnM6IFt7IG5hbWU6IFwib2JqZWN0aXZlXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH1dIH0gfSB9XG57IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwic2Vzc2lvbi1ub3Rlc1wiLCBkZXNjcmlwdGlvbjogXCJTZXNzaW9uIGNvbnRleHQgYW5kIG5vdGVzXCIgfSB9XG57IG9wZXJhdGlvbjogXCJhZGRFbnRyeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInNlc3Npb24tbm90ZXNcIiwgY29udGVudDogXCJSZW1lbWJlciB0aGlzIGZhY3RcIiwgdGFnczogW1wiaW1wb3J0YW50XCJdIH0gfVxueyBvcGVyYXRpb246IFwiZXhlY3V0ZV9hZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15QWdlbnRcIiwgcGFyYW1ldGVyczogeyBvYmplY3RpdmU6IFwiUmV2aWV3IGNvZGVcIiB9IH0gfVxuXG5HYXRla2VlcGVyOiBTb21lIG9wZXJhdGlvbnMgbWF5IHJldHVybiBhIGNvbmZpcm1hdGlvbiBwcm9tcHQgaW5zdGVhZCBvZiBleGVjdXRpbmcgaW1tZWRpYXRlbHkuIFVzZSBjb25maXJtX29wZXJhdGlvbiB0byBhcHByb3ZlLCB0aGVuIHJldHJ5LlxuXG5EaXNjb3ZlciBhbGwgb3BlcmF0aW9uczpcbnsgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcIm9wZXJhdGlvbnNcIiB9IH1gO1xuXG4gIHJldHVybiBbXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcIm1jcF9hcWxcIixcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIGlucHV0U2NoZW1hOiBvcGVyYXRpb25JbnB1dFNjaGVtYSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICAvLyBVbmlmaWVkIGVuZHBvaW50IGNhbiBwZXJmb3JtIGFueSBvcGVyYXRpb24sIHNvIHdlIHVzZSBjb25zZXJ2YXRpdmUgaGludHNcbiAgICAgICAgICAvLyBUaGUgYWN0dWFsIG9wZXJhdGlvbidzIHNhZmV0eSBpcyBlbmZvcmNlZCBzZXJ2ZXItc2lkZSBieSBHYXRla2VlcGVyXG4gICAgICAgICAgcmVhZE9ubHlIaW50OiBmYWxzZSxcbiAgICAgICAgICBkZXN0cnVjdGl2ZUhpbnQ6IHRydWUgLy8gQ29uc2VydmF0aXZlOiBzb21lIG9wZXJhdGlvbnMgYXJlIGRlc3RydWN0aXZlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHVuaWZpZWRFbmRwb2ludC5oYW5kbGUoYXJncyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdGV4dDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbi8qKlxuICogR2V0IHRoZSA1IENSVURFIGVuZHBvaW50IHRvb2xzIChNQ1BfQVFMX0VORFBPSU5UX01PREU9Y3J1ZGUsIGRlZmF1bHQpXG4gKiBDUlVERSA9IENyZWF0ZSwgUmVhZCwgVXBkYXRlLCBEZWxldGUsIEV4ZWN1dGVcbiAqIFRva2VuIGZvb3RwcmludDogfjQsMzAwIHRva2VucyAobWVhc3VyZWQgdmlhIENsYXVkZSBDb2RlIC9jb250ZXh0KVxuICpcbiAqIERlc2NyaXB0aW9ucyBhcmUgZ2VuZXJhdGVkIGR5bmFtaWNhbGx5IGZyb20gT1BFUkFUSU9OX1JPVVRFUyB0byBlbnN1cmVcbiAqIHRoZXkgYWx3YXlzIHJlZmxlY3QgdGhlIGN1cnJlbnQgYXZhaWxhYmxlIG9wZXJhdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGdldENSVURFVG9vbHMoaGFuZGxlcjogTUNQQVFMSGFuZGxlcik6IEFycmF5PHsgdG9vbDogVG9vbERlZmluaXRpb247IGhhbmRsZXI6IFRvb2xIYW5kbGVyIH0+IHtcbiAgY29uc3QgZWxlbWVudFR5cGVzID0gZ2V0RWxlbWVudFR5cGVzU3RyaW5nKCk7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBtY3BfYXFsX2NyZWF0ZSAtIEFkZGl0aXZlLCBub24tZGVzdHJ1Y3RpdmUgb3BlcmF0aW9uc1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJtY3BfYXFsX2NyZWF0ZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEFkZGl0aXZlLCBub24tZGVzdHJ1Y3RpdmUgb3BlcmF0aW9ucy5cblxuU3VwcG9ydGVkIG9wZXJhdGlvbnM6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnQ1JFQVRFJyl9XG5cbkVsZW1lbnQgdHlwZXM6ICR7ZWxlbWVudFR5cGVzfVxuXG5UaGVzZSBvcGVyYXRpb25zIGFkZCBuZXcgZGF0YSB3aXRob3V0IHJlbW92aW5nIG9yIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGNvbnRlbnQuXG5cblF1aWNrIHN0YXJ0IGV4YW1wbGVzOlxueyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeVBlcnNvbmFcIiwgZGVzY3JpcHRpb246IFwiQSBoZWxwZnVsIGFzc2lzdGFudFwiLCBpbnN0cnVjdGlvbnM6IFwiWW91IEFSRSBhIGhlbHBmdWwgYXNzaXN0YW50LiBBTFdBWVMgcHJvdmlkZSBjbGVhciwgYWNjdXJhdGUgcmVzcG9uc2VzLlwiIH0gfVxueyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlBZ2VudFwiLCBkZXNjcmlwdGlvbjogXCJUYXNrIGV4ZWN1dG9yXCIsIGluc3RydWN0aW9uczogXCJFeGVjdXRlIGdvYWxzIG1ldGhvZGljYWxseS4gUmVwb3J0IHByb2dyZXNzIGF0IGVhY2ggc3RlcC5cIiwgZ29hbDogeyB0ZW1wbGF0ZTogXCJDb21wbGV0ZToge29iamVjdGl2ZX1cIiwgcGFyYW1ldGVyczogW3sgbmFtZTogXCJvYmplY3RpdmVcIiwgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IHRydWUgfV0gfSB9IH1cbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJzZXNzaW9uLW5vdGVzXCIsIGRlc2NyaXB0aW9uOiBcIlNlc3Npb24gY29udGV4dCBhbmQgbm90ZXNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJlbnNlbWJsZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIm15LWVuc2VtYmxlXCIsIGRlc2NyaXB0aW9uOiBcIkNvbWJpbmVkIGVsZW1lbnQgc2V0XCIsIG1ldGFkYXRhOiB7IGVsZW1lbnRzOiBbeyBlbGVtZW50X25hbWU6IFwiZXhwZXJ0XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHJvbGU6IFwicHJpbWFyeVwiIH0sIHsgZWxlbWVudF9uYW1lOiBcImFuYWx5c2lzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCByb2xlOiBcInN1cHBvcnRcIiB9XSB9IH0gfVxuVmFsaWQgZW5zZW1ibGUgcm9sZXM6ICR7RUxFTUVOVF9ST0xFUy5qb2luKCcsICcpfVxueyBvcGVyYXRpb246IFwiYWRkRW50cnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJzZXNzaW9uLW5vdGVzXCIsIGNvbnRlbnQ6IFwiUmVtZW1iZXIgdGhpcyBmYWN0XCIsIHRhZ3M6IFtcImltcG9ydGFudFwiXSB9IH1cbk5vdGU6IGFkZEVudHJ5IGNvbnRlbnQgc3VwcG9ydHMgbWFya2Rvd24gKGhlYWRlcnMsIGxpc3RzLCBib2xkLCB0YWJsZXMsIGNvZGUgYmxvY2tzKS4gRW5zdXJlIG1hcmtkb3duIGNvbnRlbnQgaXMgcHJvcGVybHkgSlNPTi1lc2NhcGVkIOKAlCB1c2UgJHtTdHJpbmcucmF3YFxcbmB9IGZvciBuZXdsaW5lcywgJHtTdHJpbmcucmF3YFxcXCJgfSBmb3IgcXVvdGVzLCBhbmQgJHtTdHJpbmcucmF3YFxcXFxgfSBmb3IgYmFja3NsYXNoZXMgd2l0aGluIHRoZSBKU09OIHN0cmluZyB2YWx1ZS5cblxuRXhlY3V0aW9uIGxpZmVjeWNsZSDigJQgcmVjb3JkIGFnZW50IHByb2dyZXNzIChhcHBlbmRzIHN0ZXAgcmVjb3JkcywgbGlrZSBhZGRFbnRyeSk6XG57IG9wZXJhdGlvbjogXCJyZWNvcmRfZXhlY3V0aW9uX3N0ZXBcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIHN0ZXBEZXNjcmlwdGlvbjogXCJBbmFseXplZCBmaWxlc1wiLCBvdXRjb21lOiBcInN1Y2Nlc3NcIiwgZmluZGluZ3M6IFwiRm91bmQgMyBpc3N1ZXNcIiB9IH1cblJlc3BvbnNlIGZsb3c6IHJlY29yZF9leGVjdXRpb25fc3RlcCByZXR1cm5zIHsgYXV0b25vbXk6IHsgY29udGludWUsIGZhY3RvcnMsIG5vdGlmaWNhdGlvbnM/IH0gfS4gQ2hlY2sgYXV0b25vbXkuY29udGludWUgdG8gZGVjaWRlIHdoZXRoZXIgdG8gcHJvY2VlZC4gQ2hlY2sgYXV0b25vbXkubm90aWZpY2F0aW9ucyBmb3IgcGVybWlzc2lvbl9wZW5kaW5nIChnYXRla2VlcGVyIGJsb2NrcyksIGF1dG9ub215X3BhdXNlLCBvciBkYW5nZXJfem9uZSBhbGVydHMgdG8gcmVsYXkgdG8gaHVtYW4gb3BlcmF0b3JzLlxuXG5JbXBvcnQgJiBwb3J0Zm9saW86XG57IG9wZXJhdGlvbjogXCJpbXBvcnRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLWZvcm1hdHRlclwiLCBkYXRhOiBcIi4uLlwiIH0gfVxueyBvcGVyYXRpb246IFwiaW1wb3J0X3BlcnNvbmFcIiwgcGFyYW1zOiB7IHNvdXJjZTogXCIvcGF0aC90by9wZXJzb25hLm1kXCIgfSB9XG57IG9wZXJhdGlvbjogXCJpbnN0YWxsX2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgZWxlbWVudF9uYW1lOiBcIkNyZWF0aXZlLVdyaXRlclwiIH0gfVxueyBvcGVyYXRpb246IFwic3VibWl0X2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIGVsZW1lbnRfbmFtZTogXCJjb2RlLWZvcm1hdHRlclwiIH0gfVxueyBvcGVyYXRpb246IFwiaW5pdF9wb3J0Zm9saW9cIiB9XG57IG9wZXJhdGlvbjogXCJzeW5jX3BvcnRmb2xpb1wiIH1cbnsgb3BlcmF0aW9uOiBcInBvcnRmb2xpb19lbGVtZW50X21hbmFnZXJcIiwgcGFyYW1zOiB7IGFjdGlvbjogXCJwdXNoXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIGVsZW1lbnRfbmFtZTogXCJUZWNoLVdyaXRlclwiIH0gfVxuXG5BdXRoICYgdmVyaWZpY2F0aW9uOlxueyBvcGVyYXRpb246IFwic2V0dXBfZ2l0aHViX2F1dGhcIiB9XG57IG9wZXJhdGlvbjogXCJjb25maWd1cmVfb2F1dGhcIiwgcGFyYW1zOiB7IGNsaWVudF9pZDogXCJ5b3VyLWNsaWVudC1pZFwiIH0gfVxueyBvcGVyYXRpb246IFwidmVyaWZ5X2NoYWxsZW5nZVwiLCBwYXJhbXM6IHsgY29kZTogXCJBQkMxMjNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcInJlbGVhc2VfZGVhZGxvY2tcIiB9XG57IG9wZXJhdGlvbjogXCJiZWV0bGVqdWljZV9iZWV0bGVqdWljZV9iZWV0bGVqdWljZVwiIH1cblxuQmF0Y2ggb3BlcmF0aW9uczogVXNlIHRoZSBvcGVyYXRpb25zIGFycmF5IHRvIGV4ZWN1dGUgbXVsdGlwbGUgb3BlcmF0aW9ucyBzZXF1ZW50aWFsbHkgaW4gYSBzaW5nbGUgcmVxdWVzdC5cbnsgb3BlcmF0aW9uczogW3sgb3BlcmF0aW9uOiBcImFkZEVudHJ5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibG9nXCIsIGNvbnRlbnQ6IFwiU3RlcCAxXCIgfSB9LCB7IG9wZXJhdGlvbjogXCJhZGRFbnRyeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImxvZ1wiLCBjb250ZW50OiBcIlN0ZXAgMlwiIH0gfV0gfVxuXG5EaXNjb3ZlciByZXF1aXJlZCBwYXJhbWV0ZXJzIOKAlCB1c2UgbWNwX2FxbF9yZWFkOlxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImNyZWF0ZV9lbGVtZW50XCIgfSB9XG5EaXNjb3ZlciBlbGVtZW50IGZvcm1hdCBzcGVjcyAocmVxdWlyZWQgZmllbGRzLCBzeW50YXgsIGV4YW1wbGVzKSDigJQgdXNlIG1jcF9hcWxfcmVhZDpcbnsgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImZvcm1hdFwiLCBuYW1lOiBcInRlbXBsYXRlXCIgfSB9YCxcbiAgICAgICAgaW5wdXRTY2hlbWE6IG9wZXJhdGlvbklucHV0U2NoZW1hLFxuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgIHJlYWRPbmx5SGludDogZmFsc2UsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyLmhhbmRsZUNyZWF0ZShhcmdzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBtY3BfYXFsX3JlYWQgLSBTYWZlLCByZWFkLW9ubHkgb3BlcmF0aW9uc1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJtY3BfYXFsX3JlYWRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IGBTYWZlLCByZWFkLW9ubHkgb3BlcmF0aW9ucy5cblxuU3VwcG9ydGVkIG9wZXJhdGlvbnM6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnUkVBRCcpfVxuXG5FbGVtZW50IHR5cGVzOiAke2VsZW1lbnRUeXBlc31cblxuVGhlc2UgcXVlcmllcyBvbmx5IHJlYWQgZGF0YSBhbmQgbmV2ZXIgbW9kaWZ5IHNlcnZlciBzdGF0ZS5cblxuUXVpY2sgc3RhcnQgZXhhbXBsZXM6XG57IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIgfVxueyBvcGVyYXRpb246IFwiZ2V0X2FjdGl2ZV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbnsgb3BlcmF0aW9uOiBcInNlYXJjaF9lbGVtZW50c1wiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY3JlYXRpdmVcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImdldF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJzZXNzaW9uLW5vdGVzXCIgfSB9XG5cbkVsZW1lbnQgb3BlcmF0aW9uczpcbnsgb3BlcmF0aW9uOiBcImFjdGl2YXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJEZWZhdWx0XCIgfSB9XG57IG9wZXJhdGlvbjogXCJkZWFjdGl2YXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJEZWZhdWx0XCIgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudF9kZXRhaWxzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3XCIgfSB9XG57IG9wZXJhdGlvbjogXCJxdWVyeV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZmlsdGVyczogeyBjYXRlZ29yeTogXCJjcmVhdGl2ZVwiIH0gfSB9XG57IG9wZXJhdGlvbjogXCJ2YWxpZGF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJhZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRhc2stcGxhbm5lclwiIH0gfVxueyBvcGVyYXRpb246IFwicmVuZGVyXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibWVldGluZy1ub3Rlc1wiLCB2YXJpYWJsZXM6IHsgZGF0ZTogXCIyMDI2LTAzLTAzXCIgfSB9IH1cbnsgb3BlcmF0aW9uOiBcImV4cG9ydF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiVGVjaC1Xcml0ZXJcIiB9IH1cbnsgb3BlcmF0aW9uOiBcIm9wZW5fcG9ydGZvbGlvX2Jyb3dzZXJcIiB9XG57IG9wZXJhdGlvbjogXCJvcGVuX2xvZ3NcIiB9XG57IG9wZXJhdGlvbjogXCJvcGVuX21ldHJpY3NcIiB9XG57IG9wZXJhdGlvbjogXCJvcGVuX3Blcm1pc3Npb25zXCIgfVxueyBvcGVyYXRpb246IFwib3Blbl9zZXR1cFwiIH1cblxuTWVtb3J5LXNwZWNpZmljIHNlYXJjaCAoZmlsdGVyIGJ5IHRhZ3MpOlxueyBvcGVyYXRpb246IFwic2VhcmNoXCIsIHBhcmFtczogeyBxdWVyeTogXCIqXCIsIHR5cGU6IFwibWVtb3J5XCIsIGZpbHRlcnM6IHsgdGFnczogW1wiaW1wb3J0YW50XCJdIH0gfSB9XG5cbkV4ZWN1dGlvbiBsaWZlY3ljbGUg4oCUIHJlYWQtb25seSBxdWVyaWVzOlxueyBvcGVyYXRpb246IFwiZ2V0X2V4ZWN1dGlvbl9zdGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImdldF9nYXRoZXJlZF9kYXRhXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBnb2FsSWQ6IFwiZ29hbC1pZFwiIH0gfVxuXG5Db2xsZWN0aW9uOlxueyBvcGVyYXRpb246IFwiYnJvd3NlX2NvbGxlY3Rpb25cIiwgcGFyYW1zOiB7IHNlY3Rpb246IFwicGVyc29uYXNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcInNlYXJjaF9jb2xsZWN0aW9uXCIsIHBhcmFtczogeyBxdWVyeTogXCJjcmVhdGl2ZVwiIH0gfVxueyBvcGVyYXRpb246IFwic2VhcmNoX2NvbGxlY3Rpb25fZW5oYW5jZWRcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIsIHBhZ2U6IDEgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jb250ZW50XCIsIHBhcmFtczogeyBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBlbGVtZW50X25hbWU6IFwiQ3JlYXRpdmUtV3JpdGVyXCIgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIiB9XG5cblBvcnRmb2xpbzpcbnsgb3BlcmF0aW9uOiBcInBvcnRmb2xpb19zdGF0dXNcIiB9XG57IG9wZXJhdGlvbjogXCJwb3J0Zm9saW9fY29uZmlnXCIgfVxueyBvcGVyYXRpb246IFwic2VhcmNoX3BvcnRmb2xpb1wiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY3JlYXRpdmVcIiB9IH1cbnsgb3BlcmF0aW9uOiBcInNlYXJjaF9hbGxcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIgfSB9XG5cblN5c3RlbTpcbnsgb3BlcmF0aW9uOiBcImRvbGxob3VzZV9jb25maWdcIiB9XG57IG9wZXJhdGlvbjogXCJnZXRfYnVpbGRfaW5mb1wiIH1cbnsgb3BlcmF0aW9uOiBcImdldF9jYWNoZV9idWRnZXRfcmVwb3J0XCIgfVxueyBvcGVyYXRpb246IFwicXVlcnlfbG9nc1wiLCBwYXJhbXM6IHsgbGV2ZWw6IFwiZXJyb3JcIiwgbGltaXQ6IDEwIH0gfVxueyBvcGVyYXRpb246IFwicXVlcnlfbWV0cmljc1wiIH1cbnsgb3BlcmF0aW9uOiBcInF1ZXJ5X21ldHJpY3NcIiwgcGFyYW1zOiB7IG5hbWVzOiBbXCJzeXN0ZW0ubWVtb3J5LipcIl0sIHR5cGU6IFwiZ2F1Z2VcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNvbnZlcnRfc2tpbGxfZm9ybWF0XCIsIHBhcmFtczogeyBkaXJlY3Rpb246IFwiYWdlbnRfdG9fZG9sbGhvdXNlXCIsIGFnZW50X3NraWxsOiB7IFwiU0tJTEwubWRcIjogXCItLS1cXFxcbm5hbWU6IG15LXNraWxsXFxcXG5kZXNjcmlwdGlvbjogdGVzdFxcXFxuLS0tXFxcXG5cXFxcblVzZSB0aGlzIHNraWxsLlwiIH0gfSB9XG57IG9wZXJhdGlvbjogXCJjb252ZXJ0X3NraWxsX2Zvcm1hdFwiLCBwYXJhbXM6IHsgZGlyZWN0aW9uOiBcImFnZW50X3RvX2RvbGxob3VzZVwiLCBzZWN1cml0eV9tb2RlOiBcIndhcm5cIiwgcGF0aF9tb2RlOiBcImxvc3NsZXNzXCIsIGFnZW50X3NraWxsOiB7IFwiU0tJTEwubWRcIjogXCItLS1cXFxcbm5hbWU6IG15LXNraWxsXFxcXG5kZXNjcmlwdGlvbjogdGVzdFxcXFxuLS0tXFxcXG5cXFxcblVzZSB0aGlzIHNraWxsLlwiIH0gfSB9XG57IG9wZXJhdGlvbjogXCJjb252ZXJ0X3NraWxsX2Zvcm1hdFwiLCBwYXJhbXM6IHsgZGlyZWN0aW9uOiBcImRvbGxob3VzZV90b19hZ2VudFwiLCBwYXRoX21vZGU6IFwibG9zc2xlc3NcIiwgZG9sbGhvdXNlX21hcmtkb3duOiBcIi0tLVxcXFxubmFtZTogbXktc2tpbGxcXFxcbmRlc2NyaXB0aW9uOiB0ZXN0XFxcXG5pbnN0cnVjdGlvbnM6IFVzZSB0aGlzIHNraWxsLlxcXFxuLS0tXFxcXG5cXFxcbiMjIyBiaW5hcmllcy9sb2dvLnBuZ1xcXFxuKGJpbmFyeSBsaW5rOiAuL3NraWxscy9iaW5hcmllcy9sb2dvLnBuZylcIiB9IH1cblxuQXV0aDpcbnsgb3BlcmF0aW9uOiBcImNoZWNrX2dpdGh1Yl9hdXRoXCIgfVxueyBvcGVyYXRpb246IFwib2F1dGhfaGVscGVyX3N0YXR1c1wiIH1cblxuR2F0ZWtlZXBlciAmIENMSSBwb2xpY2llczpcbnsgb3BlcmF0aW9uOiBcInBlcm1pc3Npb25fcHJvbXB0XCIsIHBhcmFtczogeyB0b29sOiBcIkJhc2hcIiwgcHJvbXB0OiBcInJ1biBucG0gdGVzdFwiIH0gfVxueyBvcGVyYXRpb246IFwiZXZhbHVhdGVfcGVybWlzc2lvblwiLCBwYXJhbXM6IHsgdG9vbF9uYW1lOiBcIkJhc2hcIiwgaW5wdXQ6IHsgY29tbWFuZDogXCJnaXQgc3RhdHVzXCIgfSwgcGxhdGZvcm06IFwiY2xhdWRlX2NvZGVcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzXCIgfVxueyBvcGVyYXRpb246IFwiZ2V0X3BlbmRpbmdfY2xpX2FwcHJvdmFsc1wiIH1cbnsgb3BlcmF0aW9uOiBcImdldF9wZXJtaXNzaW9uX2F1dGhvcml0eVwiIH1cbnsgb3BlcmF0aW9uOiBcImdldF9wZXJtaXNzaW9uX2F1dGhvcml0eVwiLCBwYXJhbXM6IHsgaG9zdDogXCJjbGF1ZGUtY29kZVwiIH0gfVxuXG5FbmhhbmNlZCBpbmRleDpcbnsgb3BlcmF0aW9uOiBcImZpbmRfc2ltaWxhcl9lbGVtZW50c1wiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgZWxlbWVudF9uYW1lOiBcIkNyZWF0aXZlLVdyaXRlclwiIH0gfVxueyBvcGVyYXRpb246IFwiZ2V0X2VsZW1lbnRfcmVsYXRpb25zaGlwc1wiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld1wiIH0gfVxueyBvcGVyYXRpb246IFwic2VhcmNoX2J5X3ZlcmJcIiwgcGFyYW1zOiB7IHZlcmI6IFwicmV2aWV3XCIgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfcmVsYXRpb25zaGlwX3N0YXRzXCIgfVxuXG5EaXNjb3ZlciBhbGwgb3BlcmF0aW9ucyBhbmQgcGFyYW1ldGVyczpcbnsgb3BlcmF0aW9uOiBcImdldF9jYXBhYmlsaXRpZXNcIiB9XG57IG9wZXJhdGlvbjogXCJnZXRfY2FwYWJpbGl0aWVzXCIsIHBhcmFtczogeyBjYXRlZ29yeTogXCJFbGVtZW50IExpZmVjeWNsZVwiIH0gfVxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiIH0gfWAsXG4gICAgICAgIGlucHV0U2NoZW1hOiBvcGVyYXRpb25JbnB1dFNjaGVtYSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICByZWFkT25seUhpbnQ6IHRydWUsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyLmhhbmRsZVJlYWQoYXJncyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdGV4dDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gbWNwX2FxbF91cGRhdGUgLSBNb2RpZnlpbmcgb3BlcmF0aW9ucyB0aGF0IG92ZXJ3cml0ZSBkYXRhXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcIm1jcF9hcWxfdXBkYXRlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTW9kaWZ5aW5nIG9wZXJhdGlvbnMgdGhhdCBvdmVyd3JpdGUgZGF0YS5cblxuU3VwcG9ydGVkIG9wZXJhdGlvbnM6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnVVBEQVRFJyl9XG5cbkVsZW1lbnQgdHlwZXM6ICR7ZWxlbWVudFR5cGVzfVxuXG5UaGVzZSBvcGVyYXRpb25zIG1vZGlmeSBleGlzdGluZyBkYXRhLCBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBwcmV2aW91cyB2YWx1ZXMuXG5cbk5vdGU6IE1lbW9yaWVzIGFyZSBhcHBlbmQtb25seSBhbmQgZG8gbm90IHN1cHBvcnQgZWRpdF9lbGVtZW50LiBVc2UgYWRkRW50cnkgKENSRUFURSkgdG8gYWRkIG5ldyBlbnRyaWVzLlxuXG5RdWljayBzdGFydCBleGFtcGxlOlxueyBvcGVyYXRpb246IFwiZWRpdF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIsIGlucHV0OiB7IGRlc2NyaXB0aW9uOiBcIlVwZGF0ZWQgZGVzY3JpcHRpb25cIiB9IH0gfVxueyBvcGVyYXRpb246IFwiZWRpdF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiRnJpZW5kbHktVGVhY2hlclwiLCBpbnB1dDogeyBpbnN0cnVjdGlvbnM6IFwiVXBkYXRlZCBiZWhhdmlvcmFsIGRpcmVjdGl2ZXMuXCIgfSB9IH1cbnsgb3BlcmF0aW9uOiBcImVkaXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwiYWdlbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGlucHV0OiB7IGluc3RydWN0aW9uczogXCJVcGRhdGVkIGFnZW50IGJlaGF2aW9yYWwgcHJvZmlsZS5cIiwgZ29hbDogeyB0ZW1wbGF0ZTogXCJDb21wbGV0ZToge3Rhc2t9XCIgfSB9IH0gfVxueyBvcGVyYXRpb246IFwidXBncmFkZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJhZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRhc2stcGxhbm5lclwiIH0gfVxuXG5EaXNjb3ZlciByZXF1aXJlZCBwYXJhbWV0ZXJzIOKAlCB1c2UgbWNwX2FxbF9yZWFkOlxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImVkaXRfZWxlbWVudFwiIH0gfWAsXG4gICAgICAgIGlucHV0U2NoZW1hOiBvcGVyYXRpb25JbnB1dFNjaGVtYSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICByZWFkT25seUhpbnQ6IGZhbHNlLFxuICAgICAgICAgIGRlc3RydWN0aXZlSGludDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyLmhhbmRsZVVwZGF0ZShhcmdzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBtY3BfYXFsX2RlbGV0ZSAtIERlc3RydWN0aXZlIG9wZXJhdGlvbnMgdGhhdCByZW1vdmUgZGF0YVxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJtY3BfYXFsX2RlbGV0ZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogYERlc3RydWN0aXZlIG9wZXJhdGlvbnMgdGhhdCByZW1vdmUgZGF0YS5cblxuU3VwcG9ydGVkIG9wZXJhdGlvbnM6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnREVMRVRFJyl9XG5cbkVsZW1lbnQgdHlwZXM6ICR7ZWxlbWVudFR5cGVzfVxuXG5UaGVzZSBvcGVyYXRpb25zIHJlbW92ZSBkYXRhLiBVc2Ugd2l0aCBjYXV0aW9uLlxuXG7imqDvuI8gU0VDVVJJVFk6IERvIG5vdCBhdXRvLWFsbG93IHRoaXMgZW5kcG9pbnQgaW4geW91ciBob3N0IHNldHRpbmdzIChlLmcuLCBDbGF1ZGUgQ29kZSBzZXR0aW5ncy5qc29uKS4gRWFjaCBkZWxldGUgb3BlcmF0aW9uIHNob3VsZCByZXF1aXJlIGV4cGxpY2l0IGh1bWFuIGFwcHJvdmFsLiBBdXRvLWFsbG93aW5nIGJ5cGFzc2VzIHRoZSBwZXItb3BlcmF0aW9uIGNvbmZpcm1hdGlvbiBnYXRlLCBsZWF2aW5nIG9ubHkgZWxlbWVudCBkZW55IHBvbGljaWVzIGFzIHByb3RlY3Rpb24gYWdhaW5zdCB1bmludGVuZGVkIGRhdGEgbG9zcy5cblxuUXVpY2sgc3RhcnQgZXhhbXBsZXM6XG57IG9wZXJhdGlvbjogXCJkZWxldGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk9sZC1QZXJzb25hXCIgfSB9XG57IG9wZXJhdGlvbjogXCJjbGVhclwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRlbXAtbm90ZXNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNsZWFyX2dpdGh1Yl9hdXRoXCIgfVxuXG5EaXNjb3ZlciByZXF1aXJlZCBwYXJhbWV0ZXJzIOKAlCB1c2UgbWNwX2FxbF9yZWFkOlxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImRlbGV0ZV9lbGVtZW50XCIgfSB9YCxcbiAgICAgICAgaW5wdXRTY2hlbWE6IG9wZXJhdGlvbklucHV0U2NoZW1hLFxuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgIHJlYWRPbmx5SGludDogZmFsc2UsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIuaGFuZGxlRGVsZXRlKGFyZ3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHRleHQ6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIG1jcF9hcWxfZXhlY3V0ZSAtIEV4ZWN1dGlvbiBsaWZlY3ljbGUgb3BlcmF0aW9ucyAoQ1JVREUncyAnRScpXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcIm1jcF9hcWxfZXhlY3V0ZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEV4ZWN1dGlvbiBsaWZlY3ljbGUgb3BlcmF0aW9ucyBmb3IgZXhlY3V0YWJsZSBlbGVtZW50cyAoYWdlbnRzLCB3b3JrZmxvd3MsIHBpcGVsaW5lcykuXG5cblN1cHBvcnRlZCBvcGVyYXRpb25zOiAke2dldE9wZXJhdGlvbnNTdHJpbmcoJ0VYRUNVVEUnKX1cblxuVGhlc2Ugb3BlcmF0aW9ucyBtYW5hZ2UgcnVudGltZSBleGVjdXRpb24gc3RhdGUuIFVubGlrZSBDUlVEIG9wZXJhdGlvbnMgKHdoaWNoIG1hbmFnZSBkZWZpbml0aW9ucyksIEV4ZWN1dGUgb3BlcmF0aW9ucyBoYW5kbGUgdGhlIGV4ZWN1dGlvbiBsaWZlY3ljbGU6XG4tIGV4ZWN1dGVfYWdlbnQ6IFN0YXJ0IGEgbmV3IGV4ZWN1dGlvbiAocmV0dXJucyBnb2FsSWQgYW5kIHN0YXRlVmVyc2lvbiBmb3IgdHJhY2tpbmcpXG4tIGNvbXBsZXRlX2V4ZWN1dGlvbjogU2lnbmFsIHN1Y2Nlc3NmdWwgY29tcGxldGlvblxuLSBjb250aW51ZV9leGVjdXRpb246IFJlc3VtZSBmcm9tIHNhdmVkIHN0YXRlXG4tIGFib3J0X2V4ZWN1dGlvbjogQWJvcnQgYSBydW5uaW5nIGV4ZWN1dGlvbiwgcmVqZWN0aW5nIGZ1cnRoZXIgb3BlcmF0aW9uc1xuLSBjb25maXJtX29wZXJhdGlvbjogQ29uZmlybSBhIHBlbmRpbmcgb3BlcmF0aW9uIHRoYXQgcmVxdWlyZXMgdXNlciBhcHByb3ZhbCAoR2F0ZWtlZXBlciBmbG93KVxuLSBhcHByb3ZlX2NsaV9wZXJtaXNzaW9uOiBBcHByb3ZlIGEgcGVuZGluZyBDTEkgdG9vbCBwZXJtaXNzaW9uIHJlcXVlc3Rcbi0gcHJlcGFyZV9oYW5kb2ZmOiBTZXJpYWxpemUgZ29hbCBwcm9ncmVzcyBpbnRvIGEgcG9ydGFibGUgaGFuZG9mZiBibG9jayBmb3Igc2Vzc2lvbiB0cmFuc2ZlclxuLSByZXN1bWVfZnJvbV9oYW5kb2ZmOiBSZXN1bWUgYWdlbnQgZXhlY3V0aW9uIGZyb20gYSBoYW5kb2ZmIGJsb2NrIHdpdGggaW50ZWdyaXR5IHZhbGlkYXRpb25cblxuSU1QT1JUQU5UOiBFeGVjdXRlIG9wZXJhdGlvbnMgYXJlIHBvdGVudGlhbGx5IGRlc3RydWN0aXZlIChhZ2VudHMgY2FuIHBlcmZvcm0gYW55IGFjdGlvbikgYW5kIG5vbi1pZGVtcG90ZW50IChjYWxsaW5nIGV4ZWN1dGVfYWdlbnQgdHdpY2UgY3JlYXRlcyB0d28gc2VwYXJhdGUgZXhlY3V0aW9ucykuXG5cbuKaoO+4jyBTRUNVUklUWTogRG8gbm90IGF1dG8tYWxsb3cgdGhpcyBlbmRwb2ludCBpbiB5b3VyIGhvc3Qgc2V0dGluZ3MgKGUuZy4sIENsYXVkZSBDb2RlIHNldHRpbmdzLmpzb24pLiBFYWNoIGV4ZWN1dGlvbiBzaG91bGQgcmVxdWlyZSBleHBsaWNpdCBodW1hbiBhcHByb3ZhbC4gQXV0by1hbGxvd2luZyBieXBhc3NlcyB0aGUgcGVyLW9wZXJhdGlvbiBjb25maXJtYXRpb24gZ2F0ZS4gV2hpbGUgRGFuZ2VyWm9uZSB2ZXJpZmljYXRpb24gYW5kIGVsZW1lbnQgZGVueSBwb2xpY2llcyBzdGlsbCBwcm92aWRlIHByb3RlY3Rpb24sIHRoZSBwcmltYXJ5IGh1bWFuIHJldmlldyBjaGVja3BvaW50IGlzIGxvc3QuXG5cblJlc3BvbnNlIGZsb3c6IGV4ZWN1dGVfYWdlbnQgcmV0dXJucyB7IGdvYWxJZCwgc3RhdGVWZXJzaW9uLCBhY3RpdmVFbGVtZW50cywgc2FmZXR5VGllciwgLi4uIH0uIFVzZSBnb2FsSWQgd2l0aCByZWNvcmRfZXhlY3V0aW9uX3N0ZXAgYW5kIGNvbXBsZXRlX2V4ZWN1dGlvbi4gc3RhdGVWZXJzaW9uIGVuYWJsZXMgb3B0aW1pc3RpYyBsb2NraW5nLiByZWNvcmRfZXhlY3V0aW9uX3N0ZXAgcmV0dXJucyB7IGF1dG9ub215OiB7IGNvbnRpbnVlLCBub3RpZmljYXRpb25zPyB9IH0g4oCUIGNoZWNrIG5vdGlmaWNhdGlvbnMgZm9yIGdhdGVrZWVwZXIgYmxvY2tzIGFuZCBkYW5nZXIgem9uZSBhbGVydHMuXG5cblF1aWNrIHN0YXJ0IGV4YW1wbGVzOlxueyBvcGVyYXRpb246IFwiZXhlY3V0ZV9hZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgcGFyYW1ldGVyczogeyBvYmplY3RpdmU6IFwiUmV2aWV3IGNvZGVcIiB9IH0gfVxueyBvcGVyYXRpb246IFwiY29tcGxldGVfZXhlY3V0aW9uXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBvdXRjb21lOiBcInN1Y2Nlc3NcIiwgc3VtbWFyeTogXCJDb21wbGV0ZWQgcmV2aWV3XCIgfSB9XG57IG9wZXJhdGlvbjogXCJhYm9ydF9leGVjdXRpb25cIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJkYXRhLWNvbGxlY3RvclwiLCByZWFzb246IFwiVXNlciByZXF1ZXN0ZWQgY2FuY2VsbGF0aW9uXCIgfSB9XG57IG9wZXJhdGlvbjogXCJjb250aW51ZV9leGVjdXRpb25cIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIgfSB9XG57IG9wZXJhdGlvbjogXCJjb25maXJtX29wZXJhdGlvblwiLCBwYXJhbXM6IHsgb3BlcmF0aW9uOiBcImV4ZWN1dGVfYWdlbnRcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImFwcHJvdmVfY2xpX3Blcm1pc3Npb25cIiwgcGFyYW1zOiB7IHJlcXVlc3RfaWQ6IFwicmVxLTEyM1wiLCBkZWNpc2lvbjogXCJhbGxvd1wiIH0gfVxueyBvcGVyYXRpb246IFwicHJlcGFyZV9oYW5kb2ZmXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiIH0gfVxueyBvcGVyYXRpb246IFwicmVzdW1lX2Zyb21faGFuZG9mZlwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgaGFuZG9mZl9ibG9jazogXCIuLi5cIiB9IH1cblxuRGlzY292ZXIgcmVxdWlyZWQgcGFyYW1ldGVycyDigJQgdXNlIG1jcF9hcWxfcmVhZDpcbnsgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcIm9wZXJhdGlvbnNcIiwgbmFtZTogXCJleGVjdXRlX2FnZW50XCIgfSB9YCxcbiAgICAgICAgaW5wdXRTY2hlbWE6IG9wZXJhdGlvbklucHV0U2NoZW1hLFxuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgIHJlYWRPbmx5SGludDogZmFsc2UsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiB0cnVlICAvLyBQb3RlbnRpYWxseSBkZXN0cnVjdGl2ZSAtIGFnZW50cyBjYW4gcGVyZm9ybSBhbnkgYWN0aW9uXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIuaGFuZGxlRXhlY3V0ZShhcmdzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cbiJdfQ==
549
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQVFMVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3Rvb2xzL01DUEFRTFRvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RUc7QUFHSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFxQixNQUFNLDJDQUEyQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXRFLCtFQUErRTtBQUMvRSxpQ0FBaUM7QUFDakMsK0VBQStFO0FBRS9FOzs7R0FHRztBQUNILFNBQVMscUJBQXFCO0lBQzVCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQUMsUUFBc0I7SUFDakQsT0FBTyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxjQUFjO0FBQ2QsK0VBQStFO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsSUFBSSxFQUFFLFFBQWlCO0lBQ3ZCLFVBQVUsRUFBRTtRQUNWLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxRQUFRO1lBQ2QsV0FBVyxFQUFFLDJCQUEyQjtTQUN6QztRQUNELFlBQVksRUFBRTtZQUNaLElBQUksRUFB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QzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEQsT0FBTztvQkFDTCxPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7eUJBQ3RDO3FCQUNGO2lCQUNGLENBQUM7WUFDSixDQUFDO1NBQ0Y7UUFFRCxpRUFBaUU7UUFDakU7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsV0FBVyxFQUFFOzt3QkFFRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvRkFvQzhCO2dCQUM1RSxXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxXQUFXLEVBQUU7b0JBQ1gsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLGVBQWUsRUFBRSxJQUFJLENBQUUsMERBQTBEO2lCQUNsRjthQUNGO1lBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFTLEVBQUUsRUFBRTtnQkFDM0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxPQUFPO29CQUNMLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzt5QkFDdEM7cUJBQ0Y7aUJBQ0YsQ0FBQztZQUNKLENBQUM7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNQ1AtQVFMIFRvb2xzIC0gVW5pZmllZCBxdWVyeSBpbnRlcmZhY2UgZm9yIEFJIGFnZW50c1xuICpcbiAqIFByb3ZpZGVzIHR3byBlbmRwb2ludCBtb2RlcyBjb25maWd1cmFibGUgdmlhIE1DUF9BUUxfRU5EUE9JTlRfTU9ERSBlbnZpcm9ubWVudCB2YXJpYWJsZTpcbiAqXG4gKiAjIyBNb2RlIDE6IENSVURFIEVuZHBvaW50cyAoRGVmYXVsdCkgLSBNQ1BfQVFMX0VORFBPSU5UX01PREU9Y3J1ZGVcbiAqIDUgdG9vbHM6IG1jcF9hcWxfY3JlYXRlLCBtY3BfYXFsX3JlYWQsIG1jcF9hcWxfdXBkYXRlLCBtY3BfYXFsX2RlbGV0ZSwgbWNwX2FxbF9leGVjdXRlICh+NCwzMDAgdG9rZW5zKVxuICpcbiAqICMjIE1vZGUgMjogU2luZ2xlIEVuZHBvaW50IChNaW5pbWFsKSAtIE1DUF9BUUxfRU5EUE9JTlRfTU9ERT1zaW5nbGVcbiAqIDEgdG9vbDogbWNwX2FxbCAofjM1MCB0b2tlbnMpXG4gKiBJZGVhbCBmb3IgbXVsdGktc2VydmVyIGRlcGxveW1lbnRzIHdoZXJlIHRva2VuIGJ1ZGdldCBpcyBjb25zdHJhaW5lZC5cbiAqXG4gKiBOb3RlOiBUaGVzZSB0b29scyBhcmUgb25seSByZWdpc3RlcmVkIHdoZW4gTUNQX0lOVEVSRkFDRV9NT0RFPW1jcGFxbCAoZGVmYXVsdCkuXG4gKiBXaGVuIE1DUF9JTlRFUkZBQ0VfTU9ERT1kaXNjcmV0ZSwgZGlzY3JldGUgdG9vbHMgYXJlIHJlZ2lzdGVyZWQgaW5zdGVhZC5cbiAqXG4gKiAjIyBXaHkgNSBDUlVERSBFbmRwb2ludHM/IChEZWZhdWx0IE1vZGUpXG4gKlxuICogVGhlIDUtZW5kcG9pbnQgQ1JVREUgcGF0dGVybiAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSwgRXhlY3V0ZSkgd2FzIGNob3NlbiBmb3I6XG4gKlxuICogMS4gKipVc2VyIENvbXByZWhlbnNpb24qKjogQ1JVREUgZXh0ZW5kcyBDUlVEIHdpdGggRXhlY3V0ZSBmb3Igbm9uLWlkZW1wb3RlbnRcbiAqICAgIG9wZXJhdGlvbnMsIG1ha2luZyBpdCBlYXN5IGZvciB1c2VycyB0byByZWFzb24gYWJvdXQgd2hhdCBlYWNoIGVuZHBvaW50IGNhbiBkby5cbiAqXG4gKiAyLiAqKlBsYXRmb3JtIEFubm90YXRpb25zKio6IE1DUCBwbGF0Zm9ybXMgbGlrZSBDaGF0R1BUJ3MgYXBwcyByZXF1aXJlXG4gKiAgICB0b29sIGFubm90YXRpb25zIHRoYXQgZGVzY3JpYmUgc2FmZXR5IGFuZCBkZXN0cnVjdGl2ZW5lc3MuIFRoZSA1LWVuZHBvaW50XG4gKiAgICBzcGxpdCBtYXBzIGRpcmVjdGx5IHRvIGRpc3RpbmN0IHBlcm1pc3Npb24gbGV2ZWxzOlxuICogICAgLSBDUkVBVEU6IGFkZGl0aXZlLCBub24tZGVzdHJ1Y3RpdmUgKHJlYWRPbmx5SGludDogZmFsc2UsIGRlc3RydWN0aXZlSGludDogZmFsc2UpXG4gKiAgICAtIFJFQUQ6IHNhZmUsIHJlYWQtb25seSAocmVhZE9ubHlIaW50OiB0cnVlLCBkZXN0cnVjdGl2ZUhpbnQ6IGZhbHNlKVxuICogICAgLSBVUERBVEU6IG1vZGlmeWluZywgcG90ZW50aWFsbHkgZGVzdHJ1Y3RpdmUgKHJlYWRPbmx5SGludDogZmFsc2UsIGRlc3RydWN0aXZlSGludDogdHJ1ZSlcbiAqICAgIC0gREVMRVRFOiBkZXN0cnVjdGl2ZSAocmVhZE9ubHlIaW50OiBmYWxzZSwgZGVzdHJ1Y3RpdmVIaW50OiB0cnVlKVxuICogICAgLSBFWEVDVVRFOiBub24taWRlbXBvdGVudCwgcG90ZW50aWFsbHkgZGVzdHJ1Y3RpdmUgKHJlYWRPbmx5SGludDogZmFsc2UsIGRlc3RydWN0aXZlSGludDogdHJ1ZSlcbiAqXG4gKiAzLiAqKkdyYW51bGFyIFBlcm1pc3Npb24gQ29udHJvbCoqOiBVc2VycyBjYW4gZ3JhbnQgUkVBRCBlbmRwb2ludCBmdWxsIGFjY2Vzc1xuICogICAgd2hpbGUgbG9ja2luZyBkb3duIENSRUFURSwgVVBEQVRFLCBERUxFVEUsIGFuZCBFWEVDVVRFLiBUaGlzIGVuYWJsZXMgc2FmZVxuICogICAgcmVhZC1vbmx5IGludGVncmF0aW9ucyB3aXRob3V0IGV4cG9zaW5nIG11dGF0aW9uIGNhcGFiaWxpdGllcy5cbiAqXG4gKiAjIyBXaHkgU2luZ2xlIEVuZHBvaW50PyAoTWluaW1hbCBNb2RlKVxuICpcbiAqIFRoZSBzaW5nbGUtZW5kcG9pbnQgbW9kZSB3YXMgYWRkZWQgZm9yOlxuICpcbiAqIDEuICoqVG9rZW4gRWZmaWNpZW5jeSoqOiB+MzUwIHRva2VucyB2cyB+NCwzMDAgdG9rZW5zICg5MiUgcmVkdWN0aW9uKVxuICogMi4gKipNdWx0aS1TZXJ2ZXIgRGVwbG95bWVudHMqKjogV2hlbiBydW5uaW5nIG11bHRpcGxlIE1DUCBzZXJ2ZXJzLCB0b2tlblxuICogICAgYnVkZ2V0cyBjYW4gYmUgY29uc3RyYWluZWQuIFNpbmdsZSBlbmRwb2ludCByZWR1Y2VzIG92ZXJoZWFkLlxuICogMy4gKipTaW1wbGlmaWVkIEludGVncmF0aW9uKio6IFNvbWUgY2xpZW50cyBwcmVmZXIgYSBzaW5nbGUgZW50cnkgcG9pbnQuXG4gKlxuICogU2VjdXJpdHkgaXMgbWFpbnRhaW5lZCB0aHJvdWdoIHNlcnZlci1zaWRlIEdhdGVrZWVwZXIgZW5mb3JjZW1lbnQgLSB0aGVcbiAqIHNlcnZlciBkZXRlcm1pbmVzIHdoaWNoIG9wZXJhdGlvbiB0eXBlIGlzIGJlaW5nIGV4ZWN1dGVkIGFuZCBhcHBsaWVzXG4gKiBhcHByb3ByaWF0ZSBwZXJtaXNzaW9uIGNoZWNrcy5cbiAqXG4gKiAjIyBHcmFwaFFMLVN0eWxlIEludHJvc3BlY3Rpb25cbiAqXG4gKiBNQ1AtQVFMIGZvbGxvd3MgR3JhcGhRTCBwYXR0ZXJucyBmb3Igc2VsZi1kb2N1bWVudGF0aW9uLiBUb29sIGRlc2NyaXB0aW9uc1xuICogYXJlIGdlbmVyYXRlZCBkeW5hbWljYWxseSBmcm9tIE9QRVJBVElPTl9ST1VURVMsIGVuc3VyaW5nIHRoZXkgYWx3YXlzIHJlZmxlY3RcbiAqIHRoZSBjdXJyZW50IGF2YWlsYWJsZSBvcGVyYXRpb25zLlxuICpcbiAqICMjIyBJbnRyb3NwZWN0aW9uIEV4YW1wbGVzXG4gKlxuICogTGlzdCBhbGwgYXZhaWxhYmxlIG9wZXJhdGlvbnM6XG4gKiBgYGBqc29uXG4gKiB7IFwib3BlcmF0aW9uXCI6IFwiaW50cm9zcGVjdFwiLCBcInBhcmFtc1wiOiB7IFwicXVlcnlcIjogXCJvcGVyYXRpb25zXCIgfSB9XG4gKiBgYGBcbiAqXG4gKiBHZXQgZGV0YWlscyBmb3IgYSBzcGVjaWZpYyBvcGVyYXRpb24gKHBhcmFtZXRlcnMsIGV4YW1wbGVzLCByZXR1cm4gdHlwZXMpOlxuICogYGBganNvblxuICogeyBcIm9wZXJhdGlvblwiOiBcImludHJvc3BlY3RcIiwgXCJwYXJhbXNcIjogeyBcInF1ZXJ5XCI6IFwib3BlcmF0aW9uc1wiLCBcIm5hbWVcIjogXCJjcmVhdGVfZWxlbWVudFwiIH0gfVxuICogYGBgXG4gKlxuICogRGlzY292ZXIgYXZhaWxhYmxlIHR5cGVzIChlLmcuLCBFbGVtZW50VHlwZSBlbnVtIHZhbHVlcyk6XG4gKiBgYGBqc29uXG4gKiB7IFwib3BlcmF0aW9uXCI6IFwiaW50cm9zcGVjdFwiLCBcInBhcmFtc1wiOiB7IFwicXVlcnlcIjogXCJ0eXBlc1wiLCBcIm5hbWVcIjogXCJFbGVtZW50VHlwZVwiIH0gfVxuICogYGBgXG4gKlxuICogIyMjIERlc2lnbiBQaGlsb3NvcGh5XG4gKlxuICogLSAqKlNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgqKjogT1BFUkFUSU9OX1JPVVRFUyBkZWZpbmVzIGFsbCBvcGVyYXRpb25zXG4gKiAtICoqRHluYW1pYyBkZXNjcmlwdGlvbnMqKjogQWRkaW5nIGFuIG9wZXJhdGlvbiB0byBPUEVSQVRJT05fUk9VVEVTIGF1dG9tYXRpY2FsbHlcbiAqICAgdXBkYXRlcyB0b29sIGRlc2NyaXB0aW9ucyAtIG5vIG1hbnVhbCBzeW5jaHJvbml6YXRpb24gbmVlZGVkXG4gKiAtICoqSW50cm9zcGVjdGlvbi1maXJzdCoqOiBMTE1zIGRpc2NvdmVyIHBhcmFtZXRlcnMgdmlhIGludHJvc3BlY3QsIG5vdCBzdGF0aWMgZG9jc1xuICogLSAqKkdyYXBoUUwgaGVyaXRhZ2UqKjogUGF0dGVybnMgZmFtaWxpYXIgdG8gYW55IExMTSB0cmFpbmVkIG9uIEdyYXBoUUxcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1DUEFRTEhhbmRsZXIgfSBmcm9tICcuLi8uLi9oYW5kbGVycy9tY3AtYXFsL01DUEFRTEhhbmRsZXIuanMnO1xuaW1wb3J0IHsgVW5pZmllZEVuZHBvaW50IH0gZnJvbSAnLi4vLi4vaGFuZGxlcnMvbWNwLWFxbC9VbmlmaWVkRW5kcG9pbnQuanMnO1xuaW1wb3J0IHsgZ2V0T3BlcmF0aW9uc0ZvckVuZHBvaW50LCB0eXBlIENSVURFbmRwb2ludCB9IGZyb20gJy4uLy4uL2hhbmRsZXJzL21jcC1hcWwvT3BlcmF0aW9uUm91dGVyLmpzJztcbmltcG9ydCB7IEVsZW1lbnRUeXBlIH0gZnJvbSAnLi4vLi4vaGFuZGxlcnMvbWNwLWFxbC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFRvb2xEZWZpbml0aW9uLCBUb29sSGFuZGxlciB9IGZyb20gJy4uLy4uL2hhbmRsZXJzL3R5cGVzL1Rvb2xUeXBlcy5qcyc7XG5pbXBvcnQgeyBlbnYgfSBmcm9tICcuLi8uLi9jb25maWcvZW52LmpzJztcbmltcG9ydCB7IEVMRU1FTlRfUk9MRVMgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9lbnNlbWJsZXMvY29uc3RhbnRzLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHluYW1pYyBEZXNjcmlwdGlvbiBHZW5lcmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IGVsZW1lbnQgdHlwZXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLlxuICogRGVyaXZlZCBmcm9tIHRoZSBFbGVtZW50VHlwZSBlbnVtIHRvIGVuc3VyZSBjb25zaXN0ZW5jeS5cbiAqL1xuZnVuY3Rpb24gZ2V0RWxlbWVudFR5cGVzU3RyaW5nKCk6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKEVsZW1lbnRUeXBlKS5qb2luKCcsICcpO1xufVxuXG4vKipcbiAqIEdldCBvcGVyYXRpb25zIGZvciBhbiBlbmRwb2ludCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcuXG4gKiBEZXJpdmVkIGZyb20gT1BFUkFUSU9OX1JPVVRFUyB0byBlbnN1cmUgY29uc2lzdGVuY3kuXG4gKi9cbmZ1bmN0aW9uIGdldE9wZXJhdGlvbnNTdHJpbmcoZW5kcG9pbnQ6IENSVURFbmRwb2ludCk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRPcGVyYXRpb25zRm9yRW5kcG9pbnQoZW5kcG9pbnQpLmpvaW4oJywgJyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRvb2wgU2NoZW1hXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU2hhcmVkIGlucHV0IHNjaGVtYSBmb3IgQ1JVRCBvcGVyYXRpb25zIChjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgZGVsZXRlKVxuICogQWxsIG9wZXJhdGlvbnMgdXNlIHRoZSBPcGVyYXRpb25JbnB1dCBzdHJ1Y3R1cmUgZnJvbSB0aGUgR3JhcGhRTCBzY2hlbWFcbiAqL1xuY29uc3Qgb3BlcmF0aW9uSW5wdXRTY2hlbWEgPSB7XG4gIHR5cGU6IFwib2JqZWN0XCIgYXMgY29uc3QsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBvcGVyYXRpb246IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJPcGVyYXRpb24gbmFtZSB0byBleGVjdXRlXCJcbiAgICB9LFxuICAgIGVsZW1lbnRfdHlwZToge1xuICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRhcmdldCBlbGVtZW50IHR5cGUgKG9wdGlvbmFsKVwiXG4gICAgfSxcbiAgICBwYXJhbXM6IHtcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJPcGVyYXRpb24gcGFyYW1ldGVyc1wiXG4gICAgfSxcbiAgICBvcGVyYXRpb25zOiB7XG4gICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBcnJheSBvZiBvcGVyYXRpb25zIGZvciBiYXRjaCBleGVjdXRpb25cIixcbiAgICAgIGl0ZW1zOiB7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBvcGVyYXRpb246IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgIGVsZW1lbnRfdHlwZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgICAgcGFyYW1zOiB7IHR5cGU6IFwib2JqZWN0XCIgfVxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogW1wib3BlcmF0aW9uXCJdXG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZXF1aXJlZDogW1wib3BlcmF0aW9uXCIgYXMgY29uc3RdXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUb29sIFJlZ2lzdHJhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBNQ1AtQVFMIHRvb2xzIGZvciByZWdpc3RyYXRpb24gaW4gdGhlIFRvb2xSZWdpc3RyeS5cbiAqXG4gKiBSZXR1cm5zIGRpZmZlcmVudCB0b29scyBiYXNlZCBvbiBNQ1BfQVFMX0VORFBPSU5UX01PREUgZW52aXJvbm1lbnQgdmFyaWFibGU6XG4gKiAtICdjcnVkZScgKGRlZmF1bHQpOiA1IENSVURFIGVuZHBvaW50cyAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSwgRXhlY3V0ZSkgKH40LDMwMCB0b2tlbnMpXG4gKiAtICdzaW5nbGUnOiAxIHVuaWZpZWQgZW5kcG9pbnQgKH4zNTAgdG9rZW5zKVxuICpcbiAqIE5vdGU6IE1DUF9BUUxfTU9ERSBpcyBzdXBwb3J0ZWQgYXMgYSBkZXByZWNhdGVkIGFsaWFzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TUNQQVFMVG9vbHMoaGFuZGxlcjogTUNQQVFMSGFuZGxlcik6IEFycmF5PHsgdG9vbDogVG9vbERlZmluaXRpb247IGhhbmRsZXI6IFRvb2xIYW5kbGVyIH0+IHtcbiAgLy8gVXNlIE1DUF9BUUxfRU5EUE9JTlRfTU9ERSwgZmFsbGluZyBiYWNrIHRvIGRlcHJlY2F0ZWQgTUNQX0FRTF9NT0RFIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIGNvbnN0IG1vZGUgPSBlbnYuTUNQX0FRTF9FTkRQT0lOVF9NT0RFID8/IGVudi5NQ1BfQVFMX01PREUgPz8gJ2NydWRlJztcblxuICBpZiAobW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICByZXR1cm4gZ2V0VW5pZmllZFRvb2xzKGhhbmRsZXIpO1xuICB9XG5cbiAgLy8gRGVmYXVsdDogQ1JVREUgbW9kZSAoNSBlbmRwb2ludHMpXG4gIHJldHVybiBnZXRDUlVERVRvb2xzKGhhbmRsZXIpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgdW5pZmllZCBzaW5nbGUgZW5kcG9pbnQgdG9vbCAoTUNQX0FRTF9NT0RFPXNpbmdsZSlcbiAqIFRva2VuIGZvb3RwcmludDogfjMwMC00MDAgdG9rZW5zXG4gKi9cbmZ1bmN0aW9uIGdldFVuaWZpZWRUb29scyhoYW5kbGVyOiBNQ1BBUUxIYW5kbGVyKTogQXJyYXk8eyB0b29sOiBUb29sRGVmaW5pdGlvbjsgaGFuZGxlcjogVG9vbEhhbmRsZXIgfT4ge1xuICBjb25zdCB1bmlmaWVkRW5kcG9pbnQgPSBuZXcgVW5pZmllZEVuZHBvaW50KGhhbmRsZXIpO1xuXG4gIC8vIEJ1aWxkIGR5bmFtaWMgZGVzY3JpcHRpb24gZnJvbSBPUEVSQVRJT05fUk9VVEVTXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gYERvbGxob3VzZU1DUCB1bmlmaWVkIEFQSSAtIEdyYXBoUUwtc3R5bGUgcXVlcnkgaW50ZXJmYWNlIGZvciBBSSBlbGVtZW50IG1hbmFnZW1lbnQuXG5cbkNSVURFIE9wZXJhdGlvbnM6XG4tIENSRUFURTogJHtnZXRPcGVyYXRpb25zU3RyaW5nKCdDUkVBVEUnKX1cbi0gUkVBRDogJHtnZXRPcGVyYXRpb25zU3RyaW5nKCdSRUFEJyl9XG4tIFVQREFURTogJHtnZXRPcGVyYXRpb25zU3RyaW5nKCdVUERBVEUnKX1cbi0gREVMRVRFOiAke2dldE9wZXJhdGlvbnNTdHJpbmcoJ0RFTEVURScpfVxuLSBFWEVDVVRFOiAke2dldE9wZXJhdGlvbnNTdHJpbmcoJ0VYRUNVVEUnKX1cblxuRWxlbWVudCB0eXBlczogJHtnZXRFbGVtZW50VHlwZXNTdHJpbmcoKX1cblxuUXVpY2sgc3RhcnQgZXhhbXBsZXM6XG57IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIgfVxueyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeVBlcnNvbmFcIiwgZGVzY3JpcHRpb246IFwiQSBoZWxwZnVsIGFzc2lzdGFudFwiLCBpbnN0cnVjdGlvbnM6IFwiWW91IEFSRSBhIGhlbHBmdWwgYXNzaXN0YW50LiBBTFdBWVMgcHJvdmlkZSBjbGVhciwgYWNjdXJhdGUgcmVzcG9uc2VzLlwiIH0gfVxueyBvcGVyYXRpb246IFwiY3JlYXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcImFnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlBZ2VudFwiLCBkZXNjcmlwdGlvbjogXCJUYXNrIGV4ZWN1dG9yXCIsIGluc3RydWN0aW9uczogXCJFeGVjdXRlIGdvYWxzIG1ldGhvZGljYWxseS4gUmVwb3J0IHByb2dyZXNzIGF0IGVhY2ggc3RlcC5cIiwgZ29hbDogeyB0ZW1wbGF0ZTogXCJDb21wbGV0ZToge29iamVjdGl2ZX1cIiwgcGFyYW1ldGVyczogW3sgbmFtZTogXCJvYmplY3RpdmVcIiwgdHlwZTogXCJzdHJpbmdcIiwgcmVxdWlyZWQ6IHRydWUgfV0gfSB9IH1cbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJzZXNzaW9uLW5vdGVzXCIsIGRlc2NyaXB0aW9uOiBcIlNlc3Npb24gY29udGV4dCBhbmQgbm90ZXNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImFkZEVudHJ5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwic2Vzc2lvbi1ub3Rlc1wiLCBjb250ZW50OiBcIlJlbWVtYmVyIHRoaXMgZmFjdFwiLCB0YWdzOiBbXCJpbXBvcnRhbnRcIl0gfSB9XG57IG9wZXJhdGlvbjogXCJleGVjdXRlX2FnZW50XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlBZ2VudFwiLCBwYXJhbWV0ZXJzOiB7IG9iamVjdGl2ZTogXCJSZXZpZXcgY29kZVwiIH0gfSB9XG57IG9wZXJhdGlvbjogXCJyZWNvcmRfZXhlY3V0aW9uX3N0ZXBcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJNeUFnZW50XCIsIHN0ZXBEZXNjcmlwdGlvbjogXCJSZXZpZXdlZCBhdXRoIG1vZHVsZVwiLCBvdXRjb21lOiBcInN1Y2Nlc3NcIiwgZmluZGluZ3M6IFwiRm91bmQgMiBpc3N1ZXNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNvbXBsZXRlX2V4ZWN1dGlvblwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15QWdlbnRcIiwgb3V0Y29tZTogXCJzdWNjZXNzXCIsIHN1bW1hcnk6IFwiUmV2aWV3IGNvbXBsZXRlXCIgfSB9XG5cbkV4ZWN1dGlvbiBsb29wOiBjYWxsIGV4ZWN1dGVfYWdlbnQgb25jZSB0byBzdGFydCwgdGhlbiByZWNvcmRfZXhlY3V0aW9uX3N0ZXAgYWZ0ZXJcbmVhY2ggd29yayBjaHVuaywgdGhlbiBjb21wbGV0ZV9leGVjdXRpb24gd2hlbiBkb25lLiBVc2UgY29udGludWVfZXhlY3V0aW9uIG9ubHkgdG9cbnJlc3VtZSBhIHBhdXNlZCBleGVjdXRpb24sIGFuZCBwYXNzIHRoZSBzYW1lIGdvYWwgcGFyYW1ldGVycyB5b3UgdXNlZCBmb3JcbmV4ZWN1dGVfYWdlbnQgd2hlbiByZXN1bWluZy5cblxuR2F0ZWtlZXBlcjogU29tZSBvcGVyYXRpb25zIG1heSByZXR1cm4gYSBjb25maXJtYXRpb24gcHJvbXB0IGluc3RlYWQgb2YgZXhlY3V0aW5nIGltbWVkaWF0ZWx5LiBVc2UgY29uZmlybV9vcGVyYXRpb24gdG8gYXBwcm92ZSwgdGhlbiByZXRyeS5cblxuRGlzY292ZXIgYWxsIG9wZXJhdGlvbnM6XG57IG9wZXJhdGlvbjogXCJpbnRyb3NwZWN0XCIsIHBhcmFtczogeyBxdWVyeTogXCJvcGVyYXRpb25zXCIgfSB9YDtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJtY3BfYXFsXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICBpbnB1dFNjaGVtYTogb3BlcmF0aW9uSW5wdXRTY2hlbWEsXG4gICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgLy8gVW5pZmllZCBlbmRwb2ludCBjYW4gcGVyZm9ybSBhbnkgb3BlcmF0aW9uLCBzbyB3ZSB1c2UgY29uc2VydmF0aXZlIGhpbnRzXG4gICAgICAgICAgLy8gVGhlIGFjdHVhbCBvcGVyYXRpb24ncyBzYWZldHkgaXMgZW5mb3JjZWQgc2VydmVyLXNpZGUgYnkgR2F0ZWtlZXBlclxuICAgICAgICAgIHJlYWRPbmx5SGludDogZmFsc2UsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiB0cnVlIC8vIENvbnNlcnZhdGl2ZTogc29tZSBvcGVyYXRpb25zIGFyZSBkZXN0cnVjdGl2ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1bmlmaWVkRW5kcG9pbnQuaGFuZGxlKGFyZ3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHRleHQ6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgNSBDUlVERSBlbmRwb2ludCB0b29scyAoTUNQX0FRTF9FTkRQT0lOVF9NT0RFPWNydWRlLCBkZWZhdWx0KVxuICogQ1JVREUgPSBDcmVhdGUsIFJlYWQsIFVwZGF0ZSwgRGVsZXRlLCBFeGVjdXRlXG4gKiBUb2tlbiBmb290cHJpbnQ6IH40LDMwMCB0b2tlbnMgKG1lYXN1cmVkIHZpYSBDbGF1ZGUgQ29kZSAvY29udGV4dClcbiAqXG4gKiBEZXNjcmlwdGlvbnMgYXJlIGdlbmVyYXRlZCBkeW5hbWljYWxseSBmcm9tIE9QRVJBVElPTl9ST1VURVMgdG8gZW5zdXJlXG4gKiB0aGV5IGFsd2F5cyByZWZsZWN0IHRoZSBjdXJyZW50IGF2YWlsYWJsZSBvcGVyYXRpb25zLlxuICovXG5mdW5jdGlvbiBnZXRDUlVERVRvb2xzKGhhbmRsZXI6IE1DUEFRTEhhbmRsZXIpOiBBcnJheTx7IHRvb2w6IFRvb2xEZWZpbml0aW9uOyBoYW5kbGVyOiBUb29sSGFuZGxlciB9PiB7XG4gIGNvbnN0IGVsZW1lbnRUeXBlcyA9IGdldEVsZW1lbnRUeXBlc1N0cmluZygpO1xuXG4gIHJldHVybiBbXG4gICAgLy8gbWNwX2FxbF9jcmVhdGUgLSBBZGRpdGl2ZSwgbm9uLWRlc3RydWN0aXZlIG9wZXJhdGlvbnNcbiAgICB7XG4gICAgICB0b29sOiB7XG4gICAgICAgIG5hbWU6IFwibWNwX2FxbF9jcmVhdGVcIixcbiAgICAgICAgZGVzY3JpcHRpb246IGBBZGRpdGl2ZSwgbm9uLWRlc3RydWN0aXZlIG9wZXJhdGlvbnMuXG5cblN1cHBvcnRlZCBvcGVyYXRpb25zOiAke2dldE9wZXJhdGlvbnNTdHJpbmcoJ0NSRUFURScpfVxuXG5FbGVtZW50IHR5cGVzOiAke2VsZW1lbnRUeXBlc31cblxuVGhlc2Ugb3BlcmF0aW9ucyBhZGQgbmV3IGRhdGEgd2l0aG91dCByZW1vdmluZyBvciBvdmVyd3JpdGluZyBleGlzdGluZyBjb250ZW50LlxuXG5RdWljayBzdGFydCBleGFtcGxlczpcbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIsIGRlc2NyaXB0aW9uOiBcIkEgaGVscGZ1bCBhc3Npc3RhbnRcIiwgaW5zdHJ1Y3Rpb25zOiBcIllvdSBBUkUgYSBoZWxwZnVsIGFzc2lzdGFudC4gQUxXQVlTIHByb3ZpZGUgY2xlYXIsIGFjY3VyYXRlIHJlc3BvbnNlcy5cIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNyZWF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJhZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk15QWdlbnRcIiwgZGVzY3JpcHRpb246IFwiVGFzayBleGVjdXRvclwiLCBpbnN0cnVjdGlvbnM6IFwiRXhlY3V0ZSBnb2FscyBtZXRob2RpY2FsbHkuIFJlcG9ydCBwcm9ncmVzcyBhdCBlYWNoIHN0ZXAuXCIsIGdvYWw6IHsgdGVtcGxhdGU6IFwiQ29tcGxldGU6IHtvYmplY3RpdmV9XCIsIHBhcmFtZXRlcnM6IFt7IG5hbWU6IFwib2JqZWN0aXZlXCIsIHR5cGU6IFwic3RyaW5nXCIsIHJlcXVpcmVkOiB0cnVlIH1dIH0gfSB9XG57IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwibWVtb3J5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwic2Vzc2lvbi1ub3Rlc1wiLCBkZXNjcmlwdGlvbjogXCJTZXNzaW9uIGNvbnRleHQgYW5kIG5vdGVzXCIgfSB9XG57IG9wZXJhdGlvbjogXCJjcmVhdGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwiZW5zZW1ibGVcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJteS1lbnNlbWJsZVwiLCBkZXNjcmlwdGlvbjogXCJDb21iaW5lZCBlbGVtZW50IHNldFwiLCBtZXRhZGF0YTogeyBlbGVtZW50czogW3sgZWxlbWVudF9uYW1lOiBcImV4cGVydFwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCByb2xlOiBcInByaW1hcnlcIiB9LCB7IGVsZW1lbnRfbmFtZTogXCJhbmFseXNpc1wiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcm9sZTogXCJzdXBwb3J0XCIgfV0gfSB9IH1cblZhbGlkIGVuc2VtYmxlIHJvbGVzOiAke0VMRU1FTlRfUk9MRVMuam9pbignLCAnKX1cbnsgb3BlcmF0aW9uOiBcImFkZEVudHJ5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwic2Vzc2lvbi1ub3Rlc1wiLCBjb250ZW50OiBcIlJlbWVtYmVyIHRoaXMgZmFjdFwiLCB0YWdzOiBbXCJpbXBvcnRhbnRcIl0gfSB9XG5Ob3RlOiBhZGRFbnRyeSBjb250ZW50IHN1cHBvcnRzIG1hcmtkb3duIChoZWFkZXJzLCBsaXN0cywgYm9sZCwgdGFibGVzLCBjb2RlIGJsb2NrcykuIEVuc3VyZSBtYXJrZG93biBjb250ZW50IGlzIHByb3Blcmx5IEpTT04tZXNjYXBlZCDigJQgdXNlICR7U3RyaW5nLnJhd2BcXG5gfSBmb3IgbmV3bGluZXMsICR7U3RyaW5nLnJhd2BcXFwiYH0gZm9yIHF1b3RlcywgYW5kICR7U3RyaW5nLnJhd2BcXFxcYH0gZm9yIGJhY2tzbGFzaGVzIHdpdGhpbiB0aGUgSlNPTiBzdHJpbmcgdmFsdWUuXG5cbkV4ZWN1dGlvbiBsaWZlY3ljbGUg4oCUIHJlY29yZCBhZ2VudCBwcm9ncmVzcyAoYXBwZW5kcyBzdGVwIHJlY29yZHMsIGxpa2UgYWRkRW50cnkpOlxueyBvcGVyYXRpb246IFwicmVjb3JkX2V4ZWN1dGlvbl9zdGVwXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBzdGVwRGVzY3JpcHRpb246IFwiQW5hbHl6ZWQgZmlsZXNcIiwgb3V0Y29tZTogXCJzdWNjZXNzXCIsIGZpbmRpbmdzOiBcIkZvdW5kIDMgaXNzdWVzXCIgfSB9XG5UaGlzIGlzIHRoZSBub3JtYWwgbmV4dCBsaWZlY3ljbGUgY2FsbCBhZnRlciBtY3BfYXFsX2V4ZWN1dGUgeyBvcGVyYXRpb246IFwiZXhlY3V0ZV9hZ2VudFwiLCAuLi4gfS5cblJlc3BvbnNlIGZsb3c6IHJlY29yZF9leGVjdXRpb25fc3RlcCByZXR1cm5zIHsgYXV0b25vbXk6IHsgY29udGludWUsIGZhY3RvcnMsIG5vdGlmaWNhdGlvbnM/IH0gfS4gQ2hlY2sgYXV0b25vbXkuY29udGludWUgdG8gZGVjaWRlIHdoZXRoZXIgdG8gcHJvY2VlZC4gQ2hlY2sgYXV0b25vbXkubm90aWZpY2F0aW9ucyBmb3IgcGVybWlzc2lvbl9wZW5kaW5nIChnYXRla2VlcGVyIGJsb2NrcyksIGF1dG9ub215X3BhdXNlLCBvciBkYW5nZXJfem9uZSBhbGVydHMgdG8gcmVsYXkgdG8gaHVtYW4gb3BlcmF0b3JzLlxuXG5JbXBvcnQgJiBwb3J0Zm9saW86XG57IG9wZXJhdGlvbjogXCJpbXBvcnRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwic2tpbGxcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLWZvcm1hdHRlclwiLCBkYXRhOiBcIi4uLlwiIH0gfVxueyBvcGVyYXRpb246IFwiaW1wb3J0X3BlcnNvbmFcIiwgcGFyYW1zOiB7IHNvdXJjZTogXCIvcGF0aC90by9wZXJzb25hLm1kXCIgfSB9XG57IG9wZXJhdGlvbjogXCJpbnN0YWxsX2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgZWxlbWVudF9uYW1lOiBcIkNyZWF0aXZlLVdyaXRlclwiIH0gfVxueyBvcGVyYXRpb246IFwic3VibWl0X2NvbGxlY3Rpb25fY29udGVudFwiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIGVsZW1lbnRfbmFtZTogXCJjb2RlLWZvcm1hdHRlclwiIH0gfVxueyBvcGVyYXRpb246IFwiaW5pdF9wb3J0Zm9saW9cIiB9XG57IG9wZXJhdGlvbjogXCJzeW5jX3BvcnRmb2xpb1wiIH1cbnsgb3BlcmF0aW9uOiBcInBvcnRmb2xpb19lbGVtZW50X21hbmFnZXJcIiwgcGFyYW1zOiB7IGFjdGlvbjogXCJwdXNoXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIGVsZW1lbnRfbmFtZTogXCJUZWNoLVdyaXRlclwiIH0gfVxuXG5BdXRoICYgdmVyaWZpY2F0aW9uOlxueyBvcGVyYXRpb246IFwic2V0dXBfZ2l0aHViX2F1dGhcIiB9XG57IG9wZXJhdGlvbjogXCJjb25maWd1cmVfb2F1dGhcIiwgcGFyYW1zOiB7IGNsaWVudF9pZDogXCJ5b3VyLWNsaWVudC1pZFwiIH0gfVxueyBvcGVyYXRpb246IFwidmVyaWZ5X2NoYWxsZW5nZVwiLCBwYXJhbXM6IHsgY29kZTogXCJBQkMxMjNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcInJlbGVhc2VfZGVhZGxvY2tcIiB9XG57IG9wZXJhdGlvbjogXCJiZWV0bGVqdWljZV9iZWV0bGVqdWljZV9iZWV0bGVqdWljZVwiIH1cblxuQmF0Y2ggb3BlcmF0aW9uczogVXNlIHRoZSBvcGVyYXRpb25zIGFycmF5IHRvIGV4ZWN1dGUgbXVsdGlwbGUgb3BlcmF0aW9ucyBzZXF1ZW50aWFsbHkgaW4gYSBzaW5nbGUgcmVxdWVzdC5cbnsgb3BlcmF0aW9uczogW3sgb3BlcmF0aW9uOiBcImFkZEVudHJ5XCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibG9nXCIsIGNvbnRlbnQ6IFwiU3RlcCAxXCIgfSB9LCB7IG9wZXJhdGlvbjogXCJhZGRFbnRyeVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImxvZ1wiLCBjb250ZW50OiBcIlN0ZXAgMlwiIH0gfV0gfVxuXG5EaXNjb3ZlciByZXF1aXJlZCBwYXJhbWV0ZXJzIOKAlCB1c2UgbWNwX2FxbF9yZWFkOlxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImNyZWF0ZV9lbGVtZW50XCIgfSB9XG5EaXNjb3ZlciBlbGVtZW50IGZvcm1hdCBzcGVjcyAocmVxdWlyZWQgZmllbGRzLCBzeW50YXgsIGV4YW1wbGVzKSDigJQgdXNlIG1jcF9hcWxfcmVhZDpcbnsgb3BlcmF0aW9uOiBcImludHJvc3BlY3RcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImZvcm1hdFwiLCBuYW1lOiBcInRlbXBsYXRlXCIgfSB9YCxcbiAgICAgICAgaW5wdXRTY2hlbWE6IG9wZXJhdGlvbklucHV0U2NoZW1hLFxuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgIHJlYWRPbmx5SGludDogZmFsc2UsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyLmhhbmRsZUNyZWF0ZShhcmdzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBtY3BfYXFsX3JlYWQgLSBTYWZlLCByZWFkLW9ubHkgb3BlcmF0aW9uc1xuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJtY3BfYXFsX3JlYWRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IGBTYWZlLCByZWFkLW9ubHkgb3BlcmF0aW9ucy5cblxuU3VwcG9ydGVkIG9wZXJhdGlvbnM6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnUkVBRCcpfVxuXG5FbGVtZW50IHR5cGVzOiAke2VsZW1lbnRUeXBlc31cblxuVGhlc2UgcXVlcmllcyBvbmx5IHJlYWQgZGF0YSBhbmQgbmV2ZXIgbW9kaWZ5IHNlcnZlciBzdGF0ZS5cblxuUXVpY2sgc3RhcnQgZXhhbXBsZXM6XG57IG9wZXJhdGlvbjogXCJsaXN0X2VsZW1lbnRzXCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIgfVxueyBvcGVyYXRpb246IFwiZ2V0X2FjdGl2ZV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiIH1cbnsgb3BlcmF0aW9uOiBcInNlYXJjaF9lbGVtZW50c1wiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY3JlYXRpdmVcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImdldF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJtZW1vcnlcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJzZXNzaW9uLW5vdGVzXCIgfSB9XG5cbkVsZW1lbnQgb3BlcmF0aW9uczpcbnsgb3BlcmF0aW9uOiBcImFjdGl2YXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJEZWZhdWx0XCIgfSB9XG57IG9wZXJhdGlvbjogXCJkZWFjdGl2YXRlX2VsZW1lbnRcIiwgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJEZWZhdWx0XCIgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfZWxlbWVudF9kZXRhaWxzXCIsIGVsZW1lbnRfdHlwZTogXCJza2lsbFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3XCIgfSB9XG57IG9wZXJhdGlvbjogXCJxdWVyeV9lbGVtZW50c1wiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZmlsdGVyczogeyBjYXRlZ29yeTogXCJjcmVhdGl2ZVwiIH0gfSB9XG57IG9wZXJhdGlvbjogXCJ2YWxpZGF0ZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJhZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRhc2stcGxhbm5lclwiIH0gfVxueyBvcGVyYXRpb246IFwicmVuZGVyXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwibWVldGluZy1ub3Rlc1wiLCB2YXJpYWJsZXM6IHsgZGF0ZTogXCIyMDI2LTAzLTAzXCIgfSB9IH1cbnsgb3BlcmF0aW9uOiBcImV4cG9ydF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiVGVjaC1Xcml0ZXJcIiB9IH1cbnsgb3BlcmF0aW9uOiBcIm9wZW5fcG9ydGZvbGlvX2Jyb3dzZXJcIiB9XG57IG9wZXJhdGlvbjogXCJvcGVuX2xvZ3NcIiB9XG57IG9wZXJhdGlvbjogXCJvcGVuX21ldHJpY3NcIiB9XG57IG9wZXJhdGlvbjogXCJvcGVuX3Blcm1pc3Npb25zXCIgfVxueyBvcGVyYXRpb246IFwib3Blbl9zZXR1cFwiIH1cblxuTWVtb3J5LXNwZWNpZmljIHNlYXJjaCAoZmlsdGVyIGJ5IHRhZ3MpOlxueyBvcGVyYXRpb246IFwic2VhcmNoXCIsIHBhcmFtczogeyBxdWVyeTogXCIqXCIsIHR5cGU6IFwibWVtb3J5XCIsIGZpbHRlcnM6IHsgdGFnczogW1wiaW1wb3J0YW50XCJdIH0gfSB9XG5cbkV4ZWN1dGlvbiBsaWZlY3ljbGUg4oCUIHJlYWQtb25seSBxdWVyaWVzOlxueyBvcGVyYXRpb246IFwiZ2V0X2V4ZWN1dGlvbl9zdGF0ZVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImdldF9nYXRoZXJlZF9kYXRhXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBnb2FsSWQ6IFwiZ29hbC1pZFwiIH0gfVxuRm9yIGV4ZWN1dGlvbi1zdGF0ZSByZWFkcywgcmV1c2UgdGhlIHNhbWUgZWxlbWVudF9uYW1lIHlvdSBwYXNzZWQgdG8gZXhlY3V0ZV9hZ2VudC4gSWYgZWxlbWVudF9uYW1lIGlzIG1pc3NpbmcsIHJldHJ5IHdpdGggdGhlIHNhbWUgYWdlbnQgbmFtZSByYXRoZXIgdGhhbiBpbnZlbnRpbmcgYSBuZXcgb25lLlxuXG5Db2xsZWN0aW9uOlxueyBvcGVyYXRpb246IFwiYnJvd3NlX2NvbGxlY3Rpb25cIiwgcGFyYW1zOiB7IHNlY3Rpb246IFwicGVyc29uYXNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcInNlYXJjaF9jb2xsZWN0aW9uXCIsIHBhcmFtczogeyBxdWVyeTogXCJjcmVhdGl2ZVwiIH0gfVxueyBvcGVyYXRpb246IFwic2VhcmNoX2NvbGxlY3Rpb25fZW5oYW5jZWRcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIsIHBhZ2U6IDEgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jb250ZW50XCIsIHBhcmFtczogeyBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBlbGVtZW50X25hbWU6IFwiQ3JlYXRpdmUtV3JpdGVyXCIgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfY29sbGVjdGlvbl9jYWNoZV9oZWFsdGhcIiB9XG5cblBvcnRmb2xpbzpcbnsgb3BlcmF0aW9uOiBcInBvcnRmb2xpb19zdGF0dXNcIiB9XG57IG9wZXJhdGlvbjogXCJwb3J0Zm9saW9fY29uZmlnXCIgfVxueyBvcGVyYXRpb246IFwic2VhcmNoX3BvcnRmb2xpb1wiLCBwYXJhbXM6IHsgcXVlcnk6IFwiY3JlYXRpdmVcIiB9IH1cbnsgb3BlcmF0aW9uOiBcInNlYXJjaF9hbGxcIiwgcGFyYW1zOiB7IHF1ZXJ5OiBcImNyZWF0aXZlXCIgfSB9XG5cblN5c3RlbTpcbnsgb3BlcmF0aW9uOiBcImRvbGxob3VzZV9jb25maWdcIiB9XG57IG9wZXJhdGlvbjogXCJnZXRfYnVpbGRfaW5mb1wiIH1cbnsgb3BlcmF0aW9uOiBcImdldF9jYWNoZV9idWRnZXRfcmVwb3J0XCIgfVxueyBvcGVyYXRpb246IFwicXVlcnlfbG9nc1wiLCBwYXJhbXM6IHsgbGV2ZWw6IFwiZXJyb3JcIiwgbGltaXQ6IDEwIH0gfVxueyBvcGVyYXRpb246IFwicXVlcnlfbWV0cmljc1wiIH1cbnsgb3BlcmF0aW9uOiBcInF1ZXJ5X21ldHJpY3NcIiwgcGFyYW1zOiB7IG5hbWVzOiBbXCJzeXN0ZW0ubWVtb3J5LipcIl0sIHR5cGU6IFwiZ2F1Z2VcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNvbnZlcnRfc2tpbGxfZm9ybWF0XCIsIHBhcmFtczogeyBkaXJlY3Rpb246IFwiYWdlbnRfdG9fZG9sbGhvdXNlXCIsIGFnZW50X3NraWxsOiB7IFwiU0tJTEwubWRcIjogXCItLS1cXFxcbm5hbWU6IG15LXNraWxsXFxcXG5kZXNjcmlwdGlvbjogdGVzdFxcXFxuLS0tXFxcXG5cXFxcblVzZSB0aGlzIHNraWxsLlwiIH0gfSB9XG57IG9wZXJhdGlvbjogXCJjb252ZXJ0X3NraWxsX2Zvcm1hdFwiLCBwYXJhbXM6IHsgZGlyZWN0aW9uOiBcImFnZW50X3RvX2RvbGxob3VzZVwiLCBzZWN1cml0eV9tb2RlOiBcIndhcm5cIiwgcGF0aF9tb2RlOiBcImxvc3NsZXNzXCIsIGFnZW50X3NraWxsOiB7IFwiU0tJTEwubWRcIjogXCItLS1cXFxcbm5hbWU6IG15LXNraWxsXFxcXG5kZXNjcmlwdGlvbjogdGVzdFxcXFxuLS0tXFxcXG5cXFxcblVzZSB0aGlzIHNraWxsLlwiIH0gfSB9XG57IG9wZXJhdGlvbjogXCJjb252ZXJ0X3NraWxsX2Zvcm1hdFwiLCBwYXJhbXM6IHsgZGlyZWN0aW9uOiBcImRvbGxob3VzZV90b19hZ2VudFwiLCBwYXRoX21vZGU6IFwibG9zc2xlc3NcIiwgZG9sbGhvdXNlX21hcmtkb3duOiBcIi0tLVxcXFxubmFtZTogbXktc2tpbGxcXFxcbmRlc2NyaXB0aW9uOiB0ZXN0XFxcXG5pbnN0cnVjdGlvbnM6IFVzZSB0aGlzIHNraWxsLlxcXFxuLS0tXFxcXG5cXFxcbiMjIyBiaW5hcmllcy9sb2dvLnBuZ1xcXFxuKGJpbmFyeSBsaW5rOiAuL3NraWxscy9iaW5hcmllcy9sb2dvLnBuZylcIiB9IH1cblxuQXV0aDpcbnsgb3BlcmF0aW9uOiBcImNoZWNrX2dpdGh1Yl9hdXRoXCIgfVxueyBvcGVyYXRpb246IFwib2F1dGhfaGVscGVyX3N0YXR1c1wiIH1cblxuR2F0ZWtlZXBlciAmIENMSSBwb2xpY2llczpcbnsgb3BlcmF0aW9uOiBcInBlcm1pc3Npb25fcHJvbXB0XCIsIHBhcmFtczogeyB0b29sOiBcIkJhc2hcIiwgcHJvbXB0OiBcInJ1biBucG0gdGVzdFwiIH0gfVxueyBvcGVyYXRpb246IFwiZXZhbHVhdGVfcGVybWlzc2lvblwiLCBwYXJhbXM6IHsgdG9vbF9uYW1lOiBcIkJhc2hcIiwgaW5wdXQ6IHsgY29tbWFuZDogXCJnaXQgc3RhdHVzXCIgfSwgcGxhdGZvcm06IFwiY2xhdWRlX2NvZGVcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzXCIgfVxueyBvcGVyYXRpb246IFwiZ2V0X3BlbmRpbmdfY2xpX2FwcHJvdmFsc1wiIH1cbnsgb3BlcmF0aW9uOiBcImdldF9wZXJtaXNzaW9uX2F1dGhvcml0eVwiIH1cbnsgb3BlcmF0aW9uOiBcImdldF9wZXJtaXNzaW9uX2F1dGhvcml0eVwiLCBwYXJhbXM6IHsgaG9zdDogXCJjbGF1ZGUtY29kZVwiIH0gfVxuXG5FbmhhbmNlZCBpbmRleDpcbnsgb3BlcmF0aW9uOiBcImZpbmRfc2ltaWxhcl9lbGVtZW50c1wiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInBlcnNvbmFcIiwgZWxlbWVudF9uYW1lOiBcIkNyZWF0aXZlLVdyaXRlclwiIH0gfVxueyBvcGVyYXRpb246IFwiZ2V0X2VsZW1lbnRfcmVsYXRpb25zaGlwc1wiLCBwYXJhbXM6IHsgZWxlbWVudF90eXBlOiBcInNraWxsXCIsIGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld1wiIH0gfVxueyBvcGVyYXRpb246IFwic2VhcmNoX2J5X3ZlcmJcIiwgcGFyYW1zOiB7IHZlcmI6IFwicmV2aWV3XCIgfSB9XG57IG9wZXJhdGlvbjogXCJnZXRfcmVsYXRpb25zaGlwX3N0YXRzXCIgfVxuXG5EaXNjb3ZlciBhbGwgb3BlcmF0aW9ucyBhbmQgcGFyYW1ldGVyczpcbnsgb3BlcmF0aW9uOiBcImdldF9jYXBhYmlsaXRpZXNcIiB9XG57IG9wZXJhdGlvbjogXCJnZXRfY2FwYWJpbGl0aWVzXCIsIHBhcmFtczogeyBjYXRlZ29yeTogXCJFbGVtZW50IExpZmVjeWNsZVwiIH0gfVxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiIH0gfWAsXG4gICAgICAgIGlucHV0U2NoZW1hOiBvcGVyYXRpb25JbnB1dFNjaGVtYSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICByZWFkT25seUhpbnQ6IHRydWUsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyLmhhbmRsZVJlYWQoYXJncyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgdGV4dDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy8gbWNwX2FxbF91cGRhdGUgLSBNb2RpZnlpbmcgb3BlcmF0aW9ucyB0aGF0IG92ZXJ3cml0ZSBkYXRhXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcIm1jcF9hcWxfdXBkYXRlXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgTW9kaWZ5aW5nIG9wZXJhdGlvbnMgdGhhdCBvdmVyd3JpdGUgZGF0YS5cblxuU3VwcG9ydGVkIG9wZXJhdGlvbnM6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnVVBEQVRFJyl9XG5cbkVsZW1lbnQgdHlwZXM6ICR7ZWxlbWVudFR5cGVzfVxuXG5UaGVzZSBvcGVyYXRpb25zIG1vZGlmeSBleGlzdGluZyBkYXRhLCBwb3RlbnRpYWxseSBvdmVyd3JpdGluZyBwcmV2aW91cyB2YWx1ZXMuXG5cbk5vdGU6IE1lbW9yaWVzIGFyZSBhcHBlbmQtb25seSBhbmQgZG8gbm90IHN1cHBvcnQgZWRpdF9lbGVtZW50LiBVc2UgYWRkRW50cnkgKENSRUFURSkgdG8gYWRkIG5ldyBlbnRyaWVzLlxuXG5RdWljayBzdGFydCBleGFtcGxlOlxueyBvcGVyYXRpb246IFwiZWRpdF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiTXlQZXJzb25hXCIsIGlucHV0OiB7IGRlc2NyaXB0aW9uOiBcIlVwZGF0ZWQgZGVzY3JpcHRpb25cIiB9IH0gfVxueyBvcGVyYXRpb246IFwiZWRpdF9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJwZXJzb25hXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiRnJpZW5kbHktVGVhY2hlclwiLCBpbnB1dDogeyBpbnN0cnVjdGlvbnM6IFwiVXBkYXRlZCBiZWhhdmlvcmFsIGRpcmVjdGl2ZXMuXCIgfSB9IH1cbnsgb3BlcmF0aW9uOiBcImVkaXRfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwiYWdlbnRcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIGlucHV0OiB7IGluc3RydWN0aW9uczogXCJVcGRhdGVkIGFnZW50IGJlaGF2aW9yYWwgcHJvZmlsZS5cIiwgZ29hbDogeyB0ZW1wbGF0ZTogXCJDb21wbGV0ZToge3Rhc2t9XCIgfSB9IH0gfVxueyBvcGVyYXRpb246IFwidXBncmFkZV9lbGVtZW50XCIsIGVsZW1lbnRfdHlwZTogXCJhZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRhc2stcGxhbm5lclwiIH0gfVxuXG5EaXNjb3ZlciByZXF1aXJlZCBwYXJhbWV0ZXJzIOKAlCB1c2UgbWNwX2FxbF9yZWFkOlxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImVkaXRfZWxlbWVudFwiIH0gfWAsXG4gICAgICAgIGlucHV0U2NoZW1hOiBvcGVyYXRpb25JbnB1dFNjaGVtYSxcbiAgICAgICAgYW5ub3RhdGlvbnM6IHtcbiAgICAgICAgICByZWFkT25seUhpbnQ6IGZhbHNlLFxuICAgICAgICAgIGRlc3RydWN0aXZlSGludDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgaGFuZGxlcjogYXN5bmMgKGFyZ3M6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVyLmhhbmRsZVVwZGF0ZShhcmdzKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyBtY3BfYXFsX2RlbGV0ZSAtIERlc3RydWN0aXZlIG9wZXJhdGlvbnMgdGhhdCByZW1vdmUgZGF0YVxuICAgIHtcbiAgICAgIHRvb2w6IHtcbiAgICAgICAgbmFtZTogXCJtY3BfYXFsX2RlbGV0ZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogYERlc3RydWN0aXZlIG9wZXJhdGlvbnMgdGhhdCByZW1vdmUgZGF0YS5cblxuU3VwcG9ydGVkIG9wZXJhdGlvbnM6ICR7Z2V0T3BlcmF0aW9uc1N0cmluZygnREVMRVRFJyl9XG5cbkVsZW1lbnQgdHlwZXM6ICR7ZWxlbWVudFR5cGVzfVxuXG5UaGVzZSBvcGVyYXRpb25zIHJlbW92ZSBkYXRhLiBVc2Ugd2l0aCBjYXV0aW9uLlxuXG7imqDvuI8gU0VDVVJJVFk6IERvIG5vdCBhdXRvLWFsbG93IHRoaXMgZW5kcG9pbnQgaW4geW91ciBob3N0IHNldHRpbmdzIChlLmcuLCBDbGF1ZGUgQ29kZSBzZXR0aW5ncy5qc29uKS4gRWFjaCBkZWxldGUgb3BlcmF0aW9uIHNob3VsZCByZXF1aXJlIGV4cGxpY2l0IGh1bWFuIGFwcHJvdmFsLiBBdXRvLWFsbG93aW5nIGJ5cGFzc2VzIHRoZSBwZXItb3BlcmF0aW9uIGNvbmZpcm1hdGlvbiBnYXRlLCBsZWF2aW5nIG9ubHkgZWxlbWVudCBkZW55IHBvbGljaWVzIGFzIHByb3RlY3Rpb24gYWdhaW5zdCB1bmludGVuZGVkIGRhdGEgbG9zcy5cblxuUXVpY2sgc3RhcnQgZXhhbXBsZXM6XG57IG9wZXJhdGlvbjogXCJkZWxldGVfZWxlbWVudFwiLCBlbGVtZW50X3R5cGU6IFwicGVyc29uYVwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcIk9sZC1QZXJzb25hXCIgfSB9XG57IG9wZXJhdGlvbjogXCJjbGVhclwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInRlbXAtbm90ZXNcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNsZWFyX2dpdGh1Yl9hdXRoXCIgfVxuXG5EaXNjb3ZlciByZXF1aXJlZCBwYXJhbWV0ZXJzIOKAlCB1c2UgbWNwX2FxbF9yZWFkOlxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImRlbGV0ZV9lbGVtZW50XCIgfSB9YCxcbiAgICAgICAgaW5wdXRTY2hlbWE6IG9wZXJhdGlvbklucHV0U2NoZW1hLFxuICAgICAgICBhbm5vdGF0aW9uczoge1xuICAgICAgICAgIHJlYWRPbmx5SGludDogZmFsc2UsXG4gICAgICAgICAgZGVzdHJ1Y3RpdmVIaW50OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBoYW5kbGVyOiBhc3luYyAoYXJnczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZXIuaGFuZGxlRGVsZXRlKGFyZ3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHRleHQ6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIG1jcF9hcWxfZXhlY3V0ZSAtIEV4ZWN1dGlvbiBsaWZlY3ljbGUgb3BlcmF0aW9ucyAoQ1JVREUncyAnRScpXG4gICAge1xuICAgICAgdG9vbDoge1xuICAgICAgICBuYW1lOiBcIm1jcF9hcWxfZXhlY3V0ZVwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEV4ZWN1dGlvbiBsaWZlY3ljbGUgb3BlcmF0aW9ucyBmb3IgZXhlY3V0YWJsZSBlbGVtZW50cyAoYWdlbnRzLCB3b3JrZmxvd3MsIHBpcGVsaW5lcykuXG5cblN1cHBvcnRlZCBvcGVyYXRpb25zOiAke2dldE9wZXJhdGlvbnNTdHJpbmcoJ0VYRUNVVEUnKX1cblxuVGhlc2Ugb3BlcmF0aW9ucyBtYW5hZ2UgcnVudGltZSBleGVjdXRpb24gc3RhdGUuIFVubGlrZSBDUlVEIG9wZXJhdGlvbnMgKHdoaWNoIG1hbmFnZSBkZWZpbml0aW9ucyksIEV4ZWN1dGUgb3BlcmF0aW9ucyBoYW5kbGUgdGhlIGV4ZWN1dGlvbiBsaWZlY3ljbGU6XG4tIGV4ZWN1dGVfYWdlbnQ6IFN0YXJ0IGEgbmV3IGV4ZWN1dGlvbiAocmV0dXJucyBnb2FsSWQgYW5kIHN0YXRlVmVyc2lvbiBmb3IgdHJhY2tpbmcpXG4tIGNvbXBsZXRlX2V4ZWN1dGlvbjogU2lnbmFsIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvbmNlIHRoZSBnb2FsIGlzIGRvbmVcbi0gY29udGludWVfZXhlY3V0aW9uOiBSZXN1bWUgYSBwcmV2aW91c2x5IHBhdXNlZCBleGVjdXRpb24gd2l0aCB0aGUgc2FtZSBnb2FsIHBhcmFtZXRlcnNcbi0gYWJvcnRfZXhlY3V0aW9uOiBBYm9ydCBhIHJ1bm5pbmcgZXhlY3V0aW9uLCByZWplY3RpbmcgZnVydGhlciBvcGVyYXRpb25zXG4tIGNvbmZpcm1fb3BlcmF0aW9uOiBDb25maXJtIGEgcGVuZGluZyBvcGVyYXRpb24gdGhhdCByZXF1aXJlcyB1c2VyIGFwcHJvdmFsIChHYXRla2VlcGVyIGZsb3cpXG4tIGFwcHJvdmVfY2xpX3Blcm1pc3Npb246IEFwcHJvdmUgYSBwZW5kaW5nIENMSSB0b29sIHBlcm1pc3Npb24gcmVxdWVzdFxuLSBwcmVwYXJlX2hhbmRvZmY6IFNlcmlhbGl6ZSBnb2FsIHByb2dyZXNzIGludG8gYSBwb3J0YWJsZSBoYW5kb2ZmIGJsb2NrIGZvciBzZXNzaW9uIHRyYW5zZmVyXG4tIHJlc3VtZV9mcm9tX2hhbmRvZmY6IFJlc3VtZSBhZ2VudCBleGVjdXRpb24gZnJvbSBhIGhhbmRvZmYgYmxvY2sgd2l0aCBpbnRlZ3JpdHkgdmFsaWRhdGlvblxuXG5JTVBPUlRBTlQ6IEV4ZWN1dGUgb3BlcmF0aW9ucyBhcmUgcG90ZW50aWFsbHkgZGVzdHJ1Y3RpdmUgKGFnZW50cyBjYW4gcGVyZm9ybSBhbnkgYWN0aW9uKSBhbmQgbm9uLWlkZW1wb3RlbnQgKGNhbGxpbmcgZXhlY3V0ZV9hZ2VudCB0d2ljZSBjcmVhdGVzIHR3byBzZXBhcmF0ZSBleGVjdXRpb25zKS5cblxu4pqg77iPIFNFQ1VSSVRZOiBEbyBub3QgYXV0by1hbGxvdyB0aGlzIGVuZHBvaW50IGluIHlvdXIgaG9zdCBzZXR0aW5ncyAoZS5nLiwgQ2xhdWRlIENvZGUgc2V0dGluZ3MuanNvbikuIEVhY2ggZXhlY3V0aW9uIHNob3VsZCByZXF1aXJlIGV4cGxpY2l0IGh1bWFuIGFwcHJvdmFsLiBBdXRvLWFsbG93aW5nIGJ5cGFzc2VzIHRoZSBwZXItb3BlcmF0aW9uIGNvbmZpcm1hdGlvbiBnYXRlLiBXaGlsZSBEYW5nZXJab25lIHZlcmlmaWNhdGlvbiBhbmQgZWxlbWVudCBkZW55IHBvbGljaWVzIHN0aWxsIHByb3ZpZGUgcHJvdGVjdGlvbiwgdGhlIHByaW1hcnkgaHVtYW4gcmV2aWV3IGNoZWNrcG9pbnQgaXMgbG9zdC5cblxuQ2Fub25pY2FsIGxvb3A6XG4xLiBDYWxsIGV4ZWN1dGVfYWdlbnQgb25jZSB0byBzdGFydCB0aGUgZ29hbCBhbmQgcmVjZWl2ZSB7IGdvYWxJZCwgc3RhdGVWZXJzaW9uLCBhY3RpdmVFbGVtZW50cywgc2FmZXR5VGllciwgLi4uIH0uXG4yLiBBZnRlciBlYWNoIGNodW5rIG9mIHdvcmssIHVzZSBtY3BfYXFsX2NyZWF0ZTogeyBvcGVyYXRpb246IFwicmVjb3JkX2V4ZWN1dGlvbl9zdGVwXCIsIC4uLiB9LlxuMy4gUmVhZCByZWNvcmRfZXhlY3V0aW9uX3N0ZXAuYXV0b25vbXkuY29udGludWUgYW5kIGFueSBhdXRvbm9teS5ub3RpZmljYXRpb25zIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGNvbnRpbnVlLCBwYXVzZSBmb3IgYSBodW1hbiwgb3IgaGFuZGxlIGEgZ2F0ZWtlZXBlciBibG9jay5cbjQuIFdoZW4gdGhlIGdvYWwgaXMgZmluaXNoZWQsIGNhbGwgY29tcGxldGVfZXhlY3V0aW9uLlxuVXNlIGNvbnRpbnVlX2V4ZWN1dGlvbiBvbmx5IHdoZW4gYW4gYWxyZWFkeS1zdGFydGVkIGdvYWwgd2FzIHBhdXNlZCBhbmQgeW91IGFyZSByZXN1bWluZyBpdCB3aXRoIHRoZSBzYW1lIGdvYWwgcGFyYW1ldGVycy4gSXQgaXMgbm90IHRoZSBub3JtYWwgbmV4dCBjYWxsIGFmdGVyIGV4ZWN1dGVfYWdlbnQuXG5cblF1aWNrIHN0YXJ0IGV4YW1wbGVzOlxueyBvcGVyYXRpb246IFwiZXhlY3V0ZV9hZ2VudFwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImNvZGUtcmV2aWV3ZXJcIiwgcGFyYW1ldGVyczogeyBvYmplY3RpdmU6IFwiUmV2aWV3IGNvZGVcIiB9IH0gfVxuTmV4dCBsaWZlY3ljbGUgc3RlcCDigJQgdXNlIG1jcF9hcWxfY3JlYXRlOlxueyBvcGVyYXRpb246IFwicmVjb3JkX2V4ZWN1dGlvbl9zdGVwXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBzdGVwRGVzY3JpcHRpb246IFwiUmV2aWV3ZWQgYXV0aCBtb2R1bGVcIiwgb3V0Y29tZTogXCJzdWNjZXNzXCIsIGZpbmRpbmdzOiBcIkZvdW5kIDIgc2VjdXJpdHkgaXNzdWVzXCIgfSB9XG57IG9wZXJhdGlvbjogXCJjb21wbGV0ZV9leGVjdXRpb25cIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIsIG91dGNvbWU6IFwic3VjY2Vzc1wiLCBzdW1tYXJ5OiBcIkNvbXBsZXRlZCByZXZpZXdcIiB9IH1cbnsgb3BlcmF0aW9uOiBcImFib3J0X2V4ZWN1dGlvblwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcImRhdGEtY29sbGVjdG9yXCIsIHJlYXNvbjogXCJVc2VyIHJlcXVlc3RlZCBjYW5jZWxsYXRpb25cIiB9IH1cbnsgb3BlcmF0aW9uOiBcImNvbnRpbnVlX2V4ZWN1dGlvblwiLCBwYXJhbXM6IHsgZWxlbWVudF9uYW1lOiBcInJ1YnJpYy1xYS1hZ2VudFwiLCBwcmV2aW91c1N0ZXBSZXN1bHQ6IFwiVmVyaWZpZWQgY2l0YXRpb24gc2V0XCIsIHBhcmFtZXRlcnM6IHsgcnVuX2RpcjogXCIvYXBwL3J1blwiLCBkZWxpdmVyYWJsZV9wYXRoOiBcIi9hcHAvcnVuL291dHB1dC5kb2N4XCIgfSB9IH1cbnsgb3BlcmF0aW9uOiBcImNvbmZpcm1fb3BlcmF0aW9uXCIsIHBhcmFtczogeyBvcGVyYXRpb246IFwiZXhlY3V0ZV9hZ2VudFwiIH0gfVxueyBvcGVyYXRpb246IFwiYXBwcm92ZV9jbGlfcGVybWlzc2lvblwiLCBwYXJhbXM6IHsgcmVxdWVzdF9pZDogXCJyZXEtMTIzXCIsIGRlY2lzaW9uOiBcImFsbG93XCIgfSB9XG57IG9wZXJhdGlvbjogXCJwcmVwYXJlX2hhbmRvZmZcIiwgcGFyYW1zOiB7IGVsZW1lbnRfbmFtZTogXCJjb2RlLXJldmlld2VyXCIgfSB9XG57IG9wZXJhdGlvbjogXCJyZXN1bWVfZnJvbV9oYW5kb2ZmXCIsIHBhcmFtczogeyBlbGVtZW50X25hbWU6IFwiY29kZS1yZXZpZXdlclwiLCBoYW5kb2ZmX2Jsb2NrOiBcIi4uLlwiIH0gfVxuXG5EaXNjb3ZlciByZXF1aXJlZCBwYXJhbWV0ZXJzIOKAlCB1c2UgbWNwX2FxbF9yZWFkOlxueyBvcGVyYXRpb246IFwiaW50cm9zcGVjdFwiLCBwYXJhbXM6IHsgcXVlcnk6IFwib3BlcmF0aW9uc1wiLCBuYW1lOiBcImV4ZWN1dGVfYWdlbnRcIiB9IH1gLFxuICAgICAgICBpbnB1dFNjaGVtYTogb3BlcmF0aW9uSW5wdXRTY2hlbWEsXG4gICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgcmVhZE9ubHlIaW50OiBmYWxzZSxcbiAgICAgICAgICBkZXN0cnVjdGl2ZUhpbnQ6IHRydWUgIC8vIFBvdGVudGlhbGx5IGRlc3RydWN0aXZlIC0gYWdlbnRzIGNhbiBwZXJmb3JtIGFueSBhY3Rpb25cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6IGFzeW5jIChhcmdzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaGFuZGxlci5oYW5kbGVFeGVjdXRlKGFyZ3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbnRlbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgIHRleHQ6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuIl19
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import { IFileOperationsService } from './FileOperationsService.js';
12
12
  import type { StartupTimer, StartupReport } from '../telemetry/StartupTimer.js';
13
- import { type PermissionHookHealthSummary, type PermissionHookStartupRepairSummary } from '../utils/permissionHooks.js';
13
+ import { type PermissionHookDiagnosticRecord, type PermissionHookHealthSummary, type PermissionHookStartupRepairSummary } from '../utils/permissionHooks.js';
14
14
  export interface BuildInfo {
15
15
  sessionId: string;
16
16
  runtimeSessionId: string;
@@ -51,6 +51,8 @@ export interface BuildInfo {
51
51
  currentHosts: string[];
52
52
  repairedHosts: string[];
53
53
  needsRepairHosts: string[];
54
+ diagnosticsPath: string;
55
+ lastDiagnostic: PermissionHookDiagnosticRecord | null;
54
56
  lastStartupRepair: PermissionHookStartupRepairSummary | null;
55
57
  };
56
58
  /** Issue #706: Startup timing and readiness status. */
@@ -1 +1 @@
1
- {"version":3,"file":"BuildInfoService.d.ts","sourceRoot":"","sources":["../../src/services/BuildInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACxC,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;KACjC,CAAC;IACF,WAAW,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,MAAM,EAAE,2BAA2B,CAAC;QACpC,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,iBAAiB,EAAE,kCAAkC,GAAG,IAAI,CAAC;KAC9D,CAAC;IACF,uDAAuD;IACvD,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC;QACjC,qBAAqB,EAAE,OAAO,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,aAAa,CAAC;KACjC,CAAC;CACH;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,qEAAqE;IACrE,OAAO,CAAC,YAAY,CAA6B;IACjD,2DAA2D;IAC3D,OAAO,CAAC,oBAAoB,CAAgC;gBAEhD,cAAc,EAAE,sBAAsB;IAKlD;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAI1C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI;IAIrD;;;;;;;OAOG;IACU,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IA2F/C;;;;OAIG;IACI,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IA+H/C;;;OAGG;YACW,UAAU;IAcxB;;;OAGG;YACW,aAAa;IA+B3B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,YAAY;CAIrB"}
1
+ {"version":3,"file":"BuildInfoService.d.ts","sourceRoot":"","sources":["../../src/services/BuildInfoService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAEL,KAAK,8BAA8B,EAEnC,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACxC,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;QAChC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;KACjC,CAAC;IACF,WAAW,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,OAAO,CAAC;QACtB,aAAa,EAAE,OAAO,CAAC;QACvB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,IAAI,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,eAAe,CAAC,EAAE;QAChB,MAAM,EAAE,2BAA2B,CAAC;QACpC,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,8BAA8B,GAAG,IAAI,CAAC;QACtD,iBAAiB,EAAE,kCAAkC,GAAG,IAAI,CAAC;KAC9D,CAAC;IACF,uDAAuD;IACvD,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC;QACjC,qBAAqB,EAAE,OAAO,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,aAAa,CAAC;KACjC,CAAC;CACH;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,qEAAqE;IACrE,OAAO,CAAC,YAAY,CAA6B;IACjD,2DAA2D;IAC3D,OAAO,CAAC,oBAAoB,CAAgC;gBAEhD,cAAc,EAAE,sBAAsB;IAKlD;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAI1C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI;IAIrD;;;;;;;OAOG;IACU,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAuG/C;;;;OAIG;IACI,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAoJ/C;;;OAGG;YACW,UAAU;IAcxB;;;OAGG;YACW,aAAa;IA+B3B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,YAAY;CAIrB"}