sonamu 0.9.6 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/decorators.js +2 -2
- package/dist/syncer/file-patterns.js +2 -2
- package/dist/syncer/syncer-actions.d.ts +8 -2
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +11 -4
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +4 -3
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +4 -5
- package/dist/utils/process-utils.d.ts +5 -5
- package/dist/utils/process-utils.js +6 -6
- package/package.json +1 -1
- package/src/api/decorators.ts +2 -2
- package/src/syncer/file-patterns.ts +1 -1
- package/src/syncer/syncer-actions.ts +15 -3
- package/src/syncer/syncer.ts +12 -5
- package/src/utils/formatter.ts +4 -6
- package/src/utils/process-utils.ts +5 -5
package/dist/api/decorators.js
CHANGED
|
@@ -175,7 +175,7 @@ function transactional(options = {}) {
|
|
|
175
175
|
return (target, propertyKey, descriptor) => {
|
|
176
176
|
const originalMethod = descriptor.value;
|
|
177
177
|
const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
|
|
178
|
-
assert(modelName, `modelName is required on @
|
|
178
|
+
assert(modelName, `modelName is required on @transactional decorator on ${target.constructor.name}.${propertyKey}`);
|
|
179
179
|
const methodName = propertyKey;
|
|
180
180
|
descriptor.value = async function(...args) {
|
|
181
181
|
this.logger.debug("transactional: {model}.{method}", {
|
|
@@ -308,4 +308,4 @@ var init_decorators = __esmMin((() => {
|
|
|
308
308
|
//#endregion
|
|
309
309
|
init_decorators();
|
|
310
310
|
export { api, init_decorators, registeredApis, stream, transactional, upload, websocket };
|
|
311
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbImFwaSIsInJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZWNvcmF0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xDb25maWcgfSBmcm9tIFwiLi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21wcmVzc0NvbmZpZyB9IGZyb20gXCIuLi9jb21wcmVzcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgREIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGJcIjtcbmltcG9ydCB7IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuLi9zdG9yYWdlL2RyaXZlcnNcIjtcbmltcG9ydCB7IHR5cGUgS2V5R2VuZXJhdG9yIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBCYXNlRnJhbWVDbGFzcyB9IGZyb20gXCIuL2Jhc2UtZnJhbWVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHdWFyZEtleXMge1xuICBxdWVyeTogdHJ1ZTtcbiAgYWRtaW46IHRydWU7XG4gIHVzZXI6IHRydWU7XG59XG5leHBvcnQgdHlwZSBHdWFyZEtleSA9IGtleW9mIEd1YXJkS2V5cztcbmV4cG9ydCB0eXBlIFNlcnZpY2VDbGllbnQgPVxuICB8IFwiYXhpb3NcIlxuICB8IFwiYXhpb3MtbXVsdGlwYXJ0XCJcbiAgfCBcInRhbnN0YWNrLXF1ZXJ5XCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uXCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uLW11bHRpcGFydFwiXG4gIHwgXCJ3aW5kb3ctZmV0Y2hcIjtcbmV4cG9ydCB0eXBlIEFwaURlY29yYXRvck9wdGlvbnMgPSB7XG4gIGh0dHBNZXRob2Q/OiBIVFRQTWV0aG9kcztcbiAgY29udGVudFR5cGU/OlxuICAgIHwgXCJ0ZXh0L3BsYWluXCJcbiAgICB8IFwidGV4dC9odG1sXCJcbiAgICB8IFwidGV4dC94bWxcIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB8IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG4gIGNsaWVudHM/OiBTZXJ2aWNlQ2xpZW50W107XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBBUEkg7J2R64u17J2YIENhY2hlLUNvbnRyb2wg7Zek642UIOyEpOyglS4g7ISk7KCV7ZWY7KeAIOyViuycvOuptCBjYWNoZUNvbnRyb2xIYW5kbGVyIOuYkOuKlCDquLDrs7jqsJLsnbQg7KCB7Jqp65Cp64uI64ukLiAqL1xuICBjYWNoZUNvbnRyb2w/OiBDYWNoZUNvbnRyb2xDb25maWc7XG4gIC8qKiBBUEkg7J2R64u17J2YIOyVley2lSDshKTsoJUuIGZhbHNl66GcIOyEpOygle2VmOuptCDslZXstpXsnYQg67mE7Zmc7ISx7ZmU7ZWp64uI64ukLiAqL1xuICBjb21wcmVzcz86IENvbXByZXNzQ29uZmlnO1xufTtcbmV4cG9ydCB0eXBlIFN0cmVhbURlY29yYXRvck9wdGlvbnMgPSB7XG4gIHR5cGU6IFwic3NlXCI7IC8vIHwgJ3dzXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIOydtOuypO2KuCDtgqTrs4TroZwg64SY6rKo7KO864qUIOqwkuydtOuvgOuhnCDslrTrlqQg7YOA7J6F7J2065OgIOyDgeq0gOyXhuydjFxuICBldmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIG91dEV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIGluRXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICBwYXRoPzogc3RyaW5nO1xuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBoZWFydGJlYXQ/OiBudW1iZXI7XG4gIG1heFBheWxvYWQ/OiBudW1iZXI7XG4gIG5hbWVzcGFjZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgPSBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zICYge1xuICAvLyBjb2RlZ2Vu7J20IO2DgOyehSDsnbTrpoTsnYQg7J6s7IKs7Jqp7ZWgIOyImCDsnojrj4TroZ0gc3luY2Vy6rCAIEFTVOyXkOyEnCDrs7TqsJXtlZjripQg66mU7YOA642w7J207YSwXG4gIG91dEV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xuICBpbkV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xufTtcblxudHlwZSBCdWZmZXJVcGxvYWRPcHRpb25zID0ge1xuICBjb25zdW1lPzogXCJidWZmZXJcIjtcbn07XG50eXBlIFN0cmVhbVVwbG9hZE9wdGlvbnMgPSB7XG4gIGNvbnN1bWU6IFwic3RyZWFtXCI7XG4gIGRlc3RpbmF0aW9uOiBEcml2ZXJLZXk7XG4gIGtleUdlbmVyYXRvcj86IEtleUdlbmVyYXRvcjtcbn07XG5leHBvcnQgdHlwZSBVcGxvYWREZWNvcmF0b3JPcHRpb25zID0ge1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbGltaXRzPzogRmFzdGlmeU11bHRpcGFydEJhc2VPcHRpb25zW1wibGltaXRzXCJdO1xufSAmIChCdWZmZXJVcGxvYWRPcHRpb25zIHwgU3RyZWFtVXBsb2FkT3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlcmVkQXBpczoge1xuICAvKipcbiAgICogbW9kZWxOYW1l7J2AIOuqqOuNuCDtgbTrnpjsiqQg7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlck1vZGVsXCIpXG4gICAqL1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnM7XG4gIHN0cmVhbU9wdGlvbnM/OiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zO1xuICB3ZWJzb2NrZXRPcHRpb25zPzogUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zO1xuICB1cGxvYWRPcHRpb25zPzogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucztcbn1bXSA9IFtdO1xuZXhwb3J0IHR5cGUgRXh0ZW5kZWRBcGkgPSB7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG59O1xudHlwZSBEZWNvcmF0b3JUYXJnZXQgPSB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH07XG5cbmNvbnN0IERFQ09SQVRPUl9UWVBFUyA9IHtcbiAgQVBJOiBTeW1ib2woXCJhcGlcIiksXG4gIFNUUkVBTTogU3ltYm9sKFwic3RyZWFtXCIpLFxuICBXRUJTT0NLRVQ6IFN5bWJvbChcIndlYnNvY2tldFwiKSxcbiAgVVBMT0FEOiBTeW1ib2woXCJ1cGxvYWRcIiksXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3ltYm9sKSB7XG4gIGNvbnN0IG1ldGhvZCA9IHRhcmdldFtwcm9wZXJ0eUtleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSBhcyB7IF9fZGVjb3JhdG9yVHlwZT86IHN5bWJvbCB9O1xuICBpZiAobWV0aG9kPy5fX2RlY29yYXRvclR5cGUgJiYgbWV0aG9kPy5fX2RlY29yYXRvclR5cGUgIT09IGRlY29yYXRvclR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yVHlwZS5kZXNjcmlwdGlvbiA/PyBTdHJpbmcoZGVjb3JhdG9yVHlwZSl9IGRlY29yYXRvciBjYW4gb25seSBiZSB1c2VkIG9uY2Ugb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX0uIFlvdSBjYW4gdXNlIG9ubHkgb25lIG9mIEBhcGksIEBzdHJlYW0sIEB3ZWJzb2NrZXQsIG9yIEB1cGxvYWQgZGVjb3JhdG9yIG9uIHRoZSBzYW1lIG1ldGhvZC5gLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kLl9fZGVjb3JhdG9yVHlwZSA9IGRlY29yYXRvclR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwaShvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zID0ge30pIHtcbiAgb3B0aW9ucyA9IHtcbiAgICBodHRwTWV0aG9kOiBcIkdFVFwiLFxuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBjbGllbnRzOiBbXCJheGlvc1wiXSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuXG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBhcGkgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuQVBJKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuXG4gICAgLy8g6riw7KG0IOuPmeydvO2VnCDrqZTshJzrk5zqsIAg7J6I64qU7KeAIO2ZleyduCDtm4Qg7J6I64qUIOqyveyasCBvdmVycmlkZVxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcImFwaVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnMsIC8vIEBhcGkg642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbShvcHRpb25zOiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuU1RSRUFNKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuICAgIC8vIHN0cmVhbSDsoITsmqkg7ZWE65OcKGV2ZW50cywgdHlwZSnripQgQXBpRGVjb3JhdG9yT3B0aW9uc+yXkCDsho3tlZjsp4Ag7JWK7Jy866+A66GcIOygnOyZuFxuICAgIGNvbnN0IHsgZXZlbnRzOiBfLCB0eXBlOiBfdHlwZSwgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB3ZWJzb2NrZXQgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5XRUJTT0NLRVQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKHByb3BlcnR5S2V5LCB0cnVlKX1gO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zLnBhdGggPz8gZGVmYXVsdFBhdGg7XG4gICAgY29uc3QgeyBvdXRFdmVudHM6IF9vdXRFdmVudHMsIGluRXZlbnRzOiBfaW5FdmVudHMsIC4uLmFwaU9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhEZWZhdWx0cyA9IHtcbiAgICAgIC4uLmFwaU9wdGlvbnMsXG4gICAgICBodHRwTWV0aG9kOiBcIkdFVFwiIGFzIEhUVFBNZXRob2RzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAoYXBpKSA9PiBhcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFwid2Vic29ja2V0XCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkucGF0aCwgcGF0aCk7XG4gICAgICBleGlzdGluZ0FwaS5wYXRoID0gcGF0aDtcblxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwid2Vic29ja2V0XCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkud2Vic29ja2V0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHdlYnNvY2tldE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcIndlYnNvY2tldDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwob3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJ0cmFuc2FjdGlvbmFsOiB7bW9kZWx9LnttZXRob2R9XCIsIHtcbiAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nQ29udGV4dCA9IERCLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpO1xuXG4gICAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirgg7JeG6rGw64KYIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4jroZwg7Iuc7J6RXG4gICAgICBjb25zdCBzdGFydFRyYW5zYWN0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBwdXJpID0gdGhpcy5nZXRQdXJpKGRiUHJlc2V0KTtcblxuICAgICAgICByZXR1cm4gcHVyaS5rbmV4LnRyYW5zYWN0aW9uKFxuICAgICAgICAgIGFzeW5jICh0cngpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwibmV3IHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRyeFdyYXBwZXIgPSBuZXcgUHVyaVRyYW5zYWN0aW9uV3JhcHBlcih0cngsIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuICAgICAgICAgICAgLy8gVHJhbnNhY3Rpb25Db250ZXh07JeQIO2KuOuenOyereyFmCDsoIDsnqVcbiAgICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLnNldFRyYW5zYWN0aW9uKGRiUHJlc2V0LCB0cnhXcmFwcGVyKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgLy8g7Yq4656c7J6t7IWYIOygnOqxsFxuICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcImRlbGV0ZSB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgICAgICAgIERCLmdldFRyYW5zYWN0aW9uQ29udGV4dCgpLmRlbGV0ZVRyYW5zYWN0aW9uKGRiUHJlc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgaXNvbGF0aW9uTGV2ZWw6IGlzb2xhdGlvbiwgcmVhZE9ubHkgfSxcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuOqwgCDsl4bsnLzrqbQg7IOI66GcIOyDneyEsVxuICAgICAgaWYgKCFleGlzdGluZ0NvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIERCLnJ1bldpdGhUcmFuc2FjdGlvbihzdGFydFRyYW5zYWN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgLy8g7J2066+4IEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuCDslYjsl5Ag7J6I64qU7KeAIO2ZleyduCDtm4Qg7ZW064u5IHByZXNldOydmCDtirjrnpzsnq3shZjsnbQg7J2066+4IOyeiOycvOuptCDsnqzsgqzsmqlcbiAgICAgIGlmIChleGlzdGluZ0NvbnRleHQ/LmdldFRyYW5zYWN0aW9uKGRiUHJlc2V0KSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInJldXNlIHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfVxuXG4gICAgICAvLyDsu6jthY3siqTtirjripQg7J6I7KeA66eMIOydtCBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J2AIOyXhuuKlCDqsr3smrAgKOqwmeydgCDsu6jthY3siqTtirgg64K07JeQ7IScIOyLpO2WiSlcbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIO2MjOydvCDsl4XroZzrk5wgQVBJ66W8IOyDneyEse2VtOykjeuLiOuLpC4gKEBhcGkg642w7L2U66CI7J207YSwIOyXhuydtCDrj4Xrpr3soIHsnLzroZwg7IKs7JqpKVxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWQob3B0aW9uczogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucyA9IHsgY29uc3VtZTogXCJidWZmZXJcIiB9KSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSB0YXJnZXQuY29uc3RydWN0b3IubmFtZS5tYXRjaCgvKC4rKUNsYXNzJC8pPy5bMV07XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAdXBsb2FkIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyDrqZTshJzrk5zsl5Ag6rG466awIOuNsOy9lOugiOydtO2EsCDspJHrs7Ug7LK07YGsXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLlVQTE9BRCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUobWV0aG9kTmFtZSwgdHJ1ZSl9YDtcblxuICAgIC8vIHJlZ2lzdGVyZWRBcGlz7JeQ7IScIO2VtOuLuSBBUEkg7LC+7JWE7IScIHVwbG9hZE9wdGlvbnMg7LaU6rCAXG4gICAgY29uc3QgZXhpc3RpbmdBcGkgPSByZWdpc3RlcmVkQXBpcy5maW5kKFxuICAgICAgKGFwaSkgPT4gYXBpLm1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lICYmIGFwaS5tZXRob2ROYW1lID09PSBtZXRob2ROYW1lLFxuICAgICk7XG5cbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIC8vIOyerOuTseuhnSDsi5wg7JeF66Gc65OcIOyYteyFmOunjCDqsLHsi6BcbiAgICAgIGV4aXN0aW5nQXBpLnVwbG9hZE9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDsg4jroZwg65Ox66GdXG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoOiBkZWZhdWx0UGF0aCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGNsaWVudHM6IFtcImF4aW9zLW11bHRpcGFydFwiLCBcInRhbnN0YWNrLW11dGF0aW9uLW11bHRpcGFydFwiXSxcbiAgICAgICAgICBndWFyZHM6IG9wdGlvbnMuZ3VhcmRzLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICB9LFxuICAgICAgICB1cGxvYWRPcHRpb25zOiBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwidXBsb2FkOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIOq4sOyhtOydmCBwYXRo7JmAIOyDiOuhnOyatCBwYXRo6rCAIOuLpOultOuLpOuptCg96rCS7J20IOyeiOuNmCDsiqTtirjrp4HsnbQg64uk66W4IOqwkuydtCDsnojripQg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gKiBAcGFyYW0gZGVjb3JhdG9yTmFtZSDrjbDsvZTroIjsnbTthLAg7J2066aEXG4gKiBAcGFyYW0gbW9kZWxOYW1lIOuqqOuNuCDsnbTrpoRcbiAqIEBwYXJhbSBtZXRob2ROYW1lIOuplOyEnOuTnCDsnbTrpoRcbiAqIEBwYXJhbSBleGlzdGluZ1BhdGgg6riw7KG07J2YIHBhdGhcbiAqIEBwYXJhbSBuZXdQYXRoIOyDiOuhnOyatCBwYXRoXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIGV4aXN0aW5nUGF0aDogc3RyaW5nLFxuICBuZXdQYXRoOiBzdHJpbmcsXG4pIHtcbiAgaWYgKGV4aXN0aW5nUGF0aCAhPT0gXCJcIiAmJiBuZXdQYXRoICE9PSBcIlwiICYmIGV4aXN0aW5nUGF0aCAhPT0gbmV3UGF0aCkge1xuICAgIC8vIOydtOqyg+ydtCDrrLTsiqgg7IOB7Zmp7J2064OQ66m07JqULCBhcGkucGF0aOqwgCDrja7slrTslIzsm4zsp4DripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOqwgOuguSBAYXBpKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzXCIgfSkg642w7L2U66CI7J207YSw6rCAIOu2meyWtOyeiOuKlCDrqZTshJzrk5zsl5BcbiAgICAvLyBAc3RyZWFtKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzL3N0cmVhbVwiIH0pIOqwmeydgCDqsoPsnbQg67aZ7Ja0IOyeiOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgLy8g7J2066CH6rKMIOuQmOuptCDrkZAg642w7L2U66CI7J207YSw6rCAIOqwmeydgCBhcGnsnZggcGF0aCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yTmFtZX0gZGVjb3JhdG9yIG9uICR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9IGhhcyBjb25mbGljdGluZyBwYXRoOiAke25ld1BhdGh9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcGF0aCgke2V4aXN0aW5nUGF0aH0pIHdpdGggdGhlIG5ldyBwYXRoKCR7bmV3UGF0aH0pLmAsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdPcHRpb25zIOq4sOyhtOydmCDsmLXshZhcbiAqIEBwYXJhbSBuZXdPcHRpb25zIOyDiOuhnOyatCDsmLXshZhcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gIGRlY29yYXRvck5hbWU6IHN0cmluZyxcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gPOyVhCDsib3qsozsib3qsowg7KKAIOqwkeyLnOuLpD5cbiAgZXhpc3RpbmdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSA87J2065+0IOuVjCDslYTri4jrqbQgYW55IOyWuOygnCDslIHri4jquYw+XG4gIG5ld09wdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pIHtcbiAgT2JqZWN0LmtleXMobmV3T3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgaWYgKGV4aXN0aW5nT3B0aW9uc1trZXldICYmICFpc0VxdWFsKGV4aXN0aW5nT3B0aW9uc1trZXldLCBuZXdPcHRpb25zW2tleV0pKSB7XG4gICAgICAvLyDsnbTqsoPsnbQg66y07IqoIOyDge2ZqeydtOuDkOuptOyalCwgYXBpLm9wdGlvbnPqsIAg642u7Ja07JSM7JuM7KeA64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOqwgOuguSBAYXBpKHsgcmVzb3VyY2VOYW1lOiBcIlVzZXJzXCIgfSkg642w7L2U66CI7J207YSw6rCAIOu2meyWtOyeiOuKlCDrqZTshJzrk5zsl5BcbiAgICAgIC8vIEBzdHJlYW0oeyByZXNvdXJjZU5hbWU6IFwiUG9zdHNcIiB9KSDqsJnsnYAg6rKD7J20IOu2meyWtCDsnojripQg7IOB7Zmp7J6F64uI64ukLlxuICAgICAgLy8g7J2066CH6rKMIOuQmOuptCDrkZAg642w7L2U66CI7J207YSw6rCAIOqwmeydgCBhcGnsnZggb3B0aW9ucyDsho0g6rCZ7J2AIO2VhOuTnOulvCDqsbTrk5zrpqzqsowg65CY66+A66GcLCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQCR7ZGVjb3JhdG9yTmFtZX0gZGVjb3JhdG9yIG9uICR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9IGhhcyBjb25mbGljdGluZyBvcHRpb25zOiAke2tleX0uIFRoZSBkZWNvcmF0b3IgaXMgdHJ5aW5nIHRvIG92ZXJyaWRlIHRoZSBleGlzdGluZyBvcHRpb24oJHtKU09OLnN0cmluZ2lmeShleGlzdGluZ09wdGlvbnNba2V5XSl9KSB3aXRoIHRoZSBuZXcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkobmV3T3B0aW9uc1trZXldKX0pLmAsXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFpSUEsU0FBUyxxQkFBcUIsUUFBeUIsYUFBcUIsZUFBdUI7Q0FDakcsTUFBTSxTQUFTLE9BQU87QUFDdEIsS0FBSSxRQUFRLG1CQUFtQixRQUFRLG9CQUFvQixlQUFlO0FBQ3hFLFFBQU0sSUFBSSxNQUNSLElBQUksY0FBYyxlQUFlLE9BQU8sY0FBYyxDQUFDLHNDQUFzQyxPQUFPLFlBQVksS0FBSyxHQUFHLFlBQVksK0ZBQ3JJO1FBQ0k7QUFDTCxTQUFPLGtCQUFrQjs7O0FBSTdCLFNBQWdCLElBQUksVUFBK0IsRUFBRSxFQUFFO0FBQ3JELFdBQVU7RUFDUixZQUFZO0VBQ1osYUFBYTtFQUNiLFNBQVMsQ0FBQyxRQUFRO0VBQ2xCLEdBQUc7RUFDSjtBQUVELFNBQVEsUUFBeUIsYUFBcUIsZUFBbUM7RUFDdkYsTUFBTSxZQUFZLE9BQU8sWUFBWSxLQUFLLE1BQU0sYUFBYSxHQUFHO0FBQ2hFLFNBQ0UsV0FDQSw4Q0FBOEMsT0FBTyxZQUFZLEtBQUssR0FBRyxjQUMxRTtFQUNELE1BQU0sYUFBYTtBQUduQix1QkFBcUIsUUFBUSxhQUFhLGdCQUFnQixJQUFJO0VBRTlELE1BQU0sY0FBYyxJQUFJLFdBQVcsU0FDakMsVUFBVSxRQUFRLFVBQVUsR0FBRyxDQUFDLFFBQVEsVUFBVSxHQUFHLEVBQ3JELEtBQ0QsQ0FBQyxHQUFHLFdBQVcsU0FBUyxhQUFhLEtBQUs7RUFDM0MsTUFBTSxPQUFPLFFBQVEsUUFBUTtFQUc3QixNQUFNLGNBQWMsZUFBZSxNQUNoQyxVQUFRQSxNQUFJLGNBQWMsYUFBYUEsTUFBSSxlQUFlLFdBQzVEO0FBQ0QsTUFBSSxhQUFhO0FBRWYsMkJBQXdCLE9BQU8sV0FBVyxZQUFZLFlBQVksTUFBTSxLQUFLO0FBQzdFLGVBQVksT0FBTztBQUduQiw4QkFBMkIsT0FBTyxXQUFXLFlBQVksWUFBWSxTQUFTLFFBQVE7QUFDdEYs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
|
|
311
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbImFwaSIsInJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZWNvcmF0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xDb25maWcgfSBmcm9tIFwiLi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21wcmVzc0NvbmZpZyB9IGZyb20gXCIuLi9jb21wcmVzcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgREIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGJcIjtcbmltcG9ydCB7IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuLi9zdG9yYWdlL2RyaXZlcnNcIjtcbmltcG9ydCB7IHR5cGUgS2V5R2VuZXJhdG9yIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBCYXNlRnJhbWVDbGFzcyB9IGZyb20gXCIuL2Jhc2UtZnJhbWVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHdWFyZEtleXMge1xuICBxdWVyeTogdHJ1ZTtcbiAgYWRtaW46IHRydWU7XG4gIHVzZXI6IHRydWU7XG59XG5leHBvcnQgdHlwZSBHdWFyZEtleSA9IGtleW9mIEd1YXJkS2V5cztcbmV4cG9ydCB0eXBlIFNlcnZpY2VDbGllbnQgPVxuICB8IFwiYXhpb3NcIlxuICB8IFwiYXhpb3MtbXVsdGlwYXJ0XCJcbiAgfCBcInRhbnN0YWNrLXF1ZXJ5XCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uXCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uLW11bHRpcGFydFwiXG4gIHwgXCJ3aW5kb3ctZmV0Y2hcIjtcbmV4cG9ydCB0eXBlIEFwaURlY29yYXRvck9wdGlvbnMgPSB7XG4gIGh0dHBNZXRob2Q/OiBIVFRQTWV0aG9kcztcbiAgY29udGVudFR5cGU/OlxuICAgIHwgXCJ0ZXh0L3BsYWluXCJcbiAgICB8IFwidGV4dC9odG1sXCJcbiAgICB8IFwidGV4dC94bWxcIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB8IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG4gIGNsaWVudHM/OiBTZXJ2aWNlQ2xpZW50W107XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBBUEkg7J2R64u17J2YIENhY2hlLUNvbnRyb2wg7Zek642UIOyEpOyglS4g7ISk7KCV7ZWY7KeAIOyViuycvOuptCBjYWNoZUNvbnRyb2xIYW5kbGVyIOuYkOuKlCDquLDrs7jqsJLsnbQg7KCB7Jqp65Cp64uI64ukLiAqL1xuICBjYWNoZUNvbnRyb2w/OiBDYWNoZUNvbnRyb2xDb25maWc7XG4gIC8qKiBBUEkg7J2R64u17J2YIOyVley2lSDshKTsoJUuIGZhbHNl66GcIOyEpOygle2VmOuptCDslZXstpXsnYQg67mE7Zmc7ISx7ZmU7ZWp64uI64ukLiAqL1xuICBjb21wcmVzcz86IENvbXByZXNzQ29uZmlnO1xufTtcbmV4cG9ydCB0eXBlIFN0cmVhbURlY29yYXRvck9wdGlvbnMgPSB7XG4gIHR5cGU6IFwic3NlXCI7XG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIOydtOuypO2KuCDtgqTrs4TroZwg64SY6rKo7KO864qUIOqwkuydtOuvgOuhnCDslrTrlqQg7YOA7J6F7J2065OgIOyDgeq0gOyXhuydjFxuICBldmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIG91dEV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIGluRXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICBwYXRoPzogc3RyaW5nO1xuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBoZWFydGJlYXQ/OiBudW1iZXI7XG4gIG1heFBheWxvYWQ/OiBudW1iZXI7XG4gIG5hbWVzcGFjZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgPSBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zICYge1xuICAvLyBjb2RlZ2Vu7J20IO2DgOyehSDsnbTrpoTsnYQg7J6s7IKs7Jqp7ZWgIOyImCDsnojrj4TroZ0gc3luY2Vy6rCAIEFTVOyXkOyEnCDrs7TqsJXtlZjripQg66mU7YOA642w7J207YSwXG4gIG91dEV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xuICBpbkV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xufTtcblxudHlwZSBCdWZmZXJVcGxvYWRPcHRpb25zID0ge1xuICBjb25zdW1lPzogXCJidWZmZXJcIjtcbn07XG50eXBlIFN0cmVhbVVwbG9hZE9wdGlvbnMgPSB7XG4gIGNvbnN1bWU6IFwic3RyZWFtXCI7XG4gIGRlc3RpbmF0aW9uOiBEcml2ZXJLZXk7XG4gIGtleUdlbmVyYXRvcj86IEtleUdlbmVyYXRvcjtcbn07XG5leHBvcnQgdHlwZSBVcGxvYWREZWNvcmF0b3JPcHRpb25zID0ge1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbGltaXRzPzogRmFzdGlmeU11bHRpcGFydEJhc2VPcHRpb25zW1wibGltaXRzXCJdO1xufSAmIChCdWZmZXJVcGxvYWRPcHRpb25zIHwgU3RyZWFtVXBsb2FkT3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlcmVkQXBpczoge1xuICAvKipcbiAgICogbW9kZWxOYW1l7J2AIOuqqOuNuCDtgbTrnpjsiqQg7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlck1vZGVsXCIpXG4gICAqL1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnM7XG4gIHN0cmVhbU9wdGlvbnM/OiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zO1xuICB3ZWJzb2NrZXRPcHRpb25zPzogUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zO1xuICB1cGxvYWRPcHRpb25zPzogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucztcbn1bXSA9IFtdO1xuZXhwb3J0IHR5cGUgRXh0ZW5kZWRBcGkgPSB7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG59O1xudHlwZSBEZWNvcmF0b3JUYXJnZXQgPSB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH07XG5cbmNvbnN0IERFQ09SQVRPUl9UWVBFUyA9IHtcbiAgQVBJOiBTeW1ib2woXCJhcGlcIiksXG4gIFNUUkVBTTogU3ltYm9sKFwic3RyZWFtXCIpLFxuICBXRUJTT0NLRVQ6IFN5bWJvbChcIndlYnNvY2tldFwiKSxcbiAgVVBMT0FEOiBTeW1ib2woXCJ1cGxvYWRcIiksXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3ltYm9sKSB7XG4gIGNvbnN0IG1ldGhvZCA9IHRhcmdldFtwcm9wZXJ0eUtleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSBhcyB7IF9fZGVjb3JhdG9yVHlwZT86IHN5bWJvbCB9O1xuICBpZiAobWV0aG9kPy5fX2RlY29yYXRvclR5cGUgJiYgbWV0aG9kPy5fX2RlY29yYXRvclR5cGUgIT09IGRlY29yYXRvclR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yVHlwZS5kZXNjcmlwdGlvbiA/PyBTdHJpbmcoZGVjb3JhdG9yVHlwZSl9IGRlY29yYXRvciBjYW4gb25seSBiZSB1c2VkIG9uY2Ugb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX0uIFlvdSBjYW4gdXNlIG9ubHkgb25lIG9mIEBhcGksIEBzdHJlYW0sIEB3ZWJzb2NrZXQsIG9yIEB1cGxvYWQgZGVjb3JhdG9yIG9uIHRoZSBzYW1lIG1ldGhvZC5gLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kLl9fZGVjb3JhdG9yVHlwZSA9IGRlY29yYXRvclR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwaShvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zID0ge30pIHtcbiAgb3B0aW9ucyA9IHtcbiAgICBodHRwTWV0aG9kOiBcIkdFVFwiLFxuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBjbGllbnRzOiBbXCJheGlvc1wiXSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuXG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBhcGkgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuQVBJKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuXG4gICAgLy8g6riw7KG0IOuPmeydvO2VnCDrqZTshJzrk5zqsIAg7J6I64qU7KeAIO2ZleyduCDtm4Qg7J6I64qUIOqyveyasCBvdmVycmlkZVxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcImFwaVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnMsIC8vIEBhcGkg642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbShvcHRpb25zOiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuU1RSRUFNKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuICAgIC8vIHN0cmVhbSDsoITsmqkg7ZWE65OcKGV2ZW50cywgdHlwZSnripQgQXBpRGVjb3JhdG9yT3B0aW9uc+yXkCDsho3tlZjsp4Ag7JWK7Jy866+A66GcIOygnOyZuFxuICAgIGNvbnN0IHsgZXZlbnRzOiBfLCB0eXBlOiBfdHlwZSwgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB3ZWJzb2NrZXQgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5XRUJTT0NLRVQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKHByb3BlcnR5S2V5LCB0cnVlKX1gO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zLnBhdGggPz8gZGVmYXVsdFBhdGg7XG4gICAgY29uc3QgeyBvdXRFdmVudHM6IF9vdXRFdmVudHMsIGluRXZlbnRzOiBfaW5FdmVudHMsIC4uLmFwaU9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhEZWZhdWx0cyA9IHtcbiAgICAgIC4uLmFwaU9wdGlvbnMsXG4gICAgICBodHRwTWV0aG9kOiBcIkdFVFwiIGFzIEhUVFBNZXRob2RzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAoYXBpKSA9PiBhcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFwid2Vic29ja2V0XCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkucGF0aCwgcGF0aCk7XG4gICAgICBleGlzdGluZ0FwaS5wYXRoID0gcGF0aDtcblxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwid2Vic29ja2V0XCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkud2Vic29ja2V0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHdlYnNvY2tldE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcIndlYnNvY2tldDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwob3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB0cmFuc2FjdGlvbmFsIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwidHJhbnNhY3Rpb25hbDoge21vZGVsfS57bWV0aG9kfVwiLCB7XG4gICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBleGlzdGluZ0NvbnRleHQgPSBEQi50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKTtcblxuICAgICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq4IOyXhuqxsOuCmCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsl4bsnLzrqbQg7IOI66GcIOyLnOyekVxuICAgICAgY29uc3Qgc3RhcnRUcmFuc2FjdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcHVyaSA9IHRoaXMuZ2V0UHVyaShkYlByZXNldCk7XG5cbiAgICAgICAgcmV0dXJuIHB1cmkua25leC50cmFuc2FjdGlvbihcbiAgICAgICAgICBhc3luYyAodHJ4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIm5ldyB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgICAgICBjb25zdCB0cnhXcmFwcGVyID0gbmV3IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIodHJ4LCBuZXcgVXBzZXJ0QnVpbGRlcigpKTtcbiAgICAgICAgICAgIC8vIFRyYW5zYWN0aW9uQ29udGV4dOyXkCDtirjrnpzsnq3shZgg7KCA7J6lXG4gICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5zZXRUcmFuc2FjdGlvbihkYlByZXNldCwgdHJ4V3JhcHBlcik7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBhd2FpdCBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIC8vIO2KuOuenOyereyFmCDsoJzqsbBcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJkZWxldGUgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5kZWxldGVUcmFuc2FjdGlvbihkYlByZXNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGlzb2xhdGlvbkxldmVsOiBpc29sYXRpb24sIHJlYWRPbmx5IH0sXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG7Jy866m0IOyDiOuhnCDsg53shLFcbiAgICAgIGlmICghZXhpc3RpbmdDb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBEQi5ydW5XaXRoVHJhbnNhY3Rpb24oc3RhcnRUcmFuc2FjdGlvbik7XG4gICAgICB9XG5cbiAgICAgIC8vIOydtOuvuCBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirgg7JWI7JeQIOyeiOuKlOyngCDtmZXsnbgg7ZuEIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOydtOuvuCDsnojsnLzrqbQg7J6s7IKs7JqpXG4gICAgICBpZiAoZXhpc3RpbmdDb250ZXh0Py5nZXRUcmFuc2FjdGlvbihkYlByZXNldCkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXVzZSB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgLy8g7Luo7YWN7Iqk7Yq464qUIOyeiOyngOunjCDsnbQgcHJlc2V07J2YIO2KuOuenOyereyFmOydgCDsl4bripQg6rK97JqwICjqsJnsnYAg7Luo7YWN7Iqk7Yq4IOuCtOyXkOyEnCDsi6TtlokpXG4gICAgICByZXR1cm4gc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDtjIzsnbwg7JeF66Gc65OcIEFQSeulvCDsg53shLHtlbTspI3ri4jri6QuIChAYXBpIOuNsOy9lOugiOydtO2EsCDsl4bsnbQg64+F66a97KCB7Jy866GcIOyCrOyaqSlcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkKG9wdGlvbnM6IFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7IGNvbnN1bWU6IFwiYnVmZmVyXCIgfSkge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUubWF0Y2goLyguKylDbGFzcyQvKT8uWzFdO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHVwbG9hZCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgLy8g66mU7ISc65Oc7JeQIOqxuOumsCDrjbDsvZTroIjsnbTthLAg7KSR67O1IOyytO2BrFxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5VUExPQUQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWUsIHRydWUpfWA7XG5cbiAgICAvLyByZWdpc3RlcmVkQXBpc+yXkOyEnCDtlbTri7kgQVBJIOywvuyVhOyEnCB1cGxvYWRPcHRpb25zIOy2lOqwgFxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuXG4gICAgaWYgKGV4aXN0aW5nQXBpKSB7XG4gICAgICAvLyDsnqzrk7HroZ0g7IucIOyXheuhnOuTnCDsmLXshZjrp4wg6rCx7IugXG4gICAgICBleGlzdGluZ0FwaS51cGxvYWRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g7IOI66GcIOuTseuhnVxuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogZGVmYXVsdFBhdGgsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBodHRwTWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBjbGllbnRzOiBbXCJheGlvcy1tdWx0aXBhcnRcIiwgXCJ0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnRcIl0sXG4gICAgICAgICAgZ3VhcmRzOiBvcHRpb25zLmd1YXJkcyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgdXBsb2FkT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ1cGxvYWQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZUZyYW1lQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuZnJhbWVOYW1lLCBcImZyYW1lXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDquLDsobTsnZggcGF0aOyZgCDsg4jroZzsmrQgcGF0aOqwgCDri6TrpbTri6TrqbQoPeqwkuydtCDsnojrjZgg7Iqk7Yq466eB7J20IOuLpOuluCDqsJLsnbQg7J6I64qUIOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdQYXRoIOq4sOyhtOydmCBwYXRoXG4gKiBAcGFyYW0gbmV3UGF0aCDsg4jroZzsmrQgcGF0aFxuICovXG5mdW5jdGlvbiBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ1BhdGg6IHN0cmluZyxcbiAgbmV3UGF0aDogc3RyaW5nLFxuKSB7XG4gIGlmIChleGlzdGluZ1BhdGggIT09IFwiXCIgJiYgbmV3UGF0aCAhPT0gXCJcIiAmJiBleGlzdGluZ1BhdGggIT09IG5ld1BhdGgpIHtcbiAgICAvLyDsnbTqsoPsnbQg66y07IqoIOyDge2ZqeydtOuDkOuptOyalCwgYXBpLnBhdGjqsIAg642u7Ja07JSM7JuM7KeA64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAvLyDqsIDroLkgQGFwaSh7IHBhdGg6IFwiL2FwaS92MS91c2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgLy8gQHN0cmVhbSh7IHBhdGg6IFwiL2FwaS92MS91c2Vycy9zdHJlYW1cIiB9KSDqsJnsnYAg6rKD7J20IOu2meyWtCDsnojripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIHBhdGgg7ZWE65Oc66W8IOqxtOuTnOumrOqyjCDrkJjrr4DroZwsIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3RpbmcgcGF0aDogJHtuZXdQYXRofS4gVGhlIGRlY29yYXRvciBpcyB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHBhdGgoJHtleGlzdGluZ1BhdGh9KSB3aXRoIHRoZSBuZXcgcGF0aCgke25ld1BhdGh9KS5gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAqIEBwYXJhbSBkZWNvcmF0b3JOYW1lIOuNsOy9lOugiOydtO2EsCDsnbTrpoRcbiAqIEBwYXJhbSBtb2RlbE5hbWUg66qo6424IOydtOumhFxuICogQHBhcmFtIG1ldGhvZE5hbWUg66mU7ISc65OcIOydtOumhFxuICogQHBhcmFtIGV4aXN0aW5nT3B0aW9ucyDquLDsobTsnZgg7Ji17IWYXG4gKiBAcGFyYW0gbmV3T3B0aW9ucyDsg4jroZzsmrQg7Ji17IWYXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIDzslYQg7Im96rKM7Im96rKMIOyigCDqsJHsi5zri6Q+XG4gIGV4aXN0aW5nT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gPOydtOuftCDrlYwg7JWE64uI66m0IGFueSDslrjsoJwg7JSB64uI6rmMPlxuICBuZXdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIE9iamVjdC5rZXlzKG5ld09wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChleGlzdGluZ09wdGlvbnNba2V5XSAmJiAhaXNFcXVhbChleGlzdGluZ09wdGlvbnNba2V5XSwgbmV3T3B0aW9uc1trZXldKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdPcHRpb25zW2tleV0pfSkgd2l0aCB0aGUgbmV3IG9wdGlvbigke0pTT04uc3RyaW5naWZ5KG5ld09wdGlvbnNba2V5XSl9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBaUlBLFNBQVMscUJBQXFCLFFBQXlCLGFBQXFCLGVBQXVCO0NBQ2pHLE1BQU0sU0FBUyxPQUFPO0FBQ3RCLEtBQUksUUFBUSxtQkFBbUIsUUFBUSxvQkFBb0IsZUFBZTtBQUN4RSxRQUFNLElBQUksTUFDUixJQUFJLGNBQWMsZUFBZSxPQUFPLGNBQWMsQ0FBQyxzQ0FBc0MsT0FBTyxZQUFZLEtBQUssR0FBRyxZQUFZLCtGQUNySTtRQUNJO0FBQ0wsU0FBTyxrQkFBa0I7OztBQUk3QixTQUFnQixJQUFJLFVBQStCLEVBQUUsRUFBRTtBQUNyRCxXQUFVO0VBQ1IsWUFBWTtFQUNaLGFBQWE7RUFDYixTQUFTLENBQUMsUUFBUTtFQUNsQixHQUFHO0VBQ0o7QUFFRCxTQUFRLFFBQXlCLGFBQXFCLGVBQW1DO0VBQ3ZGLE1BQU0sWUFBWSxPQUFPLFlBQVksS0FBSyxNQUFNLGFBQWEsR0FBRztBQUNoRSxTQUNFLFdBQ0EsOENBQThDLE9BQU8sWUFBWSxLQUFLLEdBQUcsY0FDMUU7RUFDRCxNQUFNLGFBQWE7QUFHbkIsdUJBQXFCLFFBQVEsYUFBYSxnQkFBZ0IsSUFBSTtFQUU5RCxNQUFNLGNBQWMsSUFBSSxXQUFXLFNBQ2pDLFVBQVUsUUFBUSxVQUFVLEdBQUcsQ0FBQyxRQUFRLFVBQVUsR0FBRyxFQUNyRCxLQUNELENBQUMsR0FBRyxXQUFXLFNBQVMsYUFBYSxLQUFLO0VBQzNDLE1BQU0sT0FBTyxRQUFRLFFBQVE7RUFHN0IsTUFBTSxjQUFjLGVBQWUsTUFDaEMsVUFBUUEsTUFBSSxjQUFjLGFBQWFBLE1BQUksZUFBZSxXQUM1RDtBQUNELE1BQUksYUFBYTtBQUVmLDJCQUF3QixPQUFPLFdBQVcsWUFBWSxZQUFZLE1BQU0sS0FBSztBQUM3RSxlQUFZLE9BQU87QUFHbkIsOEJBQTJCLE9BQU8sV0FBVyxZQUFZLFlBQVksU0FBUyxRQUFRO0FBQ3RGLGVB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
|
|
@@ -39,7 +39,7 @@ function getChecksumPatternGroup() {
|
|
|
39
39
|
workflow: api("src/application/**/*.workflow.ts"),
|
|
40
40
|
i18n: api("src/i18n/**/!(sd.generated).ts"),
|
|
41
41
|
generated: api("src/application/**/*.generated.{ts,tsx,sso.ts}"),
|
|
42
|
-
generatedCopied: targets("src/services/**/{sonamu,queries}.generated.{ts,tsx
|
|
42
|
+
generatedCopied: targets("src/services/**/{sonamu,queries}.generated.{ts,tsx}"),
|
|
43
43
|
httpGenerated: api("src/application/**/*.generated.http"),
|
|
44
44
|
servicesGenerated: targets("src/services/services.generated.ts"),
|
|
45
45
|
sdGenerated: anywhere("src/i18n/**/sd.generated.ts"),
|
|
@@ -87,4 +87,4 @@ var init_file_patterns = __esmMin((() => {
|
|
|
87
87
|
//#endregion
|
|
88
88
|
init_file_patterns();
|
|
89
89
|
export { GLOB_EXCLUDE, getChecksumPatternGroup, getChecksumPatternGroupInAbsolutePath, init_file_patterns };
|
|
90
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwcFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiDqsr3roZwg7ZiV7IudOiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICh0YXJnZXQg65SU66CJ7Yag66as66GcIOyLnOyekSwg7JiIOiBcImFwaS9zcmMvLi4uXCIsIFwid2ViL3NyYy8uLi5cIilcbiAqIOyCrOyaqTogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICpcbiAqIOuRkCDqsIDsp4Ag7J2Y66+47KCBIOyYgeyXrTpcbiAqIC0g7J6F66ClICjsgqzsmqnsnpAg7J6R7ISxKTogYXBpIOuUlOugie2GoOumrOyXkOunjCDsnITsuZguIOyCrOyaqeyekOqwgCDsp4HsoJEg7Y647KeRLlxuICogLSDstpzroKUgKHNvbmFtdSDsg53shLEv67O17IKsKTogYXBpIOuYkOuKlCB0YXJnZXQg65SU66CJ7Yag66as7JeQIHNvbmFtdeqwgCDrp4zrk6TslrTrgrTripQg7YyM7J28LlxuICpcbiAqIOy2lOyggSDrsJYg7J6Q7IKwICjrtoDtirjsiqTtirjrnqkgcGhhc2Xsl5DshJwg66ek67KIIOuztOyepSk6XG4gKiAtIHNvbmFtdS5zaGFyZWQudHM6IOyCrOyaqeyekOqwgCDsu6TsiqTthLDrp4jsnbTspojtlZjripQg7J6Q7IKwLiBJZk5vdEV4aXN0c+uhnCAx7ZqMIOyDneyEsSDtm4Qg7IaQ64yA7KeAIOyViuydjC5cbiAqIC0gZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3g6IOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5wuIOunpOuyiCBvdmVyd3JpdGUgZ2VuZXJhdGUuXG4gKlxuICog7JyEIOuRmOydgCBzeW5jKCnsnZgg67aA7Yq47Iqk7Yq4656pIHBoYXNl7JeQ7IScIOuzgOqyvSDqsoDstpwg7IKs7J207YG06rO8IOustOq0gO2VmOqyjCDrs7TsnqXrkKnri4jri6QuXG4gKiDstpTsoIEg7IKs7J207YG0IOyViOyXkOyEnCDtlaAg7JWh7IWY7J20IOyXhuuKlCDsnpDsgrDsnbTrnbwg7Yyo7YS0IOq3uOujueyXkCDtj6ztlajrkJjsp4Ag7JWK7Iq164uI64ukLlxuICpcbiAqIOychOy5mCDsubTthYzqs6DrpqzripQgYXBpL3RhcmdldHMvYW55d2hlcmUg7Zes7Y2866GcIOuqheyLnOyggeycvOuhnCDtkZztmITtlanri4jri6QuXG4gKlxuICogRmlsZVR5cGXsnYAg7J20IO2VqOyImOydmCDrsJjtmZgg7YOA7J6F7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuIO2CpCDstpTqsIAg7IucIOuzhOuPhCBlbnVtL+uwsOyXtOydhFxuICog64+Z6riw7ZmU7ZWgIO2VhOyalCDsl4bsnbQg7Jes6riwIO2VnCDqtbDrjbDrp4wg7IiY7KCV7ZWY66m0IOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCkge1xuICAvLyDtl6ztjbwg7ZWo7IiY65OkIOunjOuTpOyWtOyEnCDqsIDsoLjsmLXri4jri6QuXG4gIGNvbnN0IHsgYXBpLCB0YXJnZXRzLCBhbnl3aGVyZSB9ID0gZ2xvYkJ1aWxkZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTb25hbXUg7J6F7J6l7JeQ7IScIHNvcnVjZeqwgCDrkJjripQg7YyM7J2865Ok7J6F64uI64ukLlxuICAgIC8vIOydtCDsuZzqtazrk6TsnbQg67OA6rK965CY66m0IOydtOuTpOuhnOu2gO2EsCDslaHshZjsnYQg7IiY7ZaJ7ZWY6rOgIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gICAgLy8g66qo64W466as7Y+s7JeQ7IScIOydtCBzb3VyY2Xrk6TsnYAgYXBpIO2UhOuhnOygne2KuOyXkCDtlZzsoJXrkJjrr4DroZwsIGFwaeyXkCDsnojripQg7Lmc6rWs65Ok66eMIOumrOyKpO2Mhe2VqeuLiOuLpC5cbiAgICBjb25maWc6IGFwaShcInNyYy9zb25hbXUuY29uZmlnLnRzXCIpLFxuICAgIGVudGl0eTogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIiksXG4gICAgZnJhbWU6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmZyYW1lLnRzXCIpLFxuICAgIGZ1bmN0aW9uczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIpLFxuICAgIG1vZGVsOiBhcGkoXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiKSxcbiAgICB0eXBlczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIiksXG4gICAgd29ya2Zsb3c6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLndvcmtmbG93LnRzXCIpLFxuICAgIGkxOG46IGFwaShcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcblxuICAgIC8vIFNvbmFtdeqwgCDstpzroKXtlZjripQg7IOd7ISxIO2MjOydvOuTpOyeheuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok64+EIOygle2VqeyEsSDqsoDspp0g7LCo7JuQ7JeQ7IScIHNvbmFtdS5sb2Nr7JeQIOq4sOuhne2VtOyVvCDtlZjqs6AsXG4gICAgLy8g65iQ7ZWcIOuzgOqyveyLnCDqt7gg7IKs7Iuk7J2EIHN5bmNlcuqwgCDslYzquLDripQg7ZW07JW8IO2VqeuLiOuLpCjruYTroZ0g67OE64uk66W4IOyymOumrOqwgCDsl4bripQg6rK97Jqw64+EIOyeiOyngOunjCkuXG4gICAgLy9cbiAgICAvLyDsnpDsgrAg67O47ISx7JeQIOuUsOudvCDsnITsuZgg7Lm07YWM6rOg66as6rCAIOuLpOultOq4sCDrlYzrrLjsl5AsIOuzuOyEseuzhOuhnCDrtoTrpqztlbTshJwg7ZGc6riw7ZWp64uI64ukLlxuICAgIC8vIC0g7JaR7Kq9Le2VhOyalCDsnpDsgrA6IGFwaeyXkCDsoJXrs7jsnbQg66eM65Ok7Ja07KeEIOuSpCB0YXJnZXTsl5Ag67O17IKs65CoIChzb25hbXUuZ2VuZXJhdGVkLiosIHF1ZXJpZXMuZ2VuZXJhdGVkLnRzKS5cbiAgICAvLyAtIGFwaSDsoITsmqkg7J6Q7IKwOiBhcGnsl5Drp4wg66eM65Ok7Ja07KeQIChzb25hbXUuZ2VuZXJhdGVkLmh0dHApLlxuICAgIC8vIC0gdGFyZ2V0IOyghOyaqSDsnpDsgrA6IHRhcmdldOyXkOunjCDrp4zrk6TslrTsp5AgKHNlcnZpY2VzLmdlbmVyYXRlZC50c+uKlCBzZXJ2aWNlcy50ZW1wbGF0ZeydmCA6dGFyZ2V0IOu2hOuwsCkuXG4gICAgLy9cbiAgICAvLyDsl6zquLDsl5DripQgU29uYW117J2YIOuqqOuToCBzeW5jIOyCsOy2nOusvOydtCDsnojripQg6rKD7J2AIOyVhOuLmeuLiOuLpC5cbiAgICAvLyBzb25hbXUuc2hhcmVkLnRz7JmAIGVudHJ5LXNlcnZlci5nZW5lcmF0ZWQudHN47JmAIOqwmeydgFxuICAgIC8vIHN5bmMg7LSI67CYIDHtmozshLEg67aA7Yq47Iqk7Yq4656pIO2MjOydvOuTpOydgCDqtIDrpqwg7JWIIO2VmOq4sCDrlYzrrLjsl5Ag7Jes6riw7JeQIOumrOyKpO2MheuPhCDslYgg7ZWp64uI64ukLlxuICAgIGdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLnt0cyx0c3gsc3NvLnRzfVwiKSxcbiAgICBnZW5lcmF0ZWRDb3BpZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvKiove3NvbmFtdSxxdWVyaWVzfS5nZW5lcmF0ZWQue3RzLHRzeCxzc28udHN9XCIpLFxuICAgIGh0dHBHZW5lcmF0ZWQ6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmdlbmVyYXRlZC5odHRwXCIpLFxuICAgIHNlcnZpY2VzR2VuZXJhdGVkOiB0YXJnZXRzKFwic3JjL3NlcnZpY2VzL3NlcnZpY2VzLmdlbmVyYXRlZC50c1wiKSxcbiAgICBzZEdlbmVyYXRlZDogYW55d2hlcmUoXCJzcmMvaTE4bi8qKi9zZC5nZW5lcmF0ZWQudHNcIiksXG4gICAgdHlwZXNDb3BpZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvKiovKi50eXBlcy50c1wiKSxcbiAgICBmdW5jdGlvbnNDb3BpZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvKiovKi5mdW5jdGlvbnMudHNcIiksXG4gICAgaTE4bkNvcGllZDogdGFyZ2V0cyhcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcbiAgfSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgQXBwUmVsYXRpdmVQYXRoPjtcbn1cblxuLyoqXG4gKiDsnITsuZgg7Lm07YWM6rOg66as67OEIOq4gOuhrSDruYzrjZTrpbwg66eM65Ok7Ja0IOuwmO2ZmO2VqeuLiOuLpC5cbiAqIC0gYXBpKHJlc3QpOiBhcGkg65SU66CJ7Yag66as7JeQIO2VnOyglVxuICogLSB0YXJnZXRzKHJlc3QpOiB0YXJnZXQg65SU66CJ7Yag66as65Ok7JeQIO2VnOyglSAod2ViLCBhcHAg65OxKVxuICogLSBhbnl3aGVyZShyZXN0KTogYXBp7JmAIHRhcmdldCDrqqjrkZBcbiAqL1xuZnVuY3Rpb24gZ2xvYkJ1aWxkZXJzKCkge1xuICBjb25zdCBhcGlEaXIgPSBTb25hbXUuY29uZmlnLmFwaS5kaXI7XG4gIGNvbnN0IHRhcmdldERpcnMgPSBTb25hbXUuY29uZmlnLnN5bmMudGFyZ2V0cztcblxuICAvLyBOb2RlIOuCtOyepSBmcy5nbG9i7J2YIGJyYWNlIGV4cGFuc2lvbuydgCDri6jsnbwg66mk67KEIHt4feulvCDtkoDsp4Ag7JWK7Jy866+A66GcLCDrqaTrsoTqsIAgMeqwnOydvCDrlYzripQgYWx0ZXJuYXRpb24g7JeG7J20IOyngeygkSDqsrDtlantlanri4jri6QuXG4gIGNvbnN0IGJyYWNlSm9pbiA9IChkaXJzOiByZWFkb25seSBzdHJpbmdbXSkgPT5cbiAgICBkaXJzLmxlbmd0aCA9PT0gMSA/IGRpcnNbMF0gOiBgeyR7ZGlycy5qb2luKFwiLFwiKX19YDtcblxuICByZXR1cm4ge1xuICAgIGFwaTogKHBhdGhGcm9tQXBpOiBzdHJpbmcpID0+IGAke2FwaURpcn0vJHtwYXRoRnJvbUFwaX1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgICB0YXJnZXRzOiAocGF0aEZyb21UYXJnZXQ6IHN0cmluZykgPT5cbiAgICAgIGAke2JyYWNlSm9pbih0YXJnZXREaXJzKX0vJHtwYXRoRnJvbVRhcmdldH1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgICBhbnl3aGVyZTogKHBhdGhGcm9tQW55d2hlcmU6IHN0cmluZykgPT5cbiAgICAgIGAke2JyYWNlSm9pbihbYXBpRGlyLCAuLi50YXJnZXREaXJzXSl9LyR7cGF0aEZyb21Bbnl3aGVyZX1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgfTtcbn1cblxuLyoqXG4gKiBGaWxlVHlwZeydgCBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cOydmCDrsJjtmZgg6rCd7LK0IO2CpOyXkOyEnCDsnpDrj5kg7LaU66Gg65Cp64uI64ukLlxuICog67OE64+EIOuwsOyXtC9lbnVtIOuPmeq4sO2ZlCDrtojtlYTsmpQg4oCUIO2MqO2EtCDqt7jro7kg7ZWo7IiY6rCAIOynhOyLpOydmCDri6jsnbwg7JuQ7LKcLlxuICovXG5leHBvcnQgdHlwZSBGaWxlVHlwZSA9IGtleW9mIFJldHVyblR5cGU8dHlwZW9mIGdldENoZWNrc3VtUGF0dGVybkdyb3VwPjtcbmV4cG9ydCB0eXBlIEdsb2JQYXR0ZXJuPFQgZXh0ZW5kcyBBcHBSZWxhdGl2ZVBhdGggfCBBYnNvbHV0ZVBhdGg+ID0gUmVjb3JkPEZpbGVUeXBlLCBUPjtcblxuLyoqXG4gKiDruYzrk5wg7IKw7Lac66y8IOuUlOugie2GoOumrOuKlCBhbHRlcm5hdGlvbiDquIDroa3snbQg7J2Y64+E7LmYIOyViuqyjCDtnJjrp5DrprQg7IiYIOyeiOycvOuvgOuhnCDslYjsoITrp53snLzroZwg7KCc7Jm4LlxuICogTm9kZSDrgrTsnqUgZnMuZ2xvYuydmCBleGNsdWRlIOyYteyFmOqzvCDtlajqu5gg7IKs7Jqp7ZWp64uI64ukLlxuICovXG5leHBvcnQgY29uc3QgR0xPQl9FWENMVURFID0gW1wiKiovbm9kZV9tb2R1bGVzLyoqXCIsIFwiKiovZGlzdC8qKlwiLCBcIioqL2J1aWxkLyoqXCIsIFwiKiovLnR1cmJvLyoqXCJdO1xuXG4vKipcbiAqIGFwcFJvb3Qg6riw7KSAIOyDgeuMgCDqsr3roZwg7Yyo7YS07J2EIOygiOuMgCDqsr3roZwg7Yyo7YS07Jy866GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAcmV0dXJucyDsoIjrjIAg6rK966GcIOq4sOuwmCBHbG9iIO2MqO2EtCDrp7VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTogR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPiB7XG4gIGNvbnN0IGdyb3VwID0gZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXAoKTtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhncm91cCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtcbiAgICAgIGtleSxcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHZhbHVlKSwgLy8gYXBwUm9vdCDsg4HrjIAg6rK966GcIOKGkiDsoIjrjIAg6rK966GcXG4gICAgXSksXG4gICkgYXMgR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2QkEsU0FBZ0IsMEJBQTBCO0NBRXhDLE1BQU0sRUFBRSxLQUFLLFNBQVMsYUFBYSxjQUFjO0FBRWpELFFBQU87RUFJTCxRQUFRLElBQUksdUJBQXVCO0VBQ25DLFFBQVEsSUFBSSxtQ0FBbUM7RUFDL0MsT0FBTyxJQUFJLGdDQUFnQztFQUMzQyxXQUFXLElBQUksb0NBQW9DO0VBQ25ELE9BQU8sSUFBSSxnQ0FBZ0M7RUFDM0MsT0FBTyxJQUFJLGdDQUFnQztFQUMzQyxVQUFVLElBQUksbUNBQW1DO0VBQ2pELE1BQU0sSUFBSSxpQ0FBaUM7RUFjM0MsV0FBVyxJQUFJLGlEQUFpRDtFQUNoRSxpQkFBaUIsUUFBUSw2REFBNkQ7RUFDdEYsZUFBZSxJQUFJLHNDQUFzQztFQUN6RCxtQkFBbUIsUUFBUSxxQ0FBcUM7RUFDaEUsYUFBYSxTQUFTLDhCQUE4QjtFQUNwRCxhQUFhLFFBQVEsNkJBQTZCO0VBQ2xELGlCQUFpQixRQUFRLGlDQUFpQztFQUMxRCxZQUFZLFFBQVEsaUNBQWlDO0VBQ3REOzs7Ozs7OztBQVNILFNBQVMsZUFBZTtDQUN0QixNQUFNLFNBQVMsT0FBTyxPQUFPLElBQUk7Q0FDakMsTUFBTSxhQUFhLE9BQU8sT0FBTyxLQUFLO0NBR3RDLE1BQU0sYUFBYSxTQUNqQixLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO0FBRW5ELFFBQU87RUFDTCxNQUFNLGdCQUF3QixHQUFHLE9BQU8sR0FBRztFQUMzQyxVQUFVLG1CQUNSLEdBQUcsVUFBVSxXQUFXLENBQUMsR0FBRztFQUM5QixXQUFXLHFCQUNULEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxHQUFHO0VBQzVDOzs7Ozs7O0FBcUJILFNBQWdCLHdDQUFtRTtDQUNqRixNQUFNLFFBQVEseUJBQXlCO0FBQ3ZDLFFBQU8sT0FBTyxZQUNaLE9BQU8sUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssV0FBVyxDQUMxQyxLQUNBLEtBQUssS0FBSyxPQUFPLGFBQWEsTUFBTSxDQUNyQyxDQUFDLENBQ0g7Ozs7Y0FuSG9DO0NBcUcxQixlQUFlO0VBQUM7RUFBc0I7RUFBYztFQUFlO0VBQWUifQ==
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwcFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiDqsr3roZwg7ZiV7IudOiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICh0YXJnZXQg65SU66CJ7Yag66as66GcIOyLnOyekSwg7JiIOiBcImFwaS9zcmMvLi4uXCIsIFwid2ViL3NyYy8uLi5cIilcbiAqIOyCrOyaqTogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICpcbiAqIOuRkCDqsIDsp4Ag7J2Y66+47KCBIOyYgeyXrTpcbiAqIC0g7J6F66ClICjsgqzsmqnsnpAg7J6R7ISxKTogYXBpIOuUlOugie2GoOumrOyXkOunjCDsnITsuZguIOyCrOyaqeyekOqwgCDsp4HsoJEg7Y647KeRLlxuICogLSDstpzroKUgKHNvbmFtdSDsg53shLEv67O17IKsKTogYXBpIOuYkOuKlCB0YXJnZXQg65SU66CJ7Yag66as7JeQIHNvbmFtdeqwgCDrp4zrk6TslrTrgrTripQg7YyM7J28LlxuICpcbiAqIOy2lOyggSDrsJYg7J6Q7IKwICjrtoDtirjsiqTtirjrnqkgcGhhc2Xsl5DshJwg66ek67KIIOuztOyepSk6XG4gKiAtIHNvbmFtdS5zaGFyZWQudHM6IOyCrOyaqeyekOqwgCDsu6TsiqTthLDrp4jsnbTspojtlZjripQg7J6Q7IKwLiBJZk5vdEV4aXN0c+uhnCAx7ZqMIOyDneyEsSDtm4Qg7IaQ64yA7KeAIOyViuydjC5cbiAqIC0gZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3g6IOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5wuIOunpOuyiCBvdmVyd3JpdGUgZ2VuZXJhdGUuXG4gKlxuICog7JyEIOuRmOydgCBzeW5jKCnsnZgg67aA7Yq47Iqk7Yq4656pIHBoYXNl7JeQ7IScIOuzgOqyvSDqsoDstpwg7IKs7J207YG06rO8IOustOq0gO2VmOqyjCDrs7TsnqXrkKnri4jri6QuXG4gKiDstpTsoIEg7IKs7J207YG0IOyViOyXkOyEnCDtlaAg7JWh7IWY7J20IOyXhuuKlCDsnpDsgrDsnbTrnbwg7Yyo7YS0IOq3uOujueyXkCDtj6ztlajrkJjsp4Ag7JWK7Iq164uI64ukLlxuICpcbiAqIOychOy5mCDsubTthYzqs6DrpqzripQgYXBpL3RhcmdldHMvYW55d2hlcmUg7Zes7Y2866GcIOuqheyLnOyggeycvOuhnCDtkZztmITtlanri4jri6QuXG4gKlxuICogRmlsZVR5cGXsnYAg7J20IO2VqOyImOydmCDrsJjtmZgg7YOA7J6F7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuIO2CpCDstpTqsIAg7IucIOuzhOuPhCBlbnVtL+uwsOyXtOydhFxuICog64+Z6riw7ZmU7ZWgIO2VhOyalCDsl4bsnbQg7Jes6riwIO2VnCDqtbDrjbDrp4wg7IiY7KCV7ZWY66m0IOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCkge1xuICAvLyDtl6ztjbwg7ZWo7IiY65OkIOunjOuTpOyWtOyEnCDqsIDsoLjsmLXri4jri6QuXG4gIGNvbnN0IHsgYXBpLCB0YXJnZXRzLCBhbnl3aGVyZSB9ID0gZ2xvYkJ1aWxkZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTb25hbXUg7J6F7J6l7JeQ7IScIHNvcnVjZeqwgCDrkJjripQg7YyM7J2865Ok7J6F64uI64ukLlxuICAgIC8vIOydtCDsuZzqtazrk6TsnbQg67OA6rK965CY66m0IOydtOuTpOuhnOu2gO2EsCDslaHshZjsnYQg7IiY7ZaJ7ZWY6rOgIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gICAgLy8g66qo64W466as7Y+s7JeQ7IScIOydtCBzb3VyY2Xrk6TsnYAgYXBpIO2UhOuhnOygne2KuOyXkCDtlZzsoJXrkJjrr4DroZwsIGFwaeyXkCDsnojripQg7Lmc6rWs65Ok66eMIOumrOyKpO2Mhe2VqeuLiOuLpC5cbiAgICBjb25maWc6IGFwaShcInNyYy9zb25hbXUuY29uZmlnLnRzXCIpLFxuICAgIGVudGl0eTogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIiksXG4gICAgZnJhbWU6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmZyYW1lLnRzXCIpLFxuICAgIGZ1bmN0aW9uczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIpLFxuICAgIG1vZGVsOiBhcGkoXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiKSxcbiAgICB0eXBlczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIiksXG4gICAgd29ya2Zsb3c6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLndvcmtmbG93LnRzXCIpLFxuICAgIGkxOG46IGFwaShcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcblxuICAgIC8vIFNvbmFtdeqwgCDstpzroKXtlZjripQg7IOd7ISxIO2MjOydvOuTpOyeheuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok64+EIOygle2VqeyEsSDqsoDspp0g7LCo7JuQ7JeQ7IScIHNvbmFtdS5sb2Nr7JeQIOq4sOuhne2VtOyVvCDtlZjqs6AsXG4gICAgLy8g65iQ7ZWcIOuzgOqyveyLnCDqt7gg7IKs7Iuk7J2EIHN5bmNlcuqwgCDslYzquLDripQg7ZW07JW8IO2VqeuLiOuLpCjruYTroZ0g67OE64uk66W4IOyymOumrOqwgCDsl4bripQg6rK97Jqw64+EIOyeiOyngOunjCkuXG4gICAgLy9cbiAgICAvLyDsnpDsgrAg67O47ISx7JeQIOuUsOudvCDsnITsuZgg7Lm07YWM6rOg66as6rCAIOuLpOultOq4sCDrlYzrrLjsl5AsIOuzuOyEseuzhOuhnCDrtoTrpqztlbTshJwg7ZGc6riw7ZWp64uI64ukLlxuICAgIC8vIC0g7JaR7Kq9Le2VhOyalCDsnpDsgrA6IGFwaeyXkCDsoJXrs7jsnbQg66eM65Ok7Ja07KeEIOuSpCB0YXJnZXTsl5Ag67O17IKs65CoIChzb25hbXUuZ2VuZXJhdGVkLiosIHF1ZXJpZXMuZ2VuZXJhdGVkLnRzKS5cbiAgICAvLyAtIGFwaSDsoITsmqkg7J6Q7IKwOiBhcGnsl5Drp4wg66eM65Ok7Ja07KeQIChzb25hbXUuZ2VuZXJhdGVkLmh0dHApLlxuICAgIC8vIC0gdGFyZ2V0IOyghOyaqSDsnpDsgrA6IHRhcmdldOyXkOunjCDrp4zrk6TslrTsp5AgKHNlcnZpY2VzLmdlbmVyYXRlZC50c+uKlCBzZXJ2aWNlcy50ZW1wbGF0ZeydmCA6dGFyZ2V0IOu2hOuwsCkuXG4gICAgLy9cbiAgICAvLyDsl6zquLDsl5DripQgU29uYW117J2YIOuqqOuToCBzeW5jIOyCsOy2nOusvOydtCDsnojripQg6rKD7J2AIOyVhOuLmeuLiOuLpC5cbiAgICAvLyBzb25hbXUuc2hhcmVkLnRz7JmAIGVudHJ5LXNlcnZlci5nZW5lcmF0ZWQudHN47JmAIOqwmeydgFxuICAgIC8vIHN5bmMg7LSI67CYIDHtmozshLEg67aA7Yq47Iqk7Yq4656pIO2MjOydvOuTpOydgCDqtIDrpqwg7JWIIO2VmOq4sCDrlYzrrLjsl5Ag7Jes6riw7JeQIOumrOyKpO2MheuPhCDslYgg7ZWp64uI64ukLlxuICAgIGdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLnt0cyx0c3gsc3NvLnRzfVwiKSxcbiAgICBnZW5lcmF0ZWRDb3BpZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvKiove3NvbmFtdSxxdWVyaWVzfS5nZW5lcmF0ZWQue3RzLHRzeH1cIiksXG4gICAgaHR0cEdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLmh0dHBcIiksXG4gICAgc2VydmljZXNHZW5lcmF0ZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvc2VydmljZXMuZ2VuZXJhdGVkLnRzXCIpLFxuICAgIHNkR2VuZXJhdGVkOiBhbnl3aGVyZShcInNyYy9pMThuLyoqL3NkLmdlbmVyYXRlZC50c1wiKSxcbiAgICB0eXBlc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLnR5cGVzLnRzXCIpLFxuICAgIGZ1bmN0aW9uc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLmZ1bmN0aW9ucy50c1wiKSxcbiAgICBpMThuQ29waWVkOiB0YXJnZXRzKFwic3JjL2kxOG4vKiovIShzZC5nZW5lcmF0ZWQpLnRzXCIpLFxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBBcHBSZWxhdGl2ZVBhdGg+O1xufVxuXG4vKipcbiAqIOychOy5mCDsubTthYzqs6Drpqzrs4Qg6riA66GtIOu5jOuNlOulvCDrp4zrk6TslrQg67CY7ZmY7ZWp64uI64ukLlxuICogLSBhcGkocmVzdCk6IGFwaSDrlJTroInthqDrpqzsl5Ag7ZWc7KCVXG4gKiAtIHRhcmdldHMocmVzdCk6IHRhcmdldCDrlJTroInthqDrpqzrk6Tsl5Ag7ZWc7KCVICh3ZWIsIGFwcCDrk7EpXG4gKiAtIGFueXdoZXJlKHJlc3QpOiBhcGnsmYAgdGFyZ2V0IOuqqOuRkFxuICovXG5mdW5jdGlvbiBnbG9iQnVpbGRlcnMoKSB7XG4gIGNvbnN0IGFwaURpciA9IFNvbmFtdS5jb25maWcuYXBpLmRpcjtcbiAgY29uc3QgdGFyZ2V0RGlycyA9IFNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzO1xuXG4gIC8vIE5vZGUg64K07J6lIGZzLmdsb2LsnZggYnJhY2UgZXhwYW5zaW9u7J2AIOuLqOydvCDrqaTrsoQge3h966W8IO2SgOyngCDslYrsnLzrr4DroZwsIOuppOuyhOqwgCAx6rCc7J28IOuVjOuKlCBhbHRlcm5hdGlvbiDsl4bsnbQg7KeB7KCRIOqysO2Vqe2VqeuLiOuLpC5cbiAgY29uc3QgYnJhY2VKb2luID0gKGRpcnM6IHJlYWRvbmx5IHN0cmluZ1tdKSA9PlxuICAgIGRpcnMubGVuZ3RoID09PSAxID8gZGlyc1swXSA6IGB7JHtkaXJzLmpvaW4oXCIsXCIpfX1gO1xuXG4gIHJldHVybiB7XG4gICAgYXBpOiAocGF0aEZyb21BcGk6IHN0cmluZykgPT4gYCR7YXBpRGlyfS8ke3BhdGhGcm9tQXBpfWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICAgIHRhcmdldHM6IChwYXRoRnJvbVRhcmdldDogc3RyaW5nKSA9PlxuICAgICAgYCR7YnJhY2VKb2luKHRhcmdldERpcnMpfS8ke3BhdGhGcm9tVGFyZ2V0fWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICAgIGFueXdoZXJlOiAocGF0aEZyb21Bbnl3aGVyZTogc3RyaW5nKSA9PlxuICAgICAgYCR7YnJhY2VKb2luKFthcGlEaXIsIC4uLnRhcmdldERpcnNdKX0vJHtwYXRoRnJvbUFueXdoZXJlfWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICB9O1xufVxuXG4vKipcbiAqIEZpbGVUeXBl7J2AIGdldENoZWNrc3VtUGF0dGVybkdyb3Vw7J2YIOuwmO2ZmCDqsJ3ssrQg7YKk7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuXG4gKiDrs4Trj4Qg67Cw7Je0L2VudW0g64+Z6riw7ZmUIOu2iO2VhOyalCDigJQg7Yyo7YS0IOq3uOujuSDtlajsiJjqsIAg7KeE7Iuk7J2YIOuLqOydvCDsm5DsspwuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbGVUeXBlID0ga2V5b2YgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXA+O1xuZXhwb3J0IHR5cGUgR2xvYlBhdHRlcm48VCBleHRlbmRzIEFwcFJlbGF0aXZlUGF0aCB8IEFic29sdXRlUGF0aD4gPSBSZWNvcmQ8RmlsZVR5cGUsIFQ+O1xuXG4vKipcbiAqIOu5jOuTnCDsgrDstpzrrLwg65SU66CJ7Yag66as64qUIGFsdGVybmF0aW9uIOq4gOuhreydtCDsnZjrj4TsuZgg7JWK6rKMIO2cmOunkOumtCDsiJgg7J6I7Jy866+A66GcIOyViOyghOunneycvOuhnCDsoJzsmbguXG4gKiBOb2RlIOuCtOyepSBmcy5nbG9i7J2YIGV4Y2x1ZGUg7Ji17IWY6rO8IO2VqOq7mCDsgqzsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBHTE9CX0VYQ0xVREUgPSBbXCIqKi9ub2RlX21vZHVsZXMvKipcIiwgXCIqKi9kaXN0LyoqXCIsIFwiKiovYnVpbGQvKipcIiwgXCIqKi8udHVyYm8vKipcIl07XG5cbi8qKlxuICogYXBwUm9vdCDquLDspIAg7IOB64yAIOqyveuhnCDtjKjthLTsnYQg7KCI64yAIOqyveuhnCDtjKjthLTsnLzroZwg67OA7ZmY7ZWp64uI64ukLlxuICpcbiAqIEByZXR1cm5zIOygiOuMgCDqsr3roZwg6riw67CYIEdsb2Ig7Yyo7YS0IOuntVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgpOiBHbG9iUGF0dGVybjxBYnNvbHV0ZVBhdGg+IHtcbiAgY29uc3QgZ3JvdXAgPSBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cCgpO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuICAgICAga2V5LFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdmFsdWUpLCAvLyBhcHBSb290IOyDgeuMgCDqsr3roZwg4oaSIOygiOuMgCDqsr3roZxcbiAgICBdKSxcbiAgKSBhcyBHbG9iUGF0dGVybjxBYnNvbHV0ZVBhdGg+O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZCQSxTQUFnQiwwQkFBMEI7Q0FFeEMsTUFBTSxFQUFFLEtBQUssU0FBUyxhQUFhLGNBQWM7QUFFakQsUUFBTztFQUlMLFFBQVEsSUFBSSx1QkFBdUI7RUFDbkMsUUFBUSxJQUFJLG1DQUFtQztFQUMvQyxPQUFPLElBQUksZ0NBQWdDO0VBQzNDLFdBQVcsSUFBSSxvQ0FBb0M7RUFDbkQsT0FBTyxJQUFJLGdDQUFnQztFQUMzQyxPQUFPLElBQUksZ0NBQWdDO0VBQzNDLFVBQVUsSUFBSSxtQ0FBbUM7RUFDakQsTUFBTSxJQUFJLGlDQUFpQztFQWMzQyxXQUFXLElBQUksaURBQWlEO0VBQ2hFLGlCQUFpQixRQUFRLHNEQUFzRDtFQUMvRSxlQUFlLElBQUksc0NBQXNDO0VBQ3pELG1CQUFtQixRQUFRLHFDQUFxQztFQUNoRSxhQUFhLFNBQVMsOEJBQThCO0VBQ3BELGFBQWEsUUFBUSw2QkFBNkI7RUFDbEQsaUJBQWlCLFFBQVEsaUNBQWlDO0VBQzFELFlBQVksUUFBUSxpQ0FBaUM7RUFDdEQ7Ozs7Ozs7O0FBU0gsU0FBUyxlQUFlO0NBQ3RCLE1BQU0sU0FBUyxPQUFPLE9BQU8sSUFBSTtDQUNqQyxNQUFNLGFBQWEsT0FBTyxPQUFPLEtBQUs7Q0FHdEMsTUFBTSxhQUFhLFNBQ2pCLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFFbkQsUUFBTztFQUNMLE1BQU0sZ0JBQXdCLEdBQUcsT0FBTyxHQUFHO0VBQzNDLFVBQVUsbUJBQ1IsR0FBRyxVQUFVLFdBQVcsQ0FBQyxHQUFHO0VBQzlCLFdBQVcscUJBQ1QsR0FBRyxVQUFVLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxDQUFDLEdBQUc7RUFDNUM7Ozs7Ozs7QUFxQkgsU0FBZ0Isd0NBQW1FO0NBQ2pGLE1BQU0sUUFBUSx5QkFBeUI7QUFDdkMsUUFBTyxPQUFPLFlBQ1osT0FBTyxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLENBQzFDLEtBQ0EsS0FBSyxLQUFLLE9BQU8sYUFBYSxNQUFNLENBQ3JDLENBQUMsQ0FDSDs7OztjQW5Ib0M7Q0FxRzFCLGVBQWU7RUFBQztFQUFzQjtFQUFjO0VBQWU7RUFBZSJ9
|
|
@@ -38,14 +38,20 @@ export declare function actionGenerateSsrQueries(): Promise<AbsolutePath[]>;
|
|
|
38
38
|
*/
|
|
39
39
|
export declare function actionGenerateSsrEntryServerIfNotExists(): Promise<AbsolutePath[]>;
|
|
40
40
|
/**
|
|
41
|
-
* 주어진 .ts 파일들(api에 있다고 가정)을
|
|
41
|
+
* 주어진 .ts 파일들(api에 있다고 가정)을 타겟 디렉토리의 services에 갖다 둡니다.
|
|
42
42
|
* 이때 내부의 sonamu import는 sonamu.shared.ts import로 치환되고,
|
|
43
43
|
* 경로의 /application/은 /services/로 치환됩니다.
|
|
44
44
|
*
|
|
45
|
+
* 기본은 Sonamu.config.sync.targets 전체를 대상으로 하며,
|
|
46
|
+
* onlyTargetsStartingWith 화이트리스트로 일부 target에만 분배할 수 있습니다.
|
|
47
|
+
* 가량 SSR-only인 queries.generated.ts같은 친구들은 "web"으로 시작하는 타겟들에만 보낼 수 있어요.
|
|
48
|
+
* ["web"]으로 넘기면 web, web-admin, webapp 등에 모두 매치됩니다.
|
|
49
|
+
*
|
|
45
50
|
* @param tsPaths 복사할 파일들의 절대 경로
|
|
51
|
+
* @param onlyTargetsStartingWith 분배할 target 접두어들의 화이트리스트. 미지정 시 모든 target.
|
|
46
52
|
* @returns 각 타겟에 복사된 파일들의 절대 경로 배열 (flat).
|
|
47
53
|
*/
|
|
48
|
-
export declare function actionSyncFilesToTargets(tsPaths: AbsolutePath[]): Promise<string[]>;
|
|
54
|
+
export declare function actionSyncFilesToTargets(tsPaths: AbsolutePath[], onlyTargetsStartingWith?: string[]): Promise<string[]>;
|
|
49
55
|
/**
|
|
50
56
|
* shared 템플릿으로부터 sonamu.shared.ts 파일을 만들어서 모든 타겟 디렉토리에 갖다 둡니다.
|
|
51
57
|
* 파일을 만드는 과정에서 여러 치환 가공이 일어납니다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncer-actions.d.ts","sourceRoot":"","sources":["../../src/syncer/syncer-actions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,wBAAsB,gBAAgB,kBAWrC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE;IACX,WAAW,EAAE,iBAAiB,CAAC;CAChC,EAAE,GACF,OAAO,CAAC,YAAY,EAAE,CAAC,CAazB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAE1F;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAOrE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAQjE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAExE;AAED;;;;;;GAMG;AACH,wBAAsB,uCAAuC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAWvF;AAED
|
|
1
|
+
{"version":3,"file":"syncer-actions.d.ts","sourceRoot":"","sources":["../../src/syncer/syncer-actions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,wBAAsB,gBAAgB,kBAWrC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE;IACX,WAAW,EAAE,iBAAiB,CAAC;CAChC,EAAE,GACF,OAAO,CAAC,YAAY,EAAE,CAAC,CAazB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAE1F;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAOrE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,YAAY,CAAC,CAQjE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAExE;AAED;;;;;;GAMG;AACH,wBAAsB,uCAAuC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAWvF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,YAAY,EAAE,EACvB,uBAAuB,CAAC,EAAE,MAAM,EAAE,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,IAAI,OAAO,CAAC,IAAI,CAAC,CA+D1E;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBhE"}
|
|
@@ -79,15 +79,22 @@ async function actionGenerateSsrEntryServerIfNotExists() {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
* 주어진 .ts 파일들(api에 있다고 가정)을
|
|
82
|
+
* 주어진 .ts 파일들(api에 있다고 가정)을 타겟 디렉토리의 services에 갖다 둡니다.
|
|
83
83
|
* 이때 내부의 sonamu import는 sonamu.shared.ts import로 치환되고,
|
|
84
84
|
* 경로의 /application/은 /services/로 치환됩니다.
|
|
85
85
|
*
|
|
86
|
+
* 기본은 Sonamu.config.sync.targets 전체를 대상으로 하며,
|
|
87
|
+
* onlyTargetsStartingWith 화이트리스트로 일부 target에만 분배할 수 있습니다.
|
|
88
|
+
* 가량 SSR-only인 queries.generated.ts같은 친구들은 "web"으로 시작하는 타겟들에만 보낼 수 있어요.
|
|
89
|
+
* ["web"]으로 넘기면 web, web-admin, webapp 등에 모두 매치됩니다.
|
|
90
|
+
*
|
|
86
91
|
* @param tsPaths 복사할 파일들의 절대 경로
|
|
92
|
+
* @param onlyTargetsStartingWith 분배할 target 접두어들의 화이트리스트. 미지정 시 모든 target.
|
|
87
93
|
* @returns 각 타겟에 복사된 파일들의 절대 경로 배열 (flat).
|
|
88
94
|
*/
|
|
89
|
-
async function actionSyncFilesToTargets(tsPaths) {
|
|
90
|
-
const
|
|
95
|
+
async function actionSyncFilesToTargets(tsPaths, onlyTargetsStartingWith) {
|
|
96
|
+
const allTargets = Sonamu.config.sync.targets;
|
|
97
|
+
const targets = onlyTargetsStartingWith ? allTargets.filter((t) => onlyTargetsStartingWith.some((prefix) => t.startsWith(prefix))) : allTargets;
|
|
91
98
|
const { dir: apiDir } = Sonamu.config.api;
|
|
92
99
|
return (await Promise.all(targets.map(async (target) => Promise.all(tsPaths.map(async (realSrc) => {
|
|
93
100
|
const dst = realSrc.replace(`/${apiDir}/`, `/${target}/`).replace("/application/", "/services/");
|
|
@@ -202,4 +209,4 @@ var init_syncer_actions = __esmMin((() => {
|
|
|
202
209
|
//#endregion
|
|
203
210
|
init_syncer_actions();
|
|
204
211
|
export { actionCopySharedToTargetsIfNotExists, actionGenerateHttps, actionGenerateInitialTypes, actionGenerateSchemas, actionGenerateServices, actionGenerateSsrEntryServerIfNotExists, actionGenerateSsrQueries, actionSyncConfig, actionSyncFilesToTargets, actionSyncSonamuDictionary, init_syncer_actions };
|
|
205
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2VyLWFjdGlvbnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9zeW5jZXItYWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCwgeyBkaXJuYW1lIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24gfSBmcm9tIFwiLi4vZXhjZXB0aW9ucy9zby1leGNlcHRpb25zXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgaXNUZXN0IH0gZnJvbSBcIi4uL3V0aWxzL2NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGZvcm1hdENvZGUgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBjb3B5RmlsZVdpdGhSZXBsYWNlQ29yZVRvU2hhcmVkLCBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbHMvZnMtdXRpbHNcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3BhdGgtdXRpbHNcIjtcbmltcG9ydCB7IGdlbmVyYXRlVGVtcGxhdGUgfSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgdHJhY2tXcml0dGVuIH0gZnJvbSBcIi4vZmlsZS10cmFja2luZ1wiO1xuXG4vLyB3ZWIvLnNvbmFtdS5lbnYg7JeQIO2YhOyerCDshKTsoJXqsJIg7KCA7J6lXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uU3luY0NvbmZpZygpIHtcbiAgY29uc3QgeyBob3N0LCBwb3J0IH0gPSBTb25hbXUuY29uZmlnLnNlcnZlci5saXN0ZW4gPz8ge307XG4gIGNvbnN0IGNvbnRlbnQgPSBgQVBJX0hPU1Q9JHtob3N0ID8/IFwibG9jYWxob3N0XCJ9XFxuQVBJX1BPUlQ9JHtwb3J0ID8/IDMwMDB9YDtcblxuICBOYWl0ZS50KFwiYWN0aW9uU3luY0NvbmZpZ1wiLCB7IGNvbnRlbnQgfSk7XG4gIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAuLi5Tb25hbXUuY29uZmlnLnN5bmMudGFyZ2V0cy5tYXAoYXN5bmMgKHRhcmdldCkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHRhcmdldCwgXCIuc29uYW11LmVudlwiKSwgY29udGVudCk7XG4gICAgfSksXG4gICAgZ2VuZXJhdGVUZW1wbGF0ZShcImdlbmVyYXRlZF9zc29cIiwge30sIHsgb3ZlcndyaXRlOiB0cnVlIH0pLFxuICBdKTtcbn1cblxuLyoqXG4gKiBzZXJ2aWNlcy5nZW5lcmF0ZWQudHPrpbwg7IOd7ISx7ZWp64uI64ukLlxuICogQHBhcmFtIHBhcmFtc0FycmF5XG4gKiBAcmV0dXJucyDsg53shLHrkJwg7YyM7J28IOqyveuhnCDrsLDsl7QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb25HZW5lcmF0ZVNlcnZpY2VzKFxuICBwYXJhbXNBcnJheToge1xuICAgIG5hbWVzUmVjb3JkOiBFbnRpdHlOYW1lc1JlY29yZDtcbiAgfVtdLFxuKTogUHJvbWlzZTxBYnNvbHV0ZVBhdGhbXT4ge1xuICBOYWl0ZS50KFwiYWN0aW9uR2VuZXJhdGVTZXJ2aWNlc1wiLCBwYXJhbXNBcnJheSk7XG5cbiAgLy8gc2VydmljZXMuZ2VuZXJhdGVkLnRzIO2Gte2VqSDtjIzsnbwg7IOd7ISxXG4gIGNvbnN0IHNlcnZpY2VzRmlsZSA9IGF3YWl0IGdlbmVyYXRlVGVtcGxhdGUoXG4gICAgXCJzZXJ2aWNlc1wiLFxuICAgIHt9LFxuICAgIHtcbiAgICAgIG92ZXJ3cml0ZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIHJldHVybiBbLi4uc2VydmljZXNGaWxlXTtcbn1cblxuLyoqXG4gKiBFbnRpdHnsl5Ag65S466awIOy0iOq4sCB0eXBlcy50c+ulvCDrp4zrk6TslrTspI3ri4jri6QuXG4gKiBAcGFyYW0gZW50aXR5SWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkdlbmVyYXRlSW5pdGlhbFR5cGVzKGVudGl0eUlkOiBzdHJpbmcpOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIHJldHVybiBnZW5lcmF0ZVRlbXBsYXRlKFwiaW5pdF90eXBlc1wiLCB7IGVudGl0eUlkIH0pO1xufVxuXG4vKipcbiAqIHNvbmFtdS5nZW5lcmF0ZWQudHPsmYAgc29uYW11LmdlbmVyYXRlZC5zc28udHPrpbwg7IOd7ISx7ZWp64uI64ukLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uR2VuZXJhdGVTY2hlbWFzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBnZW5lcmF0ZVRlbXBsYXRlKFwiZ2VuZXJhdGVkX3Nzb1wiLCB7fSwgeyBvdmVyd3JpdGU6IHRydWUgfSksXG4gICAgICBnZW5lcmF0ZVRlbXBsYXRlKFwiZ2VuZXJhdGVkXCIsIHt9LCB7IG92ZXJ3cml0ZTogdHJ1ZSB9KSxcbiAgICBdKVxuICApLmZsYXQoKTtcbn1cblxuLyoqXG4gKiBzb25hbXUuZ2VuZXJhdGVkLmh0dHDrpbwg7IOd7ISx7ZWp64uI64ukLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb25HZW5lcmF0ZUh0dHBzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoPiB7XG4gIGNvbnN0IFtyZXNdID0gYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShcbiAgICBcImdlbmVyYXRlZF9odHRwXCIsXG4gICAgeyBlbnRpdHlJZDogXCJkdW1teVwiIH0sXG4gICAgeyBvdmVyd3JpdGU6IHRydWUgfSxcbiAgKTtcbiAgYXNzZXJ0KHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8qKlxuICogcXVlcmllcy5nZW5lcmF0ZWQudHMg7J6s7IOd7ISx7ZWp64uI64ukLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uR2VuZXJhdGVTc3JRdWVyaWVzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgcmV0dXJuIGdlbmVyYXRlVGVtcGxhdGUoXCJxdWVyaWVzXCIsIHt9LCB7IG92ZXJ3cml0ZTogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBlbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeOulvCDsg53shLHtlanri4jri6QuXG4gKiDri6Trpbgg7JWh7IWY65Ok6rO8IOuLrOumrCwg7J2066+4IO2MjOydvOydtCDsnojsnLzrqbQg6re464OlIOuGlOuRoeuLiOuLpC4g6re4656Y7IScIO2VqOyImCDsnbTrpoQg64Gd7JeQIOyNqOuGqOyWtOyalCDjhY5cbiAqIOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5zrnbwg66ek67KIIG92ZXJ3cml0ZeuKlCBtdGltZeunjCDqsLHsi6DtlZjripQg7J2Y66+4IOyXhuuKlCDrj5nsnpEuXG4gKiDthZztlIzrpr8g7J6Q7LK06rCAIOuzgOqyveuQnCDqsr3smrAoU29uYW11IOyXheq3uOugiOydtOuTnCnsl5DripQg7IKs7Jqp7J6Q6rCAIO2MjOydvOydhCDsgq3soJztlZwg65KkIHN5bmProZwg7J6s7IOd7ISxLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0ICjsnbTrr7gg7J6I7Jy866m0IOu5iCDrsLDsl7QpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uR2VuZXJhdGVTc3JFbnRyeVNlcnZlcklmTm90RXhpc3RzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShcImVudHJ5X3NlcnZlclwiLCB7fSwgeyBvdmVyd3JpdGU6IGZhbHNlIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gZ2VuZXJhdGVUZW1wbGF0ZeydgCBvdmVyd3JpdGU6IGZhbHNl7JeQ7IScIO2MjOydvOydtCDsnbTrr7gg7J6I7Jy866m0IOyYiOyZuOulvCDrjZjsp5Hri4jri6QuXG4gICAgLy8gSWZOb3RFeGlzdHMg7J2Y66+47IOBIFwi6re464OlIOuGlOuRlOuLpFwi6rCAIOygleyDgeydtOuvgOuhnCDruYgg67Cw7Je066GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG4vKipcbiAqIOyjvOyWtOynhCAudHMg7YyM7J2865OkKGFwaeyXkCDsnojri6Tqs6Ag6rCA7KCVKeydhCDrqqjrk6Ag7YOA6rKfIOuUlOugie2GoOumrOydmCBzZXJ2aWNlc+yXkCDqsJbri6Qg65Gh64uI64ukLlxuICog7J2065WMIOuCtOu2gOydmCBzb25hbXUgaW1wb3J064qUIHNvbmFtdS5zaGFyZWQudHMgaW1wb3J066GcIOy5mO2ZmOuQmOqzoCxcbiAqIOqyveuhnOydmCAvYXBwbGljYXRpb24v7J2AIC9zZXJ2aWNlcy/roZwg7LmY7ZmY65Cp64uI64ukLlxuICpcbiAqIEBwYXJhbSB0c1BhdGhzIOuzteyCrO2VoCDtjIzsnbzrk6TsnZgg7KCI64yAIOqyveuhnFxuICogQHJldHVybnMg6rCBIO2DgOqyn+yXkCDrs7XsgqzrkJwg7YyM7J2865Ok7J2YIOygiOuMgCDqsr3roZwg67Cw7Je0IChmbGF0KS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGlvblN5bmNGaWxlc1RvVGFyZ2V0cyh0c1BhdGhzOiBBYnNvbHV0ZVBhdGhbXSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG4gIGNvbnN0IHsgZGlyOiBhcGlEaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuXG4gIHJldHVybiAoXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0YXJnZXRzLm1hcChhc3luYyAodGFyZ2V0KSA9PlxuICAgICAgICBQcm9taXNlLmFsbChcbiAgICAgICAgICB0c1BhdGhzLm1hcChhc3luYyAocmVhbFNyYykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZHN0ID0gcmVhbFNyY1xuICAgICAgICAgICAgICAucmVwbGFjZShgLyR7YXBpRGlyfS9gLCBgLyR7dGFyZ2V0fS9gKVxuICAgICAgICAgICAgICAucmVwbGFjZShcIi9hcHBsaWNhdGlvbi9cIiwgXCIvc2VydmljZXMvXCIpO1xuICAgICAgICAgICAgY29uc3QgZGlyID0gZGlybmFtZShkc3QpO1xuICAgICAgICAgICAgaWYgKCEoYXdhaXQgZXhpc3RzKGRpcikpKSB7XG4gICAgICAgICAgICAgIGF3YWl0IG1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzeW5jSGVhZGVyID0gW1xuICAgICAgICAgICAgICBcIi8qKlwiLFxuICAgICAgICAgICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgICAgICAgICAgXCIgKiBBUEnsl5DshJwg64+Z6riw7ZmU65CcIO2MjOydvOyeheuLiOuLpC4g7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXCIsXG4gICAgICAgICAgICAgIFwiICovXCIsXG4gICAgICAgICAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgICBhd2FpdCBjb3B5RmlsZVdpdGhSZXBsYWNlQ29yZVRvU2hhcmVkKHJlYWxTcmMsIGRzdCwgc3luY0hlYWRlcik7XG4gICAgICAgICAgICBhd2FpdCB0cmFja1dyaXR0ZW4oZHN0IGFzIEFic29sdXRlUGF0aCk7XG4gICAgICAgICAgICAhaXNUZXN0KCkgJiZcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgY2hhbGsuYm9sZChcIkNvcGllZDogXCIpICsgY2hhbGsuYmx1ZShkc3QucmVwbGFjZShgJHtTb25hbXUuYXBwUm9vdFBhdGh9L2AsIFwiXCIpKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiBkc3Q7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgKS5mbGF0KCk7XG59XG5cbi8qKlxuICogc2hhcmVkIO2FnO2UjOumv+ycvOuhnOu2gO2EsCBzb25hbXUuc2hhcmVkLnRzIO2MjOydvOydhCDrp4zrk6TslrTshJwg66qo65OgIO2DgOqynyDrlJTroInthqDrpqzsl5Ag6rCW64ukIOuRoeuLiOuLpC5cbiAqIO2MjOydvOydhCDrp4zrk5zripQg6rO87KCV7JeQ7IScIOyXrOufrCDsuZjtmZgg6rCA6rO17J20IOydvOyWtOuCqeuLiOuLpC5cbiAqXG4gKiDri6Trpbgg7JWh7IWY65Ok6rO8IOuLrOumrCwg7J2066+4IO2MjOydvOydtCDsnojsnLzrqbQg6re464OlIOuGlOuRoeuLiOuLpC4g6re4656Y7IScIO2VqOyImCDsnbTrpoQg64Gd7JeQIOyNqOuGqOyWtOyalCDjhY5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkNvcHlTaGFyZWRUb1RhcmdldHNJZk5vdEV4aXN0cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG5cbiAgLy8gcGx1cmFsLnRzIOuCtOyaqeydhCDsnb3slrTshJwgc2hhcmVkIO2MjOydvOyXkCDsgr3snoXtlanri4jri6QuXG4gIGNvbnN0IGRpY3RVdGlsc1BhdGggPSBwYXRoLmpvaW4oXG4gICAgaW1wb3J0Lm1ldGEuZGlybmFtZS5yZXBsYWNlKFwiL2Rpc3QvXCIsIFwiL3NyYy9cIiksXG4gICAgXCIuLi9kaWN0L3V0aWxzLnRzXCIsXG4gICk7XG4gIGNvbnN0IGRpY3RVdGlsc0NvZGUgPSAoYXdhaXQgZXhpc3RzKGRpY3RVdGlsc1BhdGgpKSA/IGF3YWl0IHJlYWRGaWxlKGRpY3RVdGlsc1BhdGgsIFwidXRmLThcIikgOiBcIlwiO1xuXG4gIC8vIO2KueyglSDrs4DsiJgg7LmY7ZmY7J2EIOychO2VtOyEnCDsgqzsmqntlanri4jri6QuXG4gIGNvbnN0IGNvbnZlcnRNYXAgPSB7XG4gICAgYmFzZVVybDpcbiAgICAgIFNvbmFtdS5jb25maWcuc2VydmVyLmJhc2VVcmwgPz9cbiAgICAgIGBodHRwOi8vJHtTb25hbXUuY29uZmlnLnNlcnZlci5saXN0ZW4/Lmhvc3QgPz8gXCJsb2NhbGhvc3RcIn06JHtTb25hbXUuY29uZmlnLnNlcnZlci5saXN0ZW4/LnBvcnQgPz8gMzAwMH1gLFxuICAgIGRpY3RVdGlsczogZGljdFV0aWxzQ29kZSxcbiAgfTtcblxuICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgLy8g7KeA6riIIOqwgOyguOqwgOugpOuKlCDsnbQg7YyM7J287J2AIFNvbmFtdSDsvZTrk5zrsqDsnbTsiqTsnZgg7J2867aA7J6F64uI64ukLlxuICAgIC8vIOq3uOufsOuNsCBkaXN0IOyGjSDruYzrk5zrkJwg7IaM7IqkIOy9lOuTnCDtjIzsnbzsnbQg7ZWE7JqU7ZWcIOqyg+ydtCDslYTri4jqs6AsIHNyY+yXkOunjCDsnojripQg7YWN7Iqk7Yq4IO2MjOydvOydtCDtlYTsmpTtlanri4jri6QuXG4gICAgLy8g65Sw65287IScIC9zcmMv7JeQ7IScIOywvuyKteuLiOuLpC5cbiAgICBjb25zdCBzcmNQYXRoID0gcGF0aC5qb2luKFxuICAgICAgaW1wb3J0Lm1ldGEuZGlybmFtZS5yZXBsYWNlKFwiL2Rpc3QvXCIsIFwiL3NyYy9cIiksXG4gICAgICBgLi4vc2hhcmVkLyR7dGFyZ2V0fS5zaGFyZWQudHMudHh0YCxcbiAgICApO1xuICAgIGlmICghKGF3YWl0IGV4aXN0cyhzcmNQYXRoKSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIShhd2FpdCBleGlzdHMocGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdGFyZ2V0KSkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBUcmllZCB0byBjb3B5IHNvbmFtdS5zaGFyZWQudHMgdG8gdGFyZ2V0ICcke3RhcmdldH0nIGJ1dCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNoZWNrIHlvdXIgcHJvamVjdCBkaXJlY3Rvcnkgc3RydWN0dXJlLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxUZXh0ID0gYXdhaXQgcmVhZEZpbGUoc3JjUGF0aCwgXCJ1dGYtOFwiKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRUZXh0ID0gT2JqZWN0LmVudHJpZXMoY29udmVydE1hcCkucmVkdWNlKFxuICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiBhY2MucmVwbGFjZShgJFtbJHtrZXl9XV1gLCB2YWx1ZSksXG4gICAgICBmdWxsVGV4dCxcbiAgICApO1xuXG4gICAgLy8g7J206rG0IO2UhOuhnOygne2KuOyXkCAudHMg7IaM7IqkIOy9lOuTnCDtjIzsnbzsnYQg7IOd7ISx7ZWY64qUIOqyg+ydtOuvgOuhnCBzcmPsnZggLnRzIOqyveuhnOuhnCDqsJHri4jri6QuXG4gICAgY29uc3QgZGVzdFBhdGggPSBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCB0YXJnZXQsIFwic3JjL3NlcnZpY2VzL3NvbmFtdS5zaGFyZWQudHNcIik7XG5cbiAgICAvLyDsoJXrp5Ag7Zi57Iuc64KY7KeA66eMIHRhcmdldCDrlJTroInthqDrpqzripQg7J6I7Ja064+EIHNyYy9zZXJ2aWNlcyDrlJTroInthqDrpqzripQg7JeG7J2EIOyImCDsnojsnLzrr4DroZwg66+466asIOyDneyEse2VtOykjeuLiOuLpC5cbiAgICBpZiAoIShhd2FpdCBleGlzdHMocGF0aC5kaXJuYW1lKGRlc3RQYXRoKSkpKSB7XG4gICAgICBhd2FpdCBta2RpcihwYXRoLmRpcm5hbWUoZGVzdFBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGNvbnNvbGUud2FybihgQ3JlYXRlZCBkaXJlY3RvcnkgJyR7cGF0aC5kaXJuYW1lKGRlc3RQYXRoKX0nIGJlY2F1c2UgaXQgZGlkIG5vdCBleGlzdC5gKTtcbiAgICB9XG5cbiAgICAvLyDtjIzsnbzsnbQg7J2066+4IOyhtOyerO2VmOuptCDqsbTrhIjrnIHri4jri6QuXG4gICAgLy8gc29uYW11LnNoYXJlZC50c+uKlCDtlITroZzsoJ3tirjsl5DshJwg7J6Q7Jyg66Gt6rKMIOy7pOyKpO2EsOuniOydtOynle2VoCDsiJgg7J6I7Ja07JW8IO2VmOuvgOuhnCxcbiAgICAvLyDstZzstIggMe2ajOunjCDsg53shLHtlZjqs6Ag7J207ZuE7JeQ64qUIOuNruyWtOyTsOyngCDslYrsirXri4jri6QuXG4gICAgLy8g7YWc7ZSM66a/IOuCtOyaqSgkW1tkaWN0VXRpbHNdXSDrk7Ep7J20IOuzgOqyveuQmOyXiOydhCDrlYwg67CY7JiB7J20IO2VhOyalO2VmOuptCxcbiAgICAvLyDtlbTri7kg7YyM7J287J2EIOyCreygnO2VnCDrkqQgYHBucG0gc29uYW11IHN5bmNg66GcIOyerOyDneyEse2VmOuptCDrkKnri4jri6QuXG4gICAgaWYgKGF3YWl0IGV4aXN0cyhkZXN0UGF0aCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGF3YWl0IHdyaXRlRmlsZShkZXN0UGF0aCwgYXdhaXQgZm9ybWF0Q29kZShjb252ZXJ0ZWRUZXh0LCBkZXN0UGF0aCkpO1xuICAgICFpc1Rlc3QoKSAmJlxuICAgICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIkNvcGllZDogXCIpICsgY2hhbGsuYmx1ZShwYXRoLnJlbGF0aXZlKFNvbmFtdS5hcHBSb290UGF0aCwgZGVzdFBhdGgpKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeShTRCnrpbwg66qo65OgIO2DgOqynyhhcGkgKyB3ZWIvYXBwIOuTsSnsl5Ag64+Z6riw7ZmU7ZWp64uI64ukLlxuICpcbiAqIOqwgSDtg4Dqsp/sl5Ag64yA7ZW0OlxuICogLSB0YXJnZXTsnbQgYXBp6rCAIOyVhOuLiOuptCDsgqzsmqnsnpAg7J6R7ISxIGxvY2FsZSDtjIzsnbwoa28udHMvZW4udHMvLi4uKeydhCBhcGkg4oaSIHRhcmdldOycvOuhnCDrs7XsgqxcbiAqIC0gc2Qg7YWc7ZSM66a/7J2EIOugjOuNlOunge2VtOyEnCBzZC5nZW5lcmF0ZWQudHMg7IOd7ISxIChvdmVyd3JpdGUpXG4gKlxuICog7ZWcIO2DgOqyn+yXkOyEnCDsi6TtjKjtlbTrj4Qg64uk66W4IO2DgOqyn+ydgCDqs4Tsho0g7KeE7ZaJ7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uU3luY1NvbmFtdURpY3Rpb25hcnkoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgdGFyZ2V0cyB9ID0gU29uYW11LmNvbmZpZy5zeW5jO1xuICBjb25zdCBpMThuQ29uZmlnID0gU29uYW11LmNvbmZpZy5pMThuO1xuXG4gIGNvbnN0IHRhcmdldExpc3QgPSBbXCJhcGlcIiwgLi4udGFyZ2V0c10gYXMgKFwiYXBpXCIgfCBcIndlYlwiIHwgXCJhcHBcIilbXTtcblxuICBjb25zdCBhcGlJMThuRGlyID0gcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgU29uYW11LmNvbmZpZy5hcGkuZGlyLCBcInNyYy9pMThuXCIpO1xuXG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldExpc3QpIHtcbiAgICB0cnkge1xuICAgICAgLy8gd2ViL2FwcOydmCDqsr3smrAgbG9jYWxlIO2MjOydvOuTpOydhCBhcGnsl5DshJwg67O17IKsXG4gICAgICBpZiAodGFyZ2V0ICE9PSBcImFwaVwiKSB7XG4gICAgICAgIGF3YWl0IHN5bmNMb2NhbGVGaWxlcyh0YXJnZXQsIGFwaUkxOG5EaXIsIGkxOG5Db25maWcuc3VwcG9ydGVkTG9jYWxlcyk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGdlbmVyYXRlVGVtcGxhdGUoXCJzZFwiLCB7IHRhcmdldCB9LCB7IG92ZXJ3cml0ZTogdHJ1ZSB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gZ2VuZXJhdGUgU0QgdGVtcGxhdGUgZm9yICR7dGFyZ2V0fTpgLCBlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBhcGnsnZggbG9jYWxlIO2MjOydvOydhCB3ZWIvYXBw7Jy866GcIOuzteyCrO2VqeuLiOuLpC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc3luY0xvY2FsZUZpbGVzKFxuICB0YXJnZXQ6IHN0cmluZyxcbiAgYXBpSTE4bkRpcjogc3RyaW5nLFxuICBsb2NhbGVzOiBzdHJpbmdbXSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0YXJnZXRJMThuRGlyID0gcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdGFyZ2V0LCBcInNyYy9pMThuXCIpO1xuXG4gIC8vIOuUlOugie2GoOumrOqwgCDsl4bsnLzrqbQg7IOd7ISxXG4gIGF3YWl0IG1rZGlyKHRhcmdldEkxOG5EaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGZvciAoY29uc3QgbG9jYWxlIG9mIGxvY2FsZXMpIHtcbiAgICBjb25zdCBzb3VyY2VGaWxlID0gcGF0aC5qb2luKGFwaUkxOG5EaXIsIGAke2xvY2FsZX0udHNgKTtcbiAgICBjb25zdCB0YXJnZXRGaWxlID0gcGF0aC5qb2luKHRhcmdldEkxOG5EaXIsIGAke2xvY2FsZX0udHNgKTtcblxuICAgIGNvbnN0IHN5bmNIZWFkZXIgPSBbXG4gICAgICBcIi8qKlwiLFxuICAgICAgXCIgKiBAZ2VuZXJhdGVkXCIsXG4gICAgICBcIiAqIEFQSeyXkOyEnCDrj5nquLDtmZTrkJwg7YyM7J287J6F64uI64ukLiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIixcbiAgICAgIFwiICovXCIsXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IGNvcHlGaWxlV2l0aFJlcGxhY2VDb3JlVG9TaGFyZWQoc291cmNlRmlsZSwgdGFyZ2V0RmlsZSwgc3luY0hlYWRlcik7XG4gICAgYXdhaXQgdHJhY2tXcml0dGVuKHRhcmdldEZpbGUgYXMgQWJzb2x1dGVQYXRoKTtcbiAgICAhaXNUZXN0KCkgJiZcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmJvbGQoXCJDb3BpZWQ6IFwiKSArIGNoYWxrLmN5YW4oYCR7dGFyZ2V0fS9zcmMvaTE4bi8ke2xvY2FsZX0udHNgKSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLGVBQXNCLG1CQUFtQjtDQUN2QyxNQUFNLEVBQUUsTUFBTSxTQUFTLE9BQU8sT0FBTyxPQUFPLFVBQVUsRUFBRTtDQUN4RCxNQUFNLFVBQVUsWUFBWSxRQUFRLFlBQVksYUFBYSxRQUFRO0FBRXJFLE9BQU0sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLENBQUM7QUFDeEMsT0FBTSxRQUFRLElBQUksQ0FDaEIsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxXQUFXO0FBQ2xELFFBQU0sVUFBVSxLQUFLLEtBQUssT0FBTyxhQUFhLFFBQVEsY0FBYyxFQUFFLFFBQVE7R0FDOUUsRUFDRixpQkFBaUIsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFdBQVcsTUFBTSxDQUFDLENBQzNELENBQUM7Ozs7Ozs7QUFRSixlQUFzQix1QkFDcEIsYUFHeUI7QUFDekIsT0FBTSxFQUFFLDBCQUEwQixZQUFZO0NBRzlDLE1BQU0sZUFBZSxNQUFNLGlCQUN6QixZQUNBLEVB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
|
|
212
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2VyLWFjdGlvbnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9zeW5jZXItYWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCwgeyBkaXJuYW1lIH0gZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24gfSBmcm9tIFwiLi4vZXhjZXB0aW9ucy9zby1leGNlcHRpb25zXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgaXNUZXN0IH0gZnJvbSBcIi4uL3V0aWxzL2NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGZvcm1hdENvZGUgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBjb3B5RmlsZVdpdGhSZXBsYWNlQ29yZVRvU2hhcmVkLCBleGlzdHMgfSBmcm9tIFwiLi4vdXRpbHMvZnMtdXRpbHNcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3BhdGgtdXRpbHNcIjtcbmltcG9ydCB7IGdlbmVyYXRlVGVtcGxhdGUgfSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgdHJhY2tXcml0dGVuIH0gZnJvbSBcIi4vZmlsZS10cmFja2luZ1wiO1xuXG4vLyB3ZWIvLnNvbmFtdS5lbnYg7JeQIO2YhOyerCDshKTsoJXqsJIg7KCA7J6lXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uU3luY0NvbmZpZygpIHtcbiAgY29uc3QgeyBob3N0LCBwb3J0IH0gPSBTb25hbXUuY29uZmlnLnNlcnZlci5saXN0ZW4gPz8ge307XG4gIGNvbnN0IGNvbnRlbnQgPSBgQVBJX0hPU1Q9JHtob3N0ID8/IFwibG9jYWxob3N0XCJ9XFxuQVBJX1BPUlQ9JHtwb3J0ID8/IDMwMDB9YDtcblxuICBOYWl0ZS50KFwiYWN0aW9uU3luY0NvbmZpZ1wiLCB7IGNvbnRlbnQgfSk7XG4gIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAuLi5Tb25hbXUuY29uZmlnLnN5bmMudGFyZ2V0cy5tYXAoYXN5bmMgKHRhcmdldCkgPT4ge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHRhcmdldCwgXCIuc29uYW11LmVudlwiKSwgY29udGVudCk7XG4gICAgfSksXG4gICAgZ2VuZXJhdGVUZW1wbGF0ZShcImdlbmVyYXRlZF9zc29cIiwge30sIHsgb3ZlcndyaXRlOiB0cnVlIH0pLFxuICBdKTtcbn1cblxuLyoqXG4gKiBzZXJ2aWNlcy5nZW5lcmF0ZWQudHPrpbwg7IOd7ISx7ZWp64uI64ukLlxuICogQHBhcmFtIHBhcmFtc0FycmF5XG4gKiBAcmV0dXJucyDsg53shLHrkJwg7YyM7J28IOqyveuhnCDrsLDsl7QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb25HZW5lcmF0ZVNlcnZpY2VzKFxuICBwYXJhbXNBcnJheToge1xuICAgIG5hbWVzUmVjb3JkOiBFbnRpdHlOYW1lc1JlY29yZDtcbiAgfVtdLFxuKTogUHJvbWlzZTxBYnNvbHV0ZVBhdGhbXT4ge1xuICBOYWl0ZS50KFwiYWN0aW9uR2VuZXJhdGVTZXJ2aWNlc1wiLCBwYXJhbXNBcnJheSk7XG5cbiAgLy8gc2VydmljZXMuZ2VuZXJhdGVkLnRzIO2Gte2VqSDtjIzsnbwg7IOd7ISxXG4gIGNvbnN0IHNlcnZpY2VzRmlsZSA9IGF3YWl0IGdlbmVyYXRlVGVtcGxhdGUoXG4gICAgXCJzZXJ2aWNlc1wiLFxuICAgIHt9LFxuICAgIHtcbiAgICAgIG92ZXJ3cml0ZTogdHJ1ZSxcbiAgICB9LFxuICApO1xuXG4gIHJldHVybiBbLi4uc2VydmljZXNGaWxlXTtcbn1cblxuLyoqXG4gKiBFbnRpdHnsl5Ag65S466awIOy0iOq4sCB0eXBlcy50c+ulvCDrp4zrk6TslrTspI3ri4jri6QuXG4gKiBAcGFyYW0gZW50aXR5SWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFjdGlvbkdlbmVyYXRlSW5pdGlhbFR5cGVzKGVudGl0eUlkOiBzdHJpbmcpOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIHJldHVybiBnZW5lcmF0ZVRlbXBsYXRlKFwiaW5pdF90eXBlc1wiLCB7IGVudGl0eUlkIH0pO1xufVxuXG4vKipcbiAqIHNvbmFtdS5nZW5lcmF0ZWQudHPsmYAgc29uYW11LmdlbmVyYXRlZC5zc28udHPrpbwg7IOd7ISx7ZWp64uI64ukLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uR2VuZXJhdGVTY2hlbWFzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBnZW5lcmF0ZVRlbXBsYXRlKFwiZ2VuZXJhdGVkX3Nzb1wiLCB7fSwgeyBvdmVyd3JpdGU6IHRydWUgfSksXG4gICAgICBnZW5lcmF0ZVRlbXBsYXRlKFwiZ2VuZXJhdGVkXCIsIHt9LCB7IG92ZXJ3cml0ZTogdHJ1ZSB9KSxcbiAgICBdKVxuICApLmZsYXQoKTtcbn1cblxuLyoqXG4gKiBzb25hbXUuZ2VuZXJhdGVkLmh0dHDrpbwg7IOd7ISx7ZWp64uI64ukLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb25HZW5lcmF0ZUh0dHBzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoPiB7XG4gIGNvbnN0IFtyZXNdID0gYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShcbiAgICBcImdlbmVyYXRlZF9odHRwXCIsXG4gICAgeyBlbnRpdHlJZDogXCJkdW1teVwiIH0sXG4gICAgeyBvdmVyd3JpdGU6IHRydWUgfSxcbiAgKTtcbiAgYXNzZXJ0KHJlcyk7XG4gIHJldHVybiByZXM7XG59XG5cbi8qKlxuICogcXVlcmllcy5nZW5lcmF0ZWQudHMg7J6s7IOd7ISx7ZWp64uI64ukLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uR2VuZXJhdGVTc3JRdWVyaWVzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgcmV0dXJuIGdlbmVyYXRlVGVtcGxhdGUoXCJxdWVyaWVzXCIsIHt9LCB7IG92ZXJ3cml0ZTogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBlbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeOulvCDsg53shLHtlanri4jri6QuXG4gKiDri6Trpbgg7JWh7IWY65Ok6rO8IOuLrOumrCwg7J2066+4IO2MjOydvOydtCDsnojsnLzrqbQg6re464OlIOuGlOuRoeuLiOuLpC4g6re4656Y7IScIO2VqOyImCDsnbTrpoQg64Gd7JeQIOyNqOuGqOyWtOyalCDjhY5cbiAqIOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5zrnbwg66ek67KIIG92ZXJ3cml0ZeuKlCBtdGltZeunjCDqsLHsi6DtlZjripQg7J2Y66+4IOyXhuuKlCDrj5nsnpEuXG4gKiDthZztlIzrpr8g7J6Q7LK06rCAIOuzgOqyveuQnCDqsr3smrAoU29uYW11IOyXheq3uOugiOydtOuTnCnsl5DripQg7IKs7Jqp7J6Q6rCAIO2MjOydvOydhCDsgq3soJztlZwg65KkIHN5bmProZwg7J6s7IOd7ISxLlxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0ICjsnbTrr7gg7J6I7Jy866m0IOu5iCDrsLDsl7QpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uR2VuZXJhdGVTc3JFbnRyeVNlcnZlcklmTm90RXhpc3RzKCk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShcImVudHJ5X3NlcnZlclwiLCB7fSwgeyBvdmVyd3JpdGU6IGZhbHNlIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gZ2VuZXJhdGVUZW1wbGF0ZeydgCBvdmVyd3JpdGU6IGZhbHNl7JeQ7IScIO2MjOydvOydtCDsnbTrr7gg7J6I7Jy866m0IOyYiOyZuOulvCDrjZjsp5Hri4jri6QuXG4gICAgLy8gSWZOb3RFeGlzdHMg7J2Y66+47IOBIFwi6re464OlIOuGlOuRlOuLpFwi6rCAIOygleyDgeydtOuvgOuhnCDruYgg67Cw7Je066GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG4vKipcbiAqIOyjvOyWtOynhCAudHMg7YyM7J2865OkKGFwaeyXkCDsnojri6Tqs6Ag6rCA7KCVKeydhCDtg4Dqsp8g65SU66CJ7Yag66as7J2YIHNlcnZpY2Vz7JeQIOqwluuLpCDrkaHri4jri6QuXG4gKiDsnbTrlYwg64K067aA7J2YIHNvbmFtdSBpbXBvcnTripQgc29uYW11LnNoYXJlZC50cyBpbXBvcnTroZwg7LmY7ZmY65CY6rOgLFxuICog6rK966Gc7J2YIC9hcHBsaWNhdGlvbi/snYAgL3NlcnZpY2VzL+uhnCDsuZjtmZjrkKnri4jri6QuXG4gKlxuICog6riw67O47J2AIFNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzIOyghOyytOulvCDrjIDsg4HsnLzroZwg7ZWY66mwLFxuICogb25seVRhcmdldHNTdGFydGluZ1dpdGgg7ZmU7J207Yq466as7Iqk7Yq466GcIOydvOu2gCB0YXJnZXTsl5Drp4wg67aE67Cw7ZWgIOyImCDsnojsirXri4jri6QuXG4gKiDqsIDrn4kgU1NSLW9ubHnsnbggcXVlcmllcy5nZW5lcmF0ZWQudHPqsJnsnYAg7Lmc6rWs65Ok7J2AIFwid2ViXCLsnLzroZwg7Iuc7J6R7ZWY64qUIO2DgOqyn+uTpOyXkOunjCDrs7Trgrwg7IiYIOyeiOyWtOyalC5cbiAqIFtcIndlYlwiXeycvOuhnCDrhJjquLDrqbQgd2ViLCB3ZWItYWRtaW4sIHdlYmFwcCDrk7Hsl5Ag66qo65GQIOunpOy5mOuQqeuLiOuLpC5cbiAqXG4gKiBAcGFyYW0gdHNQYXRocyDrs7XsgqztlaAg7YyM7J2865Ok7J2YIOygiOuMgCDqsr3roZxcbiAqIEBwYXJhbSBvbmx5VGFyZ2V0c1N0YXJ0aW5nV2l0aCDrtoTrsLDtlaAgdGFyZ2V0IOygkeuRkOyWtOuTpOydmCDtmZTsnbTtirjrpqzsiqTtirguIOuvuOyngOyglSDsi5wg66qo65OgIHRhcmdldC5cbiAqIEByZXR1cm5zIOqwgSDtg4Dqsp/sl5Ag67O17IKs65CcIO2MjOydvOuTpOydmCDsoIjrjIAg6rK966GcIOuwsOyXtCAoZmxhdCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb25TeW5jRmlsZXNUb1RhcmdldHMoXG4gIHRzUGF0aHM6IEFic29sdXRlUGF0aFtdLFxuICBvbmx5VGFyZ2V0c1N0YXJ0aW5nV2l0aD86IHN0cmluZ1tdLFxuKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBjb25zdCBhbGxUYXJnZXRzID0gU29uYW11LmNvbmZpZy5zeW5jLnRhcmdldHM7XG4gIGNvbnN0IHRhcmdldHMgPSBvbmx5VGFyZ2V0c1N0YXJ0aW5nV2l0aFxuICAgID8gYWxsVGFyZ2V0cy5maWx0ZXIoKHQpID0+IG9ubHlUYXJnZXRzU3RhcnRpbmdXaXRoLnNvbWUoKHByZWZpeCkgPT4gdC5zdGFydHNXaXRoKHByZWZpeCkpKVxuICAgIDogYWxsVGFyZ2V0cztcbiAgY29uc3QgeyBkaXI6IGFwaURpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG5cbiAgcmV0dXJuIChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHRhcmdldHMubWFwKGFzeW5jICh0YXJnZXQpID0+XG4gICAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICAgIHRzUGF0aHMubWFwKGFzeW5jIChyZWFsU3JjKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkc3QgPSByZWFsU3JjXG4gICAgICAgICAgICAgIC5yZXBsYWNlKGAvJHthcGlEaXJ9L2AsIGAvJHt0YXJnZXR9L2ApXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiL2FwcGxpY2F0aW9uL1wiLCBcIi9zZXJ2aWNlcy9cIik7XG4gICAgICAgICAgICBjb25zdCBkaXIgPSBkaXJuYW1lKGRzdCk7XG4gICAgICAgICAgICBpZiAoIShhd2FpdCBleGlzdHMoZGlyKSkpIHtcbiAgICAgICAgICAgICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN5bmNIZWFkZXIgPSBbXG4gICAgICAgICAgICAgIFwiLyoqXCIsXG4gICAgICAgICAgICAgIFwiICogQGdlbmVyYXRlZFwiLFxuICAgICAgICAgICAgICBcIiAqIEFQSeyXkOyEnCDrj5nquLDtmZTrkJwg7YyM7J287J6F64uI64ukLiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIixcbiAgICAgICAgICAgICAgXCIgKi9cIixcbiAgICAgICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgIGF3YWl0IGNvcHlGaWxlV2l0aFJlcGxhY2VDb3JlVG9TaGFyZWQocmVhbFNyYywgZHN0LCBzeW5jSGVhZGVyKTtcbiAgICAgICAgICAgIGF3YWl0IHRyYWNrV3JpdHRlbihkc3QgYXMgQWJzb2x1dGVQYXRoKTtcbiAgICAgICAgICAgICFpc1Rlc3QoKSAmJlxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICBjaGFsay5ib2xkKFwiQ29waWVkOiBcIikgKyBjaGFsay5ibHVlKGRzdC5yZXBsYWNlKGAke1NvbmFtdS5hcHBSb290UGF0aH0vYCwgXCJcIikpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGRzdDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuICApLmZsYXQoKTtcbn1cblxuLyoqXG4gKiBzaGFyZWQg7YWc7ZSM66a/7Jy866Gc67aA7YSwIHNvbmFtdS5zaGFyZWQudHMg7YyM7J287J2EIOunjOuTpOyWtOyEnCDrqqjrk6Ag7YOA6rKfIOuUlOugie2GoOumrOyXkCDqsJbri6Qg65Gh64uI64ukLlxuICog7YyM7J287J2EIOunjOuTnOuKlCDqs7zsoJXsl5DshJwg7Jes65+sIOy5mO2ZmCDqsIDqs7XsnbQg7J287Ja064Kp64uI64ukLlxuICpcbiAqIOuLpOuluCDslaHshZjrk6Tqs7wg64us66asLCDsnbTrr7gg7YyM7J287J20IOyeiOycvOuptCDqt7jrg6Ug64aU65Gh64uI64ukLiDqt7jrnpjshJwg7ZWo7IiYIOydtOumhCDrgZ3sl5Ag7I2o64ao7Ja07JqUIOOFjlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWN0aW9uQ29weVNoYXJlZFRvVGFyZ2V0c0lmTm90RXhpc3RzKCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHRhcmdldHMgfSA9IFNvbmFtdS5jb25maWcuc3luYztcblxuICAvLyBwbHVyYWwudHMg64K07Jqp7J2EIOydveyWtOyEnCBzaGFyZWQg7YyM7J287JeQIOyCveyehe2VqeuLiOuLpC5cbiAgY29uc3QgZGljdFV0aWxzUGF0aCA9IHBhdGguam9pbihcbiAgICBpbXBvcnQubWV0YS5kaXJuYW1lLnJlcGxhY2UoXCIvZGlzdC9cIiwgXCIvc3JjL1wiKSxcbiAgICBcIi4uL2RpY3QvdXRpbHMudHNcIixcbiAgKTtcbiAgY29uc3QgZGljdFV0aWxzQ29kZSA9IChhd2FpdCBleGlzdHMoZGljdFV0aWxzUGF0aCkpID8gYXdhaXQgcmVhZEZpbGUoZGljdFV0aWxzUGF0aCwgXCJ1dGYtOFwiKSA6IFwiXCI7XG5cbiAgLy8g7Yq57KCVIOuzgOyImCDsuZjtmZjsnYQg7JyE7ZW07IScIOyCrOyaqe2VqeuLiOuLpC5cbiAgY29uc3QgY29udmVydE1hcCA9IHtcbiAgICBiYXNlVXJsOlxuICAgICAgU29uYW11LmNvbmZpZy5zZXJ2ZXIuYmFzZVVybCA/P1xuICAgICAgYGh0dHA6Ly8ke1NvbmFtdS5jb25maWcuc2VydmVyLmxpc3Rlbj8uaG9zdCA/PyBcImxvY2FsaG9zdFwifToke1NvbmFtdS5jb25maWcuc2VydmVyLmxpc3Rlbj8ucG9ydCA/PyAzMDAwfWAsXG4gICAgZGljdFV0aWxzOiBkaWN0VXRpbHNDb2RlLFxuICB9O1xuXG4gIGZvciAoY29uc3QgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICAvLyDsp4DquIgg6rCA7KC46rCA66Ck64qUIOydtCDtjIzsnbzsnYAgU29uYW11IOy9lOuTnOuyoOydtOyKpOydmCDsnbzrtoDsnoXri4jri6QuXG4gICAgLy8g6re465+w642wIGRpc3Qg7IaNIOu5jOuTnOuQnCDshozsiqQg7L2U65OcIO2MjOydvOydtCDtlYTsmpTtlZwg6rKD7J20IOyVhOuLiOqzoCwgc3Jj7JeQ66eMIOyeiOuKlCDthY3siqTtirgg7YyM7J287J20IO2VhOyalO2VqeuLiOuLpC5cbiAgICAvLyDrlLDrnbzshJwgL3NyYy/sl5DshJwg7LC+7Iq164uI64ukLlxuICAgIGNvbnN0IHNyY1BhdGggPSBwYXRoLmpvaW4oXG4gICAgICBpbXBvcnQubWV0YS5kaXJuYW1lLnJlcGxhY2UoXCIvZGlzdC9cIiwgXCIvc3JjL1wiKSxcbiAgICAgIGAuLi9zaGFyZWQvJHt0YXJnZXR9LnNoYXJlZC50cy50eHRgLFxuICAgICk7XG4gICAgaWYgKCEoYXdhaXQgZXhpc3RzKHNyY1BhdGgpKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghKGF3YWl0IGV4aXN0cyhwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCB0YXJnZXQpKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRyaWVkIHRvIGNvcHkgc29uYW11LnNoYXJlZC50cyB0byB0YXJnZXQgJyR7dGFyZ2V0fScgYnV0IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY2hlY2sgeW91ciBwcm9qZWN0IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFRleHQgPSBhd2FpdCByZWFkRmlsZShzcmNQYXRoLCBcInV0Zi04XCIpO1xuICAgIGNvbnN0IGNvbnZlcnRlZFRleHQgPSBPYmplY3QuZW50cmllcyhjb252ZXJ0TWFwKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IGFjYy5yZXBsYWNlKGAkW1ske2tleX1dXWAsIHZhbHVlKSxcbiAgICAgIGZ1bGxUZXh0LFxuICAgICk7XG5cbiAgICAvLyDsnbTqsbQg7ZSE66Gc7KCd7Yq47JeQIC50cyDshozsiqQg7L2U65OcIO2MjOydvOydhCDsg53shLHtlZjripQg6rKD7J2066+A66GcIHNyY+ydmCAudHMg6rK966Gc66GcIOqwkeuLiOuLpC5cbiAgICBjb25zdCBkZXN0UGF0aCA9IHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHRhcmdldCwgXCJzcmMvc2VydmljZXMvc29uYW11LnNoYXJlZC50c1wiKTtcblxuICAgIC8vIOygleunkCDtmLnsi5zrgpjsp4Drp4wgdGFyZ2V0IOuUlOugie2GoOumrOuKlCDsnojslrTrj4Qgc3JjL3NlcnZpY2VzIOuUlOugie2GoOumrOuKlCDsl4bsnYQg7IiYIOyeiOycvOuvgOuhnCDrr7jrpqwg7IOd7ISx7ZW07KSN64uI64ukLlxuICAgIGlmICghKGF3YWl0IGV4aXN0cyhwYXRoLmRpcm5hbWUoZGVzdFBhdGgpKSkpIHtcbiAgICAgIGF3YWl0IG1rZGlyKHBhdGguZGlybmFtZShkZXN0UGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgY29uc29sZS53YXJuKGBDcmVhdGVkIGRpcmVjdG9yeSAnJHtwYXRoLmRpcm5hbWUoZGVzdFBhdGgpfScgYmVjYXVzZSBpdCBkaWQgbm90IGV4aXN0LmApO1xuICAgIH1cblxuICAgIC8vIO2MjOydvOydtCDsnbTrr7gg7KG07J6s7ZWY66m0IOqxtOuEiOucgeuLiOuLpC5cbiAgICAvLyBzb25hbXUuc2hhcmVkLnRz64qUIO2UhOuhnOygne2KuOyXkOyEnCDsnpDsnKDroa3qsowg7Luk7Iqk7YSw66eI7J207KeV7ZWgIOyImCDsnojslrTslbwg7ZWY66+A66GcLFxuICAgIC8vIOy1nOy0iCAx7ZqM66eMIOyDneyEse2VmOqzoCDsnbTtm4Tsl5DripQg642u7Ja07JOw7KeAIOyViuyKteuLiOuLpC5cbiAgICAvLyDthZztlIzrpr8g64K07JqpKCRbW2RpY3RVdGlsc11dIOuTsSnsnbQg67OA6rK965CY7JeI7J2EIOuVjCDrsJjsmIHsnbQg7ZWE7JqU7ZWY66m0LFxuICAgIC8vIO2VtOuLuSDtjIzsnbzsnYQg7IKt7KCc7ZWcIOuSpCBgcG5wbSBzb25hbXUgc3luY2DroZwg7J6s7IOd7ISx7ZWY66m0IOuQqeuLiOuLpC5cbiAgICBpZiAoYXdhaXQgZXhpc3RzKGRlc3RQYXRoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYXdhaXQgd3JpdGVGaWxlKGRlc3RQYXRoLCBhd2FpdCBmb3JtYXRDb2RlKGNvbnZlcnRlZFRleHQsIGRlc3RQYXRoKSk7XG4gICAgIWlzVGVzdCgpICYmXG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5ib2xkKFwiQ29waWVkOiBcIikgKyBjaGFsay5ibHVlKHBhdGgucmVsYXRpdmUoU29uYW11LmFwcFJvb3RQYXRoLCBkZXN0UGF0aCkpKTtcbiAgfVxufVxuXG4vKipcbiAqIFNvbmFtdSBEaWN0aW9uYXJ5KFNEKeulvCDrqqjrk6Ag7YOA6rKfKGFwaSArIHdlYi9hcHAg65OxKeyXkCDrj5nquLDtmZTtlanri4jri6QuXG4gKlxuICog6rCBIO2DgOqyn+yXkCDrjIDtlbQ6XG4gKiAtIHRhcmdldOydtCBhcGnqsIAg7JWE64uI66m0IOyCrOyaqeyekCDsnpHshLEgbG9jYWxlIO2MjOydvChrby50cy9lbi50cy8uLi4p7J2EIGFwaSDihpIgdGFyZ2V07Jy866GcIOuzteyCrFxuICogLSBzZCDthZztlIzrpr/snYQg66CM642U66eB7ZW07IScIHNkLmdlbmVyYXRlZC50cyDsg53shLEgKG92ZXJ3cml0ZSlcbiAqXG4gKiDtlZwg7YOA6rKf7JeQ7IScIOyLpO2MqO2VtOuPhCDri6Trpbgg7YOA6rKf7J2AIOqzhOyGjSDsp4Ttlontlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhY3Rpb25TeW5jU29uYW11RGljdGlvbmFyeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG4gIGNvbnN0IGkxOG5Db25maWcgPSBTb25hbXUuY29uZmlnLmkxOG47XG5cbiAgY29uc3QgdGFyZ2V0TGlzdCA9IFtcImFwaVwiLCAuLi50YXJnZXRzXSBhcyAoXCJhcGlcIiB8IFwid2ViXCIgfCBcImFwcFwiKVtdO1xuXG4gIGNvbnN0IGFwaUkxOG5EaXIgPSBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCBTb25hbXUuY29uZmlnLmFwaS5kaXIsIFwic3JjL2kxOG5cIik7XG5cbiAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0TGlzdCkge1xuICAgIHRyeSB7XG4gICAgICAvLyB3ZWIvYXBw7J2YIOqyveyasCBsb2NhbGUg7YyM7J2865Ok7J2EIGFwaeyXkOyEnCDrs7XsgqxcbiAgICAgIGlmICh0YXJnZXQgIT09IFwiYXBpXCIpIHtcbiAgICAgICAgYXdhaXQgc3luY0xvY2FsZUZpbGVzKHRhcmdldCwgYXBpSTE4bkRpciwgaTE4bkNvbmZpZy5zdXBwb3J0ZWRMb2NhbGVzKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShcInNkXCIsIHsgdGFyZ2V0IH0sIHsgb3ZlcndyaXRlOiB0cnVlIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBnZW5lcmF0ZSBTRCB0ZW1wbGF0ZSBmb3IgJHt0YXJnZXR9OmAsIGUpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIGFwaeydmCBsb2NhbGUg7YyM7J287J2EIHdlYi9hcHDsnLzroZwg67O17IKs7ZWp64uI64ukLlxuICovXG5hc3luYyBmdW5jdGlvbiBzeW5jTG9jYWxlRmlsZXMoXG4gIHRhcmdldDogc3RyaW5nLFxuICBhcGlJMThuRGlyOiBzdHJpbmcsXG4gIGxvY2FsZXM6IHN0cmluZ1tdLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHRhcmdldEkxOG5EaXIgPSBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCB0YXJnZXQsIFwic3JjL2kxOG5cIik7XG5cbiAgLy8g65SU66CJ7Yag66as6rCAIOyXhuycvOuptCDsg53shLFcbiAgYXdhaXQgbWtkaXIodGFyZ2V0STE4bkRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgZm9yIChjb25zdCBsb2NhbGUgb2YgbG9jYWxlcykge1xuICAgIGNvbnN0IHNvdXJjZUZpbGUgPSBwYXRoLmpvaW4oYXBpSTE4bkRpciwgYCR7bG9jYWxlfS50c2ApO1xuICAgIGNvbnN0IHRhcmdldEZpbGUgPSBwYXRoLmpvaW4odGFyZ2V0STE4bkRpciwgYCR7bG9jYWxlfS50c2ApO1xuXG4gICAgY29uc3Qgc3luY0hlYWRlciA9IFtcbiAgICAgIFwiLyoqXCIsXG4gICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgIFwiICogQVBJ7JeQ7IScIOuPmeq4sO2ZlOuQnCDtjIzsnbzsnoXri4jri6QuIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlwiLFxuICAgICAgXCIgKi9cIixcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgYXdhaXQgY29weUZpbGVXaXRoUmVwbGFjZUNvcmVUb1NoYXJlZChzb3VyY2VGaWxlLCB0YXJnZXRGaWxlLCBzeW5jSGVhZGVyKTtcbiAgICBhd2FpdCB0cmFja1dyaXR0ZW4odGFyZ2V0RmlsZSBhcyBBYnNvbHV0ZVBhdGgpO1xuICAgICFpc1Rlc3QoKSAmJlxuICAgICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIkNvcGllZDogXCIpICsgY2hhbGsuY3lhbihgJHt0YXJnZXR9L3NyYy9pMThuLyR7bG9jYWxlfS50c2ApKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFrQkEsZUFBc0IsbUJBQW1CO0NBQ3ZDLE1BQU0sRUFBRSxNQUFNLFNBQVMsT0FBTyxPQUFPLE9BQU8sVUFBVSxFQUFFO0NBQ3hELE1BQU0sVUFBVSxZQUFZLFFBQVEsWUFBWSxhQUFhLFFBQVE7QUFFckUsT0FBTSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsQ0FBQztBQUN4QyxPQUFNLFFBQVEsSUFBSSxDQUNoQixHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLFdBQVc7QUFDbEQsUUFBTSxVQUFVLEtBQUssS0FBSyxPQUFPLGFBQWEsUUFBUSxjQUFjLEVBQUUsUUFBUTtHQUM5RSxFQUNGLGlCQUFpQixpQkFBaUIsRUFBRSxFQUFFLEVBQUUsV0FBVyxNQUFNLENBQUMsQ0FDM0QsQ0FBQzs7Ozs7OztBQVFKLGVBQXNCLHVCQUNwQixhQUd5QjtBQUN6QixPQUFNLEVBQUUsMEJBQTBCLFlBQVk7Q0FHOUMsTUFBTSxlQUFlLE1BQU0saUJBQ3pCLFlBQ0EsRUFBRSxFQUNGLEVBQ0UsV0FBVyxNQUNaLENBQ0Y7QUFFRCxRQUFPLENBQUMsR0FBRyxhQUFhOzs7Ozs7QUFPMUIsZUFBc0IsMkJBQTJCLFVBQTJDO0FBQzFGLFFBQU8saUJBQWlCLGNBQWMsRUFBRSxVQUFVLENBQUM7Ozs7OztBQU9yRCxlQUFzQix3QkFBaUQ7QUFDckUsU0FDRSxNQUFNLFFBQVEsSUFBSSxDQUNoQixpQkFBaUIsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFdBQVcsTUFBTSxDQUFDLEVBQzFELGlCQUFpQixhQUFhLEVBQUUsRUFBRSxFQUFFLFdBQVcsTUFBTSxDQUFDLENBQ3ZELENBQUMsRUFDRixNQUFNOzs7Ozs7QUFPVixlQUFzQixzQkFBNkM7Q0FDakUsTUFBTSxDQUFDLE9BQU8sTUFBTSxpQkFDbEIsa0JBQ0EsRUFBRSxVQUFVLFNBQVMsRUFDckIsRUFBRSxXQUFXLE1BQU0sQ0FDcEI7QUFDRCxRQUFPLElBQUk7QUFDWCxRQUFPOzs7Ozs7QUFPVCxlQUFzQiwyQkFBb0Q7QUFDeEUsUUFBTyxpQkFBaUIsV0FBVyxFQUFFLEVBQUUsRUFBRSxXQUFXLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBVTdELGVBQXNCLDBDQUFtRTtBQUN2RixLQUFJO0FBQ0YsU0FBTyxNQUFNLGlCQUFpQixnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsV0FBVyxPQUFPLENBQUM7VUFDaEUsR0FBRztBQUdWLE1BQUksYUFBYSwyQkFBMkI7QUFDMUMsVUFBTyxFQUFFOztBQUVYLFFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JWLGVBQXNCLHlCQUNwQixTQUNBLHlCQUNtQjtDQUNuQixNQUFNLGFBQWEsT0FBTyxPQUFPLEtBQUs7Q0FDdEMsTUFBTSxVQUFVLDBCQUNaLFdBQVcsUUFBUSxNQUFNLHdCQUF3QixNQUFNLFdBQVcsRUFBRSxXQUFXLE9BQU8sQ0FBQyxDQUFDLEdBQ3hGO0NBQ0osTUFBTSxFQUFFLEtBQUssV0FBVyxPQUFPLE9BQU87QUFFdEMsU0FDRSxNQUFNLFFBQVEsSUFDWixRQUFRLElBQUksT0FBTyxXQUNqQixRQUFRLElBQ04sUUFBUSxJQUFJLE9BQU8sWUFBWTtFQUM3QixNQUFNLE1BQU0sUUFDVCxRQUFRLElBQUksT0FBTyxJQUFJLElBQUksT0FBTyxHQUFHLENBQ3JDLFFBQVEsaUJBQWlCLGFBQWE7RUFDekMsTUFBTSxNQUFNLFFBQVEsSUFBSTtBQUN4QixNQUFJLENBQUUsTUFBTSxPQUFPLElBQUksRUFBRztBQUN4QixTQUFNLE1BQU0sS0FBSyxFQUFFLFdBQVcsTUFBTSxDQUFDOztFQUV2QyxNQUFNLGFBQWE7R0FDakI7R0FDQTtHQUNBO0dBQ0E7R0FDRCxDQUFDLEtBQUssS0FBSztBQUNaLFFBQU0sZ0NBQWdDLFNBQVMsS0FBSyxXQUFXO0FBQy9ELFFBQU0sYUFBYSxJQUFvQjtBQUN2QyxHQUFDLFFBQVEsSUFDUCxRQUFRLElBQ04sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEtBQUssSUFBSSxRQUFRLEdBQUcsT0FBTyxZQUFZLElBQUksR0FBRyxDQUFDLENBQy9FO0FBQ0gsU0FBTztHQUNQLENBQ0gsQ0FDRixDQUNGLEVBQ0QsTUFBTTs7Ozs7Ozs7QUFTVixlQUFzQix1Q0FBc0Q7Q0FDMUUsTUFBTSxFQUFFLFlBQVksT0FBTyxPQUFPO0NBR2xDLE1BQU0sZ0JBQWdCLEtBQUssS0FDekIsT0FBTyxLQUFLLFFBQVEsUUFBUSxVQUFVLFFBQVEsRUFDOUMsbUJBQ0Q7Q0FDRCxNQUFNLGdCQUFpQixNQUFNLE9BQU8sY0FBYyxHQUFJLE1BQU0sU0FBUyxlQUFlLFFBQVEsR0FBRztDQUcvRixNQUFNLGFBQWE7RUFDakIsU0FDRSxPQUFPLE9BQU8sT0FBTyxXQUNyQixVQUFVLE9BQU8sT0FBTyxPQUFPLFFBQVEsUUFBUSxZQUFZLEdBQUcsT0FBTyxPQUFPLE9BQU8sUUFBUSxRQUFRO0VBQ3JHLFdBQVc7RUFDWjtBQUVELE1BQUssTUFBTSxVQUFVLFNBQVM7RUFJNUIsTUFBTSxVQUFVLEtBQUssS0FDbkIsT0FBTyxLQUFLLFFBQVEsUUFBUSxVQUFVLFFBQVEsRUFDOUMsYUFBYSxPQUFPLGdCQUNyQjtBQUNELE1BQUksQ0FBRSxNQUFNLE9BQU8sUUFBUSxFQUFHO0FBQzVCOztBQUVGLE1BQUksQ0FBRSxNQUFNLE9BQU8sS0FBSyxLQUFLLE9BQU8sYUFBYSxPQUFPLENBQUMsRUFBRztBQUMxRCxTQUFNLElBQUksTUFDUiw2Q0FBNkMsT0FBTywyRkFDckQ7O0VBR0gsTUFBTSxXQUFXLE1BQU0sU0FBUyxTQUFTLFFBQVE7RUFDakQsTUFBTSxnQkFBZ0IsT0FBTyxRQUFRLFdBQVcsQ0FBQyxRQUM5QyxLQUFLLENBQUMsS0FBSyxXQUFXLElBQUksUUFBUSxNQUFNLElBQUksS0FBSyxNQUFNLEVBQ3hELFNBQ0Q7RUFHRCxNQUFNLFdBQVcsS0FBSyxLQUFLLE9BQU8sYUFBYSxRQUFRLGdDQUFnQztBQUd2RixNQUFJLENBQUUsTUFBTSxPQUFPLEtBQUssUUFBUSxTQUFTLENBQUMsRUFBRztBQUMzQyxTQUFNLE1BQU0sS0FBSyxRQUFRLFNBQVMsRUFBRSxFQUFFLFdBQVcsTUFBTSxDQUFDO0FBQ3hELFdBQVEsS0FBSyxzQkFBc0IsS0FBSyxRQUFRLFNBQVMsQ0FBQyw2QkFBNkI7O0FBUXpGLE1BQUksTUFBTSxPQUFPLFNBQVMsRUFBRTtBQUMxQjs7QUFHRixRQUFNLFVBQVUsVUFBVSxNQUFNLFdBQVcsZUFBZSxTQUFTLENBQUM7QUFDcEUsR0FBQyxRQUFRLElBQ1AsUUFBUSxJQUFJLE1BQU0sS0FBSyxXQUFXLEdBQUcsTUFBTSxLQUFLLEtBQUssU0FBUyxPQUFPLGFBQWEsU0FBUyxDQUFDLENBQUM7Ozs7Ozs7Ozs7OztBQWFuRyxlQUFzQiw2QkFBNEM7Q0FDaEUsTUFBTSxFQUFFLFlBQVksT0FBTyxPQUFPO0NBQ2xDLE1BQU0sYUFBYSxPQUFPLE9BQU87Q0FFakMsTUFBTSxhQUFhLENBQUMsT0FBTyxHQUFHLFFBQVE7Q0FFdEMsTUFBTSxhQUFhLEtBQUssS0FBSyxPQUFPLGFBQWEsT0FBTyxPQUFPLElBQUksS0FBSyxXQUFXO0FBRW5GLE1BQUssTUFBTSxVQUFVLFlBQVk7QUFDL0IsTUFBSTtBQUVGLE9BQUksV0FBVyxPQUFPO0FBQ3BCLFVBQU0sZ0JBQWdCLFFBQVEsWUFBWSxXQUFXLGlCQUFpQjs7QUFHeEUsU0FBTSxpQkFBaUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBQVcsTUFBTSxDQUFDO1dBQ3RELEdBQUc7QUFDVixXQUFRLE1BQU0sc0NBQXNDLE9BQU8sSUFBSSxFQUFFOzs7Ozs7O0FBUXZFLGVBQWUsZ0JBQ2IsUUFDQSxZQUNBLFNBQ2U7Q0FDZixNQUFNLGdCQUFnQixLQUFLLEtBQUssT0FBTyxhQUFhLFFBQVEsV0FBVztBQUd2RSxPQUFNLE1BQU0sZUFBZSxFQUFFLFdBQVcsTUFBTSxDQUFDO0FBRS9DLE1BQUssTUFBTSxVQUFVLFNBQVM7RUFDNUIsTUFBTSxhQUFhLEtBQUssS0FBSyxZQUFZLEdBQUcsT0FBTyxLQUFLO0VBQ3hELE1BQU0sYUFBYSxLQUFLLEtBQUssZUFBZSxHQUFHLE9BQU8sS0FBSztFQUUzRCxNQUFNLGFBQWE7R0FDakI7R0FDQTtHQUNBO0dBQ0E7R0FDRCxDQUFDLEtBQUssS0FBSztBQUNaLFFBQU0sZ0NBQWdDLFlBQVksWUFBWSxXQUFXO0FBQ3pFLFFBQU0sYUFBYSxXQUEyQjtBQUM5QyxHQUFDLFFBQVEsSUFDUCxRQUFRLElBQUksTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEtBQUssR0FBRyxPQUFPLFlBQVksT0FBTyxLQUFLLENBQUM7Ozs7Y0F4U2xEO3FCQUVpQzthQUNqQztrQkFDTTtpQkFDRztnQkFDNEI7c0JBRXhCO3FCQUNMIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../../src/syncer/syncer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAKnD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGvF,KAAK,UAAU,GAAG;KACf,GAAG,IAAI,QAAQ,GAAG,YAAY,EAAE;CAClC,CAAC;AAEF,qBAAa,MAAM;IACjB,IAAI,EAAE,UAAU,CAAM;IACtB,KAAK,EAAE,WAAW,CAAM;IACxB,MAAM,EAAE,YAAY,CAAM;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAa;IACvD,YAAY,EAAE,YAAY,CAAsB;IAEhD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B;;;;;;OAMG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;;;;;;;;;;;OAYG;IACG,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChF,OAAO,CAAC,kCAAkC;YAc5B,mCAAmC;YAkBnC,wCAAwC;IAkDtD,+BAA+B,CAC7B,eAAe,EAAE,YAAY,GAC5B,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE;IAiB9B,aAAa;IAIb,cAAc;IAId,YAAY;IAIZ,iBAAiB;IAKjB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BxC;;;;;;OAMG;IACG,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;KAAE,CAAC;IA2CtF,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,UAAU;IAkB1D,OAAO,CAAC,aAAa;IA8Bf,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../../src/syncer/syncer.ts"],"names":[],"mappings":"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"}
|
package/dist/syncer/syncer.js
CHANGED
|
@@ -296,7 +296,8 @@ var init_syncer = __esmMin((() => {
|
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
const generated = await actionGenerateSchemas();
|
|
299
|
-
|
|
299
|
+
const distributable = generated.filter((p) => !p.endsWith(".sso.ts"));
|
|
300
|
+
await actionSyncFilesToTargets(distributable);
|
|
300
301
|
}
|
|
301
302
|
async handleImplementationChanges(diffGroups) {
|
|
302
303
|
Naite.t("handleImplementationChanges", { diffGroups });
|
|
@@ -315,7 +316,7 @@ var init_syncer = __esmMin((() => {
|
|
|
315
316
|
await actionGenerateServices(params);
|
|
316
317
|
await actionGenerateHttps();
|
|
317
318
|
const queries = await actionGenerateSsrQueries();
|
|
318
|
-
await actionSyncFilesToTargets(queries);
|
|
319
|
+
await actionSyncFilesToTargets(queries, ["web"]);
|
|
319
320
|
}
|
|
320
321
|
async handleAuxiliarySymbolChanges(diffGroups) {
|
|
321
322
|
Naite.t("handleAuxiliarySymbolChanges", { diffGroups });
|
|
@@ -421,4 +422,4 @@ var init_syncer = __esmMin((() => {
|
|
|
421
422
|
//#endregion
|
|
422
423
|
init_syncer();
|
|
423
424
|
export { Syncer, init_syncer };
|
|
424
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2VyLmpzIiwibmFtZXMiOlsiU3luY2VyQWN0aW9ucy5hY3Rpb25Db3B5U2hhcmVkVG9UYXJnZXRzSWZOb3RFeGlzdHMiLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU3NyRW50cnlTZXJ2ZXJJZk5vdEV4aXN0cyIsInN5bmNUcmlnZ2VyaW5nUGF0aHM6IEFic29sdXRlUGF0aFtdIiwiU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZUluaXRpYWxUeXBlcyIsIlN5bmNlckFjdGlvbnMuYWN0aW9uU3luY0ZpbGVzVG9UYXJnZXRzIiwiU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZVNjaGVtYXMiLCJwYXJhbXM6IHtcbiAgICAgIG5hbWVzUmVjb3JkOiBFbnRpdHlOYW1lc1JlY29yZDtcbiAgICB9W10iLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU2VydmljZXMiLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlSHR0cHMiLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU3NyUXVlcmllcyIsIlN5bmNlckFjdGlvbnMuYWN0aW9uU3luY0NvbmZpZyIsIlN5bmNlckFjdGlvbnMuYWN0aW9uU3luY1NvbmFtdURpY3Rpb25hcnkiLCJrZXlzOiBUZW1wbGF0ZUtleVtdIiwicCIsInRhcmdldCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jZXIvc3luY2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcImV2ZW50c1wiO1xuaW1wb3J0IHsgdW5saW5rIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBob3QgfSBmcm9tIFwiQHNvbmFtdS1raXQvaG1yLWhvb2tcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IG1pbmltYXRjaCB9IGZyb20gXCJtaW5pbWF0Y2hcIjtcbmltcG9ydCB7IGdyb3VwLCB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuaW1wb3J0IHsgdHlwZSB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyByZWdpc3RlcmVkQXBpcyB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IHR5cGUgV29ya2Zsb3dNZXRhZGF0YSB9IGZyb20gXCIuLi90YXNrcy9kZWNvcmF0b3JcIjtcbmltcG9ydCB7IFRlbXBsYXRlTWFuYWdlciB9IGZyb20gXCIuLi90ZW1wbGF0ZS90ZW1wbGF0ZS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIEdlbmVyYXRlT3B0aW9ucywgdHlwZSBQYXRoQW5kQ29kZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVLZXkgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBtYXBBc3luYywgcmVkdWNlQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGNlbnRlclRleHQgfSBmcm9tIFwiLi4vdXRpbHMvY29uc29sZS11dGlsXCI7XG5pbXBvcnQgeyBpc1Rlc3QgfSBmcm9tIFwiLi4vdXRpbHMvY29udHJvbGxlclwiO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSBcIi4uL3V0aWxzL2ZzLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW5XaXRoR3JhY2VmdWxTaHV0ZG93biB9IGZyb20gXCIuLi91dGlscy9wcm9jZXNzLXV0aWxzXCI7XG5pbXBvcnQgeyBmaW5kQ2hhbmdlZEZpbGVzVXNpbmdDaGVja3N1bXMsIHJlbmV3Q2hlY2tzdW1zIH0gZnJvbSBcIi4vY2hlY2tzdW1cIjtcbmltcG9ydCB7IGdlbmVyYXRlVGVtcGxhdGUsIHJlbmRlclRlbXBsYXRlIH0gZnJvbSBcIi4vY29kZS1nZW5lcmF0b3JcIjtcbmltcG9ydCB7IGNyZWF0ZUVudGl0eSwgZGVsRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5LW9wZXJhdGlvbnNcIjtcbmltcG9ydCB7IGdldENoZWNrc3VtUGF0dGVybkdyb3VwLCBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cEluQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4vZmlsZS1wYXR0ZXJuc1wiO1xuaW1wb3J0IHsgdHlwZSBGaWxlVHlwZSB9IGZyb20gXCIuL2ZpbGUtcGF0dGVybnNcIjtcbmltcG9ydCB7IGxvYWRBcGlzLCBsb2FkTW9kZWxzLCBsb2FkVHlwZXMsIGxvYWRXb3JrZmxvd3MgfSBmcm9tIFwiLi9tb2R1bGUtbG9hZGVyXCI7XG5pbXBvcnQgeyB0eXBlIExvYWRlZEFwaXMsIHR5cGUgTG9hZGVkTW9kZWxzLCB0eXBlIExvYWRlZFR5cGVzIH0gZnJvbSBcIi4vbW9kdWxlLWxvYWRlclwiO1xuaW1wb3J0ICogYXMgU3luY2VyQWN0aW9ucyBmcm9tIFwiLi9zeW5jZXItYWN0aW9uc1wiO1xuXG50eXBlIERpZmZHcm91cHMgPSB7XG4gIFtrZXkgaW4gRmlsZVR5cGVdOiBBYnNvbHV0ZVBhdGhbXTtcbn07XG5cbmV4cG9ydCBjbGFzcyBTeW5jZXIge1xuICBhcGlzOiBMb2FkZWRBcGlzID0gW107XG4gIHR5cGVzOiBMb2FkZWRUeXBlcyA9IHt9O1xuICBtb2RlbHM6IExvYWRlZE1vZGVscyA9IHt9O1xuICB3b3JrZmxvd3M6IE1hcDxzdHJpbmcsIFdvcmtmbG93TWV0YWRhdGFbXT4gPSBuZXcgTWFwKCk7XG4gIGV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiDssrTtgazshKzsnbQg67OA6rK965CcIOu2gOu2hOyXkCDrjIDtlbQg7Iux7YGs66W8IOynhO2Wie2VqeuLiOuLpC5cbiAgICogZGV2IOyEnOuyhOqwgCDsspjsnYwg65a07J2EIOuVjCwgc29uYW11IHN5bmMg7ZWgIOuVjCDsi6TtlonrkKnri4jri6QuIOydtO2bhOyXkOuKlCBzeW5jRnJvbVdhdGNoZXIg6rK966Gc66W8IO2DgOyalC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIHN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8g7LSI6riwIOu2gO2KuOyKpO2KuOueqSEg7JaY64Sk65Ok7J2AIGlkZW1wb3RlbnTtlZjqs6Ag6rCA67ON6riwIOuVjOusuOyXkCDrrLTsp4DshLEg7Iuk7ZaJ7ZW064+EIOuQqeuLiOuLpC5cbiAgICAvLyDslpjrhKTrk6TsnYAgc29uYW11LmxvY2vsl5Ag65Ok7Ja06rCA7KeA64+EIOyViuqzoCDrlLDrnbzshJwgSE1SIOqyveuhnOulvCDtg4Dsp4Drj4Qg7JWK64qUIOy5nOq1rOuTpOyeheuLiOuLpC5cbiAgICAvLyDqt7jrnpjshJwg7JWE66y0IOuVjOuCmCDqt7jrg6Ug64+M66Ck7KO866m0IOuQmOuKlOuNsCwgc3luY0Zyb21XYXRjaGVy7JeQ7IScIOunpOuyiCDtlZjripQg6rKD7J2AIOuCreu5hOydtOuLiCDsl6zquLDshJwg7ZWcIOuyiOunjCDtlanri4jri6QuXG4gICAgYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25Db3B5U2hhcmVkVG9UYXJnZXRzSWZOb3RFeGlzdHMoKTtcbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU3NyRW50cnlTZXJ2ZXJJZk5vdEV4aXN0cygpO1xuXG4gICAgLy8g67CU64CQIOqyg+ydtCDsl4bsnLzrqbQg6re464OlIOuEmOyWtOqwgOyalC5cbiAgICBjb25zdCBjaGFuZ2VkRmlsZXMgPSBhd2FpdCBmaW5kQ2hhbmdlZEZpbGVzVXNpbmdDaGVja3N1bXMoKTtcbiAgICBpZiAoY2hhbmdlZEZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuYmxhY2suYmdHcmVlbihjZW50ZXJUZXh0KFwiQWxsIGZpbGVzIGFyZSBzeW5jZWQhXCIpKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g7Jes6riw7IScIOyLpOygnCDsi7Htgawg64+Z7J6R7J2EIOyImO2Wie2VqeuLiOuLpC5cbiAgICAvLyDri6Trp4wg7Iux7YGsIOykkeyXkCDtlITroZzshLjsiqTqsIAg7KO97Jy866m0IOq8rOyXrOuyhOumrOq4sCDrlYzrrLjsl5AsXG4gICAgLy8g7Iuc6re464SQ7JeQ64+EIOyeoOyLnCDrsoTti7gg7IiYIOyeiOuKlCDtmZjqsr0g7IaN7JeQ7IScIOyLse2BrOulvCDsi6Ttlontlanri4jri6QuXG4gICAgYXdhaXQgcnVuV2l0aEdyYWNlZnVsU2h1dGRvd24oXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIOyWmOqwgCDsi7Htgawg7J6R7JeFIOyImO2Wie2VmOuKlCDrs7jssrTsnoXri4jri6QuXG4gICAgICAgIGF3YWl0IHRoaXMuZG9TeW5jQWN0aW9ucyhjaGFuZ2VkRmlsZXMpO1xuXG4gICAgICAgIC8vIOyLse2BrCDslaHshZjsnbQg64Gd64KY66m0IO2VreyDgSDssrTtgazshKzsnYQg64uk7IucIOqwseyLoO2VqeuLiOuLpC5cbiAgICAgICAgYXdhaXQgcmVuZXdDaGVja3N1bXMoKTtcbiAgICAgIH0sXG4gICAgICB7IHdoZW5UaGlzSGFwcGVuczogXCJTSUdVU1IyXCIsIHdhaXRGb3JVcFRvOiAyMDAwMCB9LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog6rCV7KCcIO2SgC3si7Htgaw6IGxvY2vsnYQg66y07Iuc7ZWY6rOgIOyymOydjOu2gO2EsCDri6Tsi5wg7Iux7YGs7ZWp64uI64ukLlxuICAgKlxuICAgKiAqKuyCrOyaqeyymCoqOiBnaXQgcG9zdC1tZXJnZSBob29rLCBDSSwgZGV2IOyEnOuyhOydmCBgZmAg7ZWr7YKkLlxuICAgKiAqKuyLpO2MqCDslYjsoITshLEqKjog64+E7KSR7JeQIO2UhOuhnOyEuOyKpOqwgCDso73slrQgbG9jayDsl4bripQg7IOB7YOc66GcIOuCqOyVhOuPhCDrrLTtlbQg4oCUIOuLpOydjCBzeW5j7JeQ7IScXG4gICAqIGxvY2sg7JeG7Jy866m0IOyekOyXsOyKpOufveqyjCDtkoAt7Iux7YGs6rCAIO2KuOumrOqxsOuQmOyWtCDsg4ggbG9ja+ydtCDsnpHshLHrkKguXG4gICAqL1xuICBhc3luYyBmb3JjZVN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9ja1BhdGggPSBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBcInNvbmFtdS5sb2NrXCIpO1xuICAgIGlmIChhd2FpdCBleGlzdHMobG9ja1BhdGgpKSB7XG4gICAgICBhd2FpdCB1bmxpbmsobG9ja1BhdGgpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaGVy6rCAIGJhdGNo66GcIOuqqOydgCDrs4Dqsr0g7YyM7J2865Ok7JeQIOuMgO2VtCDtlZwg67KI7J2YIEhNUi9zeW5jIOyCrOydtO2BtOydhCDrj5Xri4jri6QuXG4gICAqXG4gICAqIEhNUuydgCBhcGkvc3JjIOyViOyXkOyEnCDsnbzslrTrgpjripQg66qo65OgIO2MjOydvOuTpOyXkCDrjIDtlbTshJwg7IiY7ZaJ7ZWp64uI64ukLlxuICAgKiBjaGVja3N1bVBhdHRlcm5Hcm91cCDrp6Tsua0g7Jes67aA7JmAIOustOq0gO2VmOqyjCBhcGkvc3JjIOyghOyytCDrjIDsg4HsnoXri4jri6QuXG4gICAqIOqwgOuguSBhcGkvc3JjL3V0aWxzL3N1YnNldC1sb2FkZXJzLnRzIOqwmeydgCDtjIzsnbzrj4Qg67OA6rK965CY66m0IEhNUuydgCDtlbTspI3ri4jri6QuXG4gICAqXG4gICAqIFN5bmPripQgY2hlY2tzdW1QYXR0ZXJuR3JvdXDsnLzroZwg66ek7Lmt65CY64qUIO2MjOydvOuTpOyXkCDrjIDtlbTshJzrp4wg7IiY7ZaJ7ZWp64uI64ukLlxuICAgKiDsl6zquLDsl5DripQgd2ViL3NyY+uCmCBhcHAvc3JjIOqwmeydgCDri6TrpbggdGFyZ2V07J2YIO2MjOydvOydtCDtj6ztlajrkKAg7IiYIOyeiOyKteuLiOuLpC5cbiAgICog7J2065+wIG5vbi1hcGkg6rK966Gc7J2YIO2MjOydvOuTpOydgCBITVLqs7zripQg7JWE66y0IOyDgeq0gOydtCDsl4bsnLzrr4DroZwsIGludmFsaWRhdGXsnYQg7ZWY7KeAIOyViuyKteuLiOuLpC5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVFdmVudHMgLSBwYXRoIOKGkiBldmVudCDrp7UuIGV2ZW5064qUIFwiY2hhbmdlXCIgfCBcImFkZFwiLlxuICAgKi9cbiAgYXN5bmMgaG1yQW5kU3luYyhmaWxlRXZlbnRzOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBobXJBY3Rpb25SZXF1aXJlZEV2ZW50cyA9IHRoaXMuZXh0cmFjdEhtckFjdGlvblJlcXVpcmVkRmlsZUV2ZW50cyhmaWxlRXZlbnRzKTtcbiAgICBjb25zdCBzeW5jVHJpZ2dlcmluZ1BhdGhzID0gYXdhaXQgdGhpcy5leHRyYWN0U3luY1RyaWdnZXJpbmdGaWxlRXZlbnRQYXRocyhmaWxlRXZlbnRzKTtcblxuICAgIC8vIEhNUiDsmIHsl606IO2MjOydvCDsnbTrsqTtirgg7KSRIGFwaeydmCDrqqjrk4gg6re4656Y7ZSE7JeQIOyeiOuKlCDtjIzsnbzrk6Tsl5Ag64yA7ZWcIOuzgOuPmeydgCBobXJBY3Rpb25SZXF1aXJlZEV2ZW50c+uhnCDsnqHtnpnri4jri6QuXG4gICAgLy8g7J20IOy5nOq1rOuTpOydgCBpbnZhbGlkYXRlIOyymOumrO2VtOykjeuLiOuLpC5cbiAgICAvLyDsnbQg7Zi47Lac7J2AIOyVhOuemCBzeW5j67O064ukIOustOyhsOqxtCDrqLzsoIAg7J287Ja064KY7JW8IO2VqeuLiOuLpCFcbiAgICAvLyDsmZzrg5DtlZjrqbQgc3luY+yXkOyEnOuKlCDrs4Dqsr3rkJwgbW9kZWwg7L2U65Oc66W8IOyDiOuhnCBpbXBvcnTtlbTshJwg7LKY66as7ZW07JW8IO2VmOuKlCDqsr3smrDrj4Qg7J6I6riwIOuVjOusuOyeheuLiOuLpC5cbiAgICBhd2FpdCB0aGlzLmludmFsaWRhdGVEZXBlbmRlbnRzQWZmZWN0ZWRCeUZpbGVFdmVudHMoaG1yQWN0aW9uUmVxdWlyZWRFdmVudHMpO1xuXG4gICAgLy8gU3luYyDsmIHsl606IGNoZWNrc3VtUGF0dGVybkdyb3Vw7JeQIOuqheyLnOuQnCDtjIzsnbzrk6Tsl5Ag64yA7ZWcIOuzgOuPmeydgCBzeW5jVHJpZ2dlcmluZ1BhdGhz66GcIOyeoe2emeuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok7J2AIOyggeygiO2VnCBzeW5jIOyekeyXheycvOuhnCDrjIDsnZHtlanri4jri6QuXG4gICAgaWYgKHN5bmNUcmlnZ2VyaW5nUGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5kb1N5bmNBY3Rpb25zKHN5bmNUcmlnZ2VyaW5nUGF0aHMpO1xuICAgIH1cblxuICAgIC8vIOyLse2BrCDsnpHsl4XsnbQg64Gd64Ks7Jy866m0IOustOyngOyEsSDroZzrk5zrpbwg7IiY7ZaJ7ZWp64uI64ukLlxuICAgIC8vIOyLse2BrOulvCDslYgg7ZWcIOqyveyasOyXkOuPhCDroZzrk5zripQg7ZW07JW8IO2VtOyalC4g7JyE7JeQ7IScIOq0gOugqOyeiOuKlCDsuZzqtazrk6TsnYAg64ukIGludmFsaWRhdGUg65CY7JeI6rGw65Og7JqUIVxuICAgIC8vXG4gICAgLy8g67OA6rK965CcIO2MjOydvOuTpOyXkCDrjIDtlbTshJwg7IOI66Gt6rKMIOuLueqyqOyYpOuKlChsb2FkKSDtlonsnITripQgZG9TeW5jQWN0aW9uc+yXkOyEnCDtlZjsp4Ag7JWK7Iq164uI64ukLlxuICAgIC8vIGRvU3luY0FjdGlvbnPsl5DshJzripQg7YyM7J287J2EIOydveqzoCDrp4zrk5zripQg7Iux7YGsIO2WieychOunjCDtlanri4jri6QuXG4gICAgLy8g6rGw6riw7IScIOuUsSDrs4Dqsr3rkJwg67aA67aE7JeQIOyYge2Wpeuwm+uKlCBhdXRvbG9hZOunjCDshKDrs4TtlbTshJwg7IiY7ZaJ7ZWY66Ck66m0IOuEiOustCDsp4DsoIDrtoTtlZjqs6Ag67O17J6h7ZW07KeR64uI64ukLlxuICAgIC8vXG4gICAgLy8g7Y287Y+s66i87IqkIOyYge2WpeydgCDrrLTsi5ztlbTrj4Qg7KKL7Iq164uI64ukLlxuICAgIC8vIOyWtOywqO2UvCBobXItaG9va+yXkCDsnZjtlbQgaW52YWxpZGF0ZeuQnCDrtoDrtoTrk6TsnbQg7JWE64uI652866m0IOy6kOyLnCDqt7jrjIDroZwg7Jyg7KeA7ZWp64uI64ukLlxuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRUeXBlcygpO1xuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRNb2RlbHMoKTtcbiAgICBhd2FpdCB0aGlzLmF1dG9sb2FkQXBpcygpO1xuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRXb3JrZmxvd3MoKTtcbiAgICBhd2FpdCB0aGlzLmF1dG9sb2FkU3NyUm91dGVzKCk7XG5cbiAgICB0aGlzLmV2ZW50RW1pdHRlci5lbWl0KFwib25ITVJDb21wbGV0ZWRcIik7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RIbXJBY3Rpb25SZXF1aXJlZEZpbGVFdmVudHMoXG4gICAgZmlsZUV2ZW50czogTWFwPEFic29sdXRlUGF0aCwgXCJjaGFuZ2VcIiB8IFwiYWRkXCI+LFxuICApOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4ge1xuICAgIGNvbnN0IGFwaVNyYyA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwic3JjXCIpO1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4oKTtcbiAgICBmb3IgKGNvbnN0IFtmaWxlUGF0aCwgZXZlbnRdIG9mIGZpbGVFdmVudHMpIHtcbiAgICAgIGlmICghZmlsZVBhdGguc3RhcnRzV2l0aChhcGlTcmMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnNldChmaWxlUGF0aCwgZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHRyYWN0U3luY1RyaWdnZXJpbmdGaWxlRXZlbnRQYXRocyhcbiAgICBmaWxlRXZlbnRzOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4sXG4gICk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgICBjb25zdCBjaGVja1BhdHRlcm5Hcm91cCA9IGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTtcbiAgICBjb25zdCBzeW5jVHJpZ2dlcmluZ1BhdGhzOiBBYnNvbHV0ZVBhdGhbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2RpZmZGaWxlUGF0aF0gb2YgZmlsZUV2ZW50cykge1xuICAgICAgY29uc3QgaXNJbkNoZWNrUGF0dGVybkdyb3VwID0gT2JqZWN0LnZhbHVlcyhjaGVja1BhdHRlcm5Hcm91cCkuc29tZSgocGF0dGVybikgPT5cbiAgICAgICAgbWluaW1hdGNoKGRpZmZGaWxlUGF0aCwgcGF0dGVybiksXG4gICAgICApO1xuICAgICAgaWYgKCFpc0luQ2hlY2tQYXR0ZXJuR3JvdXApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzeW5jVHJpZ2dlcmluZ1BhdGhzLnB1c2goZGlmZkZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3luY1RyaWdnZXJpbmdQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW52YWxpZGF0ZURlcGVuZGVudHNBZmZlY3RlZEJ5RmlsZUV2ZW50cyhcbiAgICBmaWxlRXZlbnRzOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4sXG4gICkge1xuICAgIGZvciAoY29uc3QgW2RpZmZGaWxlUGF0aCwgZXZlbnRdIG9mIGZpbGVFdmVudHMpIHtcbiAgICAgIC8vIOuzgOqyveuQnCDtjIzsnbzqs7wgZGVwZW5kZW50IO2MjOydvOuTpOydhCBpbnZhbGlkYXRlIO2VqeuLiOuLpC5cbiAgICAgIC8vIO2VnCDrsogg7J207IOBIGltcG9ydOuQnCDsuZzqtazrk6Tsl5Ag64yA7ZW07ISc66eMIOyLpOygnCDsnpHsl4XsnbQg7J287Ja064Kp64uI64ukLlxuICAgICAgLy8g6re465+s64uIIOyViOyLrO2VmOqzoCBpbnZhbGlkYXRlIO2VtOuPhCDrkKnri4jri6QuXG4gICAgICAvLyDthYzsiqTtirgg7ZmY6rK97JeQ7ISc64qUIGhvdC5pbnZhbGlkYXRlRmlsZeyLnCDstIjquLAg7JeQ65+s6rCAIOuwnOyDne2VmOq4sCDrlYzrrLjsl5AgaW52YWxpZGF0ZSDtlZjsp4Ag7JWK7Iq164uI64ukLlxuICAgICAgaWYgKCFpc1Rlc3QoKSkge1xuICAgICAgICBjb25zdCBpbnZhbGlkYXRlZFBhdGhzID0gKGF3YWl0IGhvdC5pbnZhbGlkYXRlRmlsZShkaWZmRmlsZVBhdGgsIGV2ZW50KSkgYXMgQWJzb2x1dGVQYXRoW107XG5cbiAgICAgICAgaWYgKGludmFsaWRhdGVkUGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmJvbGQoYPCflIQgSW52YWxpZGF0ZWQ6YCkpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBpbnZhbGlkYXRlZFBhdGggb2YgaW52YWxpZGF0ZWRQYXRocykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8g66eM7JW9IG1vZGVsLnRzIO2MjOydvOydtCDrs4Dqsr0oaW52YWxpZGF0ZSnrkJjsl4jri6Q/IOq3uOufrOuptCByZWdpc3RlcmVkQXBpcyDspJHsl5DshJwg7J20IOuqqOuNuOyXkCDtlbTri7ntlZjripQgYXBp65Ok7J2AIOyngOybjOykmOyalC5cbiAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJlZEFwaXPripQg7Ya17Jy866GcIOuLpCDrgqDroKTrsoTrprQg7IiYIOyXhuyKteuLiOuLpC4gcmVnaXN0ZXJlZEFwaXPsl5Ag7Jis65287Jik64qUIOy5nOq1rOuTpOydgCDstIjquLAg66Gc65Oc7IucIOuYkOuKlCBITVLsi5zsl5Drp4wg65Ox66Gd65CY6riwIOuVjOusuOyeheuLiOuLpC5cbiAgICAgICAgICAgICAgLy8g65Sw65287IScIG1vZGVsLnRzIO2MjOydvOydmCDrs4Dqsr3snLzroZwg64uk7J2M67KIIOyDiOuhnOyatCBldmFs7J20IOyYiOyDgeuQmOuKlCDsnbQg7Iuc7KCQ7JeQ7ISc66eMLCDsnbQg66qo64247JeQ7IScIOuCmOyYqCByZWdpc3RlcmVkQXBpc+uTpOydhCDsp4Dsm4zspIQg7IiYIOyeiOyKteuLiOuLpC5cbiAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlZEFwaXMgPSB0aGlzLnJlbW92ZUludmFsaWRhdGVkUmVnaXN0ZXJlZEFwaXMoaW52YWxpZGF0ZWRQYXRoKTtcbiAgICAgICAgICAgICAgaWYgKHJlbW92ZWRBcGlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGNoYWxrLmJsdWUoYC0gJHtwYXRoLnJlbGF0aXZlKFNvbmFtdS5hcGlSb290UGF0aCwgaW52YWxpZGF0ZWRQYXRoKX1gKSxcbiAgICAgICAgICAgICAgICAgIGNoYWxrLmdyYXkoYCh3aXRoICR7cmVtb3ZlZEFwaXMubGVuZ3RofSBBUElzKWApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShgLSAke3BhdGgucmVsYXRpdmUoU29uYW11LmFwaVJvb3RQYXRoLCBpbnZhbGlkYXRlZFBhdGgpfWApKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIGNoYWxrLnJlZChgRmFpbGVkIHRvIHJlbW92ZSBpbnZhbGlkYXRlZCByZWdpc3RlcmVkIEFQSXMgZm9yICR7aW52YWxpZGF0ZWRQYXRofWApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBkZXZSdW5uZXIg7Zmc7ISx7ZmUIOyLnCwg67OA6rK965CcIOyGjOyKpCDtjIzsnbzsnYQgVml0ZXN0IOuqqOuTiCDqt7jrnpjtlITsl5DshJzrj4Qg66y07Zqo7ZmU7ZWp64uI64ukLlxuICAgICAgLy8gVml0ZeydmCBtb2R1bGVHcmFwaC5pbnZhbGlkYXRlTW9kdWxlKCnsnbQgaW1wb3J0ZXIg67Cp7Zal7Jy866GcIOyerOq3gOyggSBjYXNjYWRl7ZWY66+A66GcLFxuICAgICAgLy8g7IaM7IqkIO2MjOydvCDtlZjrgpjrp4wg66y07Zqo7ZmU7ZWY66m0IOydtOulvCBpbXBvcnTtlZjripQg7YWM7Iqk7Yq4IO2MjOydvOuPhCDsnpDrj5nsnLzroZwg66y07Zqo7ZmU65Cp64uI64ukLlxuICAgICAgaWYgKCFpc1Rlc3QoKSAmJiBTb25hbXUuY29uZmlnLnRlc3Q/LmRldlJ1bm5lcj8uZW5hYmxlZCAmJiBTb25hbXUuZGV2Vml0ZXN0TWFuYWdlcikge1xuICAgICAgICBTb25hbXUuZGV2Vml0ZXN0TWFuYWdlci5pbnZhbGlkYXRlRmlsZXMoW2RpZmZGaWxlUGF0aF0pO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBjaGFsay5kaW0oYFRlc3QgaW52YWxpZGF0ZWQ6ICR7cGF0aC5yZWxhdGl2ZShTb25hbXUuYXBpUm9vdFBhdGgsIGRpZmZGaWxlUGF0aCl9YCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSW52YWxpZGF0ZWRSZWdpc3RlcmVkQXBpcyhcbiAgICBpbnZhbGlkYXRlZFBhdGg6IEFic29sdXRlUGF0aCxcbiAgKTogKHR5cGVvZiByZWdpc3RlcmVkQXBpcylbbnVtYmVyXVtdIHtcbiAgICBpZiAoIWludmFsaWRhdGVkUGF0aC5lbmRzV2l0aChcIi5tb2RlbC50c1wiIC8q7IaM7IqkIOy9lOuTnOulvCDri6Tro6jripQg7IOB7Zmp7J2064uIIC50cyDqsr3roZzroZwg67SF64uI64ukLiovKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGl0eUlkID0gRW50aXR5TWFuYWdlci5nZXRFbnRpdHlJZEZyb21QYXRoKGludmFsaWRhdGVkUGF0aCk7XG4gICAgY29uc3QgdG9SZW1vdmUgPSByZWdpc3RlcmVkQXBpcy5maWx0ZXIoKGFwaSkgPT4gYXBpLm1vZGVsTmFtZSA9PT0gYCR7ZW50aXR5SWR9TW9kZWxgKTtcbiAgICBmb3IgKGNvbnN0IGFwaSBvZiB0b1JlbW92ZSkge1xuICAgICAgY29uc3QgaWR4ID0gcmVnaXN0ZXJlZEFwaXMuaW5kZXhPZihhcGkpO1xuICAgICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgICAgcmVnaXN0ZXJlZEFwaXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvUmVtb3ZlO1xuICB9XG5cbiAgYXN5bmMgYXV0b2xvYWRUeXBlcygpIHtcbiAgICB0aGlzLnR5cGVzID0gYXdhaXQgbG9hZFR5cGVzKCk7XG4gIH1cblxuICBhc3luYyBhdXRvbG9hZE1vZGVscygpIHtcbiAgICB0aGlzLm1vZGVscyA9IGF3YWl0IGxvYWRNb2RlbHMoKTtcbiAgfVxuXG4gIGFzeW5jIGF1dG9sb2FkQXBpcygpIHtcbiAgICB0aGlzLmFwaXMgPSBhd2FpdCBsb2FkQXBpcygpO1xuICB9XG5cbiAgYXN5bmMgYXV0b2xvYWRXb3JrZmxvd3MoKSB7XG4gICAgdGhpcy53b3JrZmxvd3MgPSBhd2FpdCBsb2FkV29ya2Zsb3dzKCk7XG4gICAgYXdhaXQgU29uYW11LndvcmtmbG93cy5zeW5jaHJvbml6ZSh0aGlzLndvcmtmbG93cyk7XG4gIH1cblxuICBhc3luYyBhdXRvbG9hZFNzclJvdXRlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzc3JDb25maWdQYXRoID0gcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCJzcmMvc3NyXCIpO1xuXG4gICAgLy8g6riw7KG0IHJvdXRlcyDstIjquLDtmZRcbiAgICBjb25zdCB7IGNsZWFyU1NSUm91dGVzIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi9zc3JcIik7XG4gICAgY2xlYXJTU1JSb3V0ZXMoKTtcblxuICAgIC8vIHNzciDtj7TrjZQg7JeG7Jy866m0IOyKpO2CtVxuICAgIGlmICghKGF3YWl0IGV4aXN0cyhzc3JDb25maWdQYXRoKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzc3Ig7Y+0642UIOyViOydmCDrqqjrk6AgLnRzIO2MjOydvCDroZzrk5xcbiAgICBjb25zdCB7IGdsb2JBc3luYyB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIik7XG4gICAgY29uc3QgeyBpbXBvcnRNZW1iZXJzIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi91dGlscy9lc20tdXRpbHNcIik7XG4gICAgY29uc3QgeyBydW50aW1lUGF0aCB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiKTtcblxuICAgIC8vIHJ1bnRpbWVQYXRo66W8IOyCrOyaqe2VmOyXrCDqsJzrsJwv7ZSE66Gc642V7IWYIO2ZmOqyveyXkCDrp57ripQg7ZmV7J6l7J6QIOyymOumrFxuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKHBhdGguam9pbihzc3JDb25maWdQYXRoLCBydW50aW1lUGF0aChcIioqLyoudHNcIikpKTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gaW1wb3J0TWVtYmVyc+ulvCDsgqzsmqntlZjrqbQg7YyM7J287J2YIHNpZGUgZWZmZWN0KHJlZ2lzdGVyU1NSIO2YuOy2nCnqsIAg7Iuk7ZaJ65CoXG4gICAgICAgIGF3YWl0IGltcG9ydE1lbWJlcnMoZmlsZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkIFNTUiByb3V0ZTogJHtmaWxlfWAsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDsi6TsoJwg7Iux7YGs66W8IOyImO2Wie2VmOuKlCDrs7jssrTsnoXri4jri6QuXG4gICAqIOuzgOqyveuQnCDtjIzsnbzrk6TsnYQg7YOA7J6F67OE66GcIOu2hOulmO2VmOqzoCDqsIEg7YOA7J6F7JeQIOunnuuKlCDslaHshZjsnYQg7Iuk7ZaJ7ZWp64uI64ukLlxuICAgKlxuICAgKiBAcGFyYW0gZGlmZkZpbGVQYXRocyAtIOuzgOqyveuQnCDtjIzsnbzrk6TsnZgg7KCI64yAIOqyveuhnCDrqqnroZ1cbiAgICogQHJldHVybnMgZGlmZlR5cGVzIC0g67OA6rK965CcIO2MjOydvOydmCDtg4DsnoUg66qp66GdIChlbnRpdHksIHR5cGVzLCBtb2RlbCDrk7EpXG4gICAqL1xuICBhc3luYyBkb1N5bmNBY3Rpb25zKGRpZmZGaWxlUGF0aHM6IEFic29sdXRlUGF0aFtdKTogUHJvbWlzZTx7IGRpZmZUeXBlczogRmlsZVR5cGVbXSB9PiB7XG4gICAgY29uc3QgZGlmZkdyb3VwcyA9IHRoaXMuY2FsY3VsYXRlRGlmZkdyb3VwcyhkaWZmRmlsZVBhdGhzKTtcbiAgICBjb25zdCBkaWZmVHlwZXMgPSBPYmplY3Qua2V5cyhkaWZmR3JvdXBzKSBhcyBGaWxlVHlwZVtdO1xuXG4gICAgLy8g7Jes6riw64qUIOuzhOuhnCDspJHsmpTtlZwg7YyM7Yq464qUIOyVhOuLmeuLiOuLpC5cbiAgICAvLyDslYTrnpjsnZggaWYg7KCE6rCc66W8IOq5lOuBlO2VmOqyjCDtlZjroKTqs6Ag66eM65OgIERTTCDqsJnsnYAg6rGw65287IScLCDrrLTsi5ztlZjshZTrj4Qg65Cp64uI64ukLlxuICAgIGNvbnN0IHsgY2hhbmdlTWF0Y2hlcywgbm90aGluZ01hdGNoZXMsIHVuaGFuZGxlZFBhdGhzIH0gPSB0aGlzLmNoYW5nZU1hdGNoZXIoXG4gICAgICBkaWZmVHlwZXMsXG4gICAgICBkaWZmR3JvdXBzLFxuICAgICk7XG5cbiAgICBpZiAoY2hhbmdlTWF0Y2hlcyhcImVudGl0eVwiLCBcInR5cGVzXCIpKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVRydXRoU291cmNlQ2hhbmdlcyhkaWZmR3JvdXBzKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlTWF0Y2hlcyhcIm1vZGVsXCIsIFwiZnJhbWVcIikpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlSW1wbGVtZW50YXRpb25DaGFuZ2VzKGRpZmZHcm91cHMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VNYXRjaGVzKFwidHlwZXNcIiwgXCJmdW5jdGlvbnNcIikpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQXV4aWxpYXJ5U3ltYm9sQ2hhbmdlcyhkaWZmR3JvdXBzKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlTWF0Y2hlcyhcImNvbmZpZ1wiKSkge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVDb25maWdDaGFuZ2VzKGRpZmZHcm91cHMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VNYXRjaGVzKFwiaTE4blwiLCBcImVudGl0eVwiIC8q66CI7J2067iUKi8sIFwiY29uZmlnXCIgLypkZWZhdWx0TG9jYWxl65OxKi8pKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVNvbmFtdURpY3Rpb25hcnlSZWxhdGVkQ2hhbmdlcyhkaWZmR3JvdXBzKTtcbiAgICB9XG5cbiAgICBpZiAobm90aGluZ01hdGNoZXMoKSkge1xuICAgICAgLy8g7YyM7J28IOuzgOqyveydgCDqsJDsp4DrkJjsl4jsnLzrgpgg7KCAIOychCDslrTripAgY2hhbmdlTWF0Y2hlc+yXkOuPhCDqsbjrpqzsp4Ag7JWK7J2AIO2MjOydvOuTpOydtCBkcmlmdHPsnoXri4jri6QuXG4gICAgICAvLyBzeW5jZXLripQg7IaM7Iqk7J2YIOuzgOqyveyXkOuKlCDrsJjsnZHtlZjsp4Drp4wg7IKw7Lac66y87J2YIOuzgOqyvShkcmlmdCnsl5DripQg7KeB7KCR7KCB7Jy866GcIOuwmOydke2VmOyngCDslYrsirXri4jri6QuXG4gICAgICAvLyDrjIDsi6Ag7J20IGRyaWZ07JeQIOuMgO2VtCDqsr3qs6Ag7KCV64+E66eMIOy2nOugpe2VtOykjeuLiOuLpC5cbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRHJpZnRzKHVuaGFuZGxlZFBhdGhzKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaWZmVHlwZXMsXG4gICAgfTtcbiAgfVxuXG4gIGNhbGN1bGF0ZURpZmZHcm91cHMoZGlmZkZpbGVzOiBBYnNvbHV0ZVBhdGhbXSk6IERpZmZHcm91cHMge1xuICAgIGNvbnN0IHBhdHRlcm5Hcm91cCA9IGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCk7XG4gICAgY29uc3QgZmlsZVR5cGVzID0gT2JqZWN0LmtleXMocGF0dGVybkdyb3VwKSBhcyBGaWxlVHlwZVtdO1xuXG4gICAgcmV0dXJuIGdyb3VwKGRpZmZGaWxlcywgKGZpbGVQYXRoKSA9PiB7XG4gICAgICAvLyDsoIjrjIAg6rK966GcIOKGkiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICjsmIg6IFwiYXBpL3NyYy8uLi5cIiwgXCJ3ZWIvc3JjLy4uLlwiKVxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShTb25hbXUuYXBwUm9vdFBhdGgsIGZpbGVQYXRoKTtcbiAgICAgIGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi4uXCIpKSByZXR1cm4gXCJ1bmtub3duXCI7XG5cbiAgICAgIGZvciAoY29uc3QgZmlsZVR5cGUgb2YgZmlsZVR5cGVzKSB7XG4gICAgICAgIGlmIChtaW5pbWF0Y2gocmVsYXRpdmVQYXRoLCBwYXR0ZXJuR3JvdXBbZmlsZVR5cGVdKSkge1xuICAgICAgICAgIHJldHVybiBmaWxlVHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICAgIH0pIGFzIHVua25vd24gYXMgRGlmZkdyb3VwcztcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlTWF0Y2hlcihkaWZmVHlwZXM6IEZpbGVUeXBlW10sIGRpZmZHcm91cHM6IERpZmZHcm91cHMpIHtcbiAgICBjb25zdCBoYW5kbGVkID0gbmV3IFNldDxGaWxlVHlwZT4oKTtcblxuICAgIC8qKlxuICAgICAqIOuzgOqyvSDsgqztla3snbQg7J247J6Q66GcIOuwm+ydgCBGaWxlVHlwZeuTpCDspJEg7ZWY64KYIOydtOyDgeydhCDtj6ztlajtlZjripTsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgICAqIOqwgOuguSBbXCJlbnRpdHlcIl3qsIAg67OA6rK965CcIO2YuOy2nOyXkOyEnCBjaGFuZ2VNYXRjaGVzKFwiZW50aXR5XCIp64qUIHRyeWXrpbwg67CY7ZmY7ZWY66mwLFxuICAgICAqIFtcInR5cGVzXCIsIFwiaTE4blwiXeydtCDrs4Dqsr3rkJwg7Zi47Lac7JeQ7IScIGNoYW5nZU1hdGNoZXMoXCJ0eXBlc1wiLCBcImZ1bmN0aW9uc1wiKeuPhCB0cnVl66W8IOuwmO2ZmO2VmOyngOunjCxcbiAgICAgKiBbXCJmdW5jdGlvbnNcIl3qsIAg67OA6rK965CcIO2YuOy2nOyXkOyEnCBjaGFuZ2VNYXRjaGVzKFwiZnJhbWVcIinsnYAgZmFsc2Xrpbwg67CY7ZmY7ZWp64uI64ukLlxuICAgICAqIEBwYXJhbSB0eXBlc1xuICAgICAqL1xuICAgIGNvbnN0IGNoYW5nZU1hdGNoZXMgPSAoLi4udHlwZXM6IEZpbGVUeXBlW10pID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoaW5nID0gdHlwZXMuZmlsdGVyKCh0KSA9PiBkaWZmVHlwZXMuaW5jbHVkZXModCkpO1xuICAgICAgbWF0Y2hpbmcuZm9yRWFjaCgodCkgPT4gaGFuZGxlZC5hZGQodCkpO1xuICAgICAgcmV0dXJuIG1hdGNoaW5nLmxlbmd0aCA+IDA7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIGNoYW5nZU1hdGNoZXProZwg66ek7Lmt65CcIOqyg+ydtCDtlZjrgpjrj4Qg7JeG64qU7KeAIOyXrOu2gOulvCDqsIDsoLjsmLXri4jri6QuXG4gICAgICovXG4gICAgY29uc3Qgbm90aGluZ01hdGNoZXMgPSAoKSA9PiBoYW5kbGVkLnNpemUgPT09IDA7XG5cbiAgICAvKipcbiAgICAgKiDslrTrlqQgY2hhbmdlTWF0Y2hlcyDtmLjstpzsl5Drj4Qg6rG466as7KeAIOyViuydgCBGaWxlVHlwZeuTpOydmCDsi6TsoJwg7YyM7J28IOqyveuhnOulvCDrqqjslYTshJwg67CY7ZmY7ZWp64uI64ukLlxuICAgICAqL1xuICAgIGNvbnN0IHVuaGFuZGxlZFBhdGhzID0gKCk6IEFic29sdXRlUGF0aFtdID0+XG4gICAgICBkaWZmVHlwZXMuZmlsdGVyKCh0KSA9PiAhaGFuZGxlZC5oYXModCkpLmZsYXRNYXAoKHQpID0+IGRpZmZHcm91cHNbdF0gPz8gW10pO1xuXG4gICAgcmV0dXJuIHsgY2hhbmdlTWF0Y2hlcywgbm90aGluZ01hdGNoZXMsIHVuaGFuZGxlZFBhdGhzIH07XG4gIH1cblxuICBhc3luYyBoYW5kbGVUcnV0aFNvdXJjZUNoYW5nZXMoZGlmZkdyb3VwczogRGlmZkdyb3Vwcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIE5haXRlLnQoXCJoYW5kbGVUcnV0aFNvdXJjZUNoYW5nZXNcIiwgeyBkaWZmR3JvdXBzIH0pO1xuXG4gICAgYXdhaXQgRW50aXR5TWFuYWdlci5yZWxvYWQoKTtcblxuICAgIC8vIHR5cGVzIOyDneyEsShlbnRpdHkg7IOI66GcIOy2lOqwgOuQnCDqsr3smrApXG4gICAgLy8gcGFyZW50SWTqsIAg7JeG6rOgLCB0eXBlc+qwgCDsl4bripQg6rK97Jqw7JeQ66eMIOyDneyEsVxuICAgIGNvbnN0IGVudGl0eVBhdGggPSBkaWZmR3JvdXBzLmVudGl0eT8uYXQoMCk7XG4gICAgaWYgKGVudGl0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZW50aXR5SWQgPSBFbnRpdHlNYW5hZ2VyLmdldEVudGl0eUlkRnJvbVBhdGgoZW50aXR5UGF0aCk7XG4gICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgIC8vIO2UhOuhnOygne2KuOyXkCDsg53shLHrkJjslrTslbwg7ZWY64qUIC50cyDtjIzsnbzsnZgg6rK966Gc7J6F64uI64ukLlxuICAgICAgY29uc3QgdHlwZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICBTb25hbXUuYXBpUm9vdFBhdGgsXG4gICAgICAgIGBzcmMvYXBwbGljYXRpb24vJHtlbnRpdHkubmFtZXMuZnN9LyR7ZW50aXR5Lm5hbWVzLmZzfS50eXBlcy50c2AsXG4gICAgICApIGFzIEFic29sdXRlUGF0aDtcblxuICAgICAgaWYgKGVudGl0eS5wYXJlbnRJZCA9PT0gdW5kZWZpbmVkICYmICEoYXdhaXQgZXhpc3RzKHR5cGVGaWxlUGF0aCkpKSB7XG4gICAgICAgIC8vICoudHlwZXMudHPqsIAg66eM65Ok7Ja07KeR64uI64ukLlxuICAgICAgICBjb25zdCB0eXBlcyA9IGF3YWl0IFN5bmNlckFjdGlvbnMuYWN0aW9uR2VuZXJhdGVJbml0aWFsVHlwZXMoZW50aXR5SWQpO1xuXG4gICAgICAgIC8vIOq3uOqxuCDtg4Dqsp/sl5Ag6rCW64uk65Gs7JqULlxuICAgICAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvblN5bmNGaWxlc1RvVGFyZ2V0cyh0eXBlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc29uYW11LmdlbmVyYXRlZC50c+qwgCDrp4zrk6TslrTsp5Hri4jri6QuXG4gICAgY29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZVNjaGVtYXMoKTtcblxuICAgIC8vIOq3uOqxuCB0YXJnZXTrk6Tsl5Drj4Qg67O064K07JqULlxuICAgIGF3YWl0IFN5bmNlckFjdGlvbnMuYWN0aW9uU3luY0ZpbGVzVG9UYXJnZXRzKGdlbmVyYXRlZCk7XG4gIH1cblxuICBhc3luYyBoYW5kbGVJbXBsZW1lbnRhdGlvbkNoYW5nZXMoZGlmZkdyb3VwczogRGlmZkdyb3Vwcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIE5haXRlLnQoXCJoYW5kbGVJbXBsZW1lbnRhdGlvbkNoYW5nZXNcIiwgeyBkaWZmR3JvdXBzIH0pO1xuICAgIGNvbnN0IG1lcmdlZEdyb3VwID0gWy4uLihkaWZmR3JvdXBzLm1vZGVsID8/IFtdKSwgLi4uKGRpZmZHcm91cHMuZnJhbWUgPz8gW10pXTtcblxuICAgIC8vIGdlbmVyYXRlZF9odHRwLnRlbXBsYXRlLnRz7JeQ7IScIHN5bmNlci50eXBlc+ulvCDslIHri4jri6QuXG4gICAgLy8gc2VydmljZS50ZW1wbGF0ZS50c+yXkOyEnCBzeW5jZXIuYXBpc+ulvCDslIHri4jri6QuXG4gICAgYXdhaXQgdGhpcy5hdXRvbG9hZE1vZGVscygpO1xuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRUeXBlcygpO1xuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRBcGlzKCk7XG5cbiAgICBjb25zdCBwYXJhbXM6IHtcbiAgICAgIG5hbWVzUmVjb3JkOiBFbnRpdHlOYW1lc1JlY29yZDtcbiAgICB9W10gPSBtZXJnZWRHcm91cC5tYXAoKG1vZGVsUGF0aCkgPT4ge1xuICAgICAgaWYgKG1vZGVsUGF0aC5lbmRzV2l0aChcIi5tb2RlbC50c1wiKSB8fCBtb2RlbFBhdGguZW5kc1dpdGgoXCIuZnJhbWUudHNcIikpIHtcbiAgICAgICAgY29uc3QgZW50aXR5SWQgPSBFbnRpdHlNYW5hZ2VyLmdldEVudGl0eUlkRnJvbVBhdGgobW9kZWxQYXRoKTtcbiAgICAgICAgYXNzZXJ0KGVudGl0eUlkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lc1JlY29yZDogRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgcmVhY2hhYmxlXCIpO1xuICAgIH0pO1xuXG4gICAgLy8gc2VydmljZXMuZ2VuZXJhdGVkLnRz66W8IHRhcmdldOuTpOyXkCwgc29uYW11LmdlbmVyYXRlZC5odHRw66W8IGFwaeyXkCDrp4zrk6TslrTspJjsmpQuXG4gICAgYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZVNlcnZpY2VzKHBhcmFtcyk7XG4gICAgYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZUh0dHBzKCk7XG5cbiAgICAvLyBxdWVyaWVzLmdlbmVyYXRlZC50c+qwgCDrp4zrk6TslrTsp5Hri4jri6QuXG4gICAgY29uc3QgcXVlcmllcyA9IGF3YWl0IFN5bmNlckFjdGlvbnMuYWN0aW9uR2VuZXJhdGVTc3JRdWVyaWVzKCk7XG5cbiAgICAvLyDqt7jqsbggdGFyZ2V065Ok7JeQ64+EIOuztOuCtOyalC5cbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvblN5bmNGaWxlc1RvVGFyZ2V0cyhxdWVyaWVzKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUF1eGlsaWFyeVN5bWJvbENoYW5nZXMoZGlmZkdyb3VwczogRGlmZkdyb3Vwcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIE5haXRlLnQoXCJoYW5kbGVBdXhpbGlhcnlTeW1ib2xDaGFuZ2VzXCIsIHsgZGlmZkdyb3VwcyB9KTtcbiAgICBjb25zdCB0c1BhdGhzID0gdW5pcXVlKFsuLi4oZGlmZkdyb3Vwcy50eXBlcyA/PyBbXSksIC4uLihkaWZmR3JvdXBzLmZ1bmN0aW9ucyA/PyBbXSldKTtcbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvblN5bmNGaWxlc1RvVGFyZ2V0cyh0c1BhdGhzKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUNvbmZpZ0NoYW5nZXMoXzogRGlmZkdyb3Vwcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFN5bmNlckFjdGlvbnMuYWN0aW9uU3luY0NvbmZpZygpO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlU29uYW11RGljdGlvbmFyeVJlbGF0ZWRDaGFuZ2VzKF86IERpZmZHcm91cHMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvblN5bmNTb25hbXVEaWN0aW9uYXJ5KCk7XG4gIH1cblxuICBhc3luYyBoYW5kbGVEcmlmdHMoZHJpZnRzOiBBYnNvbHV0ZVBhdGhbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChkcmlmdHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBjaGFsay55ZWxsb3coXG4gICAgICAgICAgXCLimqDvuI8gU29uYW116rCAIOyekOuPmSDsg53shLHtlZwg7YyM7J287JeQIOuMgO2VnCDrs4Dqsr3snbQg6rCQ7KeA65CY7JeI7Iq164uI64ukLiDtjIzsnbzsnbQgU29uYW11IHdhdGNoZXIg7Jm467aA7JeQ7IScIOuzgOqyveuQnCDqsoPsnLzroZwg7LaU7KCV65Cp64uI64ukLlwiLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgcCBvZiBkcmlmdHMpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGNoYWxrLnllbGxvdyhgICAtICR7cGF0aC5yZWxhdGl2ZShTb25hbXUuYXBwUm9vdFBhdGgsIHApfWApKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUud2FybihjaGFsay5kaW0oXCIgIOKGkiBgcG5wbSBzb25hbXUgc3luYyAtLWZvcmNlYOulvCDqtozsnqXtlanri4jri6QuXCIpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog7KO87Ja07KeEIOyXlO2LsO2LsOyZgCDthZztlIzrpr8g7YKk7JeQIOuMgO2VtCwg7IOd7ISx65CcIOy9lOuTnOqwgCDsobTsnqztlZjripTsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgKiBAcGFyYW0gZW50aXR5SWQg7JeU7Yuw7YuwIElEXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZUtleSDthZztlIzrpr8g7YKkXG4gICAqIEBwYXJhbSBlbnVtSWQg7Je06rGw7ZiVIElEXG4gICAqIEByZXR1cm5zIOyDneyEseuQnCDsvZTrk5zqsIAg7KG07J6s7ZWY64qU7KeAIOyXrOu2gFxuICAgKi9cbiAgYXN5bmMgY2hlY2tFeGlzdHNHZW5Db2RlKFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgdGVtcGxhdGVLZXk6IFRlbXBsYXRlS2V5LFxuICAgIGVudW1JZD86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7IHN1YlBhdGg6IHN0cmluZzsgZnVsbFBhdGg6IHN0cmluZzsgaXNFeGlzdHM6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHsgdGFyZ2V0LCBwYXRoOiBnZW5QYXRoIH0gPSBUZW1wbGF0ZU1hbmFnZXIuZ2V0KHRlbXBsYXRlS2V5KS5nZXRUYXJnZXRBbmRQYXRoKFxuICAgICAgRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCksXG4gICAgICBlbnVtSWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHN1YlBhdGggPSBwYXRoLmpvaW4odGFyZ2V0LCBnZW5QYXRoKTtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHN1YlBhdGgpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWJQYXRoLFxuICAgICAgZnVsbFBhdGgsXG4gICAgICBpc0V4aXN0czogYXdhaXQgZXhpc3RzKGZ1bGxQYXRoKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOyjvOyWtOynhCDsl5Tti7Dti7DsmYAg7Je06rGw7ZiV7JeQIOuMgO2VtCwg7IOd7ISx65CcIOy9lOuTnOqwgCDsobTsnqztlZjripTsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgKiBAcGFyYW0gZW50aXR5SWQg7JeU7Yuw7YuwIElEXG4gICAqIEBwYXJhbSBlbnVtcyDsl7TqsbDtmJUg66CI7J2067iUXG4gICAqIEByZXR1cm5zIOyDneyEseuQnCDsvZTrk5zqsIAg7KG07J6s7ZWY64qU7KeAIOyXrOu2gFxuICAgKi9cbiAgYXN5bmMgY2hlY2tFeGlzdHMoXG4gICAgZW50aXR5SWQ6IHN0cmluZyxcbiAgICBlbnVtczoge1xuICAgICAgW25hbWU6IHN0cmluZ106IHouWm9kRW51bTtcbiAgICB9LFxuICApOiBQcm9taXNlPFJlY29yZDxgJHtUZW1wbGF0ZUtleX0ke3N0cmluZ31gLCBib29sZWFuPj4ge1xuICAgIGNvbnN0IGtleXM6IFRlbXBsYXRlS2V5W10gPSBUZW1wbGF0ZUtleS5vcHRpb25zO1xuICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG4gICAgY29uc3QgZW51bXNLZXlzID0gT2JqZWN0LmtleXMoZW51bXMpLmZpbHRlcigobmFtZSkgPT4gbmFtZSAhPT0gbmFtZXMuY29uc3RhbnQpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHJlZHVjZUFzeW5jKFxuICAgICAga2V5cyxcbiAgICAgIGFzeW5jIChyZXN1bHQsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCB0cGwgPSBUZW1wbGF0ZU1hbmFnZXIuZ2V0KGtleSk7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChcInZpZXdfZW51bXNcIikpIHtcbiAgICAgICAgICBhd2FpdCBtYXBBc3luYyhlbnVtc0tleXMsIGFzeW5jIChjb21wb25lbnRJZCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXQsIHBhdGg6IHAgfSA9IHRwbC5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzLCBjb21wb25lbnRJZCk7XG4gICAgICAgICAgICByZXN1bHRbYCR7a2V5fV9fJHtjb21wb25lbnRJZH1gXSA9IGF3YWl0IGV4aXN0cyhcbiAgICAgICAgICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdGFyZ2V0LCBwKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0LCBwYXRoOiBwIH0gPSB0cGwuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcyk7XG4gICAgICAgIGNvbnN0IHsgdGFyZ2V0cyB9ID0gU29uYW11LmNvbmZpZy5zeW5jO1xuICAgICAgICBpZiAodGFyZ2V0LmluY2x1ZGVzKFwiOnRhcmdldFwiKSkge1xuICAgICAgICAgIGF3YWl0IG1hcEFzeW5jKHRhcmdldHMsIGFzeW5jICh0KSA9PiB7XG4gICAgICAgICAgICByZXN1bHRbYCR7a2V5fV9fJHt0fWBdID0gYXdhaXQgZXhpc3RzKFxuICAgICAgICAgICAgICBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCB0YXJnZXQucmVwbGFjZShcIjp0YXJnZXRcIiwgdCksIHApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IGF3YWl0IGV4aXN0cyhwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCB0YXJnZXQsIHApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPGAke1RlbXBsYXRlS2V5fSR7c3RyaW5nfWAsIGJvb2xlYW4+LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog7ZWY7JyE7Zi47ZmY7JqpIO2UhOuhneyLnCDrqZTshozrk5zsnoXri4jri6QuXG4gICAqL1xuICBhc3luYyBjcmVhdGVFbnRpdHkoZm9ybTogVGVtcGxhdGVPcHRpb25zW1wiZW50aXR5XCJdKSB7XG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZUVudGl0eShmb3JtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtlZjsnITtmLjtmZjsmqkg7ZSE66Gd7IucIOuplOyGjOuTnOyeheuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGRlbEVudGl0eShlbnRpdHlJZDogc3RyaW5nKTogUHJvbWlzZTx7IGRlbFBhdGhzOiBzdHJpbmdbXSB9PiB7XG4gICAgcmV0dXJuIGF3YWl0IGRlbEVudGl0eShlbnRpdHlJZCk7XG4gIH1cblxuICAvKipcbiAgICog7ZWY7JyE7Zi47ZmY7JqpIO2UhOuhneyLnCDrqZTshozrk5zsnoXri4jri6QuXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZUtleT4oXG4gICAga2V5OiBULFxuICAgIHRlbXBsYXRlT3B0aW9uczogVGVtcGxhdGVPcHRpb25zW1RdLFxuICAgIF9nZW5lcmF0ZU9wdGlvbnM/OiBHZW5lcmF0ZU9wdGlvbnMsXG4gICk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgICByZXR1cm4gYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShrZXksIHRlbXBsYXRlT3B0aW9ucywgX2dlbmVyYXRlT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog7ZWY7JyE7Zi47ZmY7JqpIO2UhOuhneyLnCDrqZTshozrk5zsnoXri4jri6QuXG4gICAqL1xuICBhc3luYyByZW5kZXJUZW1wbGF0ZTxUIGV4dGVuZHMga2V5b2YgVGVtcGxhdGVPcHRpb25zPihcbiAgICBrZXk6IFQsXG4gICAgdGVtcGxhdGVPcHRpb25zOiBUZW1wbGF0ZU9wdGlvbnNbVF0sXG4gICk6IFByb21pc2U8UGF0aEFuZENvZGVbXT4ge1xuICAgIHJldHVybiBhd2FpdCByZW5kZXJUZW1wbGF0ZShrZXksIHRlbXBsYXRlT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog7ZWY7JyE7Zi47ZmY7JqpIO2UhOuhneyLnCDrqZTshozrk5zsnoXri4jri6QuXG4gICAqL1xuICBhc3luYyByZW5ld0NoZWNrc3VtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgcmVu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
|
|
425
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2VyLmpzIiwibmFtZXMiOlsiU3luY2VyQWN0aW9ucy5hY3Rpb25Db3B5U2hhcmVkVG9UYXJnZXRzSWZOb3RFeGlzdHMiLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU3NyRW50cnlTZXJ2ZXJJZk5vdEV4aXN0cyIsInN5bmNUcmlnZ2VyaW5nUGF0aHM6IEFic29sdXRlUGF0aFtdIiwiU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZUluaXRpYWxUeXBlcyIsIlN5bmNlckFjdGlvbnMuYWN0aW9uU3luY0ZpbGVzVG9UYXJnZXRzIiwiU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZVNjaGVtYXMiLCJwYXJhbXM6IHtcbiAgICAgIG5hbWVzUmVjb3JkOiBFbnRpdHlOYW1lc1JlY29yZDtcbiAgICB9W10iLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU2VydmljZXMiLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlSHR0cHMiLCJTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU3NyUXVlcmllcyIsIlN5bmNlckFjdGlvbnMuYWN0aW9uU3luY0NvbmZpZyIsIlN5bmNlckFjdGlvbnMuYWN0aW9uU3luY1NvbmFtdURpY3Rpb25hcnkiLCJrZXlzOiBUZW1wbGF0ZUtleVtdIiwicCIsInRhcmdldCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jZXIvc3luY2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcImV2ZW50c1wiO1xuaW1wb3J0IHsgdW5saW5rIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBob3QgfSBmcm9tIFwiQHNvbmFtdS1raXQvaG1yLWhvb2tcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IG1pbmltYXRjaCB9IGZyb20gXCJtaW5pbWF0Y2hcIjtcbmltcG9ydCB7IGdyb3VwLCB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuaW1wb3J0IHsgdHlwZSB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyByZWdpc3RlcmVkQXBpcyB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IHR5cGUgV29ya2Zsb3dNZXRhZGF0YSB9IGZyb20gXCIuLi90YXNrcy9kZWNvcmF0b3JcIjtcbmltcG9ydCB7IFRlbXBsYXRlTWFuYWdlciB9IGZyb20gXCIuLi90ZW1wbGF0ZS90ZW1wbGF0ZS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIEdlbmVyYXRlT3B0aW9ucywgdHlwZSBQYXRoQW5kQ29kZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVLZXkgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBtYXBBc3luYywgcmVkdWNlQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGNlbnRlclRleHQgfSBmcm9tIFwiLi4vdXRpbHMvY29uc29sZS11dGlsXCI7XG5pbXBvcnQgeyBpc1Rlc3QgfSBmcm9tIFwiLi4vdXRpbHMvY29udHJvbGxlclwiO1xuaW1wb3J0IHsgZXhpc3RzIH0gZnJvbSBcIi4uL3V0aWxzL2ZzLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW5XaXRoR3JhY2VmdWxTaHV0ZG93biB9IGZyb20gXCIuLi91dGlscy9wcm9jZXNzLXV0aWxzXCI7XG5pbXBvcnQgeyBmaW5kQ2hhbmdlZEZpbGVzVXNpbmdDaGVja3N1bXMsIHJlbmV3Q2hlY2tzdW1zIH0gZnJvbSBcIi4vY2hlY2tzdW1cIjtcbmltcG9ydCB7IGdlbmVyYXRlVGVtcGxhdGUsIHJlbmRlclRlbXBsYXRlIH0gZnJvbSBcIi4vY29kZS1nZW5lcmF0b3JcIjtcbmltcG9ydCB7IGNyZWF0ZUVudGl0eSwgZGVsRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5LW9wZXJhdGlvbnNcIjtcbmltcG9ydCB7IGdldENoZWNrc3VtUGF0dGVybkdyb3VwLCBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cEluQWJzb2x1dGVQYXRoIH0gZnJvbSBcIi4vZmlsZS1wYXR0ZXJuc1wiO1xuaW1wb3J0IHsgdHlwZSBGaWxlVHlwZSB9IGZyb20gXCIuL2ZpbGUtcGF0dGVybnNcIjtcbmltcG9ydCB7IGxvYWRBcGlzLCBsb2FkTW9kZWxzLCBsb2FkVHlwZXMsIGxvYWRXb3JrZmxvd3MgfSBmcm9tIFwiLi9tb2R1bGUtbG9hZGVyXCI7XG5pbXBvcnQgeyB0eXBlIExvYWRlZEFwaXMsIHR5cGUgTG9hZGVkTW9kZWxzLCB0eXBlIExvYWRlZFR5cGVzIH0gZnJvbSBcIi4vbW9kdWxlLWxvYWRlclwiO1xuaW1wb3J0ICogYXMgU3luY2VyQWN0aW9ucyBmcm9tIFwiLi9zeW5jZXItYWN0aW9uc1wiO1xuXG50eXBlIERpZmZHcm91cHMgPSB7XG4gIFtrZXkgaW4gRmlsZVR5cGVdOiBBYnNvbHV0ZVBhdGhbXTtcbn07XG5cbmV4cG9ydCBjbGFzcyBTeW5jZXIge1xuICBhcGlzOiBMb2FkZWRBcGlzID0gW107XG4gIHR5cGVzOiBMb2FkZWRUeXBlcyA9IHt9O1xuICBtb2RlbHM6IExvYWRlZE1vZGVscyA9IHt9O1xuICB3b3JrZmxvd3M6IE1hcDxzdHJpbmcsIFdvcmtmbG93TWV0YWRhdGFbXT4gPSBuZXcgTWFwKCk7XG4gIGV2ZW50RW1pdHRlcjogRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiDssrTtgazshKzsnbQg67OA6rK965CcIOu2gOu2hOyXkCDrjIDtlbQg7Iux7YGs66W8IOynhO2Wie2VqeuLiOuLpC5cbiAgICogZGV2IOyEnOuyhOqwgCDsspjsnYwg65a07J2EIOuVjCwgc29uYW11IHN5bmMg7ZWgIOuVjCDsi6TtlonrkKnri4jri6QuIOydtO2bhOyXkOuKlCBzeW5jRnJvbVdhdGNoZXIg6rK966Gc66W8IO2DgOyalC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIHN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8g7LSI6riwIOu2gO2KuOyKpO2KuOueqSEg7JaY64Sk65Ok7J2AIGlkZW1wb3RlbnTtlZjqs6Ag6rCA67ON6riwIOuVjOusuOyXkCDrrLTsp4DshLEg7Iuk7ZaJ7ZW064+EIOuQqeuLiOuLpC5cbiAgICAvLyDslpjrhKTrk6TsnYAgc29uYW11LmxvY2vsl5Ag65Ok7Ja06rCA7KeA64+EIOyViuqzoCDrlLDrnbzshJwgSE1SIOqyveuhnOulvCDtg4Dsp4Drj4Qg7JWK64qUIOy5nOq1rOuTpOyeheuLiOuLpC5cbiAgICAvLyDqt7jrnpjshJwg7JWE66y0IOuVjOuCmCDqt7jrg6Ug64+M66Ck7KO866m0IOuQmOuKlOuNsCwgc3luY0Zyb21XYXRjaGVy7JeQ7IScIOunpOuyiCDtlZjripQg6rKD7J2AIOuCreu5hOydtOuLiCDsl6zquLDshJwg7ZWcIOuyiOunjCDtlanri4jri6QuXG4gICAgYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25Db3B5U2hhcmVkVG9UYXJnZXRzSWZOb3RFeGlzdHMoKTtcbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU3NyRW50cnlTZXJ2ZXJJZk5vdEV4aXN0cygpO1xuXG4gICAgLy8g67CU64CQIOqyg+ydtCDsl4bsnLzrqbQg6re464OlIOuEmOyWtOqwgOyalC5cbiAgICBjb25zdCBjaGFuZ2VkRmlsZXMgPSBhd2FpdCBmaW5kQ2hhbmdlZEZpbGVzVXNpbmdDaGVja3N1bXMoKTtcbiAgICBpZiAoY2hhbmdlZEZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuYmxhY2suYmdHcmVlbihjZW50ZXJUZXh0KFwiQWxsIGZpbGVzIGFyZSBzeW5jZWQhXCIpKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8g7Jes6riw7IScIOyLpOygnCDsi7Htgawg64+Z7J6R7J2EIOyImO2Wie2VqeuLiOuLpC5cbiAgICAvLyDri6Trp4wg7Iux7YGsIOykkeyXkCDtlITroZzshLjsiqTqsIAg7KO97Jy866m0IOq8rOyXrOuyhOumrOq4sCDrlYzrrLjsl5AsXG4gICAgLy8g7Iuc6re464SQ7JeQ64+EIOyeoOyLnCDrsoTti7gg7IiYIOyeiOuKlCDtmZjqsr0g7IaN7JeQ7IScIOyLse2BrOulvCDsi6Ttlontlanri4jri6QuXG4gICAgYXdhaXQgcnVuV2l0aEdyYWNlZnVsU2h1dGRvd24oXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIOyWmOqwgCDsi7Htgawg7J6R7JeFIOyImO2Wie2VmOuKlCDrs7jssrTsnoXri4jri6QuXG4gICAgICAgIGF3YWl0IHRoaXMuZG9TeW5jQWN0aW9ucyhjaGFuZ2VkRmlsZXMpO1xuXG4gICAgICAgIC8vIOyLse2BrCDslaHshZjsnbQg64Gd64KY66m0IO2VreyDgSDssrTtgazshKzsnYQg64uk7IucIOqwseyLoO2VqeuLiOuLpC5cbiAgICAgICAgYXdhaXQgcmVuZXdDaGVja3N1bXMoKTtcbiAgICAgIH0sXG4gICAgICB7IHdoZW5UaGlzSGFwcGVuczogXCJTSUdVU1IyXCIsIHdhaXRGb3JVcFRvOiAyMDAwMCB9LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog6rCV7KCcIO2SgC3si7Htgaw6IGxvY2vsnYQg66y07Iuc7ZWY6rOgIOyymOydjOu2gO2EsCDri6Tsi5wg7Iux7YGs7ZWp64uI64ukLlxuICAgKlxuICAgKiAqKuyCrOyaqeyymCoqOiBnaXQgcG9zdC1tZXJnZSBob29rLCBDSSwgZGV2IOyEnOuyhOydmCBgZmAg7ZWr7YKkLlxuICAgKiAqKuyLpO2MqCDslYjsoITshLEqKjog64+E7KSR7JeQIO2UhOuhnOyEuOyKpOqwgCDso73slrQgbG9jayDsl4bripQg7IOB7YOc66GcIOuCqOyVhOuPhCDrrLTtlbQg4oCUIOuLpOydjCBzeW5j7JeQ7IScXG4gICAqIGxvY2sg7JeG7Jy866m0IOyekOyXsOyKpOufveqyjCDtkoAt7Iux7YGs6rCAIO2KuOumrOqxsOuQmOyWtCDsg4ggbG9ja+ydtCDsnpHshLHrkKguXG4gICAqL1xuICBhc3luYyBmb3JjZVN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9ja1BhdGggPSBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBcInNvbmFtdS5sb2NrXCIpO1xuICAgIGlmIChhd2FpdCBleGlzdHMobG9ja1BhdGgpKSB7XG4gICAgICBhd2FpdCB1bmxpbmsobG9ja1BhdGgpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLnN5bmMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYXRjaGVy6rCAIGJhdGNo66GcIOuqqOydgCDrs4Dqsr0g7YyM7J2865Ok7JeQIOuMgO2VtCDtlZwg67KI7J2YIEhNUi9zeW5jIOyCrOydtO2BtOydhCDrj5Xri4jri6QuXG4gICAqXG4gICAqIEhNUuydgCBhcGkvc3JjIOyViOyXkOyEnCDsnbzslrTrgpjripQg66qo65OgIO2MjOydvOuTpOyXkCDrjIDtlbTshJwg7IiY7ZaJ7ZWp64uI64ukLlxuICAgKiBjaGVja3N1bVBhdHRlcm5Hcm91cCDrp6Tsua0g7Jes67aA7JmAIOustOq0gO2VmOqyjCBhcGkvc3JjIOyghOyytCDrjIDsg4HsnoXri4jri6QuXG4gICAqIOqwgOuguSBhcGkvc3JjL3V0aWxzL3N1YnNldC1sb2FkZXJzLnRzIOqwmeydgCDtjIzsnbzrj4Qg67OA6rK965CY66m0IEhNUuydgCDtlbTspI3ri4jri6QuXG4gICAqXG4gICAqIFN5bmPripQgY2hlY2tzdW1QYXR0ZXJuR3JvdXDsnLzroZwg66ek7Lmt65CY64qUIO2MjOydvOuTpOyXkCDrjIDtlbTshJzrp4wg7IiY7ZaJ7ZWp64uI64ukLlxuICAgKiDsl6zquLDsl5DripQgd2ViL3NyY+uCmCBhcHAvc3JjIOqwmeydgCDri6TrpbggdGFyZ2V07J2YIO2MjOydvOydtCDtj6ztlajrkKAg7IiYIOyeiOyKteuLiOuLpC5cbiAgICog7J2065+wIG5vbi1hcGkg6rK966Gc7J2YIO2MjOydvOuTpOydgCBITVLqs7zripQg7JWE66y0IOyDgeq0gOydtCDsl4bsnLzrr4DroZwsIGludmFsaWRhdGXsnYQg7ZWY7KeAIOyViuyKteuLiOuLpC5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVFdmVudHMgLSBwYXRoIOKGkiBldmVudCDrp7UuIGV2ZW5064qUIFwiY2hhbmdlXCIgfCBcImFkZFwiLlxuICAgKi9cbiAgYXN5bmMgaG1yQW5kU3luYyhmaWxlRXZlbnRzOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBobXJBY3Rpb25SZXF1aXJlZEV2ZW50cyA9IHRoaXMuZXh0cmFjdEhtckFjdGlvblJlcXVpcmVkRmlsZUV2ZW50cyhmaWxlRXZlbnRzKTtcbiAgICBjb25zdCBzeW5jVHJpZ2dlcmluZ1BhdGhzID0gYXdhaXQgdGhpcy5leHRyYWN0U3luY1RyaWdnZXJpbmdGaWxlRXZlbnRQYXRocyhmaWxlRXZlbnRzKTtcblxuICAgIC8vIEhNUiDsmIHsl606IO2MjOydvCDsnbTrsqTtirgg7KSRIGFwaeydmCDrqqjrk4gg6re4656Y7ZSE7JeQIOyeiOuKlCDtjIzsnbzrk6Tsl5Ag64yA7ZWcIOuzgOuPmeydgCBobXJBY3Rpb25SZXF1aXJlZEV2ZW50c+uhnCDsnqHtnpnri4jri6QuXG4gICAgLy8g7J20IOy5nOq1rOuTpOydgCBpbnZhbGlkYXRlIOyymOumrO2VtOykjeuLiOuLpC5cbiAgICAvLyDsnbQg7Zi47Lac7J2AIOyVhOuemCBzeW5j67O064ukIOustOyhsOqxtCDrqLzsoIAg7J287Ja064KY7JW8IO2VqeuLiOuLpCFcbiAgICAvLyDsmZzrg5DtlZjrqbQgc3luY+yXkOyEnOuKlCDrs4Dqsr3rkJwgbW9kZWwg7L2U65Oc66W8IOyDiOuhnCBpbXBvcnTtlbTshJwg7LKY66as7ZW07JW8IO2VmOuKlCDqsr3smrDrj4Qg7J6I6riwIOuVjOusuOyeheuLiOuLpC5cbiAgICBhd2FpdCB0aGlzLmludmFsaWRhdGVEZXBlbmRlbnRzQWZmZWN0ZWRCeUZpbGVFdmVudHMoaG1yQWN0aW9uUmVxdWlyZWRFdmVudHMpO1xuXG4gICAgLy8gU3luYyDsmIHsl606IGNoZWNrc3VtUGF0dGVybkdyb3Vw7JeQIOuqheyLnOuQnCDtjIzsnbzrk6Tsl5Ag64yA7ZWcIOuzgOuPmeydgCBzeW5jVHJpZ2dlcmluZ1BhdGhz66GcIOyeoe2emeuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok7J2AIOyggeygiO2VnCBzeW5jIOyekeyXheycvOuhnCDrjIDsnZHtlanri4jri6QuXG4gICAgaWYgKHN5bmNUcmlnZ2VyaW5nUGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgYXdhaXQgdGhpcy5kb1N5bmNBY3Rpb25zKHN5bmNUcmlnZ2VyaW5nUGF0aHMpO1xuICAgIH1cblxuICAgIC8vIOyLse2BrCDsnpHsl4XsnbQg64Gd64Ks7Jy866m0IOustOyngOyEsSDroZzrk5zrpbwg7IiY7ZaJ7ZWp64uI64ukLlxuICAgIC8vIOyLse2BrOulvCDslYgg7ZWcIOqyveyasOyXkOuPhCDroZzrk5zripQg7ZW07JW8IO2VtOyalC4g7JyE7JeQ7IScIOq0gOugqOyeiOuKlCDsuZzqtazrk6TsnYAg64ukIGludmFsaWRhdGUg65CY7JeI6rGw65Og7JqUIVxuICAgIC8vXG4gICAgLy8g67OA6rK965CcIO2MjOydvOuTpOyXkCDrjIDtlbTshJwg7IOI66Gt6rKMIOuLueqyqOyYpOuKlChsb2FkKSDtlonsnITripQgZG9TeW5jQWN0aW9uc+yXkOyEnCDtlZjsp4Ag7JWK7Iq164uI64ukLlxuICAgIC8vIGRvU3luY0FjdGlvbnPsl5DshJzripQg7YyM7J287J2EIOydveqzoCDrp4zrk5zripQg7Iux7YGsIO2WieychOunjCDtlanri4jri6QuXG4gICAgLy8g6rGw6riw7IScIOuUsSDrs4Dqsr3rkJwg67aA67aE7JeQIOyYge2Wpeuwm+uKlCBhdXRvbG9hZOunjCDshKDrs4TtlbTshJwg7IiY7ZaJ7ZWY66Ck66m0IOuEiOustCDsp4DsoIDrtoTtlZjqs6Ag67O17J6h7ZW07KeR64uI64ukLlxuICAgIC8vXG4gICAgLy8g7Y287Y+s66i87IqkIOyYge2WpeydgCDrrLTsi5ztlbTrj4Qg7KKL7Iq164uI64ukLlxuICAgIC8vIOyWtOywqO2UvCBobXItaG9va+yXkCDsnZjtlbQgaW52YWxpZGF0ZeuQnCDrtoDrtoTrk6TsnbQg7JWE64uI652866m0IOy6kOyLnCDqt7jrjIDroZwg7Jyg7KeA7ZWp64uI64ukLlxuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRUeXBlcygpO1xuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRNb2RlbHMoKTtcbiAgICBhd2FpdCB0aGlzLmF1dG9sb2FkQXBpcygpO1xuICAgIGF3YWl0IHRoaXMuYXV0b2xvYWRXb3JrZmxvd3MoKTtcbiAgICBhd2FpdCB0aGlzLmF1dG9sb2FkU3NyUm91dGVzKCk7XG5cbiAgICB0aGlzLmV2ZW50RW1pdHRlci5lbWl0KFwib25ITVJDb21wbGV0ZWRcIik7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RIbXJBY3Rpb25SZXF1aXJlZEZpbGVFdmVudHMoXG4gICAgZmlsZUV2ZW50czogTWFwPEFic29sdXRlUGF0aCwgXCJjaGFuZ2VcIiB8IFwiYWRkXCI+LFxuICApOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4ge1xuICAgIGNvbnN0IGFwaVNyYyA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwic3JjXCIpO1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4oKTtcbiAgICBmb3IgKGNvbnN0IFtmaWxlUGF0aCwgZXZlbnRdIG9mIGZpbGVFdmVudHMpIHtcbiAgICAgIGlmICghZmlsZVBhdGguc3RhcnRzV2l0aChhcGlTcmMpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnNldChmaWxlUGF0aCwgZXZlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHRyYWN0U3luY1RyaWdnZXJpbmdGaWxlRXZlbnRQYXRocyhcbiAgICBmaWxlRXZlbnRzOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4sXG4gICk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgICBjb25zdCBjaGVja1BhdHRlcm5Hcm91cCA9IGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTtcbiAgICBjb25zdCBzeW5jVHJpZ2dlcmluZ1BhdGhzOiBBYnNvbHV0ZVBhdGhbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2RpZmZGaWxlUGF0aF0gb2YgZmlsZUV2ZW50cykge1xuICAgICAgY29uc3QgaXNJbkNoZWNrUGF0dGVybkdyb3VwID0gT2JqZWN0LnZhbHVlcyhjaGVja1BhdHRlcm5Hcm91cCkuc29tZSgocGF0dGVybikgPT5cbiAgICAgICAgbWluaW1hdGNoKGRpZmZGaWxlUGF0aCwgcGF0dGVybiksXG4gICAgICApO1xuICAgICAgaWYgKCFpc0luQ2hlY2tQYXR0ZXJuR3JvdXApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzeW5jVHJpZ2dlcmluZ1BhdGhzLnB1c2goZGlmZkZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3luY1RyaWdnZXJpbmdQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW52YWxpZGF0ZURlcGVuZGVudHNBZmZlY3RlZEJ5RmlsZUV2ZW50cyhcbiAgICBmaWxlRXZlbnRzOiBNYXA8QWJzb2x1dGVQYXRoLCBcImNoYW5nZVwiIHwgXCJhZGRcIj4sXG4gICkge1xuICAgIGZvciAoY29uc3QgW2RpZmZGaWxlUGF0aCwgZXZlbnRdIG9mIGZpbGVFdmVudHMpIHtcbiAgICAgIC8vIOuzgOqyveuQnCDtjIzsnbzqs7wgZGVwZW5kZW50IO2MjOydvOuTpOydhCBpbnZhbGlkYXRlIO2VqeuLiOuLpC5cbiAgICAgIC8vIO2VnCDrsogg7J207IOBIGltcG9ydOuQnCDsuZzqtazrk6Tsl5Ag64yA7ZW07ISc66eMIOyLpOygnCDsnpHsl4XsnbQg7J287Ja064Kp64uI64ukLlxuICAgICAgLy8g6re465+s64uIIOyViOyLrO2VmOqzoCBpbnZhbGlkYXRlIO2VtOuPhCDrkKnri4jri6QuXG4gICAgICAvLyDthYzsiqTtirgg7ZmY6rK97JeQ7ISc64qUIGhvdC5pbnZhbGlkYXRlRmlsZeyLnCDstIjquLAg7JeQ65+s6rCAIOuwnOyDne2VmOq4sCDrlYzrrLjsl5AgaW52YWxpZGF0ZSDtlZjsp4Ag7JWK7Iq164uI64ukLlxuICAgICAgaWYgKCFpc1Rlc3QoKSkge1xuICAgICAgICBjb25zdCBpbnZhbGlkYXRlZFBhdGhzID0gKGF3YWl0IGhvdC5pbnZhbGlkYXRlRmlsZShkaWZmRmlsZVBhdGgsIGV2ZW50KSkgYXMgQWJzb2x1dGVQYXRoW107XG5cbiAgICAgICAgaWYgKGludmFsaWRhdGVkUGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmJvbGQoYPCflIQgSW52YWxpZGF0ZWQ6YCkpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBpbnZhbGlkYXRlZFBhdGggb2YgaW52YWxpZGF0ZWRQYXRocykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgLy8g66eM7JW9IG1vZGVsLnRzIO2MjOydvOydtCDrs4Dqsr0oaW52YWxpZGF0ZSnrkJjsl4jri6Q/IOq3uOufrOuptCByZWdpc3RlcmVkQXBpcyDspJHsl5DshJwg7J20IOuqqOuNuOyXkCDtlbTri7ntlZjripQgYXBp65Ok7J2AIOyngOybjOykmOyalC5cbiAgICAgICAgICAgICAgLy8gcmVnaXN0ZXJlZEFwaXPripQg7Ya17Jy866GcIOuLpCDrgqDroKTrsoTrprQg7IiYIOyXhuyKteuLiOuLpC4gcmVnaXN0ZXJlZEFwaXPsl5Ag7Jis65287Jik64qUIOy5nOq1rOuTpOydgCDstIjquLAg66Gc65Oc7IucIOuYkOuKlCBITVLsi5zsl5Drp4wg65Ox66Gd65CY6riwIOuVjOusuOyeheuLiOuLpC5cbiAgICAgICAgICAgICAgLy8g65Sw65287IScIG1vZGVsLnRzIO2MjOydvOydmCDrs4Dqsr3snLzroZwg64uk7J2M67KIIOyDiOuhnOyatCBldmFs7J20IOyYiOyDgeuQmOuKlCDsnbQg7Iuc7KCQ7JeQ7ISc66eMLCDsnbQg66qo64247JeQ7IScIOuCmOyYqCByZWdpc3RlcmVkQXBpc+uTpOydhCDsp4Dsm4zspIQg7IiYIOyeiOyKteuLiOuLpC5cbiAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlZEFwaXMgPSB0aGlzLnJlbW92ZUludmFsaWRhdGVkUmVnaXN0ZXJlZEFwaXMoaW52YWxpZGF0ZWRQYXRoKTtcbiAgICAgICAgICAgICAgaWYgKHJlbW92ZWRBcGlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGNoYWxrLmJsdWUoYC0gJHtwYXRoLnJlbGF0aXZlKFNvbmFtdS5hcGlSb290UGF0aCwgaW52YWxpZGF0ZWRQYXRoKX1gKSxcbiAgICAgICAgICAgICAgICAgIGNoYWxrLmdyYXkoYCh3aXRoICR7cmVtb3ZlZEFwaXMubGVuZ3RofSBBUElzKWApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShgLSAke3BhdGgucmVsYXRpdmUoU29uYW11LmFwaVJvb3RQYXRoLCBpbnZhbGlkYXRlZFBhdGgpfWApKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgIGNoYWxrLnJlZChgRmFpbGVkIHRvIHJlbW92ZSBpbnZhbGlkYXRlZCByZWdpc3RlcmVkIEFQSXMgZm9yICR7aW52YWxpZGF0ZWRQYXRofWApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBkZXZSdW5uZXIg7Zmc7ISx7ZmUIOyLnCwg67OA6rK965CcIOyGjOyKpCDtjIzsnbzsnYQgVml0ZXN0IOuqqOuTiCDqt7jrnpjtlITsl5DshJzrj4Qg66y07Zqo7ZmU7ZWp64uI64ukLlxuICAgICAgLy8gVml0ZeydmCBtb2R1bGVHcmFwaC5pbnZhbGlkYXRlTW9kdWxlKCnsnbQgaW1wb3J0ZXIg67Cp7Zal7Jy866GcIOyerOq3gOyggSBjYXNjYWRl7ZWY66+A66GcLFxuICAgICAgLy8g7IaM7IqkIO2MjOydvCDtlZjrgpjrp4wg66y07Zqo7ZmU7ZWY66m0IOydtOulvCBpbXBvcnTtlZjripQg7YWM7Iqk7Yq4IO2MjOydvOuPhCDsnpDrj5nsnLzroZwg66y07Zqo7ZmU65Cp64uI64ukLlxuICAgICAgaWYgKCFpc1Rlc3QoKSAmJiBTb25hbXUuY29uZmlnLnRlc3Q/LmRldlJ1bm5lcj8uZW5hYmxlZCAmJiBTb25hbXUuZGV2Vml0ZXN0TWFuYWdlcikge1xuICAgICAgICBTb25hbXUuZGV2Vml0ZXN0TWFuYWdlci5pbnZhbGlkYXRlRmlsZXMoW2RpZmZGaWxlUGF0aF0pO1xuICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICBjaGFsay5kaW0oYFRlc3QgaW52YWxpZGF0ZWQ6ICR7cGF0aC5yZWxhdGl2ZShTb25hbXUuYXBpUm9vdFBhdGgsIGRpZmZGaWxlUGF0aCl9YCksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSW52YWxpZGF0ZWRSZWdpc3RlcmVkQXBpcyhcbiAgICBpbnZhbGlkYXRlZFBhdGg6IEFic29sdXRlUGF0aCxcbiAgKTogKHR5cGVvZiByZWdpc3RlcmVkQXBpcylbbnVtYmVyXVtdIHtcbiAgICBpZiAoIWludmFsaWRhdGVkUGF0aC5lbmRzV2l0aChcIi5tb2RlbC50c1wiIC8q7IaM7IqkIOy9lOuTnOulvCDri6Tro6jripQg7IOB7Zmp7J2064uIIC50cyDqsr3roZzroZwg67SF64uI64ukLiovKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGl0eUlkID0gRW50aXR5TWFuYWdlci5nZXRFbnRpdHlJZEZyb21QYXRoKGludmFsaWRhdGVkUGF0aCk7XG4gICAgY29uc3QgdG9SZW1vdmUgPSByZWdpc3RlcmVkQXBpcy5maWx0ZXIoKGFwaSkgPT4gYXBpLm1vZGVsTmFtZSA9PT0gYCR7ZW50aXR5SWR9TW9kZWxgKTtcbiAgICBmb3IgKGNvbnN0IGFwaSBvZiB0b1JlbW92ZSkge1xuICAgICAgY29uc3QgaWR4ID0gcmVnaXN0ZXJlZEFwaXMuaW5kZXhPZihhcGkpO1xuICAgICAgaWYgKGlkeCAhPT0gLTEpIHtcbiAgICAgICAgcmVnaXN0ZXJlZEFwaXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvUmVtb3ZlO1xuICB9XG5cbiAgYXN5bmMgYXV0b2xvYWRUeXBlcygpIHtcbiAgICB0aGlzLnR5cGVzID0gYXdhaXQgbG9hZFR5cGVzKCk7XG4gIH1cblxuICBhc3luYyBhdXRvbG9hZE1vZGVscygpIHtcbiAgICB0aGlzLm1vZGVscyA9IGF3YWl0IGxvYWRNb2RlbHMoKTtcbiAgfVxuXG4gIGFzeW5jIGF1dG9sb2FkQXBpcygpIHtcbiAgICB0aGlzLmFwaXMgPSBhd2FpdCBsb2FkQXBpcygpO1xuICB9XG5cbiAgYXN5bmMgYXV0b2xvYWRXb3JrZmxvd3MoKSB7XG4gICAgdGhpcy53b3JrZmxvd3MgPSBhd2FpdCBsb2FkV29ya2Zsb3dzKCk7XG4gICAgYXdhaXQgU29uYW11LndvcmtmbG93cy5zeW5jaHJvbml6ZSh0aGlzLndvcmtmbG93cyk7XG4gIH1cblxuICBhc3luYyBhdXRvbG9hZFNzclJvdXRlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzc3JDb25maWdQYXRoID0gcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCJzcmMvc3NyXCIpO1xuXG4gICAgLy8g6riw7KG0IHJvdXRlcyDstIjquLDtmZRcbiAgICBjb25zdCB7IGNsZWFyU1NSUm91dGVzIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi9zc3JcIik7XG4gICAgY2xlYXJTU1JSb3V0ZXMoKTtcblxuICAgIC8vIHNzciDtj7TrjZQg7JeG7Jy866m0IOyKpO2CtVxuICAgIGlmICghKGF3YWl0IGV4aXN0cyhzc3JDb25maWdQYXRoKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzc3Ig7Y+0642UIOyViOydmCDrqqjrk6AgLnRzIO2MjOydvCDroZzrk5xcbiAgICBjb25zdCB7IGdsb2JBc3luYyB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIik7XG4gICAgY29uc3QgeyBpbXBvcnRNZW1iZXJzIH0gPSBhd2FpdCBpbXBvcnQoXCIuLi91dGlscy9lc20tdXRpbHNcIik7XG4gICAgY29uc3QgeyBydW50aW1lUGF0aCB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiKTtcblxuICAgIC8vIHJ1bnRpbWVQYXRo66W8IOyCrOyaqe2VmOyXrCDqsJzrsJwv7ZSE66Gc642V7IWYIO2ZmOqyveyXkCDrp57ripQg7ZmV7J6l7J6QIOyymOumrFxuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKHBhdGguam9pbihzc3JDb25maWdQYXRoLCBydW50aW1lUGF0aChcIioqLyoudHNcIikpKTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gaW1wb3J0TWVtYmVyc+ulvCDsgqzsmqntlZjrqbQg7YyM7J287J2YIHNpZGUgZWZmZWN0KHJlZ2lzdGVyU1NSIO2YuOy2nCnqsIAg7Iuk7ZaJ65CoXG4gICAgICAgIGF3YWl0IGltcG9ydE1lbWJlcnMoZmlsZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBsb2FkIFNTUiByb3V0ZTogJHtmaWxlfWAsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDsi6TsoJwg7Iux7YGs66W8IOyImO2Wie2VmOuKlCDrs7jssrTsnoXri4jri6QuXG4gICAqIOuzgOqyveuQnCDtjIzsnbzrk6TsnYQg7YOA7J6F67OE66GcIOu2hOulmO2VmOqzoCDqsIEg7YOA7J6F7JeQIOunnuuKlCDslaHshZjsnYQg7Iuk7ZaJ7ZWp64uI64ukLlxuICAgKlxuICAgKiBAcGFyYW0gZGlmZkZpbGVQYXRocyAtIOuzgOqyveuQnCDtjIzsnbzrk6TsnZgg7KCI64yAIOqyveuhnCDrqqnroZ1cbiAgICogQHJldHVybnMgZGlmZlR5cGVzIC0g67OA6rK965CcIO2MjOydvOydmCDtg4DsnoUg66qp66GdIChlbnRpdHksIHR5cGVzLCBtb2RlbCDrk7EpXG4gICAqL1xuICBhc3luYyBkb1N5bmNBY3Rpb25zKGRpZmZGaWxlUGF0aHM6IEFic29sdXRlUGF0aFtdKTogUHJvbWlzZTx7IGRpZmZUeXBlczogRmlsZVR5cGVbXSB9PiB7XG4gICAgY29uc3QgZGlmZkdyb3VwcyA9IHRoaXMuY2FsY3VsYXRlRGlmZkdyb3VwcyhkaWZmRmlsZVBhdGhzKTtcbiAgICBjb25zdCBkaWZmVHlwZXMgPSBPYmplY3Qua2V5cyhkaWZmR3JvdXBzKSBhcyBGaWxlVHlwZVtdO1xuXG4gICAgLy8g7Jes6riw64qUIOuzhOuhnCDspJHsmpTtlZwg7YyM7Yq464qUIOyVhOuLmeuLiOuLpC5cbiAgICAvLyDslYTrnpjsnZggaWYg7KCE6rCc66W8IOq5lOuBlO2VmOqyjCDtlZjroKTqs6Ag66eM65OgIERTTCDqsJnsnYAg6rGw65287IScLCDrrLTsi5ztlZjshZTrj4Qg65Cp64uI64ukLlxuICAgIGNvbnN0IHsgY2hhbmdlTWF0Y2hlcywgbm90aGluZ01hdGNoZXMsIHVuaGFuZGxlZFBhdGhzIH0gPSB0aGlzLmNoYW5nZU1hdGNoZXIoXG4gICAgICBkaWZmVHlwZXMsXG4gICAgICBkaWZmR3JvdXBzLFxuICAgICk7XG5cbiAgICBpZiAoY2hhbmdlTWF0Y2hlcyhcImVudGl0eVwiLCBcInR5cGVzXCIpKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVRydXRoU291cmNlQ2hhbmdlcyhkaWZmR3JvdXBzKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlTWF0Y2hlcyhcIm1vZGVsXCIsIFwiZnJhbWVcIikpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlSW1wbGVtZW50YXRpb25DaGFuZ2VzKGRpZmZHcm91cHMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VNYXRjaGVzKFwidHlwZXNcIiwgXCJmdW5jdGlvbnNcIikpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQXV4aWxpYXJ5U3ltYm9sQ2hhbmdlcyhkaWZmR3JvdXBzKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlTWF0Y2hlcyhcImNvbmZpZ1wiKSkge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVDb25maWdDaGFuZ2VzKGRpZmZHcm91cHMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VNYXRjaGVzKFwiaTE4blwiLCBcImVudGl0eVwiIC8q66CI7J2067iUKi8sIFwiY29uZmlnXCIgLypkZWZhdWx0TG9jYWxl65OxKi8pKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVNvbmFtdURpY3Rpb25hcnlSZWxhdGVkQ2hhbmdlcyhkaWZmR3JvdXBzKTtcbiAgICB9XG5cbiAgICBpZiAobm90aGluZ01hdGNoZXMoKSkge1xuICAgICAgLy8g7YyM7J28IOuzgOqyveydgCDqsJDsp4DrkJjsl4jsnLzrgpgg7KCAIOychCDslrTripAgY2hhbmdlTWF0Y2hlc+yXkOuPhCDqsbjrpqzsp4Ag7JWK7J2AIO2MjOydvOuTpOydtCBkcmlmdHPsnoXri4jri6QuXG4gICAgICAvLyBzeW5jZXLripQg7IaM7Iqk7J2YIOuzgOqyveyXkOuKlCDrsJjsnZHtlZjsp4Drp4wg7IKw7Lac66y87J2YIOuzgOqyvShkcmlmdCnsl5DripQg7KeB7KCR7KCB7Jy866GcIOuwmOydke2VmOyngCDslYrsirXri4jri6QuXG4gICAgICAvLyDrjIDsi6Ag7J20IGRyaWZ07JeQIOuMgO2VtCDqsr3qs6Ag7KCV64+E66eMIOy2nOugpe2VtOykjeuLiOuLpC5cbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRHJpZnRzKHVuaGFuZGxlZFBhdGhzKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaWZmVHlwZXMsXG4gICAgfTtcbiAgfVxuXG4gIGNhbGN1bGF0ZURpZmZHcm91cHMoZGlmZkZpbGVzOiBBYnNvbHV0ZVBhdGhbXSk6IERpZmZHcm91cHMge1xuICAgIGNvbnN0IHBhdHRlcm5Hcm91cCA9IGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCk7XG4gICAgY29uc3QgZmlsZVR5cGVzID0gT2JqZWN0LmtleXMocGF0dGVybkdyb3VwKSBhcyBGaWxlVHlwZVtdO1xuXG4gICAgcmV0dXJuIGdyb3VwKGRpZmZGaWxlcywgKGZpbGVQYXRoKSA9PiB7XG4gICAgICAvLyDsoIjrjIAg6rK966GcIOKGkiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICjsmIg6IFwiYXBpL3NyYy8uLi5cIiwgXCJ3ZWIvc3JjLy4uLlwiKVxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShTb25hbXUuYXBwUm9vdFBhdGgsIGZpbGVQYXRoKTtcbiAgICAgIGlmIChyZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi4uXCIpKSByZXR1cm4gXCJ1bmtub3duXCI7XG5cbiAgICAgIGZvciAoY29uc3QgZmlsZVR5cGUgb2YgZmlsZVR5cGVzKSB7XG4gICAgICAgIGlmIChtaW5pbWF0Y2gocmVsYXRpdmVQYXRoLCBwYXR0ZXJuR3JvdXBbZmlsZVR5cGVdKSkge1xuICAgICAgICAgIHJldHVybiBmaWxlVHlwZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICAgIH0pIGFzIHVua25vd24gYXMgRGlmZkdyb3VwcztcbiAgfVxuXG4gIHByaXZhdGUgY2hhbmdlTWF0Y2hlcihkaWZmVHlwZXM6IEZpbGVUeXBlW10sIGRpZmZHcm91cHM6IERpZmZHcm91cHMpIHtcbiAgICBjb25zdCBoYW5kbGVkID0gbmV3IFNldDxGaWxlVHlwZT4oKTtcblxuICAgIC8qKlxuICAgICAqIOuzgOqyvSDsgqztla3snbQg7J247J6Q66GcIOuwm+ydgCBGaWxlVHlwZeuTpCDspJEg7ZWY64KYIOydtOyDgeydhCDtj6ztlajtlZjripTsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgICAqIOqwgOuguSBbXCJlbnRpdHlcIl3qsIAg67OA6rK965CcIO2YuOy2nOyXkOyEnCBjaGFuZ2VNYXRjaGVzKFwiZW50aXR5XCIp64qUIHRyeWXrpbwg67CY7ZmY7ZWY66mwLFxuICAgICAqIFtcInR5cGVzXCIsIFwiaTE4blwiXeydtCDrs4Dqsr3rkJwg7Zi47Lac7JeQ7IScIGNoYW5nZU1hdGNoZXMoXCJ0eXBlc1wiLCBcImZ1bmN0aW9uc1wiKeuPhCB0cnVl66W8IOuwmO2ZmO2VmOyngOunjCxcbiAgICAgKiBbXCJmdW5jdGlvbnNcIl3qsIAg67OA6rK965CcIO2YuOy2nOyXkOyEnCBjaGFuZ2VNYXRjaGVzKFwiZnJhbWVcIinsnYAgZmFsc2Xrpbwg67CY7ZmY7ZWp64uI64ukLlxuICAgICAqIEBwYXJhbSB0eXBlc1xuICAgICAqL1xuICAgIGNvbnN0IGNoYW5nZU1hdGNoZXMgPSAoLi4udHlwZXM6IEZpbGVUeXBlW10pID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoaW5nID0gdHlwZXMuZmlsdGVyKCh0KSA9PiBkaWZmVHlwZXMuaW5jbHVkZXModCkpO1xuICAgICAgbWF0Y2hpbmcuZm9yRWFjaCgodCkgPT4gaGFuZGxlZC5hZGQodCkpO1xuICAgICAgcmV0dXJuIG1hdGNoaW5nLmxlbmd0aCA+IDA7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIGNoYW5nZU1hdGNoZXProZwg66ek7Lmt65CcIOqyg+ydtCDtlZjrgpjrj4Qg7JeG64qU7KeAIOyXrOu2gOulvCDqsIDsoLjsmLXri4jri6QuXG4gICAgICovXG4gICAgY29uc3Qgbm90aGluZ01hdGNoZXMgPSAoKSA9PiBoYW5kbGVkLnNpemUgPT09IDA7XG5cbiAgICAvKipcbiAgICAgKiDslrTrlqQgY2hhbmdlTWF0Y2hlcyDtmLjstpzsl5Drj4Qg6rG466as7KeAIOyViuydgCBGaWxlVHlwZeuTpOydmCDsi6TsoJwg7YyM7J28IOqyveuhnOulvCDrqqjslYTshJwg67CY7ZmY7ZWp64uI64ukLlxuICAgICAqL1xuICAgIGNvbnN0IHVuaGFuZGxlZFBhdGhzID0gKCk6IEFic29sdXRlUGF0aFtdID0+XG4gICAgICBkaWZmVHlwZXMuZmlsdGVyKCh0KSA9PiAhaGFuZGxlZC5oYXModCkpLmZsYXRNYXAoKHQpID0+IGRpZmZHcm91cHNbdF0gPz8gW10pO1xuXG4gICAgcmV0dXJuIHsgY2hhbmdlTWF0Y2hlcywgbm90aGluZ01hdGNoZXMsIHVuaGFuZGxlZFBhdGhzIH07XG4gIH1cblxuICBhc3luYyBoYW5kbGVUcnV0aFNvdXJjZUNoYW5nZXMoZGlmZkdyb3VwczogRGlmZkdyb3Vwcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIE5haXRlLnQoXCJoYW5kbGVUcnV0aFNvdXJjZUNoYW5nZXNcIiwgeyBkaWZmR3JvdXBzIH0pO1xuXG4gICAgYXdhaXQgRW50aXR5TWFuYWdlci5yZWxvYWQoKTtcblxuICAgIC8vIHR5cGVzIOyDneyEsShlbnRpdHkg7IOI66GcIOy2lOqwgOuQnCDqsr3smrApXG4gICAgLy8gcGFyZW50SWTqsIAg7JeG6rOgLCB0eXBlc+qwgCDsl4bripQg6rK97Jqw7JeQ66eMIOyDneyEsVxuICAgIGNvbnN0IGVudGl0eVBhdGggPSBkaWZmR3JvdXBzLmVudGl0eT8uYXQoMCk7XG4gICAgaWYgKGVudGl0eVBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZW50aXR5SWQgPSBFbnRpdHlNYW5hZ2VyLmdldEVudGl0eUlkRnJvbVBhdGgoZW50aXR5UGF0aCk7XG4gICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgIC8vIO2UhOuhnOygne2KuOyXkCDsg53shLHrkJjslrTslbwg7ZWY64qUIC50cyDtjIzsnbzsnZgg6rK966Gc7J6F64uI64ukLlxuICAgICAgY29uc3QgdHlwZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICBTb25hbXUuYXBpUm9vdFBhdGgsXG4gICAgICAgIGBzcmMvYXBwbGljYXRpb24vJHtlbnRpdHkubmFtZXMuZnN9LyR7ZW50aXR5Lm5hbWVzLmZzfS50eXBlcy50c2AsXG4gICAgICApIGFzIEFic29sdXRlUGF0aDtcblxuICAgICAgaWYgKGVudGl0eS5wYXJlbnRJZCA9PT0gdW5kZWZpbmVkICYmICEoYXdhaXQgZXhpc3RzKHR5cGVGaWxlUGF0aCkpKSB7XG4gICAgICAgIC8vICoudHlwZXMudHPqsIAg66eM65Ok7Ja07KeR64uI64ukLlxuICAgICAgICBjb25zdCB0eXBlcyA9IGF3YWl0IFN5bmNlckFjdGlvbnMuYWN0aW9uR2VuZXJhdGVJbml0aWFsVHlwZXMoZW50aXR5SWQpO1xuXG4gICAgICAgIC8vIOq3uOqxuCDtg4Dqsp/sl5Ag6rCW64uk65Gs7JqULlxuICAgICAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvblN5bmNGaWxlc1RvVGFyZ2V0cyh0eXBlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc29uYW11LmdlbmVyYXRlZC50c+yZgCBzb25hbXUuZ2VuZXJhdGVkLnNzby50c+qwgCDrp4zrk6TslrTsp5Hri4jri6QuXG4gICAgY29uc3QgZ2VuZXJhdGVkID0gYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZVNjaGVtYXMoKTtcblxuICAgIC8vIOuqqOuToCDqsoPrk6TsnYQgdGFyZ2V07JeQIOuztOuCtOyngOuKlCDslYrsirXri4jri6QuXG4gICAgLy8gc29uYW11LmdlbmVyYXRlZC5zc28udHPripQgc2VydmljZS1zaWRlLW9ubHnri4jquYwg67Cw7KCc7ZWp64uI64ukLlxuICAgIC8vIFRPRE8o67OR7KSAKTog7J20IO2VmOuTnOy9lOuTnOulvCDriITqsIAg7ZW06rKwIOyigCDtlbTso7zshLjsmpQuIOydvOuLqOydgCDqsJDri7kg6rCA64ql7ZWY64uIIOuGlOuRkOqyoOyKteuLiOuLpC4uLlxuICAgIGNvbnN0IGRpc3RyaWJ1dGFibGUgPSBnZW5lcmF0ZWQuZmlsdGVyKChwKSA9PiAhcC5lbmRzV2l0aChcIi5zc28udHNcIikpO1xuXG4gICAgLy8g7J207KCcIOuztOuCvCDqsoPrk6Trp4wgdGFyZ2V07JeQIOuztOuCtOyalC5cbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvblN5bmNGaWxlc1RvVGFyZ2V0cyhkaXN0cmlidXRhYmxlKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUltcGxlbWVudGF0aW9uQ2hhbmdlcyhkaWZmR3JvdXBzOiBEaWZmR3JvdXBzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgTmFpdGUudChcImhhbmRsZUltcGxlbWVudGF0aW9uQ2hhbmdlc1wiLCB7IGRpZmZHcm91cHMgfSk7XG4gICAgY29uc3QgbWVyZ2VkR3JvdXAgPSBbLi4uKGRpZmZHcm91cHMubW9kZWwgPz8gW10pLCAuLi4oZGlmZkdyb3Vwcy5mcmFtZSA/PyBbXSldO1xuXG4gICAgLy8gZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUudHPsl5DshJwgc3luY2VyLnR5cGVz66W8IOyUgeuLiOuLpC5cbiAgICAvLyBzZXJ2aWNlLnRlbXBsYXRlLnRz7JeQ7IScIHN5bmNlci5hcGlz66W8IOyUgeuLiOuLpC5cbiAgICBhd2FpdCB0aGlzLmF1dG9sb2FkTW9kZWxzKCk7XG4gICAgYXdhaXQgdGhpcy5hdXRvbG9hZFR5cGVzKCk7XG4gICAgYXdhaXQgdGhpcy5hdXRvbG9hZEFwaXMoKTtcblxuICAgIGNvbnN0IHBhcmFtczoge1xuICAgICAgbmFtZXNSZWNvcmQ6IEVudGl0eU5hbWVzUmVjb3JkO1xuICAgIH1bXSA9IG1lcmdlZEdyb3VwLm1hcCgobW9kZWxQYXRoKSA9PiB7XG4gICAgICBpZiAobW9kZWxQYXRoLmVuZHNXaXRoKFwiLm1vZGVsLnRzXCIpIHx8IG1vZGVsUGF0aC5lbmRzV2l0aChcIi5mcmFtZS50c1wiKSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IEVudGl0eU1hbmFnZXIuZ2V0RW50aXR5SWRGcm9tUGF0aChtb2RlbFBhdGgpO1xuICAgICAgICBhc3NlcnQoZW50aXR5SWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWVzUmVjb3JkOiBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCByZWFjaGFibGVcIik7XG4gICAgfSk7XG5cbiAgICAvLyBzZXJ2aWNlcy5nZW5lcmF0ZWQudHPrpbwgdGFyZ2V065Ok7JeQLCBzb25hbXUuZ2VuZXJhdGVkLmh0dHDrpbwgYXBp7JeQIOunjOuTpOyWtOykmOyalC5cbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlU2VydmljZXMocGFyYW1zKTtcbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvbkdlbmVyYXRlSHR0cHMoKTtcblxuICAgIC8vIHF1ZXJpZXMuZ2VuZXJhdGVkLnRz6rCAIOunjOuTpOyWtOynkeuLiOuLpC5cbiAgICBjb25zdCBxdWVyaWVzID0gYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25HZW5lcmF0ZVNzclF1ZXJpZXMoKTtcblxuICAgIC8vIHF1ZXJpZXPripQgU1NSIOuUlOyKpO2BrOumve2EsChzb25hbXUvc3NyIOydmOyhtCnsnbTrr4DroZwgd2ViIHRhcmdldOyXkOunjCDrtoTrsLDtlanri4jri6QuXG4gICAgLy8g64uk66W4IHRhcmdldChhcHAg65OxKeydtCBTU1LsnYQg7JWIIOyTsOuptCDsnZjrr7gg7JeG64qUIGRlYWQgY29kZeydvCDrv5DsnbTrnbwg67O064K07KeAIOyViuyKteuLiOuLpC5cbiAgICAvLyBUT0RPKOuzkeykgCk6IHdlYuyXkOunjCDqsIDqsowg7ZWY6riwIOychO2VtOyEnCB0YXJnZXQgcHJlZml466W8IOyngOygle2VtOyjvOyXiOyKteuLiOuLpC4g64KY7KSR7JeQIHRhcmdldCDsi5zsiqTthZzsnbQg6rCc7ISg65Cc64uk66m0IOuwlOq/lOyjvOyEuOyalC5cbiAgICBhd2FpdCBTeW5jZXJBY3Rpb25zLmFjdGlvblN5bmNGaWxlc1RvVGFyZ2V0cyhxdWVyaWVzLCBbXCJ3ZWJcIl0pO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlQXV4aWxpYXJ5U3ltYm9sQ2hhbmdlcyhkaWZmR3JvdXBzOiBEaWZmR3JvdXBzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgTmFpdGUudChcImhhbmRsZUF1eGlsaWFyeVN5bWJvbENoYW5nZXNcIiwgeyBkaWZmR3JvdXBzIH0pO1xuICAgIGNvbnN0IHRzUGF0aHMgPSB1bmlxdWUoWy4uLihkaWZmR3JvdXBzLnR5cGVzID8/IFtdKSwgLi4uKGRpZmZHcm91cHMuZnVuY3Rpb25zID8/IFtdKV0pO1xuICAgIGF3YWl0IFN5bmNlckFjdGlvbnMuYWN0aW9uU3luY0ZpbGVzVG9UYXJnZXRzKHRzUGF0aHMpO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlQ29uZmlnQ2hhbmdlcyhfOiBEaWZmR3JvdXBzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgU3luY2VyQWN0aW9ucy5hY3Rpb25TeW5jQ29uZmlnKCk7XG4gIH1cblxuICBhc3luYyBoYW5kbGVTb25hbXVEaWN0aW9uYXJ5UmVsYXRlZENoYW5nZXMoXzogRGlmZkdyb3Vwcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFN5bmNlckFjdGlvbnMuYWN0aW9uU3luY1NvbmFtdURpY3Rpb25hcnkoKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURyaWZ0cyhkcmlmdHM6IEFic29sdXRlUGF0aFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKGRyaWZ0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGNoYWxrLnllbGxvdyhcbiAgICAgICAgICBcIuKaoO+4jyBTb25hbXXqsIAg7J6Q64+ZIOyDneyEse2VnCDtjIzsnbzsl5Ag64yA7ZWcIOuzgOqyveydtCDqsJDsp4DrkJjsl4jsirXri4jri6QuIO2MjOydvOydtCBTb25hbXUgd2F0Y2hlciDsmbjrtoDsl5DshJwg67OA6rK965CcIOqyg+ycvOuhnCDstpTsoJXrkKnri4jri6QuXCIsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBwIG9mIGRyaWZ0cykge1xuICAgICAgICBjb25zb2xlLndhcm4oY2hhbGsueWVsbG93KGAgIC0gJHtwYXRoLnJlbGF0aXZlKFNvbmFtdS5hcHBSb290UGF0aCwgcCl9YCkpO1xuICAgICAgfVxuICAgICAgY29uc29sZS53YXJuKGNoYWxrLmRpbShcIiAg4oaSIGBwbnBtIHNvbmFtdSBzeW5jIC0tZm9yY2Vg66W8IOq2jOyepe2VqeuLiOuLpC5cIikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDso7zslrTsp4Qg7JeU7Yuw7Yuw7JmAIO2FnO2UjOumvyDtgqTsl5Ag64yA7ZW0LCDsg53shLHrkJwg7L2U65Oc6rCAIOyhtOyerO2VmOuKlOyngCDtmZXsnbjtlanri4jri6QuXG4gICAqIEBwYXJhbSBlbnRpdHlJZCDsl5Tti7Dti7AgSURcbiAgICogQHBhcmFtIHRlbXBsYXRlS2V5IO2FnO2UjOumvyDtgqRcbiAgICogQHBhcmFtIGVudW1JZCDsl7TqsbDtmJUgSURcbiAgICogQHJldHVybnMg7IOd7ISx65CcIOy9lOuTnOqwgCDsobTsnqztlZjripTsp4Ag7Jes67aAXG4gICAqL1xuICBhc3luYyBjaGVja0V4aXN0c0dlbkNvZGUoXG4gICAgZW50aXR5SWQ6IHN0cmluZyxcbiAgICB0ZW1wbGF0ZUtleTogVGVtcGxhdGVLZXksXG4gICAgZW51bUlkPzogc3RyaW5nLFxuICApOiBQcm9taXNlPHsgc3ViUGF0aDogc3RyaW5nOyBmdWxsUGF0aDogc3RyaW5nOyBpc0V4aXN0czogYm9vbGVhbiB9PiB7XG4gICAgY29uc3QgeyB0YXJnZXQsIHBhdGg6IGdlblBhdGggfSA9IFRlbXBsYXRlTWFuYWdlci5nZXQodGVtcGxhdGVLZXkpLmdldFRhcmdldEFuZFBhdGgoXG4gICAgICBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKSxcbiAgICAgIGVudW1JZCxcbiAgICApO1xuXG4gICAgY29uc3Qgc3ViUGF0aCA9IHBhdGguam9pbih0YXJnZXQsIGdlblBhdGgpO1xuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgc3ViUGF0aCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1YlBhdGgsXG4gICAgICBmdWxsUGF0aCxcbiAgICAgIGlzRXhpc3RzOiBhd2FpdCBleGlzdHMoZnVsbFBhdGgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICog7KO87Ja07KeEIOyXlO2LsO2LsOyZgCDsl7TqsbDtmJXsl5Ag64yA7ZW0LCDsg53shLHrkJwg7L2U65Oc6rCAIOyhtOyerO2VmOuKlOyngCDtmZXsnbjtlanri4jri6QuXG4gICAqIEBwYXJhbSBlbnRpdHlJZCDsl5Tti7Dti7AgSURcbiAgICogQHBhcmFtIGVudW1zIOyXtOqxsO2YlSDroIjsnbTruJRcbiAgICogQHJldHVybnMg7IOd7ISx65CcIOy9lOuTnOqwgCDsobTsnqztlZjripTsp4Ag7Jes67aAXG4gICAqL1xuICBhc3luYyBjaGVja0V4aXN0cyhcbiAgICBlbnRpdHlJZDogc3RyaW5nLFxuICAgIGVudW1zOiB7XG4gICAgICBbbmFtZTogc3RyaW5nXTogei5ab2RFbnVtO1xuICAgIH0sXG4gICk6IFByb21pc2U8UmVjb3JkPGAke1RlbXBsYXRlS2V5fSR7c3RyaW5nfWAsIGJvb2xlYW4+PiB7XG4gICAgY29uc3Qga2V5czogVGVtcGxhdGVLZXlbXSA9IFRlbXBsYXRlS2V5Lm9wdGlvbnM7XG4gICAgY29uc3QgbmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKTtcbiAgICBjb25zdCBlbnVtc0tleXMgPSBPYmplY3Qua2V5cyhlbnVtcykuZmlsdGVyKChuYW1lKSA9PiBuYW1lICE9PSBuYW1lcy5jb25zdGFudCk7XG5cbiAgICByZXR1cm4gYXdhaXQgcmVkdWNlQXN5bmMoXG4gICAgICBrZXlzLFxuICAgICAgYXN5bmMgKHJlc3VsdCwga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IHRwbCA9IFRlbXBsYXRlTWFuYWdlci5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGtleS5zdGFydHNXaXRoKFwidmlld19lbnVtc1wiKSkge1xuICAgICAgICAgIGF3YWl0IG1hcEFzeW5jKGVudW1zS2V5cywgYXN5bmMgKGNvbXBvbmVudElkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHRhcmdldCwgcGF0aDogcCB9ID0gdHBsLmdldFRhcmdldEFuZFBhdGgobmFtZXMsIGNvbXBvbmVudElkKTtcbiAgICAgICAgICAgIHJlc3VsdFtgJHtrZXl9X18ke2NvbXBvbmVudElkfWBdID0gYXdhaXQgZXhpc3RzKFxuICAgICAgICAgICAgICBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCB0YXJnZXQsIHApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeyB0YXJnZXQsIHBhdGg6IHAgfSA9IHRwbC5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKTtcbiAgICAgICAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG4gICAgICAgIGlmICh0YXJnZXQuaW5jbHVkZXMoXCI6dGFyZ2V0XCIpKSB7XG4gICAgICAgICAgYXdhaXQgbWFwQXN5bmModGFyZ2V0cywgYXN5bmMgKHQpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdFtgJHtrZXl9X18ke3R9YF0gPSBhd2FpdCBleGlzdHMoXG4gICAgICAgICAgICAgIHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHRhcmdldC5yZXBsYWNlKFwiOnRhcmdldFwiLCB0KSwgcCksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gYXdhaXQgZXhpc3RzKHBhdGguam9pbihTb25hbXUuYXBwUm9vdFBhdGgsIHRhcmdldCwgcCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8YCR7VGVtcGxhdGVLZXl9JHtzdHJpbmd9YCwgYm9vbGVhbj4sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtlZjsnITtmLjtmZjsmqkg7ZSE66Gd7IucIOuplOyGjOuTnOyeheuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZUVudGl0eShmb3JtOiBUZW1wbGF0ZU9wdGlvbnNbXCJlbnRpdHlcIl0pIHtcbiAgICByZXR1cm4gYXdhaXQgY3JlYXRlRW50aXR5KGZvcm0pO1xuICB9XG5cbiAgLyoqXG4gICAqIO2VmOychO2YuO2ZmOyaqSDtlITroZ3si5wg66mU7IaM65Oc7J6F64uI64ukLlxuICAgKi9cbiAgYXN5bmMgZGVsRW50aXR5KGVudGl0eUlkOiBzdHJpbmcpOiBQcm9taXNlPHsgZGVsUGF0aHM6IHN0cmluZ1tdIH0+IHtcbiAgICByZXR1cm4gYXdhaXQgZGVsRW50aXR5KGVudGl0eUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtlZjsnITtmLjtmZjsmqkg7ZSE66Gd7IucIOuplOyGjOuTnOyeheuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGdlbmVyYXRlVGVtcGxhdGU8VCBleHRlbmRzIFRlbXBsYXRlS2V5PihcbiAgICBrZXk6IFQsXG4gICAgdGVtcGxhdGVPcHRpb25zOiBUZW1wbGF0ZU9wdGlvbnNbVF0sXG4gICAgX2dlbmVyYXRlT3B0aW9ucz86IEdlbmVyYXRlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxBYnNvbHV0ZVBhdGhbXT4ge1xuICAgIHJldHVybiBhd2FpdCBnZW5lcmF0ZVRlbXBsYXRlKGtleSwgdGVtcGxhdGVPcHRpb25zLCBfZ2VuZXJhdGVPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtlZjsnITtmLjtmZjsmqkg7ZSE66Gd7IucIOuplOyGjOuTnOyeheuLiOuLpC5cbiAgICovXG4gIGFzeW5jIHJlbmRlclRlbXBsYXRlPFQgZXh0ZW5kcyBrZXlvZiBUZW1wbGF0ZU9wdGlvbnM+KFxuICAgIGtleTogVCxcbiAgICB0ZW1wbGF0ZU9wdGlvbnM6IFRlbXBsYXRlT3B0aW9uc1tUXSxcbiAgKTogUHJvbWlzZTxQYXRoQW5kQ29kZVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHJlbmRlclRlbXBsYXRlKGtleSwgdGVtcGxhdGVPcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtlZjsnITtmLjtmZjsmqkg7ZSE66Gd7IucIOuplOyGjOuTnOyeheuLiOuLpC5cbiAgICovXG4gIGFzeW5jIHJlbmV3Q2hlY2tzdW1zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBhd2FpdCByZW5ld0NoZWNrc3VtcygpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFXbUQ7Y0FDWjtzQkFDa0I7YUFFbEI7d0JBRXdCO2FBRWxCO21CQUVnQjtvQkFDVjtrQkFDTjtnQkFDRjtxQkFFc0I7Z0JBQ1c7c0JBQ1I7eUJBQ047cUJBQ21DO3FCQUVo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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/utils/formatter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/utils/formatter.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,qDAGrB,CAAC"}
|
package/dist/utils/formatter.js
CHANGED
|
@@ -5,7 +5,6 @@ import { execute, init_process_utils } from "./process-utils.js";
|
|
|
5
5
|
import { createHash } from "crypto";
|
|
6
6
|
import { readFile, unlink, writeFile } from "fs/promises";
|
|
7
7
|
import path, { dirname, join } from "path";
|
|
8
|
-
import { tmpdir } from "os";
|
|
9
8
|
import { createRequire } from "module";
|
|
10
9
|
import { format } from "oxfmt";
|
|
11
10
|
|
|
@@ -14,7 +13,7 @@ import { format } from "oxfmt";
|
|
|
14
13
|
* 캐시 없는 포맷함수 엔트리.
|
|
15
14
|
*/
|
|
16
15
|
async function formatCodeInternal(code, filePath) {
|
|
17
|
-
if (filePath.endsWith("json")) {
|
|
16
|
+
if (filePath.endsWith(".json")) {
|
|
18
17
|
return runOxfmt(code, filePath);
|
|
19
18
|
}
|
|
20
19
|
return runOxfmt(await runOxlint(code), filePath);
|
|
@@ -79,7 +78,7 @@ async function runOxlint(code) {
|
|
|
79
78
|
if (isTest()) {
|
|
80
79
|
return code;
|
|
81
80
|
}
|
|
82
|
-
const tmpFile = join(
|
|
81
|
+
const tmpFile = join(process.cwd(), `.sonamu-fmt-${Date.now()}-${Math.random().toString(36).slice(2)}.ts`);
|
|
83
82
|
try {
|
|
84
83
|
await writeFile(tmpFile, code, "utf-8");
|
|
85
84
|
try {
|
|
@@ -115,7 +114,7 @@ var init_formatter = __esmMin((() => {
|
|
|
115
114
|
init_process_utils();
|
|
116
115
|
_require = createRequire(import.meta.url);
|
|
117
116
|
formatCode = cached(formatCodeInternal, (code, filePath) => {
|
|
118
|
-
const ext = filePath.endsWith(".tsx") ? "tsx" : filePath.endsWith("json") ? "json" : "ts";
|
|
117
|
+
const ext = filePath.endsWith(".tsx") ? "tsx" : filePath.endsWith(".json") ? "json" : "ts";
|
|
119
118
|
return `${ext}:${createHash("sha1").update(code).digest("hex")}`;
|
|
120
119
|
});
|
|
121
120
|
cachedOxfmtConfig = null;
|
|
@@ -124,4 +123,4 @@ var init_formatter = __esmMin((() => {
|
|
|
124
123
|
//#endregion
|
|
125
124
|
init_formatter();
|
|
126
125
|
export { formatCode, init_formatter };
|
|
127
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwibmFtZXMiOlsiY2FjaGVkT3hmbXRDb25maWc6IEZvcm1hdENvbmZpZyB8IG51bGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG4vLyDthYzsiqTtirgg7ZmY6rK97JeQ7ISc64qUIGZzL3Byb21pc2Vz6rCAIG1vY2vrkJjsp4Drp4wsIOyVhOuemCBydW5PeGxpbnTsnbQgaXNUZXN0IOqwgOuTnOuhnCDslYgg64+
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwibmFtZXMiOlsiY2FjaGVkT3hmbXRDb25maWc6IEZvcm1hdENvbmZpZyB8IG51bGwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG4vLyDthYzsiqTtirgg7ZmY6rK97JeQ7ISc64qUIGZzL3Byb21pc2Vz6rCAIG1vY2vrkJjsp4Drp4wsIOyVhOuemCBydW5PeGxpbnTsnbQgaXNUZXN0IOqwgOuTnOuhnCDslYgg64+E64uI6rmMXG4vLyDqt7jrg6UgZnMvcHJvbWlzZXMg6re464yA66GcIOyCrOyaqS4gKHByb2R1Y3Rpb27sl5DshJzrp4wg7J6E7Iuc7YyM7J28IO2dkOumhOydtCDrj5Xri4jri6QuKVxuaW1wb3J0IHsgcmVhZEZpbGUsIHVubGluaywgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm1vZHVsZVwiO1xuaW1wb3J0IHBhdGgsIHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IGZvcm1hdCwgdHlwZSBGb3JtYXRDb25maWcgfSBmcm9tIFwib3hmbXRcIjtcblxuaW1wb3J0IHsgY2FjaGVkIH0gZnJvbSBcIi4vYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGlzVGVzdCB9IGZyb20gXCIuL2NvbnRyb2xsZXJcIjtcbmltcG9ydCB7IGV4ZWN1dGUgfSBmcm9tIFwiLi9wcm9jZXNzLXV0aWxzXCI7XG5cbmNvbnN0IF9yZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG4vKipcbiAqIOy9lOuTnOulvCDtlITroZzsoJ3tirjsnZggb3hmbXQgKyBveGxpbnQg7ISk7KCV7JeQIOunnuy2sCDtj6zrp6TtjIXtlZwg66y47J6Q7Je07J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiDsupDsi7Hrj4Qg7J6I7Ja07JqUIOOFjuOFjiDrmJHqsJnsnYAg7J6F66Cl7JeQIOuMgO2VtOyEnCDsupDsi5wg7Luk67KE65Cp64uI64ukLlxuICog7IiY66qF7J2AIO2UhOuhnOyEuOyKpCDso73snYTrlYzquYzsp4Ag44WLXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRDb2RlID0gY2FjaGVkKGZvcm1hdENvZGVJbnRlcm5hbCwgKGNvZGUsIGZpbGVQYXRoKSA9PiB7XG4gIGNvbnN0IGV4dCA9IGZpbGVQYXRoLmVuZHNXaXRoKFwiLnRzeFwiKSA/IFwidHN4XCIgOiBmaWxlUGF0aC5lbmRzV2l0aChcIi5qc29uXCIpID8gXCJqc29uXCIgOiBcInRzXCI7XG4gIHJldHVybiBgJHtleHR9OiR7Y3JlYXRlSGFzaChcInNoYTFcIikudXBkYXRlKGNvZGUpLmRpZ2VzdChcImhleFwiKX1gO1xufSk7XG5cbi8qKlxuICog7LqQ7IucIOyXhuuKlCDtj6zrp7ftlajsiJgg7JeU7Yq466asLlxuICovXG5hc3luYyBmdW5jdGlvbiBmb3JtYXRDb2RlSW50ZXJuYWwoY29kZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8ganNvbuydgCDtj6zrp7frp4wg7ZWY66m0IOuQqeuLiOuLpC5cbiAgaWYgKGZpbGVQYXRoLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICByZXR1cm4gcnVuT3hmbXQoY29kZSwgZmlsZVBhdGgpO1xuICB9XG5cbiAgLy8g66aw7Yq4IOuovOyggCDtlZwg64uk7J2M7JeQIO2PrOunt+ycvOuhnCDrp4jrrLTrpqztlbTsmpQuXG4gIHJldHVybiBydW5PeGZtdChhd2FpdCBydW5PeGxpbnQoY29kZSksIGZpbGVQYXRoKTtcbn1cblxuLyoqXG4gKiDtlITroZzsoJ3tirgg7ISk7KCV7J2EIOywvuyVhOyEnCDsnbTsl5Ag66ee7Law7IScIOy9lOuTnOulvCDtj6zrp7ftlanri4jri6QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bk94Zm10KGNvZGU6IHN0cmluZywgZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZvcm1hdChwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKSwgY29kZSwgYXdhaXQgbG9hZE94Zm10Q29uZmlnKCkpO1xuXG4gIGNvbnN0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnMuZmlsdGVyKChlKSA9PiBlLnNldmVyaXR5ID09PSBcIkVycm9yXCIpO1xuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoIWlzVGVzdCgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBveGZtdCBlcnJvcnMgKCR7ZmlsZVBhdGh9KTpgKTtcbiAgICAgIGZvciAoY29uc3QgZXJyIG9mIGVycm9ycykge1xuICAgICAgICBjb25zdCBsYWJlbCA9IGVyci5sYWJlbHNbMF07XG4gICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgIGNvbnN0IGJlZm9yZSA9IGNvZGUuc2xpY2UoTWF0aC5tYXgoMCwgbGFiZWwuc3RhcnQgLSA4MCksIGxhYmVsLnN0YXJ0KTtcbiAgICAgICAgICBjb25zdCBhdCA9IGNvZGUuc2xpY2UobGFiZWwuc3RhcnQsIGxhYmVsLmVuZCk7XG4gICAgICAgICAgY29uc3QgYWZ0ZXIgPSBjb2RlLnNsaWNlKGxhYmVsLmVuZCwgTWF0aC5taW4oY29kZS5sZW5ndGgsIGxhYmVsLmVuZCArIDgwKSk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgICAtICR7ZXJyLm1lc3NhZ2V9IChvZmZzZXQgJHtsYWJlbC5zdGFydH0tJHtsYWJlbC5lbmR9KWApO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCAgICBhcm91bmQ6IC4uLiR7YmVmb3JlfcK7JHthdH3CqyR7YWZ0ZXJ9Li4uYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgICAtICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvZGU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5jb2RlO1xufVxuXG5sZXQgY2FjaGVkT3hmbXRDb25maWc6IEZvcm1hdENvbmZpZyB8IG51bGwgPSBudWxsO1xuYXN5bmMgZnVuY3Rpb24gbG9hZE94Zm10Q29uZmlnKCk6IFByb21pc2U8Rm9ybWF0Q29uZmlnPiB7XG4gIGlmIChjYWNoZWRPeGZtdENvbmZpZyAhPT0gbnVsbCkge1xuICAgIHJldHVybiBjYWNoZWRPeGZtdENvbmZpZztcbiAgfVxuXG4gIGxldCBkaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGpvaW4oZGlyLCBcIi5veGZtdHJjLmpzb25cIik7XG4gICAgdHJ5IHtcbiAgICAgIGNhY2hlZE94Zm10Q29uZmlnID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYW5kaWRhdGUsIFwidXRmLThcIikpIGFzIEZvcm1hdENvbmZpZztcbiAgICAgIHJldHVybiBjYWNoZWRPeGZtdENvbmZpZztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoKGUgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSBcIkVOT0VOVFwiKSB7XG4gICAgICAgICFpc1Rlc3QoKSAmJiBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gbG9hZCAke2NhbmRpZGF0ZX06YCwgZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcik7XG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSBicmVhaztcbiAgICBkaXIgPSBwYXJlbnQ7XG4gIH1cblxuICBjYWNoZWRPeGZtdENvbmZpZyA9IHt9O1xuICByZXR1cm4gY2FjaGVkT3hmbXRDb25maWc7XG59XG5cbi8qKlxuICog7ZSE66Gc7KCd7Yq4IOyEpOygleyXkCDrp57strAg7L2U65Oc66W8IGxpbnTtlanri4jri6QuXG4gKlxuICog7ZSE66Gc7KCd7Yq4IOyEpOygleydhCDsoIHsmqnrsJvripQgb3hsaW50IGNsaeulvCDssL7slYQg652E7JuM7IScLFxuICog7J6E7IucIO2MjOydvOyXkCBpbi1wbGFjZeuhnCDsjajshJwg6re4IOqysOqzvOulvCDrubzsmKTripQg67Cp7Iud7Jy866GcIOyekeuPme2VqeuLiOuLpC5cbiAqIOyZnCDsnbTroIfqsowg7ZWY64qQ64OQPyBveGxpbnTqsIAgbm9kZSBhcGnrj4Qg7JWIIOyjvOqzoCBjbGnsl5DshJwgc3RkaW4g7Ji17IWY64+EIOyViCDso7zquLAg65WM66y4Li4uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bk94bGludChjb2RlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAoaXNUZXN0KCkpIHtcbiAgICAvLyDthYzsiqTtirgg7ZmY6rK97JeQ7ISc64qUIOuKkOugpOyngOq4sOunjCDtlZjqs6Ag6rKA7Kad7ZWgIOqwgOy5mOuPhCDsl4bslrTshJwg7JWIIO2VqeuLiOuLpC5cbiAgICAvLyBHaXRIdWIgQWN0aW9ucyDtmZjqsr3sl5DshJwgbGludOqwgCDsmKTrnpgg6rG466Ck7IScIOu7l+q4sOuPhCDtlojslrTsmpQuIChodHRwczovL2dpdGh1Yi5jb20vY2FydGFub3ZhLWFpL3NvbmFtdS9hY3Rpb25zL3J1bnMvMjUyNjcyMTQwMjcvam9iLzc0MDgzNjMwMTY5KVxuICAgIHJldHVybiBjb2RlO1xuICB9XG5cbiAgY29uc3QgdG1wRmlsZSA9IGpvaW4oXG4gICAgLy8g7YOA6rKfIO2MjOydvOydtCDro6jtirgg7JWE656Y7JeQIOyeiOyWtOyVvCDtlbTsmpQuIOq3uOuemOyEnCB0bXAg65SU66CJ7Yag66as6rCZ7J2A6rGwIOyViCDslIHri4jri6QhXG4gICAgcHJvY2Vzcy5jd2QoKSxcbiAgICBgLnNvbmFtdS1mbXQtJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpfS50c2AsXG4gICk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB3cml0ZUZpbGUodG1wRmlsZSwgY29kZSwgXCJ1dGYtOFwiKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjdXRlKHJlc29sdmVPeGxpbnRCaW4oKSwgW1wiLS1maXhcIiwgXCItLWZpeC1zdWdnZXN0aW9uc1wiLCBcIi0tdHlwZS1hd2FyZVwiLCB0bXBGaWxlXSwge1xuICAgICAgICB0aW1lb3V0OiAxMDAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGxpbnQg7JyE67CYIOyLnCBleGl0IGNvZGUgIT0gMOydtOyngOunjCAtLWZpeOuKlCDsoIHsmqnrkKguIGV4ZWMg7J6Q7LK0IOyLpO2MqOunjCB0aHJvdy5cbiAgICAgIGlmICh0eXBlb2YgKGUgYXMgRXJyb3IgJiB7IGNvZGU/OiBudW1iZXIgfSkuY29kZSAhPT0gXCJudW1iZXJcIikge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCByZWFkRmlsZSh0bXBGaWxlLCBcInV0Zi04XCIpO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB1bmxpbmsodG1wRmlsZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDsgq3soJwg7Iuk7Yyo7ZW064+EIOyWtOywqO2UvCBpZ25vcmXrkKguXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVPeGxpbnRCaW4oKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gX3JlcXVpcmUucmVzb2x2ZShcIm94bGludC9iaW4vb3hsaW50XCIpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gXCJveGxpbnRcIjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQTZCQSxlQUFlLG1CQUFtQixNQUFjLFVBQW1DO0FBRWpGLEtBQUksU0FBUyxTQUFTLFFBQVEsRUFBRTtBQUM5QixTQUFPLFNBQVMsTUFBTSxTQUFTOztBQUlqQyxRQUFPLFNBQVMsTUFBTSxVQUFVLEtBQUssRUFBRSxTQUFTOzs7OztBQU1sRCxlQUFlLFNBQVMsTUFBYyxVQUFtQztDQUN2RSxNQUFNLFNBQVMsTUFBTSxPQUFPLEtBQUssU0FBUyxTQUFTLEVBQUUsTUFBTSxNQUFNLGlCQUFpQixDQUFDO0NBRW5GLE1BQU0sU0FBUyxPQUFPLE9BQU8sUUFBUSxNQUFNLEVBQUUsYUFBYSxRQUFRO0FBQ2xFLEtBQUksT0FBTyxTQUFTLEdBQUc7QUFDckIsTUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNiLFdBQVEsTUFBTSxpQkFBaUIsU0FBUyxJQUFJO0FBQzVDLFFBQUssTUFBTSxPQUFPLFFBQVE7SUFDeEIsTUFBTSxRQUFRLElBQUksT0FBTztBQUN6QixRQUFJLE9BQU87S0FDVCxNQUFNLFNBQVMsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLE1BQU0sUUFBUSxHQUFHLEVBQUUsTUFBTSxNQUFNO0tBQ3JFLE1BQU0sS0FBSyxLQUFLLE1BQU0sTUFBTSxPQUFPLE1BQU0sSUFBSTtLQUM3QyxNQUFNLFFBQVEsS0FBSyxNQUFNLE1BQU0sS0FBSyxLQUFLLElBQUksS0FBSyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUM7QUFDMUUsYUFBUSxNQUFNLE9BQU8sSUFBSSxRQUFRLFdBQVcsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLEdBQUc7QUFDeEUsYUFBUSxNQUFNLGtCQUFrQixPQUFPLEdBQUcsR0FBRyxHQUFHLE1BQU0sS0FBSztXQUN0RDtBQUNMLGFBQVEsTUFBTSxPQUFPLElBQUksVUFBVTs7OztBQUl6QyxTQUFPOztBQUVULFFBQU8sT0FBTzs7QUFJaEIsZUFBZSxrQkFBeUM7QUFDdEQsS0FBSSxzQkFBc0IsTUFBTTtBQUM5QixTQUFPOztDQUdULElBQUksTUFBTSxRQUFRLEtBQUs7QUFDdkIsUUFBTyxNQUFNO0VBQ1gsTUFBTSxZQUFZLEtBQUssS0FBSyxnQkFBZ0I7QUFDNUMsTUFBSTtBQUNGLHVCQUFvQixLQUFLLE1BQU0sTUFBTSxTQUFTLFdBQVcsUUFBUSxDQUFDO0FBQ2xFLFVBQU87V0FDQSxHQUFHO0FBQ1YsT0FBSyxFQUE0QixTQUFTLFVBQVU7QUFDbEQsS0FBQyxRQUFRLElBQUksUUFBUSxNQUFNLGtCQUFrQixVQUFVLElBQUksRUFBRTtBQUM3RDs7O0VBR0osTUFBTSxTQUFTLFFBQVEsSUFBSTtBQUMzQixNQUFJLFdBQVcsSUFBSztBQUNwQixRQUFNOztBQUdSLHFCQUFvQixFQUFFO0FBQ3RCLFFBQU87Ozs7Ozs7OztBQVVULGVBQWUsVUFBVSxNQUErQjtBQUN0RCxLQUFJLFFBQVEsRUFBRTtBQUdaLFNBQU87O0NBR1QsTUFBTSxVQUFVLEtBRWQsUUFBUSxLQUFLLEVBQ2IsZUFBZSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQ2xFO0FBRUQsS0FBSTtBQUNGLFFBQU0sVUFBVSxTQUFTLE1BQU0sUUFBUTtBQUV2QyxNQUFJO0FBQ0YsU0FBTSxRQUFRLGtCQUFrQixFQUFFO0lBQUM7SUFBUztJQUFxQjtJQUFnQjtJQUFRLEVBQUUsRUFDekYsU0FBUyxLQUNWLENBQUM7V0FDSyxHQUFHO0FBRVYsT0FBSSxPQUFRLEVBQWdDLFNBQVMsVUFBVTtBQUM3RCxVQUFNOzs7QUFJVixTQUFPLE1BQU0sU0FBUyxTQUFTLFFBQVE7V0FDL0I7QUFDUixNQUFJO0FBQ0YsU0FBTSxPQUFPLFFBQVE7VUFDZjs7O0FBTVosU0FBUyxtQkFBMkI7QUFDbEMsS0FBSTtBQUNGLFNBQU8sU0FBUyxRQUFRLG9CQUFvQjtTQUN0QztBQUNOLFNBQU87Ozs7O21CQXJJNEI7a0JBQ0Q7cUJBQ0k7Q0FFcEMsV0FBVyxjQUFjLE9BQU8sS0FBSyxJQUFJO0NBUWxDLGFBQWEsT0FBTyxxQkFBcUIsTUFBTSxhQUFhO0VBQ3ZFLE1BQU0sTUFBTSxTQUFTLFNBQVMsT0FBTyxHQUFHLFFBQVEsU0FBUyxTQUFTLFFBQVEsR0FBRyxTQUFTO0FBQ3RGLFNBQU8sR0FBRyxJQUFJLEdBQUcsV0FBVyxPQUFPLENBQUMsT0FBTyxLQUFLLENBQUMsT0FBTyxNQUFNO0dBQzlEO0NBMkNFQSxvQkFBeUMifQ==
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { type ExecFileOptions } from "child_process";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* child_process.execFile의 Promise 기반 wrapper입니다.
|
|
4
4
|
* exit code가 non-zero이면 reject해요.
|
|
5
5
|
*/
|
|
6
6
|
export declare function execute(bin: string, args: string[], options?: ExecFileOptions): Promise<string>;
|
|
7
7
|
/**
|
|
8
8
|
* 주어진 작업을 실행합니다.
|
|
9
|
-
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(
|
|
9
|
+
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(waitForUpTo) 동안 작업을 기다린 후 종료합니다.
|
|
10
10
|
* @param {() => Promise<void>} job - 실행할 작업
|
|
11
|
-
* @param {
|
|
12
|
-
* @param {NodeJS.Signals} options.
|
|
13
|
-
* @param {number} options.
|
|
11
|
+
* @param {{ whenThisHappens: NodeJS.Signals; waitForUpTo: number }} options - 옵션
|
|
12
|
+
* @param {NodeJS.Signals} options.whenThisHappens - 프로세스 이벤트
|
|
13
|
+
* @param {number} options.waitForUpTo - 최대 한계 시간
|
|
14
14
|
*/
|
|
15
15
|
export declare function runWithGracefulShutdown(job: () => Promise<void>, { whenThisHappens: event, waitForUpTo: delayBeforeShutdown, }?: {
|
|
16
16
|
whenThisHappens: NodeJS.Signals;
|
|
@@ -6,7 +6,7 @@ import { promisify } from "util";
|
|
|
6
6
|
|
|
7
7
|
//#region src/utils/process-utils.ts
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* child_process.execFile의 Promise 기반 wrapper입니다.
|
|
10
10
|
* exit code가 non-zero이면 reject해요.
|
|
11
11
|
*/
|
|
12
12
|
async function execute(bin, args, options) {
|
|
@@ -15,11 +15,11 @@ async function execute(bin, args, options) {
|
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* 주어진 작업을 실행합니다.
|
|
18
|
-
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(
|
|
18
|
+
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(waitForUpTo) 동안 작업을 기다린 후 종료합니다.
|
|
19
19
|
* @param {() => Promise<void>} job - 실행할 작업
|
|
20
|
-
* @param {
|
|
21
|
-
* @param {NodeJS.Signals} options.
|
|
22
|
-
* @param {number} options.
|
|
20
|
+
* @param {{ whenThisHappens: NodeJS.Signals; waitForUpTo: number }} options - 옵션
|
|
21
|
+
* @param {NodeJS.Signals} options.whenThisHappens - 프로세스 이벤트
|
|
22
|
+
* @param {number} options.waitForUpTo - 최대 한계 시간
|
|
23
23
|
*/
|
|
24
24
|
async function runWithGracefulShutdown(job, { whenThisHappens: event, waitForUpTo: delayBeforeShutdown } = {
|
|
25
25
|
whenThisHappens: "SIGUSR2",
|
|
@@ -52,4 +52,4 @@ var init_process_utils = __esmMin((() => {
|
|
|
52
52
|
//#endregion
|
|
53
53
|
init_process_utils();
|
|
54
54
|
export { execute, init_process_utils, runWithGracefulShutdown };
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy11dGlscy5qcyIsIm5hbWVzIjpbInNldFRpbWVvdXRQcm9taXNlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wcm9jZXNzLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlLCB0eXBlIEV4ZWNGaWxlT3B0aW9ucyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBzZXRUaW1lb3V0IGFzIHNldFRpbWVvdXRQcm9taXNlcyB9IGZyb20gXCJ0aW1lcnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCJ1dGlsXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcblxuY29uc3QgZXhlY0ZpbGVBc3luYyA9IHByb21pc2lmeShleGVjRmlsZSk7XG5cbi8qKlxuICogY2hpbGRfcHJvY2Vzcy5leGVjRmlsZeydmCBQcm9taXNlIOq4sOuwmCB3cmFwcGVy7J6F64uI64ukLlxuICogZXhpdCBjb2Rl6rCAIG5vbi16ZXJv7J2066m0IHJlamVjdO2VtOyalC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUoXG4gIGJpbjogc3RyaW5nLFxuICBhcmdzOiBzdHJpbmdbXSxcbiAgb3B0aW9ucz86IEV4ZWNGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBleGVjRmlsZUFzeW5jKGJpbiwgYXJncywgb3B0aW9ucyk7XG4gIHJldHVybiB0eXBlb2Ygc3Rkb3V0ID09PSBcInN0cmluZ1wiID8gc3Rkb3V0IDogc3Rkb3V0LnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICog7KO87Ja07KeEIOyekeyXheydhCDsi6Ttlontlanri4jri6QuXG4gKiDso7zslrTsp4Qg7ZSE66Gc7IS47IqkIOydtOuypO2KuCg97Iuc6re464SQKeqwgCDrsJzsg53tlZjsmIDsnYQg65WM7JeQ64+EIOy1nOuMgCDtlZzqs4Qod2FpdEZvclVwVG8pIOuPmeyViCDsnpHsl4XsnYQg6riw64uk66awIO2bhCDsooXro4ztlanri4jri6QuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8dm9pZD59IGpvYiAtIOyLpO2Wie2VoCDsnpHsl4VcbiAqIEBwYXJhbSB7eyB3aGVuVGhpc0hhcHBlbnM6IE5vZGVKUy5TaWduYWxzOyB3YWl0Rm9yVXBUbzogbnVtYmVyIH19IG9wdGlvbnMgLSDsmLXshZhcbiAqIEBwYXJhbSB7Tm9kZUpTLlNpZ25hbHN9IG9wdGlvbnMud2hlblRoaXNIYXBwZW5zIC0g7ZSE66Gc7IS47IqkIOydtOuypO2KuFxuICogQHBhcmFtIHtudW1iZXJ9IG9wdGlvbnMud2FpdEZvclVwVG8gLSDstZzrjIAg7ZWc6rOEIOyLnOqwhFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aEdyYWNlZnVsU2h1dGRvd24oXG4gIGpvYjogKCkgPT4gUHJvbWlzZTx2b2lkPixcbiAge1xuICAgIHdoZW5UaGlzSGFwcGVuczogZXZlbnQsXG4gICAgd2FpdEZvclVwVG86IGRlbGF5QmVmb3JlU2h1dGRvd24sXG4gIH06IHsgd2hlblRoaXNIYXBwZW5zOiBOb2RlSlMuU2lnbmFsczsgd2FpdEZvclVwVG86IG51bWJlciB9ID0ge1xuICAgIHdoZW5UaGlzSGFwcGVuczogXCJTSUdVU1IyXCIsXG4gICAgd2FpdEZvclVwVG86IDIwMDAwLFxuICB9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGxldCBpc1J1bm5pbmcgPSB0cnVlIGFzIGJvb2xlYW47XG5cbiAgY29uc3QgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCBvbkV2ZW50ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNSdW5uaW5nKSB7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGNoYWxrLm1hZ2VudGFCcmlnaHQoYHdhaXQgZm9yIHN5bmNpbmcgZG9uZS4uLi5gKSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgc2V0VGltZW91dFByb21pc2VzKGRlbGF5QmVmb3JlU2h1dGRvd24sIFwid2FpdGluZy1zeW5jXCIsIHtcbiAgICAgICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7fVxuICAgIGNvbnNvbGUubG9nKGNoYWxrLm1hZ2VudGFCcmlnaHQoYFN5bmNpbmcgRE9ORSFgKSk7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9O1xuICBwcm9jZXNzLm9uKGV2ZW50LCBvbkV2ZW50KTtcblxuICBhd2FpdCBqb2IoKTtcblxuICBpc1J1bm5pbmcgPSBmYWxzZTtcbiAgYWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gIHByb2Nlc3Mub2ZmKGV2ZW50LCBvbkV2ZW50KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFZQSxlQUFzQixRQUNwQixLQUNBLE1BQ0EsU0FDaUI7Q0FDakIsTUFBTSxFQUFFLFdBQVcsTUFBTSxjQUFjLEtBQUssTUFBTSxRQUFRO0FBQzFELFFBQU8sT0FBTyxXQUFXLFdBQVcsU0FBUyxPQUFPLFVBQVU7Ozs7Ozs7Ozs7QUFXaEUsZUFBc0Isd0JBQ3BCLEtBQ0EsRUFDRSxpQkFBaUIsT0FDakIsYUFBYSx3QkFDK0M7Q0FDNUQsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDZCxFQUNjO0NBQ2YsSUFBSSxZQUFZO0NBRWhCLE1BQU0sa0JBQWtCLElBQUksaUJBQWlCO0NBQzdDLE1BQU0sVUFBVSxZQUFZO0FBQzFCLE1BQUksQ0FBQyxXQUFXO0FBQ2QsV0FBUSxLQUFLLEVBQUU7O0FBRWpCLFVBQVEsSUFBSSxNQUFNLGNBQWMsNEJBQTRCLENBQUM7QUFFN0QsTUFBSTtBQUNGLFNBQU1BLFdBQW1CLHFCQUFxQixnQkFBZ0IsRUFDNUQsUUFBUSxnQkFBZ0IsUUFDekIsQ0FBQztVQUNJO0FBQ1IsVUFBUSxJQUFJLE1BQU0sY0FBYyxnQkFBZ0IsQ0FBQztBQUNqRCxVQUFRLEtBQUssRUFBRTs7QUFFakIsU0FBUSxHQUFHLE9BQU8sUUFBUTtBQUUxQixPQUFNLEtBQUs7QUFFWCxhQUFZO0FBQ1osaUJBQWdCLE9BQU87QUFDdkIsU0FBUSxJQUFJLE9BQU8sUUFBUTs7OztDQXhEdkIsZ0JBQWdCLFVBQVUsU0FBUyJ9
|
package/package.json
CHANGED
package/src/api/decorators.ts
CHANGED
|
@@ -53,7 +53,7 @@ export type ApiDecoratorOptions = {
|
|
|
53
53
|
compress?: CompressConfig;
|
|
54
54
|
};
|
|
55
55
|
export type StreamDecoratorOptions = {
|
|
56
|
-
type: "sse";
|
|
56
|
+
type: "sse";
|
|
57
57
|
// oxlint-disable-next-line @typescript-eslint/no-explicit-any -- 이벤트 키별로 넘겨주는 값이므로 어떤 타입이든 상관없음
|
|
58
58
|
events: z.ZodObject<any>;
|
|
59
59
|
path?: string;
|
|
@@ -386,7 +386,7 @@ export function transactional(options: TransactionalOptions = {}) {
|
|
|
386
386
|
const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
|
|
387
387
|
assert(
|
|
388
388
|
modelName,
|
|
389
|
-
`modelName is required on @
|
|
389
|
+
`modelName is required on @transactional decorator on ${target.constructor.name}.${propertyKey}`,
|
|
390
390
|
);
|
|
391
391
|
const methodName = propertyKey;
|
|
392
392
|
|
|
@@ -57,7 +57,7 @@ export function getChecksumPatternGroup() {
|
|
|
57
57
|
// sonamu.shared.ts와 entry-server.generated.tsx와 같은
|
|
58
58
|
// sync 초반 1회성 부트스트랩 파일들은 관리 안 하기 때문에 여기에 리스팅도 안 합니다.
|
|
59
59
|
generated: api("src/application/**/*.generated.{ts,tsx,sso.ts}"),
|
|
60
|
-
generatedCopied: targets("src/services/**/{sonamu,queries}.generated.{ts,tsx
|
|
60
|
+
generatedCopied: targets("src/services/**/{sonamu,queries}.generated.{ts,tsx}"),
|
|
61
61
|
httpGenerated: api("src/application/**/*.generated.http"),
|
|
62
62
|
servicesGenerated: targets("src/services/services.generated.ts"),
|
|
63
63
|
sdGenerated: anywhere("src/i18n/**/sd.generated.ts"),
|
|
@@ -117,15 +117,27 @@ export async function actionGenerateSsrEntryServerIfNotExists(): Promise<Absolut
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
/**
|
|
120
|
-
* 주어진 .ts 파일들(api에 있다고 가정)을
|
|
120
|
+
* 주어진 .ts 파일들(api에 있다고 가정)을 타겟 디렉토리의 services에 갖다 둡니다.
|
|
121
121
|
* 이때 내부의 sonamu import는 sonamu.shared.ts import로 치환되고,
|
|
122
122
|
* 경로의 /application/은 /services/로 치환됩니다.
|
|
123
123
|
*
|
|
124
|
+
* 기본은 Sonamu.config.sync.targets 전체를 대상으로 하며,
|
|
125
|
+
* onlyTargetsStartingWith 화이트리스트로 일부 target에만 분배할 수 있습니다.
|
|
126
|
+
* 가량 SSR-only인 queries.generated.ts같은 친구들은 "web"으로 시작하는 타겟들에만 보낼 수 있어요.
|
|
127
|
+
* ["web"]으로 넘기면 web, web-admin, webapp 등에 모두 매치됩니다.
|
|
128
|
+
*
|
|
124
129
|
* @param tsPaths 복사할 파일들의 절대 경로
|
|
130
|
+
* @param onlyTargetsStartingWith 분배할 target 접두어들의 화이트리스트. 미지정 시 모든 target.
|
|
125
131
|
* @returns 각 타겟에 복사된 파일들의 절대 경로 배열 (flat).
|
|
126
132
|
*/
|
|
127
|
-
export async function actionSyncFilesToTargets(
|
|
128
|
-
|
|
133
|
+
export async function actionSyncFilesToTargets(
|
|
134
|
+
tsPaths: AbsolutePath[],
|
|
135
|
+
onlyTargetsStartingWith?: string[],
|
|
136
|
+
): Promise<string[]> {
|
|
137
|
+
const allTargets = Sonamu.config.sync.targets;
|
|
138
|
+
const targets = onlyTargetsStartingWith
|
|
139
|
+
? allTargets.filter((t) => onlyTargetsStartingWith.some((prefix) => t.startsWith(prefix)))
|
|
140
|
+
: allTargets;
|
|
129
141
|
const { dir: apiDir } = Sonamu.config.api;
|
|
130
142
|
|
|
131
143
|
return (
|
package/src/syncer/syncer.ts
CHANGED
|
@@ -414,11 +414,16 @@ export class Syncer {
|
|
|
414
414
|
}
|
|
415
415
|
}
|
|
416
416
|
|
|
417
|
-
// sonamu.generated.ts가 만들어집니다.
|
|
417
|
+
// sonamu.generated.ts와 sonamu.generated.sso.ts가 만들어집니다.
|
|
418
418
|
const generated = await SyncerActions.actionGenerateSchemas();
|
|
419
419
|
|
|
420
|
-
//
|
|
421
|
-
|
|
420
|
+
// 모든 것들을 target에 보내지는 않습니다.
|
|
421
|
+
// sonamu.generated.sso.ts는 service-side-only니까 배제합니다.
|
|
422
|
+
// TODO(병준): 이 하드코드를 누가 해결 좀 해주세요. 일단은 감당 가능하니 놔두겠습니다...
|
|
423
|
+
const distributable = generated.filter((p) => !p.endsWith(".sso.ts"));
|
|
424
|
+
|
|
425
|
+
// 이제 보낼 것들만 target에 보내요.
|
|
426
|
+
await SyncerActions.actionSyncFilesToTargets(distributable);
|
|
422
427
|
}
|
|
423
428
|
|
|
424
429
|
async handleImplementationChanges(diffGroups: DiffGroups): Promise<void> {
|
|
@@ -451,8 +456,10 @@ export class Syncer {
|
|
|
451
456
|
// queries.generated.ts가 만들어집니다.
|
|
452
457
|
const queries = await SyncerActions.actionGenerateSsrQueries();
|
|
453
458
|
|
|
454
|
-
//
|
|
455
|
-
|
|
459
|
+
// queries는 SSR 디스크립터(sonamu/ssr 의존)이므로 web target에만 분배합니다.
|
|
460
|
+
// 다른 target(app 등)이 SSR을 안 쓰면 의미 없는 dead code일 뿐이라 보내지 않습니다.
|
|
461
|
+
// TODO(병준): web에만 가게 하기 위해서 target prefix를 지정해주었습니다. 나중에 target 시스템이 개선된다면 바꿔주세요.
|
|
462
|
+
await SyncerActions.actionSyncFilesToTargets(queries, ["web"]);
|
|
456
463
|
}
|
|
457
464
|
|
|
458
465
|
async handleAuxiliarySymbolChanges(diffGroups: DiffGroups): Promise<void> {
|
package/src/utils/formatter.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { createHash } from "crypto";
|
|
|
3
3
|
// 그냥 fs/promises 그대로 사용. (production에서만 임시파일 흐름이 돕니다.)
|
|
4
4
|
import { readFile, unlink, writeFile } from "fs/promises";
|
|
5
5
|
import { createRequire } from "module";
|
|
6
|
-
import { tmpdir } from "os";
|
|
7
6
|
import path, { dirname, join } from "path";
|
|
8
7
|
|
|
9
8
|
import { format, type FormatConfig } from "oxfmt";
|
|
@@ -21,7 +20,7 @@ const _require = createRequire(import.meta.url);
|
|
|
21
20
|
* 수명은 프로세스 죽을때까지 ㅋ
|
|
22
21
|
*/
|
|
23
22
|
export const formatCode = cached(formatCodeInternal, (code, filePath) => {
|
|
24
|
-
const ext = filePath.endsWith(".tsx") ? "tsx" : filePath.endsWith("json") ? "json" : "ts";
|
|
23
|
+
const ext = filePath.endsWith(".tsx") ? "tsx" : filePath.endsWith(".json") ? "json" : "ts";
|
|
25
24
|
return `${ext}:${createHash("sha1").update(code).digest("hex")}`;
|
|
26
25
|
});
|
|
27
26
|
|
|
@@ -30,7 +29,7 @@ export const formatCode = cached(formatCodeInternal, (code, filePath) => {
|
|
|
30
29
|
*/
|
|
31
30
|
async function formatCodeInternal(code: string, filePath: string): Promise<string> {
|
|
32
31
|
// json은 포맷만 하면 됩니다.
|
|
33
|
-
if (filePath.endsWith("json")) {
|
|
32
|
+
if (filePath.endsWith(".json")) {
|
|
34
33
|
return runOxfmt(code, filePath);
|
|
35
34
|
}
|
|
36
35
|
|
|
@@ -107,10 +106,9 @@ async function runOxlint(code: string): Promise<string> {
|
|
|
107
106
|
return code;
|
|
108
107
|
}
|
|
109
108
|
|
|
110
|
-
// OS tmp dir에 두는 이유: process.cwd()가 watcher 스코프(api/src 아래)일 가능성을 차단합니다.
|
|
111
|
-
// cwd가 그 위치라면 write/unlink가 짧은 순간 watcher 이벤트로 잡혀 batch에 흘러들어갈 수 있어요.
|
|
112
109
|
const tmpFile = join(
|
|
113
|
-
|
|
110
|
+
// 타겟 파일이 루트 아래에 있어야 해요. 그래서 tmp 디렉토리같은거 안 씁니다!
|
|
111
|
+
process.cwd(),
|
|
114
112
|
`.sonamu-fmt-${Date.now()}-${Math.random().toString(36).slice(2)}.ts`,
|
|
115
113
|
);
|
|
116
114
|
|
|
@@ -7,7 +7,7 @@ import chalk from "chalk";
|
|
|
7
7
|
const execFileAsync = promisify(execFile);
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* child_process.execFile의 Promise 기반 wrapper입니다.
|
|
11
11
|
* exit code가 non-zero이면 reject해요.
|
|
12
12
|
*/
|
|
13
13
|
export async function execute(
|
|
@@ -21,11 +21,11 @@ export async function execute(
|
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* 주어진 작업을 실행합니다.
|
|
24
|
-
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(
|
|
24
|
+
* 주어진 프로세스 이벤트(=시그널)가 발생하였을 때에도 최대 한계(waitForUpTo) 동안 작업을 기다린 후 종료합니다.
|
|
25
25
|
* @param {() => Promise<void>} job - 실행할 작업
|
|
26
|
-
* @param {
|
|
27
|
-
* @param {NodeJS.Signals} options.
|
|
28
|
-
* @param {number} options.
|
|
26
|
+
* @param {{ whenThisHappens: NodeJS.Signals; waitForUpTo: number }} options - 옵션
|
|
27
|
+
* @param {NodeJS.Signals} options.whenThisHappens - 프로세스 이벤트
|
|
28
|
+
* @param {number} options.waitForUpTo - 최대 한계 시간
|
|
29
29
|
*/
|
|
30
30
|
export async function runWithGracefulShutdown(
|
|
31
31
|
job: () => Promise<void>,
|