diff --git a/accessibility-checker-engine/src/v2/aria/ARIAMapper.ts b/accessibility-checker-engine/src/v2/aria/ARIAMapper.ts index a3a3741c3..e756c2c80 100644 --- a/accessibility-checker-engine/src/v2/aria/ARIAMapper.ts +++ b/accessibility-checker-engine/src/v2/aria/ARIAMapper.ts @@ -124,7 +124,7 @@ export class ARIAMapper extends CommonMapper { [role: string]: number } }> = JSON.parse(JSON.stringify(this.hierarchyPath)); - let hierarchyResults: IMapResult[] = JSON.parse(JSON.stringify(this.hierarchyResults)); + let hierarchyResults: IMapResult[] = DOMUtil.objectCopyWithNodeRefs(this.hierarchyResults); let attrValue = elem.getAttribute("aria-owns"); let ids = attrValue.trim().split(" "); ids.forEach((id) => { @@ -161,7 +161,7 @@ export class ARIAMapper extends CommonMapper { hierarchyRole: JSON.parse(JSON.stringify(this.hierarchyRole)), hierarchyChildrenHaveRole: JSON.parse(JSON.stringify(this.hierarchyChildrenHaveRole)), hierarchyPath: JSON.parse(JSON.stringify(this.hierarchyPath)), - hierarchyResults: JSON.parse(JSON.stringify(this.hierarchyResults)) + hierarchyResults: DOMUtil.objectCopyWithNodeRefs(this.hierarchyResults) }; //rewrite parent hierarchy to the element with aria-owns diff --git a/accessibility-checker-engine/src/v2/dom/DOMUtil.ts b/accessibility-checker-engine/src/v2/dom/DOMUtil.ts index d5e9cf407..6fbde9f5e 100644 --- a/accessibility-checker-engine/src/v2/dom/DOMUtil.ts +++ b/accessibility-checker-engine/src/v2/dom/DOMUtil.ts @@ -117,6 +117,36 @@ export class DOMUtil { while (nd != null && nd.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) nd = nd.parentNode; return nd; + } + /** + * Copies objects, but retains Node attributes as references + * @param rhs + */ + static objectCopyWithNodeRefs(rhs: any) { + if (!rhs) return rhs; + if (typeof rhs !== "object") { + if (typeof rhs === "function") { + return rhs; + } else { + return JSON.parse(JSON.stringify(rhs)); + } + } else if (rhs instanceof Node || !!rhs.nodeType) { + return rhs; + } else { + let retVal; + if (rhs.constructor.name === "Array") { + retVal = []; + for (const item of rhs) { + retVal.push(this.objectCopyWithNodeRefs(item)); + } + } else { + retVal = {}; + for (const key in rhs) { + retVal[key] = this.objectCopyWithNodeRefs(rhs[key]); + } + } + return retVal; + } } } \ No newline at end of file diff --git a/rule-server/src/static/archives/2022.02.01/js/ace-debug.js b/rule-server/src/static/archives/2022.02.01/js/ace-debug.js index d909330f4..4bfa73d10 100644 --- a/rule-server/src/static/archives/2022.02.01/js/ace-debug.js +++ b/rule-server/src/static/archives/2022.02.01/js/ace-debug.js @@ -2738,7 +2738,7 @@ var ARIAMapper = /** @class */ (function (_super) { var hierarchyRole = JSON.parse(JSON.stringify(_this.hierarchyRole)); var hierarchyChildrenHaveRole = JSON.parse(JSON.stringify(_this.hierarchyChildrenHaveRole)); var hierarchyPath = JSON.parse(JSON.stringify(_this.hierarchyPath)); - var hierarchyResults = JSON.parse(JSON.stringify(_this.hierarchyResults)); + var hierarchyResults = DOMUtil_1.DOMUtil.objectCopyWithNodeRefs(_this.hierarchyResults); var attrValue = elem.getAttribute("aria-owns"); var ids = attrValue.trim().split(" "); ids.forEach(function (id) { @@ -2774,7 +2774,7 @@ var ARIAMapper = /** @class */ (function (_super) { hierarchyRole: JSON.parse(JSON.stringify(this.hierarchyRole)), hierarchyChildrenHaveRole: JSON.parse(JSON.stringify(this.hierarchyChildrenHaveRole)), hierarchyPath: JSON.parse(JSON.stringify(this.hierarchyPath)), - hierarchyResults: JSON.parse(JSON.stringify(this.hierarchyResults)) + hierarchyResults: DOMUtil_1.DOMUtil.objectCopyWithNodeRefs(this.hierarchyResults) }; //rewrite parent hierarchy to the element with aria-owns var value_1 = node.getAttribute("id"); @@ -24140,6 +24140,37 @@ var DOMUtil = /** @class */ (function () { nd = nd.parentNode; return nd; }; + /** + * Copies objects, but retains Node attributes as references + * @param rhs + */ + DOMUtil.objectCopyWithNodeRefs = function (rhs) { + if (!rhs) + return rhs; + if (typeof rhs !== "object") { + return JSON.parse(JSON.stringify(rhs)); + } + else if (rhs instanceof Node) { + return rhs; + } + else { + var retVal = void 0; + if (rhs.constructor.name === "Array") { + retVal = []; + for (var _i = 0, rhs_1 = rhs; _i < rhs_1.length; _i++) { + var item = rhs_1[_i]; + retVal.push(this.objectCopyWithNodeRefs(item)); + } + } + else { + retVal = {}; + for (var key in rhs) { + retVal[key] = this.objectCopyWithNodeRefs(rhs[key]); + } + } + return retVal; + } + }; return DOMUtil; }()); exports.DOMUtil = DOMUtil; @@ -24449,4 +24480,4 @@ exports.StyleMapper = StyleMapper; /******/ /******/ })() ; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLHdCQUF3Qjt3QkFDNUIsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLDZCQUE2Qjt3QkFDakMsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLHFCQUFxQjt3QkFDekIsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLDZCQUE2Qjt3QkFDakMsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLDZCQUE2Qjt3QkFDakMsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLHdCQUF3Qjt3QkFDNUIsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLGtCQUFrQjt3QkFDdEIsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLGtCQUFrQjt3QkFDdEIsS0FBSyxFQUFFLHFCQUFXLENBQUMsU0FBUzt3QkFDNUIsWUFBWSxFQUFFLHVCQUFhLENBQUMsU0FBUztxQkFDeEM7b0JBQ0Q7d0JBQ0ksRUFBRSxFQUFFLGFBQWE7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RSxvQkFBb0I7d0JBQ3hCLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSx3QkFBd0I7d0JBQzVCLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSw2QkFBNkI7d0JBQ2pDLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSxxQkFBcUI7d0JBQ3pCLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSw2QkFBNkI7d0JBQ2pDLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSw2QkFBNkI7d0JBQ2pDLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSx3QkFBd0I7d0JBQzVCLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSxrQkFBa0I7d0JBQ3RCLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29CQUNEO3dCQUNJLEVBQUUsRUFBRSxrQkFBa0I7d0JBQ3RCLEtBQUssRUFBRSxxQkFBVyxDQUFDLFNBQVM7d0JBQzVCLFlBQVksRUFBRSx1QkFBYSxDQUFDLFNBQVM7cUJBQ3hDO29C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QyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDN21HLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN4MUgsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQzdpRSxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQzV6RCxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN6eEIsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUMzakIsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN4a0UsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDbnFDLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDbGxDLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN4MUIsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQzM1SCxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN6akUsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQ3YxSCxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQzMrRixDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDL2lDLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDL25FLENBQUUsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUNuVyxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQzM5QixDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUM3cEcsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQ3hxRyxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQ3h5QixDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUNuakIsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDaDNDLENBQUUsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUNuNUQsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDMThDLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFD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U0FBUztRQUN0QixXQUFXLEVBQUUsU0FBUztRQUN0QixVQUFVLEVBQUUsU0FBUztRQUNyQixhQUFhLEVBQUUsU0FBUztRQUN4QixNQUFNLEVBQUUsU0FBUztRQUNqQixTQUFTLEVBQUUsU0FBUztRQUNwQixPQUFPLEVBQUUsU0FBUztRQUNsQixXQUFXLEVBQUUsU0FBUztRQUN0QixRQUFRLEVBQUUsU0FBUztRQUNuQixXQUFXLEVBQUUsU0FBUztRQUN0QixRQUFRLEVBQUUsU0FBUztRQUNuQixlQUFlLEVBQUUsU0FBUztRQUMxQixXQUFXLEVBQUUsU0FBUztRQUN0QixlQUFlLEVBQUUsU0FBUztRQUMxQixlQUFlLEVBQUUsU0FBUztRQUMxQixZQUFZLEVBQUUsU0FBUztRQUN2QixXQUFXLEVBQUUsU0FBUztRQUN0QixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsU0FBUztRQUNqQixZQUFZLEVBQUUsU0FBUztRQUN2QixRQUFRLEVBQUUsU0FBUztRQUNuQixLQUFLLEVBQUUsU0FBUztRQUNoQixXQUFXLEVBQUUsU0FBUztRQUN0QixXQUFXLEVBQUUsU0FBUztRQUN0QixhQUFhLEVBQUUsU0FBUztRQUN4QixRQUFRLEVBQUUsU0FBUztRQUNuQixZQUFZLEVBQUUsU0FBUztRQUN2QixVQUFVLEVBQUUsU0FBUztRQUNyQixVQUFVLEVBQUUsU0FBUztRQUNyQixRQUFRLEVBQUUsU0FBUztRQUNuQixRQUFRLEVBQUUsU0FBUztRQUNuQixTQUFTLEVBQUUsU0FBUztRQUNwQixXQUFXLEVBQUUsU0FBUztRQUN0QixXQUFXLEVBQUUsU0FBUztRQUN0QixNQUFNLEVBQUUsU0FBUztRQUNqQixhQUFhLEVBQUUsU0FBUztRQUN4QixXQUFXLEVBQUUsU0FBUztRQUN0QixLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsU0FBUztRQUNqQixTQUFTLEVBQUUsU0FBUztRQUNwQixRQUFRLEVBQUUsU0FBUztRQUNuQixXQUFXLEVBQUUsU0FBUztRQUN0QixRQUFRLEVB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QUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUztDQUMvb0M7QUFFRCxJQUFJLGdCQUFn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QUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLENBQUMsTUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQUksQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQUFDLENBdEJnQywyQkFBWSxHQXNCNUM7QUF0Qlksa0NBQVc7Ozs7Ozs7VUNsQnhCO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7VUV0QkE7VUFDQTtVQUNBO1VBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hY2UvLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2FwaS9JRW5naW5lLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9hcmlhL0FSSUFEZWZpbml0aW9ucy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvYXJpYS9BUklBTWFwcGVyLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL0NoZWNrZXIudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9oZWxwL2luZGV4LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvbmxzL2luZGV4LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtYW5jaG9yLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWFwcGxldC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1hcHBsaWNhdGlvbi1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1hcmVhLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWFyaWEtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtYXJpYUxhYmVsaW5nLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWJsaW5rLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWJsb2NrcXVvdGUtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtYm9keS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1jYW52YXMtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtY29sb3ItcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtY29tYm9ib3gtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtZWxlbS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1lbWJlZC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1maWVsZHNldC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1maWd1cmUtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtZm9jdXMtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtZm9udC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1mb3JtLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWZyYW1lLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWhlYWRpbmctcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtaGllcmFyY2h5LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWh0bWwtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtaW1nLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWlucHV0LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWxhYmVsLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWxpc3QtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtbWFycXVlZS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1tZWRpYS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1tZXRhLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LW9iamVjdC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1zY3JpcHQtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtc2VsZWN0LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LXN0eWxlLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LXRleHQtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtdGl0bGUtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtdmlkZW8tcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy90YWJsZS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzZXRzL2luZGV4LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvdXRpbC9hbmNlc3Rvci50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3V0aWwvZnJhZ21lbnQudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS91dGlsL2xhbmcudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS91dGlsL2xlZ2FjeS50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9kZXNpZ24vbmxzL2luZGV4LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2Rlc2lnbi9ydWxlcy9kZXNpZ24tY29sb3IudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvZGVzaWduL3J1bGVzL2Rlc2lnbi1ncmlkbGF5b3V0LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2Rlc2lnbi9ydWxlcy9kZXNpZ24tdHlwb2dyYXBoeS50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9kZXNpZ24vcnVsZXMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvZGVzaWduL3J1bGVzZXRzL2luZGV4LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2hlbHAudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvbmxzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL3J1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL3J1bGVzZXRzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jb21tb24vQ29tbW9uTWFwcGVyLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jb21tb24vQ29udGV4dC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY29tbW9uL0VuZ2luZS50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY29uZmlnL0NvbmZpZy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvZG9tL0RPTU1hcHBlci50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvZG9tL0RPTVV0aWwudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2RvbS9ET01XYWxrZXIudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL3N0eWxlL1N0eWxlTWFwcGVyLnRzIiwid2VicGFjazovL2FjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9hY2Uvd2VicGFjay9iZWZvcmUtc3RhcnR1cCIsIndlYnBhY2s6Ly9hY2Uvd2VicGFjay9zdGFydHVwIiwid2VicGFjazovL2FjZS93ZWJwYWNrL2FmdGVyLXN0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4vdjIvY29tbW9uL0NvbnRleHRcIlxuLy8gaW1wb3J0IHsgU2ltdWxhdG9yIH0gZnJvbSBcIi4vdjIvc2ltdWxhdG9yXCJcbmltcG9ydCB7IENoZWNrZXIgfSBmcm9tIFwiLi92Mi9jaGVja2VyXCJcbmltcG9ydCB7IEFSSUFNYXBwZXIgfSBmcm9tIFwiLi92Mi9hcmlhL0FSSUFNYXBwZXJcIjtcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL3YyL2NvbmZpZy9Db25maWdcIjtcbmltcG9ydCB7IERPTVdhbGtlciB9IGZyb20gXCIuL3YyL2RvbS9ET01XYWxrZXJcIjtcblxuU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoID0gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIHx8IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN0cikgPT09IDA7XG59XG5TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzID0gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyB8fCBmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXhPZihzdHIpICE9PSAtMTtcbn1cbkFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyA9IEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyB8fCBmdW5jdGlvbiAoc3RyKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXhPZihzdHIpICE9PSAtMTtcbn1cbi8qXG5mdW5jdGlvbiBzaW1EZW1vKHRpbWVvdXQ/OiBudW1iZXIpIHtcbiAgICBpZiAoIXRpbWVvdXQpIHRpbWVvdXQgPSAwO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBzaW0gPSBuZXcgU2ltdWxhdG9yKCk7XG4gICAgICAgIGxldCBzID0gc2ltLnJlbmRlckl0ZW0oZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgICAgICAgY29uc29sZS5ncm91cChcIi0tLSBJdGVtIFZpZXcgLS0tXCIpO1xuICAgICAgICBjb25zb2xlLmxvZyhzKTtcbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICBjb25zb2xlLmdyb3VwKFwiLS0tIExpbmsgVmlldyAtLS1cIik7XG4gICAgICAgIHMgPSBzaW0ucmVuZGVyTGluayhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuICAgICAgICBjb25zb2xlLmxvZyhzKTtcbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgIH0sIHRpbWVvdXQpO1xufVxuKi9cbmZ1bmN0aW9uIGNoZWNrRGVtbyh0aW1lb3V0PzogbnVtYmVyKSB7XG4gICAgaWYgKCF0aW1lb3V0KSB0aW1lb3V0ID0gMDtcbiAgICBsZXQgY2hlY2tlciA9IG5ldyBDaGVja2VyKCk7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgY2hlY2tlci5jaGVjayhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIFtcIklCTV9BY2Nlc3NpYmlsaXR5XCIsIFwiSUJNX0Rlc2lnblwiXSlcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVwb3J0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXBvcnQpO1xuICAgICAgICAgICAgY29uc3QgdmFscyA9IHtcbiAgICAgICAgICAgICAgICBcIkZBSUxcIjogMCxcbiAgICAgICAgICAgICAgICBcIlBPVEVOVElBTFwiOiAxLFxuICAgICAgICAgICAgICAgIFwiTUFOVUFMXCI6IDIsXG4gICAgICAgICAgICAgICAgXCJQQVNTXCI6IDNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGlkeD0wOyBpZHg8cmVwb3J0LnJlc3VsdHMubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXBvcnQucmVzdWx0c1tpZHhdLnZhbHVlWzFdID09PSBcIlBBU1NcIikge1xuICAgICAgICAgICAgICAgICAgICByZXBvcnQucmVzdWx0cy5zcGxpY2UoaWR4LS0sMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVwb3J0LnJlc3VsdHMuc29ydCgoYSxiKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGEuY2F0ZWdvcnkgIT0gYi5jYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jYXRlZ29yeS5sb2NhbGVDb21wYXJlKGIuY2F0ZWdvcnkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYS5wYXRoW1wiYXJpYVwiXSA9PT0gYi5wYXRoW1wiYXJpYVwiXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsc1thLnZhbHVlWzFdXS12YWxzW2IudmFsdWVbMV1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYS5wYXRoW1wiYXJpYVwiXS5sb2NhbGVDb21wYXJlKGIucGF0aFtcImFyaWFcIl0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGxldCBsYXN0UGF0aCA9IG51bGw7XG4gICAgICAgICAgICBsZXQgY2F0ZWdvcnkgPSBudWxsO1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVwb3J0LnJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgIT09IHJlc3VsdC5jYXRlZ29yeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RQYXRoID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSA9IHJlc3VsdC5jYXRlZ29yeTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5ncm91cChyZXN1bHQuY2F0ZWdvcnkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucGF0aFtcImFyaWFcIl0gIT0gbGFzdFBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RQYXRoICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGFzdFBhdGggPSByZXN1bHQucGF0aFtcImFyaWFcIl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0UGF0aCA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5ncm91cChcInBhZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwKGxhc3RQYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXN1bHQudmFsdWUsIHJlc3VsdC5tZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgfSk7XG4gICAgfSwgdGltZW91dCk7XG59XG5cbmV4cG9ydCB7IENoZWNrZXIsIENvbnRleHQsIEFSSUFNYXBwZXIsIGNoZWNrRGVtbywgQ29uZmlnLyosIHNpbURlbW8qLywgRE9NV2Fsa2VyIH07IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBJTWFwUmVzdWx0IH0gZnJvbSBcIi4vSU1hcHBlclwiO1xuXG5leHBvcnQgZW51bSBlUnVsZUNvbmZpZGVuY2Uge1xuICAgIFBBU1MgPSBcIlBBU1NcIixcbiAgICBGQUlMID0gXCJGQUlMXCIsXG4gICAgUE9URU5USUFMID0gXCJQT1RFTlRJQUxcIixcbiAgICBNQU5VQUwgPSBcIk1BTlVBTFwiXG59XG5cbmV4cG9ydCBlbnVtIGVSdWxlUG9saWN5IHtcbiAgICBWSU9MQVRJT04gPSBcIlZJT0xBVElPTlwiLFxuICAgIFJFQ09NTUVOREFUSU9OID0gXCJSRUNPTU1FTkRBVElPTlwiLFxuICAgIElORk9STUFUSU9OID0gXCJJTkZPUk1BVElPTlwiXG59XG5cbmV4cG9ydCBlbnVtIGVUb29sa2l0TGV2ZWwge1xuICAgIExFVkVMX09ORSA9IFwiMVwiLFxuICAgIExFVkVMX1RXTyA9IFwiMlwiLFxuICAgIExFVkVMX1RIUkVFID0gXCIzXCIsXG4gICAgTEVWRUxfRk9VUiA9IFwiNFwiXG59XG5cbmV4cG9ydCBlbnVtIGVSdWxlQ2F0ZWdvcnkge1xuICAgIEFDQ0VTU0lCSUxJVFkgPSBcIkFjY2Vzc2liaWxpdHlcIixcbiAgICBERVNJR04gPSBcIkRlc2lnblwiLFxuICAgIE9USEVSID0gXCJPdGhlclwiXG59XG5cbmV4cG9ydCBlbnVtIGVSdWxlc2V0VHlwZSB7XG4gICAgREVGQVVMVCA9IFwiZGVmYXVsdFwiLFxuICAgIEVYVEVOU0lPTiA9IFwiZXh0ZW5zaW9uXCJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJ1bGVQYXNzKHJlYXNvbklkOiBudW1iZXIgfCBzdHJpbmcsIG1lc3NhZ2VBcmdzPyA6IHN0cmluZ1tdLCBhcGlBcmdzPyA6IGFueVtdKSA6IFJ1bGVSZXN1bHQge1xuICAgIGlmICh0eXBlb2YgcmVhc29uSWQgPT09IFwidW5kZWZpbmVkXCIgfHwgcmVhc29uSWQgPT09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIlJlYXNvbiBJRCBtdXN0IGJlIGRlZmluZWRcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFtlUnVsZVBvbGljeS5JTkZPUk1BVElPTiwgZVJ1bGVDb25maWRlbmNlLlBBU1NdLFxuICAgICAgICByZWFzb25JZDogcmVhc29uSWQsXG4gICAgICAgIG1lc3NhZ2VBcmdzOiBtZXNzYWdlQXJncyB8fCBbXSxcbiAgICAgICAgYXBpQXJnczogYXBpQXJncyB8fCBbXVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJ1bGVSZW5kZXIocmVhc29uSWQ6IG51bWJlciB8IHN0cmluZywgbWVzc2FnZUFyZ3M/IDogc3RyaW5nW10sIGFwaUFyZ3M/IDogYW55W10pIDogUnVsZVJlc3VsdCB7XG4gICAgaWYgKHR5cGVvZiByZWFzb25JZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCByZWFzb25JZCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiUmVhc29uIElEIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogW2VSdWxlUG9saWN5LklORk9STUFUSU9OLCBlUnVsZUNvbmZpZGVuY2UuUEFTU10sXG4gICAgICAgIHJlYXNvbklkOiAwLFxuICAgICAgICBtZXNzYWdlQXJnczogbWVzc2FnZUFyZ3MgfHwgW10sXG4gICAgICAgIGFwaUFyZ3M6IGFwaUFyZ3MgfHwgW11cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gUnVsZUZhaWwocmVhc29uSWQ6IG51bWJlciB8IHN0cmluZywgbWVzc2FnZUFyZ3M/IDogc3RyaW5nW10sIGFwaUFyZ3M/IDogYW55W10pIDogUnVsZVJlc3VsdCB7XG4gICAgaWYgKHR5cGVvZiByZWFzb25JZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCByZWFzb25JZCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiUmVhc29uIElEIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogW2VSdWxlUG9saWN5LklORk9STUFUSU9OLCBlUnVsZUNvbmZpZGVuY2UuRkFJTF0sXG4gICAgICAgIHJlYXNvbklkOiByZWFzb25JZCxcbiAgICAgICAgbWVzc2FnZUFyZ3M6IG1lc3NhZ2VBcmdzIHx8IFtdLFxuICAgICAgICBhcGlBcmdzOiBhcGlBcmdzIHx8IFtdXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUnVsZVBvdGVudGlhbChyZWFzb25JZDogbnVtYmVyIHwgc3RyaW5nLCBtZXNzYWdlQXJncz8gOiBzdHJpbmdbXSwgYXBpQXJncz8gOiBhbnlbXSkgOiBSdWxlUmVzdWx0IHtcbiAgICBpZiAodHlwZW9mIHJlYXNvbklkID09PSBcInVuZGVmaW5lZFwiIHx8IHJlYXNvbklkID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFzb24gSUQgbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBbZVJ1bGVQb2xpY3kuSU5GT1JNQVRJT04sIGVSdWxlQ29uZmlkZW5jZS5QT1RFTlRJQUxdLFxuICAgICAgICByZWFzb25JZDogcmVhc29uSWQsXG4gICAgICAgIG1lc3NhZ2VBcmdzOiBtZXNzYWdlQXJncyB8fCBbXSxcbiAgICAgICAgYXBpQXJnczogYXBpQXJncyB8fCBbXVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJ1bGVNYW51YWwocmVhc29uSWQ6IG51bWJlciB8IHN0cmluZywgbWVzc2FnZUFyZ3M/IDogc3RyaW5nW10sIGFwaUFyZ3M/IDogYW55W10pIDogUnVsZVJlc3VsdCB7XG4gICAgaWYgKHR5cGVvZiByZWFzb25JZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCByZWFzb25JZCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiUmVhc29uIElEIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogW2VSdWxlUG9saWN5LklORk9STUFUSU9OLCBlUnVsZUNvbmZpZGVuY2UuTUFOVUFMXSxcbiAgICAgICAgcmVhc29uSWQ6IHJlYXNvbklkLFxuICAgICAgICBtZXNzYWdlQXJnczogbWVzc2FnZUFyZ3MgfHwgW10sXG4gICAgICAgIGFwaUFyZ3M6IGFwaUFyZ3MgfHwgW11cbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFJ1bGVSZXN1bHQgPSB7XG4gICAgdmFsdWU6IFtlUnVsZVBvbGljeSwgZVJ1bGVDb25maWRlbmNlXSxcbiAgICByZWFzb25JZD86IG51bWJlciB8IHN0cmluZyxcbiAgICBtZXNzYWdlQXJncz86IHN0cmluZ1tdLFxuICAgIGFwaUFyZ3M/OiBhbnlbXVxufVxuXG5leHBvcnQgdHlwZSBSdWxlRGV0YWlscyA9IFJ1bGVSZXN1bHQgJiB7XG4gICAgcnVsZUlkOiBzdHJpbmcsXG5cbiAgICBub2RlOiBOb2RlLFxuICAgIC8vIG5hbWVzcGFjZTogc3RyaW5nLFxuICAgIGNhdGVnb3J5PzogZVJ1bGVDYXRlZ29yeSxcbiAgICBwYXRoOiB7IFtuczogc3RyaW5nXSA6IHN0cmluZyB9LFxuXG4gICAgcnVsZVRpbWU6IG51bWJlcixcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYm91bmRzPzoge1xuICAgICAgICB0b3A6IG51bWJlcixcbiAgICAgICAgbGVmdDogbnVtYmVyLFxuICAgICAgICB3aWR0aDogbnVtYmVyLFxuICAgICAgICBoZWlnaHQ6IG51bWJlclxuICAgIH0sXG4gICAgc25pcHBldDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFJ1bGVDb250ZXh0SGllcmFyY2h5ID0geyBbbmFtZXNwYWNlOiBzdHJpbmddIDogSU1hcFJlc3VsdFtdIH07XG5cbmV4cG9ydCB0eXBlIFJ1bGVDb250ZXh0ID0ge1xuICAgIFtuYW1lc3BhY2U6IHN0cmluZ10gOiBJTWFwUmVzdWx0XG59XG5cbmV4cG9ydCB0eXBlIFJ1bGUgPSB7XG4gICAgLy8gVW5pcXVlIHN0cmluZyBpZGVudGlmaWVyIGZvciB0aGlzIHJ1bGUgKHNob3VsZCBiZSBodW1hbiB1bmRlcnN0YW5kYWJsZSlcbiAgICAvLyBOTFMgY29kZXMgYW5kIGhlbHAgc291cmNlcyB3aWxsIGJlIGJhc2VkIG9mZiBvZiB0aGlzIGlkXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8vIFNlZSBzcmMvdjIvY29tbW9uL0NvbnRleHQudHMgZm9yIHZhbGlkIGNvbnRleHRzXG4gICAgY29udGV4dDogc3RyaW5nO1xuXG4gICAgLy8gQXJyYXkgb2YgcnVsZXMgdGhhdCBtdXN0IHBhc3MgdG8gYWxsb3cgdGhpcyB2YWxpZGF0ZSB0byBydW4gLSB0aGV5IG11c3QgaGF2ZSB0aGUgc2FtZSBjb250ZXh0IHByb3BlcnR5XG4gICAgZGVwZW5kZW5jaWVzPzogc3RyaW5nW11cblxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30sIGNvbnRleHRIaWVyYXJjaGllcz86IFJ1bGVDb250ZXh0SGllcmFyY2h5KSA9PiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdXG5cbiAgICBlbmFibGVkPzogYm9vbGVhblxufVxuXG5cbmV4cG9ydCB0eXBlIFJlcG9ydCA9IHtcbiAgICByZXN1bHRzOiBSdWxlRGV0YWlsc1tdLFxuICAgIG51bUV4ZWN1dGVkOiBudW1iZXIsXG4gICAgcnVsZVRpbWU6IG51bWJlcixcbiAgICAvLyBUaGlzIG1heSBiZSB1bmRlZmluZWQgZm9yIGEgZmlsdGVyZWQgcmVwb3J0XG4gICAgdG90YWxUaW1lPzogbnVtYmVyLFxuICAgIG5scz86IHtcbiAgICAgICAgW3J1bGVJZDogc3RyaW5nXToge1xuICAgICAgICAgICAgW3JlYXNvbklkOiBzdHJpbmddOiBzdHJpbmdcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgTmxzTWFwID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1tdXG59XG5cbmV4cG9ydCB0eXBlIEhlbHBNYXAgPSB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRW5naW5lIHtcbiAgICAvKipcbiAgICAgKiBQZXJmb3JtIGEgc2NhbiBvbiBhIGRvY3VtZW50IG9yIHN1YnRyZWVcbiAgICAgKiBAcGFyYW0gcnVsZXNldElkcyBBcnJheSBvZiBydWxlc2V0IGlkcyBvZiBydWxlc2V0cyB0byB1c2UgZm9yIHRoaXMgc2NhblxuICAgICAqIEBwYXJhbSByb290IERvY3VtZW50IG9yIHN1YnRyZWUgdG8gc2NhblxuICAgICAqL1xuICAgIHJ1bihyb290OiBEb2N1bWVudCB8IE5vZGUsIG9wdGlvbnM/OiB7fSkgOiBQcm9taXNlPFJlcG9ydD47XG5cbiAgICBlbmFibGVSdWxlcyhydWxlSWRzOiBzdHJpbmdbXSk7XG5cbiAgICBnZXRSdWxlKHJ1bGVJZDogc3RyaW5nKTogUnVsZTtcblxuICAgIGdldFJ1bGVzSWRzKCkgOiBzdHJpbmdbXTtcblxuICAgIGdldE1lc3NhZ2UocnVsZUlkOiBzdHJpbmcsIHJ1bGVJZHg6IG51bWJlciB8IHN0cmluZywgbXNnQXJncz86IHN0cmluZ1tdKTogc3RyaW5nO1xuXG4gICAgZ2V0SGVscChydWxlSWQ6IHN0cmluZywgcnVsZUlkeDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nO1xuXG4gICAgYWRkUnVsZXMocnVsZTogUnVsZVtdKTtcblxuICAgIGFkZFJ1bGUocnVsZTogUnVsZSk7XG5cbiAgICBhZGRObHNNYXAobWFwOiBObHNNYXApO1xuXG4gICAgYWRkSGVscE1hcChtYXA6IE5sc01hcCk7XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKmdsb2JhbCBPcGVuQWpheCovXG4vLyBhbGwgcmVmZXJlbmNlcyB0byBXQUktQVJJQSBzcGVjaWZpY2F0aW9uIGlzIHRoZSBXQUktQVJJQSAxLjJcbi8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjIvXG5cbmV4cG9ydCBpbnRlcmZhY2UgSURvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudCB7XG4gICAgaW1wbGljaXRSb2xlOiBzdHJpbmdbXSxcbiAgICB2YWxpZFJvbGVzOiBzdHJpbmdbXSxcbiAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBib29sZWFuXG59XG5cbmV4cG9ydCBjbGFzcyBBUklBRGVmaW5pdGlvbnMge1xuICAgIHN0YXRpYyBuYW1lRnJvbUNvbnRlbnQocm9sZTogc3RyaW5nKSA6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHJvbGUgaW4gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zKSBcbiAgICAgICAgICAgICYmIEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1tyb2xlXS5uYW1lRnJvbSBcbiAgICAgICAgICAgICYmIEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1tyb2xlXS5uYW1lRnJvbS5pbmNsdWRlcyhcImNvbnRlbnRzXCIpO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogYXJyYXkgb2YgV0FJLUFSSUEgZ2xvYmFsIHN0YXRlcyBhbmQgcHJvcGVydGllc1xuICAgICAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMi8jZ2xvYmFsX3N0YXRlc1xuICAgICAqL1xuICAgIHN0YXRpYyBnbG9iYWxQcm9wZXJ0aWVzIDogc3RyaW5nW10gPSBbXCJhcmlhLWF0b21pY1wiLCBcImFyaWEtYnVzeVwiLCBcImFyaWEtY29udHJvbHNcIiwgXCJhcmlhLWN1cnJlbnRcIiwgXCJhcmlhLWRlc2NyaWJlZGJ5XCIsIFxuICAgICAgICBcImFyaWEtZGV0YWlsc1wiLCBcImFyaWEtZHJvcGVmZmVjdFwiLCBcImFyaWEtZmxvd3RvXCIsIFwiYXJpYS1ncmFiYmVkXCIsIFwiYXJpYS1oaWRkZW5cIiwgXCJhcmlhLWtleXNob3J0Y3V0c1wiLFxuICAgICAgICBcImFyaWEtbGFiZWxcIiwgXCJhcmlhLWxhYmVsbGVkYnlcIiwgXCJhcmlhLWxpdmVcIiwgXCJhcmlhLW93bnNcIiwgXCJhcmlhLXJlbGV2YW50XCIsIFwiYXJpYS1yb2xlZGVzY3JpcHRpb25cIl07XG5cbiAgICAvKlxuICAgICAqIFhTRCBkYXRhIHR5cGVzIGZvciBhbGwgV0FJLUFSSUEgcHJvcGVydGllc1xuICAgICAqIGFsb25nIHdpdGggdmFsaWQgdmFsdWVzIHdoZW4gdGhlIGRhdGEgdHlwZSBpcyBOTVRPS0VOXG4gICAgICogV0FJLUFSSUEgcHJvcGVydGllcyBkYXRhIHR5cGVzIGV4cGxhbmVkOlxuICAgICAqICB0eXBlOiBVc2VkIHRvIGlkZW50aWZ5IHRoZSB0eXBlIG9mIHZhbHVlcyBhbGxvd2VkIGZvciB0aGUgV0FJLUFSSUEgcHJvcGVydHlcbiAgICAgKiAgdmFsdWVzOiBVc2VkIHRvIGlkZW50aWZ5IHNwZWNpZmljIHZhbHVlcyBvZiBhbiBXQUktQVJJQSBwcm9wZXJ0eSB3aGVuIHR5cGUgaXMgbm10b2tlblxuICAgICAqICBoaWRkZW5JRFJlZlN1cHBvcnRlZDogVXNlZCB0byBpZGVudGlmeSBpZiB0aGUgV0FJLUFSSUEgcHJvcGVydHkgc3VwcG9ydHMgcmVmZXJlbmNpbmcgaGlkZGVuIElEXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHRydWU6IHJlZmVycyB0byBXQUktQVJJQSBwcm9wZXJ0eSBzdXBwb3J0cyBoaWRkZW4gSUQgcmVmZXJlbmNlc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZTogcmVmZXJzIHRvIFdBSS1BUklBIHByb3BlcnR5IGRvZXMgbm90IHN1cHBvcnQgaGlkZGVuIElEIHJlZmVyZW5jZXNcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgdmFsdWUgd2lsbCBiZSBzZXQgdG8gZmFsc2UsIGlmIG5vdCBzcGVjaWZpZWQuXG4gICAgICovXG4gICAgc3RhdGljIHByb3BlcnR5RGF0YVR5cGVzIDogeyBcbiAgICAgICAgW3Byb3A6IHN0cmluZ10gOiB7IFxuICAgICAgICAgICAgdHlwZTogc3RyaW5nLCBcbiAgICAgICAgICAgIGhpZGRlbklEUmVmU3VwcG9ydGVkPzogYm9vbGVhbixcbiAgICAgICAgICAgIHZhbHVlcz86IHN0cmluZ1tdIFxuICAgICAgICB9XG4gICAgfSA9IHtcbiAgICAgICAgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpZHJlZlwiLFxuICAgICAgICAgICAgaGlkZGVuSURSZWZTdXBwb3J0ZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWF0b21pY1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2Jvb2xlYW5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJpbmxpbmVcIiwgXCJsaXN0XCIsIFwiYm90aFwiLCBcIm5vbmVcIiwgXCJ1bmRlZmluZWRcIl0gLy9hZGQgdW5kZWZpbmVkIHRvIGhhbmRsZSB2YWx1ZSBlbXB0eVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtYnVzeVwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2Jvb2xlYW5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1widHJ1ZVwiLCBcImZhbHNlXCIsIFwibWl4ZWRcIiwgXCJ1bmRlZmluZWRcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWNvbGNvdW50XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWNvbGluZGV4XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWNvbHNwYW5cIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpZHJlZnNcIixcbiAgICAgICAgICAgIGhpZGRlbklEUmVmU3VwcG9ydGVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1jdXJyZW50XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJwYWdlXCIsIFwic3RlcFwiLCBcImxvY2F0aW9uXCIsIFwiZGF0ZVwiLCBcInRpbWVcIiwgXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJ1bmRlZmluZWRcIl0gLy9hZGQgdW5kZWZpbmVkIGZvciBlbXB0eSB2YWx1ZVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpZHJlZnNcIixcbiAgICAgICAgICAgIGhpZGRlbklEUmVmU3VwcG9ydGVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1kZXRhaWxzXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaWRyZWZzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYm9vbGVhblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1kcm9wZWZmZWN0XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlbnNcIixcbiAgICAgICAgICAgIHZhbHVlczogW1wiY29weVwiLCBcIm1vdmVcIiwgXCJsaW5rXCIsIFwiZXhlY3V0ZVwiLCBcInBvcHVwXCIsIFwibm9uZVwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtZXJyb3JtZXNzYWdlXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaWRyZWZcIixcbiAgICAgICAgICAgIGhpZGRlbklEUmVmU3VwcG9ydGVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1widHJ1ZVwiLCBcImZhbHNlXCIsIFwidW5kZWZpbmVkXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1mbG93dG9cIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpZHJlZnNcIixcbiAgICAgICAgICAgIGhpZGRlbklEUmVmU3VwcG9ydGVkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtZ3JhYmJlZFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1widHJ1ZVwiLCBcImZhbHNlXCIsIFwidW5kZWZpbmVkXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1widHJ1ZVwiLCBcImZhbHNlXCIsIFwibWVudVwiLCBcImxpc3Rib3hcIiwgXCJ0cmVlXCIsIFwiZ3JpZFwiLCBcImRpYWxvZ1wiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJ1bmRlZmluZWRcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWludmFsaWRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2VuXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IFtcInRydWVcIiwgXCJmYWxzZVwiLCBcInNwZWxsaW5nXCIsIFwiZ3JhbW1hclwiLCBcInVuZGVmaW5lZFwiXSAvL2FkZCB1bmRlZmluZWQgZm9yIGVtcHR5IHZhbHVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1rZXlzaG9ydGN1dHNcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbGFiZWxcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2lkcmVmc1wiLFxuICAgICAgICAgICAgaGlkZGVuSURSZWZTdXBwb3J0ZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWxldmVsXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWxpdmVcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2VuXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IFtcIm9mZlwiLCBcInBvbGl0ZVwiLCBcImFzc2VydGl2ZVwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbW9kYWxcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNib29sZWFuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLW11bHRpbGluZVwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2Jvb2xlYW5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYm9vbGVhblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1wiaG9yaXpvbnRhbFwiLCBcInZlcnRpY2FsXCIsIFwidW5kZWZpbmVkXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1vd25zXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaWRyZWZzXCIsXG4gICAgICAgICAgICBoaWRkZW5JRFJlZlN1cHBvcnRlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtcGxhY2Vob2xkZXJcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtcG9zaW5zZXRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtcHJlc3NlZFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1widHJ1ZVwiLCBcImZhbHNlXCIsIFwibWl4ZWRcIiwgXCJ1bmRlZmluZWRcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXJlYWRvbmx5XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYm9vbGVhblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1yZWxldmFudFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5zXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IFtcImFkZGl0aW9uc1wiLCBcInJlbW92YWxzXCIsIFwidGV4dFwiLCBcImFsbFwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtcmVxdWlyZWRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNib29sZWFuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXJvbGVkZXNjcmlwdGlvblwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1yb3djb3VudFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2ludFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1yb3dpbmRleFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2ludFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1yb3dzcGFuXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJ1bmRlZmluZWRcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXNldHNpemVcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtc29ydFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1wiYXNjZW5kaW5nXCIsIFwiZGVzY2VuZGluZ1wiLCBcIm90aGVyXCIsIFwibm9uZVwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNkZWNpbWFsXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjZGVjaW1hbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS12YWx1ZW5vd1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2RlY2ltYWxcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtdmFsdWV0ZXh0XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjc3RyaW5nXCJcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qXG4gICAgICogZGVzaWduIHBhdHRlcm5zIGZvciBjb25jcmV0ZSBXQUktQVJJQSByb2xlc1xuICAgICAqIGxlZ2l0aW1hdGUga2V5cyBmb3IgZWFjaCByb2xlIGluY2x1ZGU6XG4gICAgICpcbiAgICAgKiAtIGNvbnRhaW5lcjogYXBwcm9wcmlhdGUgY29udGFpbmVyKHMpIGZvciB0aGF0IHJvbGVcbiAgICAgKiAtIHByb3BzOiBzdGF0ZXMgYW5kIHByb3BlcnRpZXMgdGhhdCBtYXkgYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcm9sZSAoaW4gYWRkaXRpb24gdG8gdGhlIGdsb2JhbCBzdGF0ZXMgYW5kIHByb3BlcnRpZXMgbGlzdGVkIGFib3ZlKVxuICAgICAqIC0gcmVxUHJvcHM6IHJlcXVpcmVkIHN0YXRlcyBvciBwcm9wZXJ0aWVzIGZvciB0aGlzIHJvbGVcbiAgICAgKiAtIHJlcUNoaWxkcmVuOiByZXF1aXJlZCBjaGlsZHJlbiBmb3IgdGhpcyByb2xlXG4gICAgICogLSBodG1sRXF1aXY6IEhUTUwgZXF1aXZhbGVudCBmb3IgdGhpcyByb2xlXG4gICAgICogLSByb2xlVHlwZTogb25lIG9mIHdpZGdldCwgc3RydWN0dXJlLCBsYW5kbWFyaywgbGl2ZVJlZ2lvbiwgd2luZG93IChhcyBzZWVuIGluIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjIvI3JvbGVzX2NhdGVnb3JpemF0aW9uKVxuICAgICAqIC0gbmFtZVJlcXVpcmVkOiBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gYWNjZXNzaWJsZSBuYW1lIGlzIHJlcXVpcmVkIGZvciBhIHdpZGdldCAoc2VlIEFSSUEgc3BlYy4pXG4gICAgICogLSBuYW1lRnJvbTogZGV0ZXJtaW5lcyBob3cgYW4gYWNjZXNzaWJsZSBuYW1lIGlzIHN1cHBsaWVkIChhdXRob3Igb3IgY29udGVudCAtIHNlZSBBUklBIHNwZWMuKVxuICAgICAqIC0gZGVwcmVjYXRlZDogaWYgcHJlc2VudCwgaW5kaWNhdGVzIHRoYXQgdGhlIHJvbGUgaXMgZGVwcmVjYXRlZCwgYW5kIHByb3ZpZGVzIGEgbGlzdCBvZiBhbHRlcm5hdGl2ZSByb2xlKHMpXG4gICAgICovXG4gICAgc3RhdGljIGRlc2lnblBhdHRlcm5zIDoge1xuICAgICAgICBbcm9sZTogc3RyaW5nXToge1xuICAgICAgICAgICAgY29udGFpbmVyOiBzdHJpbmdbXSxcbiAgICAgICAgICAgIHByb3BzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBzdHJpbmdbXSxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogc3RyaW5nLFxuICAgICAgICAgICAgcm9sZVR5cGU/OiBzdHJpbmcsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ/OiBib29sZWFuLFxuICAgICAgICAgICAgbmFtZUZyb20/OiBzdHJpbmdbXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW4/OiBib29sZWFuLFxuICAgICAgICAgICAgZGVwcmVjYXRlZD86IHN0cmluZ1tdXG4gICAgICAgIH1cbiAgICB9ID0ge1xuICAgICAgICBcImFsZXJ0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxpdmVSZWdpb25cIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJhbGVydGRpYWxvZ1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1tb2RhbFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aW5kb3dcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImFwcGxpY2F0aW9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtaW52YWxpZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIiwgLy8gb3IgY2FuIGJlIFwid2lkZ2V0XCJcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImFydGljbGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJiYW5uZXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImJsb2NrcXVvdGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJidXR0b25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtcHJlc3NlZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiYnV0dG9uIHwgaW5wdXRbQHR5cGU9J2J1dHRvbiddXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcImNhcHRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJmaWd1cmVcIiwgXCJncmlkXCIsIFwidGFibGVcIiwgXCJ0cmVlZ3JpZFwiXSxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImNlbGxcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJyb3dcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1jb2xpbmRleFwiLCBcImFyaWEtY29sc3BhblwiLCBcImFyaWEtcm93aW5kZXhcIiwgXCJhcmlhLXJvd3NwYW5cIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcInRkXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiY2hlY2tib3hcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yZXF1aXJlZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBbXCJhcmlhLWNoZWNrZWRcIl0sXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJpbnB1dFtAdHlwZT0nY2hlY2tib3gnXVwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjb2RlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImNvbHVtbmhlYWRlclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcInJvd1wiXSxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWNvbGluZGV4XCIsIFwiYXJpYS1jb2xzcGFuXCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaGFzcG9wdXBcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yZXF1aXJlZFwiLCBcImFyaWEtcm93aW5kZXhcIiwgXCJhcmlhLXJvd3NwYW5cIiwgXCJhcmlhLXNlbGVjdGVkXCIsIFwiYXJpYS1zb3J0XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJ0aFtAc2NvcGU9J2NvbCddXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiY29tYm9ib3hcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtY29udHJvbHNcIiwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWF1dG9jb21wbGV0ZVwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtaGFzcG9wdXBcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yZXF1aXJlZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBbXCJhcmlhLWV4cGFuZGVkXCJdLCAvLyBhcmlhLWNvbnRyb2xzIGlzbid0IGFjdHVhbGx5IHJlcXVpcmVkIHdoZW4gYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiY29tcGxlbWVudGFyeVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiY29udGVudGluZm9cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImRlZmluaXRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJkZWxldGlvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJwcm9oaWJpdGVkXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJkaWFsb2dcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtbW9kYWxcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2luZG93XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJkaXJlY3RvcnlcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgZGVwcmVjYXRlZDogW1wibGlzdFwiXSAvLyBUT0RPXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWFic3RyYWN0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWFja25vd2xlZGdtZW50c1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1hZnRlcndvcmRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtYXBwZW5kaXhcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtYmFja2xpbmtcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiYSB8IGxpbmtcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWJpYmxpb2VudHJ5XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wiZGlyZWN0b3J5XCIsIFwibGlzdFwiXSxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWxldmVsXCIsIFwiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwibGlcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1iaWJsaW9ncmFwaHlcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtYmlibGlvcmVmXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaGFzcG9wdXBcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImEgfCBsaW5rXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1jaGFwdGVyXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWNvbG9waG9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWNvbmNsdXNpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtY292ZXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImltZ1wiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1jcmVkaXRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtY3JlZGl0c1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1kZWRpY2F0aW9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWVuZG5vdGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJkaXJlY3RvcnlcIiwgXCJsaXN0XCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtbGV2ZWxcIiwgXCJhcmlhLXBvc2luc2V0XCIsIFwiYXJpYS1zZXRzaXplXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJsaVwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWVuZG5vdGVzXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWVwaWdyYXBoXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWVwaWxvZ3VlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWVycmF0YVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1leGFtcGxlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWZvb3Rub3RlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWZvcmV3b3JkXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWdsb3NzYXJ5XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWdsb3NzcmVmXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaGFzcG9wdXBcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImEgfCBsaW5rXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1pbmRleFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1pbnRyb2R1Y3Rpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2Mtbm90ZXJlZlwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJhIHwgbGlua1wiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2Mtbm90aWNlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1wYWdlYnJlYWtcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtb3JpZW50YXRpb25cIl0sIC8vIGFyaWEtZGlzYWJsZWQsIGFyaWEtdmFsdWVtYXgsIGFyaWEtdmFsdWVtaW4sIGFyaWEtdmFsdWV0ZXh0IGFyZSB2YWxpZCBpZiBmb2N1c2FibGUuIFRoaXMgaXMgaGFuZGxlZCBpbiB0aGUgY29kZS5cbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLCAvLyBhcmlhLXZhbHVlbm93IGlzIHJlcXVpcmVkIGlmIGZvY3VzYWJsZS4gVGhpcyBpcyBoYW5kbGVkIGluIHRoZSBjb2RlLlxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIiwgLy8gb3Igd2lkZ2V0IGlmIGZvY3VzYWJsZVxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtcGFnZWxpc3RcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtcGFydFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1wcmVmYWNlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLXByb2xvZ3VlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLXB1bGxxdW90ZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtcW5hXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLXN1YnRpdGxlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy10aXBcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLXRvY1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvY3VtZW50XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImVtcGhhc2lzXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImZlZWRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJhcnRpY2xlXCJdLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJmaWd1cmVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJmb3JtXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJmb3JtXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiZ2VuZXJpY1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJwcm9oaWJpdGVkXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJncmFwaGljcy1kb2N1bWVudFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFxuICAgICAgICBcImdyYXBoaWNzLW9iamVjdFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImNvbnRlbnRzXCIsIFwiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFxuICAgICAgICBcImdyYXBoaWNzLXN5bWJvbFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcbiAgICAgICAgXCJncmlkXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWNvbGNvdW50XCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcm93Y291bnRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJyb3dcIiwgXCJyb3dncm91cFwiXSwgLy8gcm93Z3JvdXAgaXMgbm90IHJlcXVpcmVkLCBidXQgaXQgaXMgYWxsb3dlZFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcInRhYmxlXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImdyaWRjZWxsXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wicm93XCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtY29saW5kZXhcIiwgXCJhcmlhLWNvbHNwYW5cIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCIsIFwiYXJpYS1yb3dpbmRleFwiLCBcImFyaWEtcm93c3BhblwiLCBcImFyaWEtc2VsZWN0ZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcInRkXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiZ3JvdXBcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJoZWFkaW5nXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtbGV2ZWxcIl0sXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJoMSB8IGgyIHwgaDMgfCBoNCB8IGg1IHwgaDZcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJpbWdcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImltZ1wiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiaW5zZXJ0aW9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImxpbmtcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiYSB8IGxpbmtcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJsaXN0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1wibGlzdGl0ZW1cIl0sXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwib2wgfCB1bFwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJsaXN0Ym94XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJncm91cFwiLCBcIm9wdGlvblwiXSwgLy8gZ3JvdXAgaXMgbm90IHJlcXVpcmVkLCBidXQgaXQgaXMgYWxsb3dlZFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJsaXN0aXRlbVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImRpcmVjdG9yeVwiLCBcImxpc3RcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1sZXZlbFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImxpXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImxvZ1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsaXZlUmVnaW9uXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJtYWluXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJtYXJxdWVlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxpdmVSZWdpb25cIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcIm1hdGhcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBcIm1lbnVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1wiZ3JvdXBcIiwgXCJtZW51aXRlbVwiLCBcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJtZW51aXRlbXJhZGlvXCJdLCAvLyBncm91cCBpcyBub3QgcmVxdWlyZWQsIGJ1dCBpdCBpcyBhbGxvd2VkXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJtZW51YmFyXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1vcmllbnRhdGlvblwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtcImdyb3VwXCIsIFwibWVudWl0ZW1cIiwgXCJtZW51aXRlbWNoZWNrYm94XCIsIFwibWVudWl0ZW1yYWRpb1wiXSwgLy8gZ3JvdXAgaXMgbm90IHJlcXVpcmVkLCBidXQgaXQgaXMgYWxsb3dlZFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IGZhbHNlLCBcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcIm1lbnVpdGVtXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wiZ3JvdXBcIiwgXCJtZW51XCIsIFwibWVudWJhclwiXSwgLy8gZ3JvdXAgb25seSBjb3VudHMgYXMgYSB2YWxpZCBjb250YWluZXIgaWYgaXQgaXMgY29udGFpbmVkIGluIGEgbWVudSBvciBtZW51YmFyXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwibWVudWl0ZW1jaGVja2JveFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImdyb3VwXCIsIFwibWVudVwiLCBcIm1lbnViYXJcIl0sIC8vIGdyb3VwIG9ubHkgY291bnRzIGFzIGEgdmFsaWQgY29udGFpbmVyIGlmIGl0IGlzIGNvbnRhaW5lZCBpbiBhIG1lbnUgb3IgbWVudWJhclxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogW1wiYXJpYS1jaGVja2VkXCJdLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcIm1lbnVpdGVtcmFkaW9cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJncm91cFwiLCBcIm1lbnVcIiwgXCJtZW51YmFyXCJdLCAvLyBncm91cCBvbmx5IGNvdW50cyBhcyBhIHZhbGlkIGNvbnRhaW5lciBpZiBpdCBpcyBjb250YWluZWQgaW4gYSBtZW51IG9yIG1lbnViYXJcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaGFzcG9wdXBcIiwgXCJhcmlhLXBvc2luc2V0XCIsIFwiYXJpYS1zZXRzaXplXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtY2hlY2tlZFwiXSxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJtZXRlclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS12YWx1ZW1heFwiLCBcImFyaWEtdmFsdWVtaW5cIiwgXCJhcmlhLXZhbHVldGV4dFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBbXCJhcmlhLXZhbHVlbm93XCJdLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJuYXZpZ2F0aW9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJub25lXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgfSxcblxuICAgICAgICBcIm5vdGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJvcHRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJncm91cFwiLCBcImxpc3Rib3hcIl0sIC8vIGdyb3VwIG9ubHkgY291bnRzIGFzIGEgdmFsaWQgY29udGFpbmVyIGlmIGl0IGlzIGNvbnRhaW5lZCBpbiBhIGxpc3Rib3hcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLXNlbGVjdGVkXCIsIFwiYXJpYS1jaGVja2VkXCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCwgLy8gXCJhcmlhLXNlbGVjdGVkXCIgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwib3B0aW9uXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcInBhcmFncmFwaFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJwcm9oaWJpdGVkXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJwcmVzZW50YXRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICB9LFxuXG4gICAgICAgIFwicHJvZ3Jlc3NiYXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtdmFsdWVtYXhcIiwgXCJhcmlhLXZhbHVlbWluXCIsIFwiYXJpYS12YWx1ZW5vd1wiLCBcImFyaWEtdmFsdWV0ZXh0XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcInJhZGlvXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBbXCJhcmlhLWNoZWNrZWRcIl0sXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJpbnB1dFtAdHlwZT0ncmFkaW8nXVwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJyYWRpb2dyb3VwXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJyYWRpb1wiXSxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwicmVnaW9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJyb3dcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJncmlkXCIsIFwicm93Z3JvdXBcIiwgXCJ0YWJsZVwiLCBcInRyZWVncmlkXCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtY29saW5kZXhcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtbGV2ZWxcIiwgXCJhcmlhLXBvc2luc2V0XCIsIFwiYXJpYS1yb3dpbmRleFwiLCBcImFyaWEtc2VsZWN0ZWRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJjZWxsXCIsIFwiY29sdW1uaGVhZGVyXCIsIFwiZ3JpZGNlbGxcIiwgXCJyb3doZWFkZXJcIl0sXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwidHJcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJyb3dncm91cFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImdyaWRcIiwgXCJ0YWJsZVwiLCBcInRyZWVncmlkXCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1wicm93XCJdLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcInRib2R5IHwgdGZvb3QgfCB0aGVhZFwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJyb3doZWFkZXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJyb3dcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1jb2xpbmRleFwiLCBcImFyaWEtY29sc3BhblwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIiwgXCJhcmlhLXJvd2luZGV4XCIsIFwiYXJpYS1yb3dzcGFuXCIsIFwiYXJpYS1zZWxlY3RlZFwiLCBcImFyaWEtc29ydFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwidGhbQHNjb3BlPSdyb3cnXVwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInNjcm9sbGJhclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtb3JpZW50YXRpb25cIiwgXCJhcmlhLXZhbHVlbWF4XCIsIFwiYXJpYS12YWx1ZW1pblwiLCBcImFyaWEtdmFsdWV0ZXh0XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtY29udHJvbHNcIiwgXCJhcmlhLXZhbHVlbm93XCJdLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic2VhcmNoXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJzZWFyY2hib3hcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtYXV0b2NvbXBsZXRlXCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtbXVsdGlsaW5lXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJpbnB1dFtAdHlwZT0nc2VhcmNoJ11cIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic2VwYXJhdG9yXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLW9yaWVudGF0aW9uXCJdLCAvLyBhcmlhLWRpc2FibGVkLCBhcmlhLXZhbHVlbWF4LCBhcmlhLXZhbHVlbWluLCBhcmlhLXZhbHVldGV4dCBhcmUgdmFsaWQgaWYgZm9jdXNhYmxlLiBUaGlzIGlzIGhhbmRsZWQgaW4gdGhlIGNvZGUuXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCwgLy8gYXJpYS12YWx1ZW5vdyBpcyByZXF1aXJlZCBpZiBmb2N1c2FibGUuIFRoaXMgaXMgaGFuZGxlZCBpbiB0aGUgY29kZS5cbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsIC8vIG9yIHdpZGdldCBpZiBmb2N1c2FibGVcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJzbGlkZXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtaGFzcG9wdXBcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtdmFsdWVtYXhcIiwgXCJhcmlhLXZhbHVlbWluXCIsIFwiYXJpYS12YWx1ZXRleHRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogW1wiYXJpYS12YWx1ZW5vd1wiXSxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic3BpbmJ1dHRvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIiwgXCJhcmlhLXZhbHVlbWF4XCIsIFwiYXJpYS12YWx1ZW1pblwiLCBcImFyaWEtdmFsdWVub3dcIiwgXCJhcmlhLXZhbHVldGV4dFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInN0YXR1c1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsaXZlUmVnaW9uXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJzdHJvbmdcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wicHJvaGliaXRlZFwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic3Vic2NyaXB0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInN1cGVyc2NyaXB0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInN3aXRjaFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtY2hlY2tlZFwiXSxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0YWJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJ0YWJsaXN0XCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNlbGVjdGVkXCIsIFwiYXJpYS1zZXRzaXplXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwidGFibGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtY29sY291bnRcIiwgXCJhcmlhLXJvd2NvdW50XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1wicm93XCIsIFwicm93Z3JvdXBcIl0sIC8vIHJvd2dyb3VwIGlzIG5vdCByZXF1aXJlZCwgYnV0IGl0IGlzIGFsbG93ZWRcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJ0YWJsZVwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0YWJsaXN0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1widGFiXCJdLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IGZhbHNlLCBcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRhYnBhbmVsXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwidGVybVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiZGZuXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRleHRib3hcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtYXV0b2NvbXBsZXRlXCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtbXVsdGlsaW5lXCIsIFwiYXJpYS1wbGFjZWhvbGRlclwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJpbnB1dFtAdHlwZT0ndGV4dCddXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRpbWVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0aW1lclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsaXZlUmVnaW9uXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0b29sYmFyXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1vcmllbnRhdGlvblwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRvb2x0aXBcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IGZhbHNlLCAvLyBBUklBIDEuMiBoYXMgdGhpcyBhcyBuYW1lUmVxdWlyZWQ6IHRydWUsIGJ1dCBBUklBIDEuMyByZW1vdmVkIGl0IGJlY2F1c2UgaXQgbWFrZXMgbm8gc2Vuc2UgdG8gcmVxdWlyZSBhIG5hbWUgb24gYSB0b29sdGlwLlxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0cmVlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiLCBcImFyaWEtb3JpZW50YXRpb25cIiwgXCJhcmlhLXJlcXVpcmVkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1wiZ3JvdXBcIiwgXCJ0cmVlaXRlbVwiXSwgLy8gZ3JvdXAgaXMgbm90IHJlcXVpcmVkLCBidXQgaXQgaXMgYWxsb3dlZFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0cmVlZ3JpZFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1jb2xjb3VudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCIsIFwiYXJpYS1vcmllbnRhdGlvblwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCIsIFwiYXJpYS1yb3djb3VudFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtcInJvd1wiLCBcInJvd2dyb3VwXCJdLCAvLyByb3dncm91cCBpcyBub3QgcmVxdWlyZWQsIGJ1dCBpdCBpcyBhbGxvd2VkXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRyZWVpdGVtXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wiZ3JvdXBcIiwgXCJ0cmVlXCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtY2hlY2tlZFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtbGV2ZWxcIiwgXCJhcmlhLXBvc2luc2V0XCIsIFwiYXJpYS1zZWxlY3RlZFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuICAgIH0gLy8gZW5kIGRlc2lnblBhdHRlcm5zXG5cbiAgICAvLyBjb3BpZWQgZnJvbSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zZW1hbnRpY3Mtb3RoZXIuaHRtbCNkaXNhYmxlZC1lbGVtZW50c1xuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2lucHV0Lmh0bWwjaW5wdXQtdHlwZS1hdHRyLXN1bW1hcnlcbiAgICBzdGF0aWMgZWxlbWVudHNBbGxvd2VkRGlzYWJsZWQgPSBbXCJidXR0b25cIiwgXCJpbnB1dFwiLCBcInNlbGVjdFwiLCBcInRleHRhcmVhXCIsIFwib3B0Z3JvdXBcIiwgXCJvcHRpb25cIiwgXCJmaWVsZHNldFwiXTsgLy8gYWxzbyBmb3JtLWFzc29jaWF0ZWQgY3VzdG9tIGVsZW1lbnRcbiAgICBzdGF0aWMgZWxlbWVudHNBbGxvd2VkUmVxdWlyZWQgPSBbXCJpbnB1dFwiLCBcInNlbGVjdFwiLCBcInRleHRhcmVhXCJdOyAvLyByZXF1aXJlZCBpcyBub3Qgc3VwcG9ydGVkIG9uIGlucHV0QHR5cGU9XCJyYW5nZVwiLCBcImNvbG9yXCIsIFwiaGlkZGVuXCIgb3IgYW55IGJ1dHRvbiB0eXBlc1xuICAgIHN0YXRpYyBlbGVtZW50c0FsbG93ZWRSZWFkT25seSA9IFtcImlucHV0XCIsIFwidGV4dGFyZWFcIl07IC8vIHJlYWRvbmx5IGlzIG5vdCBzdXBwb3J0ZWQgb24gaW5wdXRAdHlwZT1cImNoZWNrYm94XCIsIFwicmFkaW9cIiwgXCJyYW5nZVwiLCBcImNvbG9yXCIsIFwiZmlsZVwiLCBoaWRkZW5cIiBvciBhbnkgYnV0dG9uIHR5cGVzXG5cblxuICAgIC8qIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sLWFyaWEvI2RvY2NvbmZvcm1hbmNlXG4gICAgICAgICogZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50IGNvbnRhaW5zIHByb3BlcnRpZXMgb2YgdGhlIHRhZ3MgcmVsYXRlZCB0byByb2xlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgYXR0cmlidXRlIHZhbHVlXG4gICAgICAgICogZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50U3BlY2lhbFRhZ3MgY29udGFpbnMgdGhvc2UgdGFncyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBjb25zaWRlcmF0aW9uc1xuICAgICAgICAqL1xuICAgIHN0YXRpYyBkb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnQ6IHsgXG4gICAgICAgIFtyb2xlOiBzdHJpbmddOiBJRG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50XG4gICAgfSA9IHtcbiAgICAgICAgXCJhYmJyXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhZGRyZXNzXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcnRpY2xlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiYXJ0aWNsZVwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFwcGxpY2F0aW9uXCIsIFwiZG9jdW1lbnRcIiwgXCJmZWVkXCIsIFwibWFpblwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJyZWdpb25cIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXNpZGVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjb21wbGVtZW50YXJ5XCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLWRlZGljYXRpb25cIiwgXCJkb2MtZXhhbXBsZVwiLCBcImRvYy1mb290bm90ZVwiLCBcImRvYy1wdWxscXVvdGVcIiwgXCJkb2MtdGlwXCIsIFwiZmVlZFwiLCBcIm5vbmVcIiwgXCJub3RlXCIsIFwicHJlc2VudGF0aW9uXCIsIFwicmVnaW9uXCIsIFwic2VhcmNoXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImF1ZGlvXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFwcGxpY2F0aW9uXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImJcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImJhc2VcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYmRpXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJiZG9cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImJsb2NrcXVvdGVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImJvZHlcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJkb2N1bWVudFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYnJcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wibm9uZVwiLCBcInByZXNlbnRhdGlvblwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJidXR0b25cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJidXR0b25cIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJjaGVja2JveFwiLCBcImxpbmtcIiwgXCJtZW51aXRlbVwiLCBcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJtZW51aXRlbXJhZGlvXCIsIFwib3B0aW9uXCIsIFwicmFkaW9cIiwgXCJzd2l0Y2hcIiwgXCJ0YWJcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiY2FudmFzXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJjYXB0aW9uXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiY2l0ZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29kZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImNvbGdyb3VwXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImRhdGFcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRhdGFsaXN0XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlzdGJveFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJkZWZpbml0aW9uXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZWxcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRldGFpbHNcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJncm91cFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGZuXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1widGVybVwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJkaWFsb2dcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJkaWFsb2dcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbGVydGRpYWxvZ1wiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJkaXZcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRsXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImdyb3VwXCIsIFwibGlzdFwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZHRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0ZXJtXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wibGlzdGl0ZW1cIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW1cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImVtYmVkXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFwcGxpY2F0aW9uXCIsIFwiZG9jdW1lbnRcIiwgXCJpbWdcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImZpZWxkc2V0XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiZ3JvdXBcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwicmFkaW9ncm91cFwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJmaWdjYXB0aW9uXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImdyb3VwXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJoZWFkXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImgxXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiaGVhZGluZ1wiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRvYy1zdWJ0aXRsZVwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJ0YWJcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaDJcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJoZWFkaW5nXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLXN1YnRpdGxlXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInRhYlwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJoM1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImhlYWRpbmdcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2Mtc3VidGl0bGVcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwidGFiXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImg0XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiaGVhZGluZ1wiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRvYy1zdWJ0aXRsZVwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJ0YWJcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaDVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJoZWFkaW5nXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLXN1YnRpdGxlXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInRhYlwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJoNlwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImhlYWRpbmdcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2Mtc3VidGl0bGVcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwidGFiXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImhncm91cFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaHJcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJzZXBhcmF0b3JcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2MtcGFnZWJyZWFrXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJodG1sXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcImlcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImlmcmFtZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhcHBsaWNhdGlvblwiLCBcImRvY3VtZW50XCIsIFwiaW1nXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJpbnNcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImtiZFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibGFiZWxcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJsZWdlbmRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJsaVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImxpc3RpdGVtXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLWJpYmxpb2VudHJ5XCIsIFwiZG9jLWVuZG5vdGVcIiwgXCJtZW51aXRlbVwiLCBcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJtZW51aXRlbXJhZGlvXCIsIFwibm9uZVwiLCBcIm9wdGlvblwiLCBcInByZXNlbnRhdGlvblwiLCBcInJhZGlvXCIsIFwic2VwYXJhdG9yXCIsIFwidGFiXCIsIFwidHJlZWl0ZW1cIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibGlua1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYWluXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibWFpblwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibWFwXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcIm1hcmtcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcIm1hdGhcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJtYXRoXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJtZW51XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlzdFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRpcmVjdG9yeVwiLCBcImdyb3VwXCIsIFwibGlzdGJveFwiLCBcIm1lbnVcIiwgXCJtZW51YmFyXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInJhZGlvZ3JvdXBcIiwgXCJ0YWJsaXN0XCIsIFwidG9vbGJhclwiLCBcInRyZWVcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibWV0YVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJtZXRlclwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcIm5hdlwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcIm5hdmlnYXRpb25cIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2MtaW5kZXhcIiwgXCJkb2MtcGFnZWxpc3RcIiwgXCJkb2MtdG9jXCIsIFwibWVudVwiLCBcIm1lbnViYXJcIiwgXCJ0YWJsaXN0XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcIm5vc2NyaXB0XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhcHBsaWNhdGlvblwiLCBcImRvY3VtZW50XCIsIFwiaW1nXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcIm9sXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlzdFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRpcmVjdG9yeVwiLCBcImdyb3VwXCIsIFwibGlzdGJveFwiLCBcIm1lbnVcIiwgXCJtZW51YmFyXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInJhZGlvZ3JvdXBcIiwgXCJ0YWJsaXN0XCIsIFwidG9vbGJhclwiLCBcInRyZWVcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwib3B0Z3JvdXBcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJncm91cFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwib3B0aW9uXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wib3B0aW9uXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJvdXRwdXRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJzdGF0dXNcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwicFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwicGFyYW1cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwicGljdHVyZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJwcmVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInByb2dyZXNzXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicHJvZ3Jlc3NiYXJcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInFcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInJwXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJydFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwicnVieVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2FtcFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2NyaXB0XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInNsb3RcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwic21hbGxcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInNvdXJjZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJzcGFuXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzdHJvbmdcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInN0eWxlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInN1YlwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic3VtbWFyeVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImJ1dHRvblwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic3VwXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzdmdcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJncmFwaGljcy1kb2N1bWVudFwiXSwgLy8gYXMgZGVmaW5lZCBieSBTVkcgQUFNXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidGFibGVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0YWJsZVwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0Ym9keVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInJvd2dyb3VwXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInRlbXBsYXRlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInRleHRhcmVhXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1widGV4dGJveFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidGZvb3RcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJyb3dncm91cFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0aGVhZFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInJvd2dyb3VwXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInRpbWVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInRpdGxlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInRyYWNrXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInVsXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlzdFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRpcmVjdG9yeVwiLCBcImdyb3VwXCIsIFwibGlzdGJveFwiLCBcIm1lbnVcIiwgXCJtZW51YmFyXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInJhZGlvZ3JvdXBcIiwgXCJ0YWJsaXN0XCIsIFwidG9vbGJhclwiLCBcInRyZWVcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidmFyXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ2aWRlb1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhcHBsaWNhdGlvblwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ3YnJcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9XG4gICAgfSAvLyBlbmQgZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50XG5cbiAgICBzdGF0aWMgZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50U3BlY2lhbFRhZ3M6IHtcbiAgICAgICAgW3JvbGU6IHN0cmluZ106IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ10gOiBJRG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50XG4gICAgICAgIH0gfCBJRG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50XG4gICAgfSA9IHtcbiAgICAgICAgXCJhXCI6IHtcbiAgICAgICAgICAgIFwid2l0aC1ocmVmXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImxpbmtcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIG5vbi1lbXB0eSBocmVmIGF0dHJpYnV0ZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYnV0dG9uXCIsIFwiY2hlY2tib3hcIiwgXCJkb2MtYmFja2xpbmtcIiwgXCJkb2MtYmlibGlvcmVmXCIsIFwiZG9jLWdsb3NzcmVmXCIsIFwiZG9jLW5vdGVyZWZcIiwgXCJtZW51aXRlbVwiLCBcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJtZW51aXRlbXJhZGlvXCIsIFwib3B0aW9uXCIsIFwicmFkaW9cIiwgXCJzd2l0Y2hcIiwgXCJ0YWJcIiwgXCJ0cmVlaXRlbVwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ3aXRob3V0LWhyZWZcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gaHJlZiBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImFyZWFcIjoge1xuICAgICAgICAgICAgXCJ3aXRoLWhyZWZcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlua1wiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gbm9uLWVtcHR5IGhyZWYgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIndpdGhvdXQtaHJlZlwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBocmVmIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuLy8gVE9ET1xuLy8gICAgICAgIFwiYXV0b25vbW91cyBjdXN0b20gZWxlbWVudFwiOiB7XG4vLyAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiUm9sZSBleHBvc2VkIGZyb20gYXV0aG9yIGRlZmluZWQgRWxlbWVudEludGVybmFscy4gT3RoZXJ3aXNlIG5vIGNvcnJlc3BvbmRpbmcgcm9sZS5cIl0sXG4vLyAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcIklmIHJvbGUgZGVmaW5lZCBieSBFbGVtZW50SW50ZXJuYWxzXCIsIFwiYW55IHJvbGVcIiwgXCJubyByb2xlIE90aGVyd2lzZVwiXSxcbi8vICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuLy8gICAgICAgIH0sXG5cbiAgICAgICAgXCJmaWd1cmVcIjoge1xuICAgICAgICAgICAgXCJjaGlsZC1maWdjYXB0aW9uXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImZpZ3VyZVwiXSxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm5vLWNoaWxkLWZpZ2NhcHRpb25cIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiZmlndXJlXCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZm9vdGVyXCI6IHtcbiAgICAgICAgICAgIFwiZGVzLXNlY3Rpb24tYXJ0aWNsZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBkZXNjZW5kYW50IG9mIGFuIGFydGljbGUsIGFzaWRlLCBtYWluLCBuYXYgb3Igc2VjdGlvbiBlbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLWZvb3Rub3RlXCIsIFwiZ3JvdXBcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm5vdC1kZXMtc2VjdGlvbi1hcnRpY2xlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNvbnRlbnRpbmZvXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBub3QgYSBkZXNjZW5kYW50IG9mIGFuIGFydGljbGUsIGFzaWRlLCBtYWluLCBuYXYgb3Igc2VjdGlvbiBlbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLWZvb3Rub3RlXCIsIFwiZ3JvdXBcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb3JtXCI6IHtcbiAgICAgICAgICAgIFwid2l0aC1uYW1lXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImZvcm1cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIGFjY2Vzc2libGUgbmFtZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInNlYXJjaFwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ3aXRob3V0LW5hbWVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gYWNjZXNzaWJsZSBuYW1lIGlzIG5vdCBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInNlYXJjaFwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4vLyBUT0RPXG4vLyAgICAgICAgXCJmb3JtLWFzc29jaWF0ZWQgY3VzdG9tIGVsZW1lbnRcIjoge1xuLy8gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcIlJvbGUgZXhwb3NlZCBmcm9tIGF1dGhvciBkZWZpbmVkIEVsZW1lbnRJbnRlcm5hbHMuIE90aGVyd2lzZSBubyBjb3JyZXNwb25kaW5nIHJvbGUuXCJdLFxuLy8gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJJZiByb2xlIGRlZmluZWQgYnkgRWxlbWVudEludGVybmFsc1wiLCBcImZvcm0tcmVsYXRlZCByb2xlczogYnV0dG9uXCIsIFwiY2hlY2tib3hcIiwgXCJjb21ib2JveFwiLCBcImdyb3VwXCIsIFwibGlzdGJveFwiLCBcInByb2dyZXNzYmFyXCIsIFwicmFkaW9cIiwgXCJyYWRpb2dyb3VwXCIsIFwic2VhcmNoYm94XCIsIFwic2xpZGVyXCIsIFwic3BpbmJ1dHRvblwiLCBcInN3aXRjaFwiLCBcInRleHRib3hcIiwgXCJubyByb2xlIE90aGVyd2lzZVwiXSxcbi8vICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuLy8gICAgICAgIH0sXG5cbiAgICAgICAgXCJoZWFkZXJcIjoge1xuICAgICAgICAgICAgXCJkZXMtc2VjdGlvbi1hcnRpY2xlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIGRlc2NlbmRhbnQgb2YgYW4gYXJ0aWNsZSwgYXNpZGUsIG1haW4sIG5hdiBvciBzZWN0aW9uIGVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJncm91cFwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibm90LWRlcy1zZWN0aW9uLWFydGljbGVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiYmFubmVyXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBub3QgYSBkZXNjZW5kYW50IG9mIGFuIGFydGljbGUsIGFzaWRlLCBtYWluLCBuYXYgb3Igc2VjdGlvbiBlbGVtZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZ3JvdXBcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuICAgICAgICBcImltZ1wiOiB7XG4gICAgICAgICAgICBcImltZy13aXRoLWFsdC10ZXh0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImltZ1wiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gYWx0IGF0dHJpYnV0ZSBoYXMgdGV4dCAoaXMgbm90IGVtcHR5KVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImJ1dHRvblwiLCBcImNoZWNrYm94XCIsIFwiZG9jLWNvdmVyXCIsIFwibGlua1wiLCBcIm1lbnVpdGVtXCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIiwgXCJvcHRpb25cIiwgXCJwcm9ncmVzc2JhclwiLCBcInNjcm9sbGJhclwiLCBcInNlcGFyYXRvclwiLCBcInNsaWRlclwiLCBcInN3aXRjaFwiLCBcInRhYlwiLCBcInRyZWVpdGVtXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImltZy13aXRoLWVtcHR5LWFsdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJwcmVzZW50YXRpb25cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIGFsdCBhdHRyaWJ1dGUgaXMgZW1wdHlcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlIC8vIFRPRE8gYXJpYS1oaWRkZW49XCJ0cnVlXCIgaXMgYWxsb3dlZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiaW1nLXdpdGhvdXQtYWx0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImltZ1wiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gYWx0IGF0dHJpYnV0ZSwgYXJpYS1sYWJlbCwgb3IgYXJpYS1sYWJlbGxlZGJ5IGFyZSBub3QgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2UgLy8gVE9ETyBhcmlhLWhpZGRlbj1cInRydWVcIiBpcyBhbGxvd2VkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaW5wdXRcIjoge1xuICAgICAgICAgICAgXCJidXR0b25cIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiYnV0dG9uXCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImxpbmtcIiwgXCJtZW51aXRlbVwiLCBcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJtZW51aXRlbXJhZGlvXCIsIFwib3B0aW9uXCIsIFwicmFkaW9cIiwgXCJzd2l0Y2hcIiwgXCJ0YWJcIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiY2hlY2tib3gtd2l0aC1hcmlhLXByZXNzZWRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY2hlY2tib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9Y2hlY2tib3ggYW5kIGFyaWEtcHJlc3NlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImJ1dHRvblwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJjaGVja2JveC13aXRob3V0LWFyaWEtcHJlc3NlZFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjaGVja2JveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1jaGVja2JveCBhbmQgYXJpYS1wcmVzc2VkIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJvcHRpb25cIiwgXCJzd2l0Y2hcIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiY29sb3JcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1jb2xvclwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZGF0ZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPWRhdGVcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImRhdGV0aW1lLWxvY2FsXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9ZGF0ZXRpbWVcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImVtYWlsLW5vLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1widGV4dGJveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1lbWFpbCBhbmQgbm8gbGlzdCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZW1haWwtd2l0aC1saXN0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNvbWJvYm94XCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPWVtYWlsIGFuZCBhIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImZpbGVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1maWxlXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJoaWRkZW5cIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1oaWRkZW5cIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJpbWFnZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJidXR0b25cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9aW1hZ2VcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJsaW5rXCIsIFwibWVudWl0ZW1cIiwgXCJtZW51aXRlbWNoZWNrYm94XCIsIFwibWVudWl0ZW1yYWRpb1wiLCBcInJhZGlvXCIsIFwic3dpdGNoXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1vbnRoXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9bW9udGhcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm51bWJlclwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJzcGluYnV0dG9uXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPW51bWJlclwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicGFzc3dvcmRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicmFkaW9cIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicmFkaW9cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9cmFkaW9cIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJtZW51aXRlbXJhZGlvXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJhbmdlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInNsaWRlclwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1yYWRpb1wiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicmVzZXRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiYnV0dG9uXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXJlc2V0XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZWFyY2gtbm8tbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJzZWFyY2hib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9c2VhcmNoIGFuZCBubyBsaXN0IGF0dHJpYnV0ZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZWFyY2gtd2l0aC1saXN0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNvbWJvYm94XCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXNlYXJjaCBhbmQgYSBsaXN0IGF0dHJpYnV0ZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzdWJtaXRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiYnV0dG9uXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXN1Ym1pdFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGVsLW5vLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1widGV4dGJveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT10ZWwgYW5kIG5vIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRlbC13aXRoLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29tYm9ib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9dGVsIGFuZCBhIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRleHQtbm8tbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0ZXh0Ym94XCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXRleHQgYW5kIG5vIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJjb21ib2JveFwiLCBcInNlYXJjaGJveFwiLCBcInNwaW5idXR0b25cIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGV4dC13aXRoLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29tYm9ib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9dGV4dCBhbmQgYSBsaXN0IGF0dHJpYnV0ZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0aW1lXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9dGltZVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidXJsLW5vLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1widGV4dGJveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT11cmwgYW5kIG5vIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInVybC13aXRoLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29tYm9ib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9dXJsIGFuZCBhIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIndlZWtcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT13ZWVrXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIlwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInNlY3Rpb25cIjoge1xuICAgICAgICAgICAgXCJ3aXRoLW5hbWVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicmVnaW9uXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBhY2Nlc3NpYmxlIG5hbWUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFsZXJ0XCIsIFwiYWxlcnRkaWFsb2dcIiwgXCJhcHBsaWNhdGlvblwiLCBcImJhbm5lclwiLCBcImNvbXBsZW1lbnRhcnlcIiwgXCJjb250ZW50aW5mb1wiLCBcImRpYWxvZ1wiLCBcImRvYy1hYnN0cmFjdFwiLCBcImRvYy1hY2tub3dsZWRnbWVudHNcIiwgXCJkb2MtYWZ0ZXJ3b3JkXCIsIFwiZG9jLWFwcGVuZGl4XCIsIFwiZG9jLWJpYmxpb2dyYXBoeVwiLCBcImRvYy1jaGFwdGVyXCIsIFwiZG9jLWNvbG9waG9uXCIsIFwiZG9jLWNvbmNsdXNpb25cIiwgXCJkb2MtY3JlZGl0XCIsIFwiZG9jLWNyZWRpdHNcIiwgXCJkb2MtZGVkaWNhdGlvblwiLCBcImRvYy1lbmRub3Rlc1wiLCBcImRvYy1lcGlncmFwaFwiLCBcImRvYy1lcGlsb2d1ZVwiLCBcImRvYy1lcnJhdGFcIiwgXCJkb2MtZXhhbXBsZVwiLCBcImRvYy1mb3Jld29yZFwiLCBcImRvYy1nbG9zc2FyeVwiLCBcImRvYy1pbmRleFwiLCBcImRvYy1pbnRyb2R1Y3Rpb25cIiwgXCJkb2Mtbm90aWNlXCIsIFwiZG9jLXBhZ2VsaXN0XCIsIFwiZG9jLXBhcnRcIiwgXCJkb2MtcHJlZmFjZVwiLCBcImRvYy1wcm9sb2d1ZVwiLCBcImRvYy1wdWxscXVvdGVcIiwgXCJkb2MtcW5hXCIsIFwiZG9jLXRvY1wiLCBcImRvY3VtZW50XCIsIFwiZmVlZFwiLCBcImdyb3VwXCIsIFwibG9nXCIsIFwibWFpblwiLCBcIm1hcnF1ZWVcIiwgXCJuYXZpZ2F0aW9uXCIsIFwibm9uZVwiLCBcIm5vdGVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJzZWFyY2hcIiwgXCJzdGF0dXNcIiwgXCJ0YWJwYW5lbFwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ3aXRob3V0LW5hbWVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gYWNjZXNzaWJsZSBuYW1lIGlzIG5vdCBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYWxlcnRcIiwgXCJhbGVydGRpYWxvZ1wiLCBcImFwcGxpY2F0aW9uXCIsIFwiYmFubmVyXCIsIFwiY29tcGxlbWVudGFyeVwiLCBcImNvbnRlbnRpbmZvXCIsIFwiZGlhbG9nXCIsIFwiZG9jLWFic3RyYWN0XCIsIFwiZG9jLWFja25vd2xlZGdtZW50c1wiLCBcImRvYy1hZnRlcndvcmRcIiwgXCJkb2MtYXBwZW5kaXhcIiwgXCJkb2MtYmlibGlvZ3JhcGh5XCIsIFwiZG9jLWNoYXB0ZXJcIiwgXCJkb2MtY29sb3Bob25cIiwgXCJkb2MtY29uY2x1c2lvblwiLCBcImRvYy1jcmVkaXRcIiwgXCJkb2MtY3JlZGl0c1wiLCBcImRvYy1kZWRpY2F0aW9uXCIsIFwiZG9jLWVuZG5vdGVzXCIsIFwiZG9jLWVwaWdyYXBoXCIsIFwiZG9jLWVwaWxvZ3VlXCIsIFwiZG9jLWVycmF0YVwiLCBcImRvYy1leGFtcGxlXCIsIFwiZG9jLWZvcmV3b3JkXCIsIFwiZG9jLWdsb3NzYXJ5XCIsIFwiZG9jLWluZGV4XCIsIFwiZG9jLWludHJvZHVjdGlvblwiLCBcImRvYy1ub3RpY2VcIiwgXCJkb2MtcGFnZWxpc3RcIiwgXCJkb2MtcGFydFwiLCBcImRvYy1wcmVmYWNlXCIsIFwiZG9jLXByb2xvZ3VlXCIsIFwiZG9jLXB1bGxxdW90ZVwiLCBcImRvYy1xbmFcIiwgXCJkb2MtdG9jXCIsIFwiZG9jdW1lbnRcIiwgXCJmZWVkXCIsIFwiZ3JvdXBcIiwgXCJsb2dcIiwgXCJtYWluXCIsIFwibWFycXVlZVwiLCBcIm5hdmlnYXRpb25cIiwgXCJub25lXCIsIFwibm90ZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInNlYXJjaFwiLCBcInN0YXR1c1wiLCBcInRhYnBhbmVsXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzZWxlY3RcIjoge1xuICAgICAgICAgICAgXCJuby1tdWx0aXBsZS1hdHRyLXNpemUtZ3QxXCI6IHtcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggYSBtdWx0aXBsZSBhdHRyaWJ1dGUgb3IgYSBzaXplIGF0dHJpYnV0ZSBoYXZpbmcgdmFsdWUgZ3JlYXRlciB0aGFuIDFcIlxuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29tYm9ib3hcIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wibWVudVwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtdWx0aXBsZS1hdHRyLXNpemUtZ3QxXCI6IHtcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggbm8gbXVsdGlwbGUgYXR0cmlidXRlIGFuZCBubyBzaXplIGF0dHJpYnV0ZSBoYXZpbmcgdmFsdWUgZ3JlYXRlciB0aGFuIDFcIlxuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlzdGJveFwiXSxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZFwiOiB7XG4gICAgICAgICAgICBcImRlcy10YWJsZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjZWxsXCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZGVzLWdyaWRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiZ3JpZGNlbGxcIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkZXMtb3RoZXJcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRoXCI6IHtcbiAgICAgICAgICAgIFwiZGVzLXRhYmxlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNvbHVtbmhlYWRlclwiLCBcInJvd2hlYWRlclwiLCBcImNlbGxcIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkZXMtZ3JpZFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjb2x1bW5oZWFkZXJcIiwgXCJyb3doZWFkZXJcIiwgXCJncmlkY2VsbFwiXSxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImRlcy1vdGhlclwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwidHJcIjoge1xuICAgICAgICAgICAgXCJkZXMtdGFibGVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicm93XCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZGVzLWdyaWRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicm93XCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZGVzLW90aGVyXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInJvd1wiXSxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIlwiLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9XG4gICAgfSAvLyBlbmQgb2YgZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50U3BlY2lhbFRhZ3NcblxuICAgIHN0YXRpYyBjb250YWluZXJzID0gW11cbn07XG5cbmxldCBjb250YWluZXJBcnJheSA9IFtdO1xuXG5mb3IgKGNvbnN0IHJvbGVEZXNpZ24gaW4gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zKSB7XG4gICAgY29uc3QgY29udGFpbmVycyA9IEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1tyb2xlRGVzaWduXS5jb250YWluZXI7XG4gICAgaWYgKGNvbnRhaW5lcnMgIT09IG51bGwpIHtcbiAgICAgICAgZm9yIChjb25zdCBjb250YWluZXIgb2YgY29udGFpbmVycykge1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lckFycmF5LmluZGV4T2YoY29udGFpbmVyKSA9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lckFycmF5LnB1c2goY29udGFpbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbkFSSUFEZWZpbml0aW9ucy5jb250YWluZXJzID0gY29udGFpbmVyQXJyYXk7XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEFSSUFEZWZpbml0aW9ucyB9IGZyb20gXCIuL0FSSUFEZWZpbml0aW9uc1wiO1xuaW1wb3J0IHsgQ29tbW9uTWFwcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9Db21tb25NYXBwZXJcIjtcbmltcG9ydCB7IElNYXBSZXN1bHR9IGZyb20gXCIuLi9hcGkvSU1hcHBlclwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvdXRpbC9sZWdhY3lcIlxuaW1wb3J0IHsgRnJhZ21lbnRVdGlsIH0gZnJvbSBcIi4uL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS91dGlsL2ZyYWdtZW50XCI7XG50eXBlIEVsZW1DYWxjID0gKGVsZW06IEVsZW1lbnQpID0+IHN0cmluZztcbnR5cGUgTm9kZUNhbGMgPSAobm9kZTogTm9kZSkgPT4gc3RyaW5nO1xuXG5leHBvcnQgY2xhc3MgQVJJQU1hcHBlciBleHRlbmRzIENvbW1vbk1hcHBlciB7XG4gICAgLy9kb20tZGVmaW5lZCByZWxhdGlvbnNoaXAgb3ZlcnJpZGRlbiBieSBhcmlhLW93bnM6IGVsZW1JZCA6IHBhcmVudFJvbGVQYXRoXG4gICAgcHJpdmF0ZSBhcmlhSGllcmFyY2h5OiBBcnJheTx7XG4gICAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgICAgaGllcmFyY2h5Um9sZSA6IHN0cmluZ1tdLFxuICAgICAgICAgICAgaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZTogYm9vbGVhbltdLFxuICAgICAgICAgICAgaGllcmFyY2h5UGF0aDogQXJyYXk8e1xuICAgICAgICAgICAgICAgIHJvbGVQYXRoOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgcm9sZUNvdW50OiB7XG4gICAgICAgICAgICAgICAgICAgIFtyb2xlOiBzdHJpbmddOiBudW1iZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9PixcbiAgICAgICAgICAgIGhpZXJhcmNoeVJlc3VsdHM6IElNYXBSZXN1bHRbXSxcbiAgICAgICAgICAgIG5vZGU6Tm9kZSB8IG51bGwsXG4gICAgICAgICAgICBzaGFkb3dSb290OiBOb2RlIHwgbnVsbFxuICAgIH0+ID0gbnVsbDtcbiAgICAgICAgXG4gICAgcHJpdmF0ZSBoaWVyYXJjaHlDYWNoZTogeyAgXG4gICAgICAgIGhpZXJhcmNoeVJvbGUgOiBzdHJpbmdbXSxcbiAgICAgICAgaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZTogYm9vbGVhbltdLFxuICAgICAgICBoaWVyYXJjaHlQYXRoOiBBcnJheTx7XG4gICAgICAgICAgICByb2xlUGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgcm9sZUNvdW50OiB7XG4gICAgICAgICAgICAgICAgW3JvbGU6IHN0cmluZ106IG51bWJlclxuICAgICAgICAgICAgfVxuICAgICAgICB9PixcbiAgICAgICAgaGllcmFyY2h5UmVzdWx0czogSU1hcFJlc3VsdFtdXG4gICAgfTsgXG4gICAgY2hpbGRyZW5IYXZlUm9sZShub2RlOiBOb2RlLCByb2xlOiBzdHJpbmcpIDogYm9vbGVhbiB7XG4gICAgICAgIC8vIGlmIChub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgIC8vICAgICBjb25zdCBlbGVtID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAvLyAgICAgaWYgKGVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9XG4gICAgICAgIHJldHVybiAhKHJvbGUgaW4gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zICYmIEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1tyb2xlXS5wcmVzZW50YXRpb25hbENoaWxkcmVuKTtcbiAgICB9XG4gICAgZ2V0Um9sZShub2RlOiBOb2RlKSA6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHJvbGUgPSBBUklBTWFwcGVyLm5vZGVUb1JvbGUobm9kZSk7XG4gICAgICAgIHJldHVybiByb2xlO1xuICAgIH1cbiAgICBnZXROYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiYXJpYVwiXG4gICAgfVxuICAgIGdldEF0dHJpYnV0ZXMobm9kZTogTm9kZSkgOiB7IFtrZXk6c3RyaW5nXTogc3RyaW5nIH0ge1xuICAgICAgICBsZXQgcmV0VmFsID0ge307XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgZm9yIChsZXQgaWR4PTA7IGlkeDxlbGVtLmF0dHJpYnV0ZXMubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJJbmZvID0gZWxlbS5hdHRyaWJ1dGVzW2lkeF07XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGF0dHJJbmZvLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKFwiYXJpYS1cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsW25hbWUuc3Vic3RyaW5nKDUpXSA9IGF0dHJJbmZvLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBhcHBseUF0dHJSb2xlPSBmdW5jdGlvbihub2RlTmFtZTpzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShub2RlTmFtZSBpbiBBUklBTWFwcGVyLmVsZW1BdHRyVmFsdWVDYWxjdWxhdG9ycykpIHJldHVybjtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF0dHIgaW4gQVJJQU1hcHBlci5lbGVtQXR0clZhbHVlQ2FsY3VsYXRvcnNbbm9kZU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGF0dHIgaW4gcmV0VmFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gQVJJQU1hcHBlci5lbGVtQXR0clZhbHVlQ2FsY3VsYXRvcnNbbm9kZU5hbWVdW2F0dHJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPSBcInVuZGVmaW5lZFwiICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gdHlwZW9mIFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAodmFsdWUgYXMgTm9kZUNhbGMpKGVsZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWxbYXR0cl0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhcHBseUF0dHJSb2xlKFwiZ2xvYmFsXCIpO1xuICAgICAgICAgICAgYXBwbHlBdHRyUm9sZShub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMgLyogTm9kZS5URVhUX05PREUgKi8pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYXR0ciBpbiBBUklBTWFwcGVyLnRleHRBdHRyVmFsdWVDYWxjdWxhdG9ycykge1xuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBBUklBTWFwcGVyLnRleHRBdHRyVmFsdWVDYWxjdWxhdG9yc1thdHRyXShub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCAhPSBcInVuZGVmaW5lZFwiICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWxbYXR0cl0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgcmVzZXQobm9kZTogTm9kZSkge1xuICAgICAgICBpZiAodGhpcy5hcmlhSGllcmFyY2h5ID09PSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgPT09IDkgLyogTm9kZS5ET0NVTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRvcCA9IChwYXJlbnQgYXMgRG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHRvcC5xdWVyeVNlbGVjdG9yQWxsKCdbYXJpYS1vd25zXScpO1xuICAgICAgICAgICAgICAgIGlmIChsaXN0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXJpYUhpZXJhcmNoeSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LmZvckVhY2goKGVsZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoaWVyYXJjaGllcyA6IElNYXBSZXN1bHRbXSA9IHRoaXMub3BlblNjb3BlKGVsZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhpZXJhcmNoeVJvbGUgOiBzdHJpbmdbXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5oaWVyYXJjaHlSb2xlKSk7IFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGU6IGJvb2xlYW5bXSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5oaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGllcmFyY2h5UGF0aDogQXJyYXk8e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVQYXRoOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZUNvdW50OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb2xlOiBzdHJpbmddOiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9PiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5oaWVyYXJjaHlQYXRoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGllcmFyY2h5UmVzdWx0czogSU1hcFJlc3VsdFtdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeVJlc3VsdHMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdHRyVmFsdWUgPSBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtb3duc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZHMgPSBhdHRyVmFsdWUudHJpbSgpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJpYUhpZXJhcmNoeS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLnRyaW0oKSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeVJvbGU6IGhpZXJhcmNoeVJvbGUsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlOiBoaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlQYXRoOiBoaWVyYXJjaHlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlSZXN1bHRzOiBoaWVyYXJjaHlSZXN1bHRzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Um9vdDogRE9NVXRpbC5zaGFkb3dSb290Tm9kZShlbGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NsZWFyIHRoZSBoaWVyYXJjaGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlSb2xlID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlQYXRoID0gW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlUGF0aDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlQ291bnQ6IHt9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XTsgXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9IFxuICAgICAgICB9ICAgIFxuICAgICAgICBBUklBTWFwcGVyLm5hbWVDb21wdXRhdGlvbklkID0gMDtcbiAgICAgICAgc3VwZXIucmVzZXQobm9kZSk7IFxuICAgIH1cblxuICAgIHB1c2hIaWVyYXJjaHkobm9kZTogTm9kZSkge1xuICAgICAgICBpZiAodGhpcy5zd2l0Y2hQYXJlbnRIaWVyYXJjaGllcyhub2RlKSkge1xuICAgICAgICAgICAgLy9jYWNoZSB0aGUgb3JpZ2luYWwgaGllcmFyY2hpZXNcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Q2FjaGUgPSB7XG4gICAgICAgICAgICAgICAgaGllcmFyY2h5Um9sZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeVJvbGUpKSwgXG4gICAgICAgICAgICAgICAgaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGUpKSxcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlQYXRoOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuaGllcmFyY2h5UGF0aCkpLFxuICAgICAgICAgICAgICAgIGhpZXJhcmNoeVJlc3VsdHM6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5oaWVyYXJjaHlSZXN1bHRzKSlcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vcmV3cml0ZSBwYXJlbnQgaGllcmFyY2h5IHRvIHRoZSBlbGVtZW50IHdpdGggYXJpYS1vd25zXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IChub2RlIGFzIEVsZW1lbnQpLmdldEF0dHJpYnV0ZShcImlkXCIpO1xuICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5SXRlbSA9IHRoaXMuYXJpYUhpZXJhcmNoeS5maW5kKGFyaWEgPT4gYXJpYS5pZCA9PT0gdmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlSb2xlID0gaGllcmFyY2h5SXRlbS5oaWVyYXJjaHlSb2xlOyBcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZSA9IGhpZXJhcmNoeUl0ZW0uaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZTtcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5UGF0aCA9IGhpZXJhcmNoeUl0ZW0uaGllcmFyY2h5UGF0aDtcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5UmVzdWx0cyA9IGhpZXJhcmNoeUl0ZW0uaGllcmFyY2h5UmVzdWx0czsgIFxuICAgICAgICAgICAgLy9zZXQgdGhlIGN1cnJlbnQgbm9kZSBcbiAgICAgICAgICAgIGhpZXJhcmNoeUl0ZW0ubm9kZSA9IG5vZGU7XG4gICAgICAgIH0gXG4gICAgICAgIHN1cGVyLnB1c2hIaWVyYXJjaHkobm9kZSk7XG4gICAgfSAgICBcblxuICAgIGNsb3NlU2NvcGUobm9kZTogTm9kZSk6IElNYXBSZXN1bHRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgOiBJTWFwUmVzdWx0W10gPSBzdXBlci5jbG9zZVNjb3BlKG5vZGUpO1xuXG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiB0aGlzLmFyaWFIaWVyYXJjaHkgIT0gbnVsbCAmJiB0aGlzLmFyaWFIaWVyYXJjaHkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAobm9kZSBhcyBFbGVtZW50KS5nZXRBdHRyaWJ1dGUoXCJpZFwiKTtcbiAgICAgICAgICAgIGxldCBoaWVyYXJjaHlJdGVtID0gdGhpcy5hcmlhSGllcmFyY2h5LmZpbmQoYXJpYSA9PiBhcmlhLmlkID09PSB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAoaGllcmFyY2h5SXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChET01VdGlsLnNhbWVOb2RlKG5vZGUsIGhpZXJhcmNoeUl0ZW0ubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9yZXdyaXRlIGNvbXBldGVkLCByZXN0b3JlIG9yaWdpbmFsIGhpZXJhcmNoaWVzXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Um9sZSA9IHRoaXMuaGllcmFyY2h5Q2FjaGUuaGllcmFyY2h5Um9sZTsgXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZSA9IHRoaXMuaGllcmFyY2h5Q2FjaGUuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlQYXRoID0gdGhpcy5oaWVyYXJjaHlDYWNoZS5oaWVyYXJjaHlQYXRoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVJlc3VsdHMgPSB0aGlzLmhpZXJhcmNoeUNhY2hlLmhpZXJhcmNoeVJlc3VsdHM7IFxuXG4gICAgICAgICAgICAgICAgICAgIC8vc2V0IHJld3JpdGUgcGFyZW50IG5vZGUgdG8gbnVsbFxuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlJdGVtLm5vZGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG5cbiAgICAvL3Jld3JpdGUgYXJpYSByb2xlIHBhdGggZm9yIGFyaWEtb3duc1xuICAgIHN3aXRjaFBhcmVudEhpZXJhcmNoaWVzKG5vZGUgOiBOb2RlKSA6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5hcmlhSGllcmFyY2h5ID09PSBudWxsIHx8IHRoaXMuYXJpYUhpZXJhcmNoeS5sZW5ndGggPT09IDAgfHwgbm9kZS5ub2RlVHlwZSAhPT0gbm9kZS5FTEVNRU5UX05PREUpIHJldHVybiBmYWxzZTsgXG4gICAgICAgIGNvbnN0IHZhbHVlIDogc3RyaW5nID0gKG5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwiaWRcIik7IFxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgYXJpYU1hcCA9IHRoaXMuYXJpYUhpZXJhcmNoeS5maW5kKGFyaWEgPT4gYXJpYS5pZCA9PT0gdmFsdWUpO1xuICAgICAgICBpZiAoIWFyaWFNYXApIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy9hcmlhLW93bnMgZG9lc24ndCBjcm9zcyBkb21zXG4gICAgICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSBET01VdGlsLnNoYWRvd1Jvb3ROb2RlKG5vZGUpO1xuICAgICAgICBpZiAoKHNoYWRvd1Jvb3QgJiYgIWFyaWFNYXAuc2hhZG93Um9vdCkgXG4gICAgICAgICAgICB8fCAoIXNoYWRvd1Jvb3QgJiYgYXJpYU1hcC5zaGFkb3dSb290KSBcbiAgICAgICAgICAgIHx8IChzaGFkb3dSb290ICYmIGFyaWFNYXAuc2hhZG93Um9vdCAmJiAhRE9NVXRpbC5zYW1lTm9kZShzaGFkb3dSb290LCBhcmlhTWFwLnNoYWRvd1Jvb3QpKSkgXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IFxuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEhlbHBlciBmdW5jdGlvbnNcbiAgICAvLy8vXG5cbiAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbC1hYW0tMS4wLyNtYXBwaW5nLWh0bWwtdG8tYWNjZXNzaWJpbGl0eS1hcGlzXG4gICAgcHVibGljIHN0YXRpYyBlbGVtQXR0clZhbHVlQ2FsY3VsYXRvcnM6IHsgW25vZGVOYW1lOnN0cmluZ106IHsgW2F0dHI6c3RyaW5nXTogc3RyaW5nIHwgRWxlbUNhbGMgfX0gPSB7XG4gICAgICAgIFwiZ2xvYmFsXCI6IHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBBUklBTWFwcGVyLmNvbXB1dGVOYW1lXG4gICAgICAgIH1cbiAgICAgICAgLCBcImRhdGFsaXN0XCI6IHtcbiAgICAgICAgICAgIC8vIHNldCB0byBcInRydWVcIiBpZiB0aGUgZGF0YWxpc3QncyBzZWxlY3Rpb24gbW9kZWwgYWxsb3dzIG11bHRpcGxlIG9wdGlvbiBlbGVtZW50cyB0byBiZVxuICAgICAgICAgICAgLy8gc2VsZWN0ZWQgYXQgYSB0aW1lLCBhbmQgXCJmYWxzZVwiIG90aGVyd2lzZVxuICAgICAgICAgICAgXCJtdWx0aXNlbGVjdGFibGVcIjogZWxlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpO1xuICAgICAgICAgICAgICAgIGlmIChpZCAmJiBpZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbnB1dCA9IGVsZW0ub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaW5wdXRbbGlzdD0nXCIraWQrXCInXVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIrKGVsZW0uZ2V0QXR0cmlidXRlKFwibXVsdGlwbGVcIikgXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAoZWxlbS5nZXRBdHRyaWJ1dGUoXCJtdWx0aXBsZVwiKT09XCJ0cnVlXCIgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJtdWx0aXBsZVwiKT09XCJcIikpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICwgXCJoMVwiOiB7XG4gICAgICAgICAgICBcImxldmVsXCI6IFwiMVwiXG4gICAgICAgIH1cbiAgICAgICAgLCBcImgyXCI6IHtcbiAgICAgICAgICAgIFwibGV2ZWxcIjogXCIyXCJcbiAgICAgICAgfVxuICAgICAgICAsIFwiaDNcIjoge1xuICAgICAgICAgICAgXCJsZXZlbFwiOiBcIjNcIlxuICAgICAgICB9XG4gICAgICAgICwgXCJoNFwiOiB7XG4gICAgICAgICAgICBcImxldmVsXCI6IFwiNFwiXG4gICAgICAgIH1cbiAgICAgICAgLCBcImg1XCI6IHtcbiAgICAgICAgICAgIFwibGV2ZWxcIjogXCI1XCJcbiAgICAgICAgfVxuICAgICAgICAsIFwiaDZcIjoge1xuICAgICAgICAgICAgXCJsZXZlbFwiOiBcIjZcIlxuICAgICAgICB9XG4gICAgICAgICwgXCJpbnB1dFwiOiB7XG4gICAgICAgICAgICAvLyAtIHR5cGU9XCJjaGVja2JveFwiIHN0YXRlIHNldCB0byBcIm1peGVkXCIgaWYgdGhlIGVsZW1lbnQncyBpbmRldGVybWluYXRlIElETCBhdHRyaWJ1dGUgXG4gICAgICAgICAgICAvLyBpcyB0cnVlLCBvciBcInRydWVcIiBpZiB0aGUgZWxlbWVudCdzIGNoZWNrZWRuZXNzIGlzIHRydWUsIG9yIFwiZmFsc2VcIiBvdGhlcndpc2VcbiAgICAgICAgICAgIC8vIC0gdHlwZT1cInJhZGlvXCIgc3RhdGUgc2V0IHRvIFwidHJ1ZVwiIGlmIHRoZSBlbGVtZW50J3MgY2hlY2tlZG5lc3MgaXMgdHJ1ZSwgb3IgXCJmYWxzZVwiIFxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLiBcbiAgICAgICAgICAgIFwiY2hlY2tlZFwiOiBlbGVtID0+IHsgXG4gICAgICAgICAgICAgICAgaWYgKGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSA9PT0gXCJjaGVja2JveFwiIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlwiKyhlbGVtIGFzIEhUTUxJbnB1dEVsZW1lbnQpLmNoZWNrZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gLSB0eXBlPVwicmFkaW9cIiBhbmQgbm90IGluIG1lbnUgcmVmbGVjdGluZyBudW1iZXIgb2YgdHlwZT1yYWRpbyBpbnB1dCBlbGVtZW50cyBcbiAgICAgICAgICAgIC8vIHdpdGhpbiB0aGUgcmFkaW8gYnV0dG9uIGdyb3VwXG4gICAgICAgICAgICAsIFwic2V0c2l6ZVwiOiBlbGVtID0+IHsgcmV0dXJuIG51bGw7IHRocm93IG5ldyBFcnJvcihcIk5PVCBJTVBMRU1FTlRFRFwiKTsgfVxuICAgICAgICAgICAgLy8gLSB0eXBlPVwicmFkaW9cIiBhbmQgbm90IGluIG1lbnUgdmFsdWUgcmVmbGVjdGluZyB0aGUgZWxlbWVudHMgcG9zaXRpb24gXG4gICAgICAgICAgICAvLyB3aXRoaW4gdGhlIHJhZGlvIGJ1dHRvbiBncm91cC5cIlxuICAgICAgICAgICAgLCBcInBvc2luc2V0XCI6IGVsZW0gPT4geyByZXR1cm4gbnVsbDsgdGhyb3cgbmV3IEVycm9yKFwiTk9UIElNUExFTUVOVEVEXCIpOyB9XG4gICAgICAgICAgICAvLyBpbnB1dCAodHlwZSBhdHRyaWJ1dGUgaW4gdGhlIFRleHQsIFNlYXJjaCwgVGVsZXBob25lLCBVUkwsIG9yIEUtbWFpbCBzdGF0ZXMgd2l0aCBhIFxuICAgICAgICAgICAgLy8gc3VnZ2VzdGlvbnMgc291cmNlIGVsZW1lbnQpIGNvbWJvYm94IHJvbGUsIHdpdGggdGhlIGFyaWEtb3ducyBwcm9wZXJ0eSBzZXQgdG8gdGhlIHNhbWVcbiAgICAgICAgICAgIC8vIHZhbHVlIGFzIHRoZSBsaXN0IGF0dHJpYnV0ZVxuICAgICAgICAgICAgLCBcIm93bnNcIjogZWxlbSA9PiB7IHJldHVybiBudWxsOyB0aHJvdyBuZXcgRXJyb3IoXCJOT1QgSU1QTEVNRU5URURcIik7IH1cbiAgICAgICAgfVxuICAgICAgICAsIFwia2V5Z2VuXCI6IHtcbiAgICAgICAgICAgIFwibXVsdGlzZWxlY3RhYmxlXCI6IFwiZmFsc2VcIlxuICAgICAgICB9XG4gICAgICAgICwgXCJsaVwiOiB7XG4gICAgICAgICAgICAvLyBOdW1iZXIgb2YgbGkgZWxlbWVudHMgd2l0aGluIHRoZSBvbCwgdWwsIG1lbnVcbiAgICAgICAgICAgIFwic2V0c2l6ZVwiOiBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50ID0gRE9NVXRpbC5nZXRBbmNlc3RvcihlbGVtLCBbXCJvbFwiLCBcInVsXCIsIFwibWVudVwiXSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIGxldCBsaXMgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbChcImxpXCIpO1xuICAgICAgICAgICAgICAgIGxldCBvdGhlcmxpcyA9IHBhcmVudC5xdWVyeVNlbGVjdG9yQWxsKFwib2wgbGksIHVsIGxpLCBtZW51IGxpXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiKyhsaXMubGVuZ3RoLW90aGVybGlzLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQb3NpdGlvbiBvZiBsaSBlbGVtZW50IHdpdGhpbiB0aGUgb2wsIHVsLCBtZW51XG4gICAgICAgICAgICAsIFwicG9zaW5zZXRcIjogZWxlbSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwuZ2V0QW5jZXN0b3IoZWxlbSwgW1wib2xcIiwgXCJ1bFwiLCBcIm1lbnVcIl0pXG4gICAgICAgICAgICAgICAgaWYgKCFwYXJlbnQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIGxldCBsaXMgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbChcImxpXCIpO1xuICAgICAgICAgICAgICAgIGxldCBudW0gPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGlkeD0wOyBpZHg8bGlzLmxlbmd0aDsgKytpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGkgPSBsaXNbaWR4XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKERPTVV0aWwuc2FtZU5vZGUocGFyZW50LCBET01VdGlsLmdldEFuY2VzdG9yKGxpLCBbXCJvbFwiLCBcInVsXCIsIFwibWVudVwiXSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIitudW07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKytudW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICwgXCJtZW51aXRlbVwiOiB7XG4gICAgICAgICAgICAvLyB0eXBlID0gY2hlY2tib3ggb3IgcmFkaW8sIHNldCB0byBcInRydWVcIiBpZiB0aGUgY2hlY2tlZCBhdHRyaWJ1dGUgXG4gICAgICAgICAgICAvLyBpcyBwcmVzZW50LCBhbmQgXCJmYWxzZVwiIG90aGVyd2lzZVxuICAgICAgICAgICAgXCJjaGVja2VkXCI6IGVsZW0gPT4gXCJcIishIShlbGVtLmdldEF0dHJpYnV0ZShcImNoZWNrZWRcIikgXG4gICAgICAgICAgICAgICAgJiYgKGVsZW0uZ2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiKT09XCJ0cnVlXCIgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIpPT1cIlwiKSlcbiAgICAgICAgfVxuICAgICAgICAsIFwib3B0aW9uXCI6IHtcbiAgICAgICAgICAgIC8vIHNldCB0byBcInRydWVcIiBpZiB0aGUgZWxlbWVudCdzIHNlbGVjdGVkbmVzcyBpcyB0cnVlLCBvciBcImZhbHNlXCIgb3RoZXJ3aXNlLlxuICAgICAgICAgICAgXCJzZWxlY3RlZFwiOiBlbGVtID0+IFwiXCIrISEoZWxlbS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKSBcbiAgICAgICAgICAgICAgICAmJiAoZWxlbS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKT09XCJ0cnVlXCIgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoXCJzZWxlY3RlZFwiKT09XCJcIikpXG4gICAgICAgIH1cbiAgICAgICAgLCBcInByb2dyZXNzXCI6IHtcbiAgICAgICAgICAgIFwidmFsdWVtYXhcIjogZWxlbSA9PiBlbGVtLmdldEF0dHJpYnV0ZShcIm1heFwiKSB8fCBcIjFcIlxuICAgICAgICAgICAgLCBcInZhbHVlbWluXCI6IGVsZW0gPT4gXCIwXCJcbiAgICAgICAgICAgICwgXCJ2YWx1ZW5vd1wiOiBlbGVtID0+IGVsZW0uZ2V0QXR0cmlidXRlKFwidmFsdWVcIilcbiAgICAgICAgfVxuICAgICAgICBcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyB0ZXh0QXR0clZhbHVlQ2FsY3VsYXRvcnM6IHsgW2F0dHI6c3RyaW5nXTogTm9kZUNhbGMgfSA9IHtcbiAgICAgICAgXCJuYW1lXCI6IG5vZGUgPT4gbm9kZS5ub2RlVmFsdWVcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBuYW1lQ29tcHV0YXRpb25JZCA9IDA7XG4gICAgcHVibGljIHN0YXRpYyBjb21wdXRlTmFtZShjdXI6IE5vZGUpIDogc3RyaW5nIHtcbiAgICAgICAgKytBUklBTWFwcGVyLm5hbWVDb21wdXRhdGlvbklkO1xuICAgICAgICByZXR1cm4gQVJJQU1hcHBlci5jb21wdXRlTmFtZUhlbHAoQVJJQU1hcHBlci5uYW1lQ29tcHV0YXRpb25JZCwgY3VyLCBmYWxzZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29tcHV0ZU5hbWVIZWxwKHdhbGtJZDogbnVtYmVyLCBjdXI6IE5vZGUsIGxhYmVsbGVkYnlUcmF2ZXJzZTogYm9vbGVhbiwgd2Fsa1RyYXZlcnNlOiBib29sZWFuKSA6IHN0cmluZyB7XG4gICAgICAgIC8vIDJnLiBOb25lIG9mIHRoZSBvdGhlciBjb250ZW50IGFwcGxpZXMgdG8gdGV4dCBub2Rlcywgc28ganVzdCBkbyB0aGlzIGZpcnN0XG4gICAgICAgIGlmIChjdXIubm9kZVR5cGUgPT09IDMgLyogTm9kZS5URVhUX05PREUgKi8pIHJldHVybiBjdXIubm9kZVZhbHVlO1xuICAgICAgICBpZiAoY3VyLm5vZGVUeXBlID09PSAxMSkgcmV0dXJuIFwiXCI7XG4gICAgICAgIGlmIChjdXIubm9kZVR5cGUgIT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgIGlmICh3YWxrVHJhdmVyc2UgfHwgbGFiZWxsZWRieVRyYXZlcnNlKSByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvciAoXCJDYW4gb25seSBjb21wdXRlIG5hbWUgb24gRWxlbWVudCBhbmQgVGV4dFwiICsgY3VyLm5vZGVUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVsZW0gPSBjdXIgYXMgRWxlbWVudDtcbiAgICAgICAgLy8gV2UndmUgYmVlbiBoZXJlIGJlZm9yZSAtIHByZXZlbnQgcmVjdXJzaW9uXG4gICAgICAgIGlmIChSUFRVdGlsLmdldENhY2hlKGVsZW0sIFwiZGF0YS1uYW1ld2Fsa1wiLCBudWxsKSA9PT0gXCJcIit3YWxrSWQpIHJldHVybiBcIlwiO1xuICAgICAgICBSUFRVdGlsLnNldENhY2hlKGVsZW0sIFwiZGF0YS1uYW1ld2Fsa1wiLCBcIlwiK3dhbGtJZCk7XG4gICAgICAgIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbC1hYW0tMS4wLyNpbnB1dC10eXBlLXRleHQtaW5wdXQtdHlwZS1wYXNzd29yZC1pbnB1dC10eXBlLXNlYXJjaC1pbnB1dC10eXBlLXRlbC1pbnB1dC10eXBlLXVybC1hbmQtdGV4dGFyZWEtZWxlbWVudFxuXG4gICAgICAgIC8vIDJhLiBPbmx5IHNob3cgaGlkZGVuIGNvbnRlbnQgaWYgaXQncyByZWZlcmVuY2VkIGJ5IGEgbGFiZWxsZWRieVxuICAgICAgICBpZiAoIWxhYmVsbGVkYnlUcmF2ZXJzZSAmJiAhRE9NVXRpbC5pc05vZGVWaXNpYmxlKGN1cikpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMmIuIGNvbGxlY3QgdmFsaWQgaWQgcmVmZXJlbmNlc1xuICAgICAgICBpZiAoIWxhYmVsbGVkYnlUcmF2ZXJzZSAmJiBlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgbGV0IGxhYmVsbGVkYnkgPSBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICBsZXQgdmFsaWRFbGVtcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWYgb2YgbGFiZWxsZWRieSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlZkVsZW0gPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChjdXIsIHJlZik7XG4gICAgICAgICAgICAgICAgaWYgKHJlZkVsZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRFbGVtcy5wdXNoKHJlZkVsZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2YWxpZEVsZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgYWNjdW11bGF0ZWQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbSBvZiB2YWxpZEVsZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkICs9IFwiIFwiICsgdGhpcy5jb21wdXRlTmFtZUhlbHAod2Fsa0lkLCBlbGVtLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRlZC50cmltKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaW5jZSBub2RlVG9Sb2xlIGNhbGxzIGJhY2sgaGVyZSBmb3IgZm9ybSBhbmQgc2VjdGlvbiwgd2UgbmVlZCBzcGVjaWFsIGNhc2luZyBoZXJlIHRvIGhhbmRsZSB0aG9zZSB0d28gY2FzZXNcbiAgICAgICAgaWYgKFtcInNlY3Rpb25cIiwgXCJmb3JtXCJdLmluY2x1ZGVzKGN1ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBJJ20gbm90IGFuIGVtYmVkZGVkIGNvbnRyb2wgb3IgSSdtIG5vdCByZWN1cnNpbmcsIHJldHVybiB0aGUgYXJpYS1sYWJlbFxuICAgICAgICAgICAgICAgIGlmICghbGFiZWxsZWRieVRyYXZlcnNlICYmICF3YWxrVHJhdmVyc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKS50cmltKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwidGl0bGVcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMmMuIElmIGxhYmVsIG9yIHdhbGssIGFuZCB0aGlzIGlzIGEgY29udHJvbCwgc2tpcCB0byB0aGUgdmFsdWUsIG90aGVyd2lzZSBwcm92aWRlIHRoZSBsYWJlbFxuICAgICAgICBjb25zdCByb2xlID0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKGN1cik7XG4gICAgICAgIGxldCBpc0VtYmVkZGVkQ29udHJvbCA9IFtcbiAgICAgICAgICAgIFwidGV4dGJveFwiLCBcImJ1dHRvblwiLCBcImNvbWJvYm94XCIsIFwibGlzdGJveFwiLCBcbiAgICAgICAgICAgIFwicHJvZ3Jlc3NiYXJcIiwgXCJzY3JvbGxiYXJcIiwgXCJzbGlkZXJcIiwgXCJzcGluYnV0dG9uXCJcbiAgICAgICAgXS5pbmNsdWRlcyhyb2xlKTtcbiAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIElmIEknbSBub3QgYW4gZW1iZWRkZWQgY29udHJvbCBvciBJJ20gbm90IHJlY3Vyc2luZywgcmV0dXJuIHRoZSBhcmlhLWxhYmVsXG4gICAgICAgICAgICBpZiAoIWxhYmVsbGVkYnlUcmF2ZXJzZSAmJiAhd2Fsa1RyYXZlcnNlIHx8ICFpc0VtYmVkZGVkQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikudHJpbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMmQuIFxuICAgICAgICBpZiAocm9sZSAhPT0gXCJwcmVzZW50YXRpb25cIiAmJiByb2xlICE9PSBcIm5vbmVcIikge1xuICAgICAgICAgICAgaWYgKChjdXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbWdcIiB8fCBjdXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJhcmVhXCIpICYmIGVsZW0uaGFzQXR0cmlidXRlKFwiYWx0XCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERPTVV0aWwuY2xlYW5XaGl0ZXNwYWNlKGVsZW0uZ2V0QXR0cmlidXRlKFwiYWx0XCIpKS50cmltKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICYmIGVsZW0uaGFzQXR0cmlidXRlKFwiaWRcIikgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxhYmVsID0gZWxlbS5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJsYWJlbFtmb3I9J1wiK2VsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikrXCInXVwiKTtcbiAgICAgICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZU5hbWVIZWxwKHdhbGtJZCwgbGFiZWwsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMmUuXG4gICAgICAgIGlmICgod2Fsa1RyYXZlcnNlIHx8IGxhYmVsbGVkYnlUcmF2ZXJzZSkgJiYgaXNFbWJlZGRlZENvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBlbWJlZGRlZCBjb250cm9sIGhhcyByb2xlIHRleHRib3gsIHJldHVybiBpdHMgdmFsdWUuXG4gICAgICAgICAgICBpZiAocm9sZSA9PT0gXCJ0ZXh0Ym94XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwidmFsdWVcIikpIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdhbGtUcmF2ZXJzZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgdGhlIGVtYmVkZGVkIGNvbnRyb2wgaGFzIHJvbGUgYnV0dG9uLCByZXR1cm4gdGhlIHRleHQgYWx0ZXJuYXRpdmUgb2YgdGhlIGJ1dHRvbi5cbiAgICAgICAgICAgIGlmIChyb2xlID09PSBcImJ1dHRvblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChbXCJidXR0b25cIiwgXCJzdWJtaXRcIiwgXCJyZXNldFwiXS5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwidmFsdWVcIikpIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwic3VibWl0XCIpIHJldHVybiBcIlN1Ym1pdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwicmVzZXRcIikgcmV0dXJuIFwiUmVzZXRcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdhbGtUcmF2ZXJzZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVE9ETzogSWYgdGhlIGVtYmVkZGVkIGNvbnRyb2wgaGFzIHJvbGUgY29tYm9ib3ggb3IgbGlzdGJveCwgcmV0dXJuIHRoZSB0ZXh0IGFsdGVybmF0aXZlIG9mIHRoZSBjaG9zZW4gb3B0aW9uLlxuICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwiY29tYm9ib3hcIikge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWQgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChlbGVtLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVJJQU1hcHBlci5jb21wdXRlTmFtZUhlbHAod2Fsa0lkLCBzZWxlY3RlZCwgZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgdGhlIGVtYmVkZGVkIGNvbnRyb2wgaGFzIHJvbGUgcmFuZ2UgKGUuZy4sIGEgc3BpbmJ1dHRvbiBvciBzbGlkZXIpOlxuICAgICAgICAgICAgaWYgKFtcInByb2dyZXNzYmFyXCIsIFwic2Nyb2xsYmFyXCIsIFwic2xpZGVyXCIsIFwic3BpbmJ1dHRvblwiXS5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBhcmlhLXZhbHVldGV4dCBwcm9wZXJ0eSBpcyBwcmVzZW50LCByZXR1cm4gaXRzIHZhbHVlLFxuICAgICAgICAgICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtdmFsdWV0ZXh0XCIpKSByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLXZhbHVldGV4dFwiKTtcbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHRoZSBhcmlhLXZhbHVlbm93IHByb3BlcnR5IGlzIHByZXNlbnQsIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICAgICAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwiYXJpYS12YWx1ZW5vd1wiKSkgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS12YWx1ZW5vd1wiKTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBPdGhlcndpc2UsIHVzZSB0aGUgdmFsdWUgYXMgc3BlY2lmaWVkIGJ5IGEgaG9zdCBsYW5ndWFnZSBhdHRyaWJ1dGUuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyZi4gMmguXG4gICAgICAgIGlmICh3YWxrVHJhdmVyc2UgfHwgQVJJQURlZmluaXRpb25zLm5hbWVGcm9tQ29udGVudChyb2xlKSB8fCBsYWJlbGxlZGJ5VHJhdmVyc2UpIHtcbiAgICAgICAgICAgIC8vIDJmaS4gU2V0IHRoZSBhY2N1bXVsYXRlZCB0ZXh0IHRvIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICAgICAgICBsZXQgYWNjdW11bGF0ZWQgPSBcIlwiO1xuICAgICAgICAgICAgLy8gMmZpaS4gQ2hlY2sgZm9yIENTUyBnZW5lcmF0ZWQgdGV4dHVhbCBjb250ZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBub2RlIGFuZCBcbiAgICAgICAgICAgIC8vIGluY2x1ZGUgaXQgaW4gdGhlIGFjY3VtdWxhdGVkIHRleHQuIFRoZSBDU1MgOmJlZm9yZSBhbmQgOmFmdGVyIHBzZXVkbyBlbGVtZW50cyBbQ1NTMl0gXG4gICAgICAgICAgICAvLyBjYW4gcHJvdmlkZSB0ZXh0dWFsIGNvbnRlbnQgZm9yIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGNvbnRlbnQgbW9kZWwuXG4gICAgICAgICAgICAvLyAgIEZvciA6YmVmb3JlIHBzZXVkbyBlbGVtZW50cywgVXNlciBhZ2VudHMgTVVTVCBwcmVwZW5kIENTUyB0ZXh0dWFsIGNvbnRlbnQsIHdpdGhvdXQgXG4gICAgICAgICAgICAvLyAgICAgYSBzcGFjZSwgdG8gdGhlIHRleHR1YWwgY29udGVudCBvZiB0aGUgY3VycmVudCBub2RlLlxuICAgICAgICAgICAgLy8gICBGb3IgOmFmdGVyIHBzZXVkbyBlbGVtZW50cywgVXNlciBhZ2VudHMgTVVTVCBhcHBlbmQgQ1NTIHRleHR1YWwgY29udGVudCwgd2l0aG91dCBhIFxuICAgICAgICAgICAgLy8gICAgIHNwYWNlLCB0byB0aGUgdGV4dHVhbCBjb250ZW50IG9mIHRoZSBjdXJyZW50IG5vZGUuXG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gbnVsbDtcbiAgICAgICAgICAgIGJlZm9yZSA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW0sXCJiZWZvcmVcIikuY29udGVudDtcblxuICAgICAgICAgICAgaWYgKGJlZm9yZSAmJiBiZWZvcmUgIT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgYmVmb3JlID0gYmVmb3JlLnJlcGxhY2UoL15cIi8sXCJcIikucmVwbGFjZSgvXCIkLyxcIlwiKTtcbiAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZCArPSBiZWZvcmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAyZmlpaS4gRm9yIGVhY2ggY2hpbGQgbm9kZSBvZiB0aGUgY3VycmVudCBub2RlOlxuICAgICAgICAgICAgLy8gICBTZXQgdGhlIGN1cnJlbnQgbm9kZSB0byB0aGUgY2hpbGQgbm9kZS5cbiAgICAgICAgICAgIC8vICAgQ29tcHV0ZSB0aGUgdGV4dCBhbHRlcm5hdGl2ZSBvZiB0aGUgY3VycmVudCBub2RlIGJlZ2lubmluZyB3aXRoIHN0ZXAgMi4gU2V0IHRoZSByZXN1bHQgXG4gICAgICAgICAgICAvLyAgICAgdG8gdGhhdCB0ZXh0IGFsdGVybmF0aXZlLlxuICAgICAgICAgICAgLy8gICBBcHBlbmQgdGhlIHJlc3VsdCB0byB0aGUgYWNjdW11bGF0ZWQgdGV4dC5cbiAgICAgICAgICAgIGxldCB3YWxrQ2hpbGQgPSBlbGVtLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICB3aGlsZSAod2Fsa0NoaWxkKSB7XG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZWQgKz0gXCIgXCIgKyBBUklBTWFwcGVyLmNvbXB1dGVOYW1lSGVscCh3YWxrSWQsIHdhbGtDaGlsZCwgbGFiZWxsZWRieVRyYXZlcnNlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB3YWxrQ2hpbGQgPSB3YWxrQ2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBhZnRlciA9IG51bGw7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGFmdGVyID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbSxcImFmdGVyXCIpLmNvbnRlbnQ7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICAgICAgICBpZiAoYWZ0ZXIgJiYgYWZ0ZXIgIT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgYWZ0ZXIgPSBhZnRlci5yZXBsYWNlKC9eXCIvLFwiXCIpLnJlcGxhY2UoL1wiJC8sXCJcIik7XG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZWQgKz0gYWZ0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyAyZml2LiBSZXR1cm4gdGhlIGFjY3VtdWxhdGVkIHRleHQuXG4gICAgICAgICAgICBhY2N1bXVsYXRlZCA9IGFjY3VtdWxhdGVkLnJlcGxhY2UoL1xccysvZyxcIiBcIikudHJpbSgpO1xuICAgICAgICAgICAgaWYgKGFjY3VtdWxhdGVkLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMmkuIE90aGVyd2lzZSwgaWYgdGhlIGN1cnJlbnQgbm9kZSBoYXMgYSBUb29sdGlwIGF0dHJpYnV0ZSwgcmV0dXJuIGl0cyB2YWx1ZS5cbiAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwidGl0bGVcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcInRpdGxlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzdmdcIikge1xuICAgICAgICAgICAgbGV0IHRpdGxlID0gZWxlbS5xdWVyeVNlbGVjdG9yKFwidGl0bGVcIik7XG4gICAgICAgICAgICBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGUudGV4dENvbnRlbnQgfHwgdGl0bGUuaW5uZXJUZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4vKiAgICAgICAgaWYgKHJvbGUgaW4gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zXG4gICAgICAgICAgICAmJiBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnNbcm9sZV0ubmFtZUZyb20gXG4gICAgICAgICAgICAmJiBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnNbcm9sZV0ubmFtZUZyb20uaW5jbHVkZXMoXCJjb250ZW50c1wiKSkgXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWUgPSBlbGVtLnRleHRDb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJiBlbGVtLmhhc0F0dHJpYnV0ZShcImlkXCIpICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG5hbWUgPSBlbGVtLm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImxhYmVsW2Zvcj0nXCIrZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKS50cmltKCkrXCInXVwiKS50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKSB7XG4gICAgICAgICAgICBuYW1lID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICBjb25zdCBpZHMgPSBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGlkcykge1xuICAgICAgICAgICAgICAgIG5hbWUgKz0gRnJhZ21lbnRVdGlsLmdldEJ5SWQoZWxlbSwgaWQpLnRleHRDb250ZW50ICsgXCIgXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuYW1lID0gbmFtZS50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfSovXG5cbiAgICBwdWJsaWMgc3RhdGljIG5vZGVUb1JvbGUobm9kZSA6IE5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMgLyogTm9kZS5URVhUX05PREUgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiBcInRleHRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLm5vZGVUeXBlICE9PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBpZiAoIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSAhPT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwicm9sZVwiKSAmJiBlbGVtLmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGxldCByb2xlU3RyID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKTtcbiAgICAgICAgICAgIGxldCByb2xlcyA9IHJvbGVTdHIuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCByb2xlIG9mIHJvbGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwicHJlc2VudGF0aW9uXCIgfHwgcm9sZSA9PT0gXCJub25lXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZWxlbWVudCBpcyBmb2N1c2FibGUsIHRoZW4gcHJlc2VudGF0aW9uIHJvbGVzIGFyZSB0byBiZSBpZ25vcmVkXG4gICAgICAgICAgICAgICAgICAgIGlmICghUlBUVXRpbC5pc0ZvY3VzYWJsZShlbGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJvbGUgaW4gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICAgICAgICAgIH0gICAgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbVRvSW1wbGljaXRSb2xlKGVsZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZWxlbVRvSW1wbGljaXRSb2xlKGVsZW0gOiBFbGVtZW50KSB7XG4gICAgICAgIGxldCBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBpZiAoIShub2RlTmFtZSBpbiBBUklBTWFwcGVyLmVsZW1Ub1JvbGVNYXApKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcm9sZSA9IEFSSUFNYXBwZXIuZWxlbVRvUm9sZU1hcFtub2RlTmFtZV07XG4gICAgICAgIGlmICh0eXBlb2Ygcm9sZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJvbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHJvbGUoZWxlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFzUGFyZW50Um9sZShlbGVtZW50LCByb2xlKSA6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcGFyZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgICAgICAvLyBJZiBsaW5rIGlzIGluIGEgbWVudSwgaXQncyBhIG1lbnVpdGVtXG4gICAgICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChBUklBTWFwcGVyLm5vZGVUb1JvbGUocGFyZW50KSA9PT0gcm9sZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5wdXRUb1JvbGVNYXAgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBoYXNMaXN0ID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKFwibGlzdFwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBpZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwibGlzdFwiKTtcbiAgICAgICAgICAgICAgICBsZXQgaWRSZWYgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChlbGVtZW50LCBpZCk7XG4gICAgICAgICAgICAgICAgaWYgKGlkUmVmICYmIGlkUmVmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZGF0YWxpc3RcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICAgIGxldCB0ZXh0U3VnZ2VzdGlvbnMgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzTGlzdChlbGVtZW50KSA/IFwiY29tYm9ib3hcIiA6IFwidGV4dGJveFwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBcImJ1dHRvblwiOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgXCJpbWFnZVwiOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgXCJjaGVja2JveFwiOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICBcInJhZGlvXCI6IFwicmFkaW9cIixcbiAgICAgICAgICAgIFwiZW1haWxcIjogdGV4dFN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgXCJzZWFyY2hcIjogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYXNMaXN0KGVsZW1lbnQpID8gXCJjb21ib2JveFwiIDogXCJzZWFyY2hib3hcIjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRlbFwiOiB0ZXh0U3VnZ2VzdGlvbnMsXG4gICAgICAgICAgICBcInRleHRcIjogdGV4dFN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgXCJ1cmxcIjogdGV4dFN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgXCJudW1iZXJcIjogXCJzcGluYnV0dG9uXCIsXG4gICAgICAgICAgICBcInJhbmdlXCI6IFwic2xpZGVyXCIsXG4gICAgICAgICAgICBcInJlc2V0XCI6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICBcInN1Ym1pdFwiOiBcImJ1dHRvblwiXG4gICAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5wdXRUb1JvbGUoZWxlbWVudCkge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVUeXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCkudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGVUeXBlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEoZVR5cGUgaW4gQVJJQU1hcHBlci5pbnB1dFRvUm9sZU1hcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCByb2xlID0gQVJJQU1hcHBlci5pbnB1dFRvUm9sZU1hcFtlVHlwZV07XG4gICAgICAgIGlmICh0eXBlb2Ygcm9sZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJvbGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHJvbGUoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGVsZW1Ub1JvbGVNYXAgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBzZWN0aW9uaW5nUm9vdHMgPSB7XG4gICAgICAgICAgICBcImJsb2NrcXVvdGVcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiYm9keVwiOiB0cnVlLFxuICAgICAgICAgICAgXCJkZXRhaWxzXCI6IHRydWUsXG4gICAgICAgICAgICBcImRpYWxvZ1wiOiB0cnVlLFxuICAgICAgICAgICAgXCJmaWVsZHNldFwiOiB0cnVlLFxuICAgICAgICAgICAgXCJmaWd1cmVcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwidGRcIjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBsZXQgc2VjdGlvbmluZ0NvbnRlbnQgPSB7XG4gICAgICAgICAgICBcImFydGljbGVcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiYXNpZGVcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwibmF2XCI6IHRydWUsXG4gICAgICAgICAgICBcInNlY3Rpb25cIjogdHJ1ZSxcbiAgICAgICAgICAgIFwibWFpblwiOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIGxldCBzZWN0aW9uaW5nUm9sZSA9IHtcbiAgICAgICAgICAgIFwiYXJ0aWNsZVwiOiB0cnVlLFxuICAgICAgICAgICAgXCJjb21wbGVtZW50YXJ5XCI6IHRydWUsXG4gICAgICAgICAgICBcIm5hdmlnYXRpb25cIjogdHJ1ZSxcbiAgICAgICAgICAgIFwicmVnaW9uXCI6IHRydWUsXG4gICAgICAgICAgICBcIm1haW5cIjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBsZXQgaW5wdXRUb1JvbGUgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gQVJJQU1hcHBlci5pbnB1dFRvUm9sZShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgXCJhXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBpdCBkb2Vzbid0IHJlcHJlc2VudCBhIGh5cGVybGluaywgbm8gY29ycmVzcG9uZGluZyByb2xlXG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImhyZWZcIikpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiBcImxpbmtcIjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImFyZWFcIjogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIC8vIElmIGl0IGRvZXNuJ3QgcmVwcmVzZW50IGEgaHlwZXJsaW5rLCBubyBjb3JyZXNwb25kaW5nIHJvbGVcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibGlua1wiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiYXJ0aWNsZVwiOiBcImFydGljbGVcIixcbiAgICAgICAgICAgIFwiYXNpZGVcIjogXCJjb21wbGVtZW50YXJ5XCIsXG4gICAgICAgICAgICBcImJ1dHRvblwiOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgXCJkYXRhbGlzdFwiOiBcImxpc3Rib3hcIixcbiAgICAgICAgICAgIFwiZGRcIjogXCJkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICBcImRldGFpbHNcIjogXCJncm91cFwiLFxuICAgICAgICAgICAgXCJkZm5cIjogXCJ0ZXJtXCIsXG4gICAgICAgICAgICBcImRpYWxvZ1wiOiBcImRpYWxvZ1wiLFxuICAgICAgICAgICAgXCJkdFwiOiBcInRlcm1cIixcbiAgICAgICAgICAgIFwiZmllbGRzZXRcIjogXCJncm91cFwiLFxuICAgICAgICAgICAgXCJmaWd1cmVcIjogXCJmaWd1cmVcIixcbiAgICAgICAgICAgIFwiZm9vdGVyXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIC8vIElmIG5lYXJlc3Qgc2VjdGlvbmluZ1Jvb3Qgb3Igc2VjdGlvbmluZ0NvbnRlbnQgaXMgYm9keVxuICAgICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByb2xlID0gKHBhcmVudC5ub2RlVHlwZSA9PT0gMSAmJiAocGFyZW50IGFzIEhUTUxFbGVtZW50KS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpKSB8fCBcIlwiXG4gICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHBhcmVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbmluZ1Jvb3RzW25vZGVOYW1lXSB8fCBzZWN0aW9uaW5nQ29udGVudFtub2RlTmFtZV0gfHwgc2VjdGlvbmluZ1JvbGVbcm9sZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobm9kZU5hbWUgPT09IFwiYm9keVwiKSA/IFwiY29udGVudGluZm9cIiA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZm9ybVwiOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBBUklBTWFwcGVyLmNvbXB1dGVOYW1lKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybiAobmFtZSAmJiBuYW1lLnRyaW0oKS5sZW5ndGggPiAwKSA/IFwiZm9ybVwiIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBUT0RPIFwiZm9ybS1hc3NvY2lhdGVkIGN1c3RvbSBlbGVtZW50XCJcbiAgICAgICAgICAgIFwiaDFcIjogXCJoZWFkaW5nXCIsXG4gICAgICAgICAgICBcImgyXCI6IFwiaGVhZGluZ1wiLFxuICAgICAgICAgICAgXCJoM1wiOiBcImhlYWRpbmdcIixcbiAgICAgICAgICAgIFwiaDRcIjogXCJoZWFkaW5nXCIsXG4gICAgICAgICAgICBcImg1XCI6IFwiaGVhZGluZ1wiLFxuICAgICAgICAgICAgXCJoNlwiOiBcImhlYWRpbmdcIixcbiAgICAgICAgICAgIFwiaGVhZGVyXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIC8vIElmIG5lYXJlc3Qgc2VjdGlvbmluZ1Jvb3Qgb3Igc2VjdGlvbmluZ0NvbnRlbnQgaXMgYm9keVxuICAgICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHBhcmVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm9sZSA9IChwYXJlbnQubm9kZVR5cGUgPT09IDEgJiYgKHBhcmVudCBhcyBIVE1MRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSkgfHwgXCJcIlxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbmluZ1Jvb3RzW25vZGVOYW1lXSB8fCBzZWN0aW9uaW5nQ29udGVudFtub2RlTmFtZV0gfHwgc2VjdGlvbmluZ1JvbGVbcm9sZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobm9kZU5hbWUgPT09IFwiYm9keVwiKSA/IFwiYmFubmVyXCIgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImhyXCI6IFwic2VwYXJhdG9yXCIsXG4gICAgICAgICAgICBcImh0bWxcIjogXCJkb2N1bWVudFwiLFxuICAgICAgICAgICAgXCJpbWdcIjogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImFsdFwiKSAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZShcImFsdFwiKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwicHJlc2VudGF0aW9uXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiaW1nXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiaW5wdXRcIjogaW5wdXRUb1JvbGUsXG4gICAgICAgICAgICBcImtleWdlblwiOiBcImxpc3Rib3hcIiwgLy8gZGVwcmVjYXRlZCwgYnV0IGtlZXAgZm9yIGJhY2t3YXJkIGNvbXBhdFxuICAgICAgICAgICAgXCJsaVwiOiBcImxpc3RpdGVtXCIsXG4gICAgICAgICAgICBcIm1haW5cIjogXCJtYWluXCIsXG4gICAgICAgICAgICBcIm1hdGhcIjogXCJtYXRoXCIsXG4gICAgICAgICAgICBcIm1lbnVcIjogXCJsaXN0XCIsXG4gICAgICAgICAgICBcIm5hdlwiOiBcIm5hdmlnYXRpb25cIixcbiAgICAgICAgICAgIFwib2xcIjogXCJsaXN0XCIsXG4gICAgICAgICAgICBcIm9wdGdyb3VwXCI6IFwiZ3JvdXBcIixcbiAgICAgICAgICAgIFwib3B0aW9uXCI6IFwib3B0aW9uXCIsXG4gICAgICAgICAgICBcIm91dHB1dFwiOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgXCJwcm9ncmVzc1wiOiBcInByb2dyZXNzYmFyXCIsXG4gICAgICAgICAgICBcInNlY3Rpb25cIjogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gQVJJQU1hcHBlci5jb21wdXRlTmFtZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG5hbWUgJiYgbmFtZS50cmltKCkubGVuZ3RoID4gMCkgPyBcInJlZ2lvblwiIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInNlbGVjdFwiOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKFwibXVsdGlwbGVcIikgfHwgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZWxlbWVudCwgXCJzaXplXCIpICYmIHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwic2l6ZVwiKSkgPiAxKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJsaXN0Ym94XCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiY29tYm9ib3hcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICBcInN2Z1wiOiBcImdyYXBoaWNzLWRvY3VtZW50XCIsXG4gICAgICAgICAgICBcInRhYmxlXCI6IFwidGFibGVcIixcbiAgICAgICAgICAgIFwidGJvZHlcIjogXCJyb3dncm91cFwiLFxuICAgICAgICAgICAgXCJ0ZXh0YXJlYVwiOiBcInRleHRib3hcIixcbiAgICAgICAgICAgIFwidGRcIjogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm9sZSA9IEFSSUFNYXBwZXIubm9kZVRvUm9sZShwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm9sZSA9PT0gXCJ0YWJsZVwiKSByZXR1cm4gXCJjZWxsXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb2xlID09PSBcImdyaWRcIiB8fCByb2xlID09PSBcInRyZWVncmlkXCIpIHJldHVybiBcImdyaWRjZWxsXCI7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRoXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAvKiogaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1L3RhYnVsYXItZGF0YS5odG1sI2hlYWRlci1hbmQtZGF0YS1jZWxsLXNlbWFudGljc1xuICAgICAgICAgICAgICAgICAqIEEgaGVhZGVyIGNlbGwgYW5jaG9yZWQgYXQgdGhlIHNsb3Qgd2l0aCBjb29yZGluYXRlICh4LCB5KSB3aXRoIHdpZHRoIHdpZHRoIGFuZCBoZWlnaHQgaGVpZ2h0IGlzIFxuICAgICAgICAgICAgICAgICAqIHNhaWQgdG8gYmUgYSBjb2x1bW4gaGVhZGVyIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHRydWU6XG4gICAgICAgICAgICAgICAgICogKiBUaGUgY2VsbCdzIHNjb3BlIGF0dHJpYnV0ZSBpcyBpbiB0aGUgY29sdW1uIHN0YXRlLCBvclxuICAgICAgICAgICAgICAgICAqICogVGhlIGNlbGwncyBzY29wZSBhdHRyaWJ1dGUgaXMgaW4gdGhlIGF1dG8gc3RhdGUsIGFuZCB0aGVyZSBhcmUgbm8gZGF0YSBjZWxscyBpbiBhbnkgb2YgXG4gICAgICAgICAgICAgICAgICogICB0aGUgY2VsbHMgY292ZXJpbmcgc2xvdHMgd2l0aCB5LWNvb3JkaW5hdGVzIHkgLi4geStoZWlnaHQtMS5cbiAgICAgICAgICAgICAgICAgKiBBIGhlYWRlciBjZWxsIGFuY2hvcmVkIGF0IHRoZSBzbG90IHdpdGggY29vcmRpbmF0ZSAoeCwgeSkgd2l0aCB3aWR0aCB3aWR0aCBhbmQgaGVpZ2h0IGhlaWdodCBpc1xuICAgICAgICAgICAgICAgICAqIHNhaWQgdG8gYmUgYSByb3cgaGVhZGVyIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHRydWU6XG4gICAgICAgICAgICAgICAgICogKiBUaGUgY2VsbCdzIHNjb3BlIGF0dHJpYnV0ZSBpcyBpbiB0aGUgcm93IHN0YXRlLCBvclxuICAgICAgICAgICAgICAgICAqICogVGhlIGNlbGwncyBzY29wZSBhdHRyaWJ1dGUgaXMgaW4gdGhlIGF1dG8gc3RhdGUsIHRoZSBjZWxsIGlzIG5vdCBhIGNvbHVtbiBoZWFkZXIsIGFuZCB0aGVyZSBhcmVcbiAgICAgICAgICAgICAgICAgKiAgIG5vIGRhdGEgY2VsbHMgaW4gYW55IG9mIHRoZSBjZWxscyBjb3ZlcmluZyBzbG90cyB3aXRoIHgtY29vcmRpbmF0ZXMgeCAuLiB4K3dpZHRoLTEuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgLy8gTm90ZTogYXV0byBpcyBkZWZhdWx0IHNjb3BlXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByb2xlID0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAocm9sZSAhPT0gXCJ0YWJsZVwiICYmIHJvbGUgIT09IFwiZ3JpZFwiICYmIHJvbGUgIT09IFwidHJlZWdyaWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyBcbiAgICAgICAgICAgICAgICAgICAgfSAgICAgXG4gICAgICAgICAgICAgICAgICAgIC8vIEVhc2llc3QgYW5zd2VyIGlzIGlmIHNjb3BlIGlzIHNwZWNpZmllZFxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJzY29wZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNjb3BlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJzY29wZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjb3BlID09PSBcInJvd1wiIHx8IHNjb3BlID09PSAncm93Z3JvdXAnKSByZXR1cm4gXCJyb3doZWFkZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZSA9PT0gXCJjb2xcIiB8fCBzY29wZSA9PT0gJ2NvbGdyb3VwJykgcmV0dXJuIFwiY29sdW1uaGVhZGVyXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlIGlzIGF1dG8sIGRlZmF1bHQgKHdpdGhvdXQgYSBzY29wZSkgb3IgaW52YWxpZCB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgYWxsIHRoZSBzaWJsaW5nIGVsZW1lbnRzIGFyZSB0aCwgdGhlbiByZXR1cm4gXCJjb2x1bW5oZWFkZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNpYmxpbmdzID0gZWxlbWVudCA9PiBbLi4uZWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuXS5maWx0ZXIobm9kZT0+bm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlLnRhZ05hbWUgIT0gXCJUSFwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmdzID09PSBudWxsIHx8IHNpYmxpbmdzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImNvbHVtbmhlYWRlclwiOyBcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gXCJyb3doZWFkZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiAgZGVhZCBjb2RlIGhlcmUgXG4gICAgICAgICAgICAgICAgICAgIGlmIChyb2xlID09PSBcInRhYmxlXCIpIHJldHVybiBcImNlbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwiZ3JpZFwiIHx8IHJvbGUgPT09IFwidHJlZWdyaWRcIikgcmV0dXJuIFwiZ3JpZGNlbGxcIjtcbiAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0Zm9vdFwiOiBcInJvd2dyb3VwXCIsXG4gICAgICAgICAgICBcInRoZWFkXCI6IFwicm93Z3JvdXBcIixcbiAgICAgICAgICAgIFwidHJcIjogXCJyb3dcIixcbiAgICAgICAgICAgIFwidWxcIjogXCJsaXN0XCJcbiAgICAgICAgfVxuICAgIH0pKClcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgSUVuZ2luZSwgZVJ1bGVQb2xpY3ksIFJlcG9ydCwgZVJ1bGVDYXRlZ29yeSwgZVRvb2xraXRMZXZlbCwgZVJ1bGVzZXRUeXBlIH0gZnJvbSBcIi4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBFbmdpbmUgfSBmcm9tIFwiLi4vY29tbW9uL0VuZ2luZVwiO1xuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuLi9hcmlhL0FSSUFNYXBwZXJcIjtcbmltcG9ydCB7IFN0eWxlTWFwcGVyIH0gZnJvbSBcIi4uL3N0eWxlL1N0eWxlTWFwcGVyXCI7XG5pbXBvcnQgeyBjaGVja1J1bGVzIH0gZnJvbSBcIi4vcnVsZXNcIjtcbmltcG9ydCB7IGNoZWNrTmxzIH0gZnJvbSBcIi4vbmxzXCI7XG5pbXBvcnQgeyBjaGVja0hlbHAgfSBmcm9tIFwiLi9oZWxwXCI7XG5pbXBvcnQgeyBjaGVja1J1bGVzZXRzIH0gZnJvbSBcIi4vcnVsZXNldHNcIjtcblxuZXhwb3J0IHR5cGUgUnVsZXNldCA9IHtcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYXRlZ29yeTogZVJ1bGVDYXRlZ29yeSxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIHR5cGU/OiBlUnVsZXNldFR5cGUsXG4gICAgY2hlY2twb2ludHM6IEFycmF5PHtcbiAgICAgICAgbnVtOiBzdHJpbmcsXG4gICAgICAgIC8vIEpDSDogYWRkIG5hbWUgb2YgY2hlY2twb2ludCBhbmQgc3VtbWFyeSBkZXNjcmlwdGlvblxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHdjYWdMZXZlbDogc3RyaW5nLFxuICAgICAgICBzdW1tYXJ5OiBzdHJpbmcsXG4gICAgICAgIHJ1bGVzOiBBcnJheTx7aWQ6IHN0cmluZywgbGV2ZWw6IGVSdWxlUG9saWN5LCB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWx9PlxuICAgIH0+XG59XG5cbmV4cG9ydCBjbGFzcyBDaGVja2VyIHtcbiAgICBlbmdpbmU6IElFbmdpbmU7XG4gICAgcnVsZXNldHM6IFJ1bGVzZXRbXSA9IFtdO1xuICAgIHJ1bGVzZXRJZHM6IHN0cmluZ1tdID0gW107XG4gICAgcnVsZXNldFJ1bGVzOiB7IFtyc0lkOiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XG4gICAgcnVsZUxldmVscyA6IHsgW3J1bGVJZDogc3RyaW5nXTogeyBbcnNJZDogc3RyaW5nXSA6IGVSdWxlUG9saWN5IH19ID0ge307XG4gICAgcnVsZUNhdGVnb3J5IDogeyBbcnVsZUlkOiBzdHJpbmddOiB7IFtyc0lkOiBzdHJpbmddIDogZVJ1bGVDYXRlZ29yeSB9fSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGxldCBlbmdpbmUgPSB0aGlzLmVuZ2luZSA9IG5ldyBFbmdpbmUoKTtcbiAgICAgICAgZW5naW5lLmFkZE1hcHBlcihuZXcgQVJJQU1hcHBlcigpKTtcbiAgICAgICAgZW5naW5lLmFkZE1hcHBlcihuZXcgU3R5bGVNYXBwZXIoKSk7XG4gICAgICAgIGVuZ2luZS5hZGRSdWxlcyhjaGVja1J1bGVzKTtcbiAgICAgICAgZW5naW5lLmFkZE5sc01hcChjaGVja05scyk7XG4gICAgICAgIGVuZ2luZS5hZGRIZWxwTWFwKGNoZWNrSGVscCk7XG4gICAgICAgIGZvciAoY29uc3QgcnMgb2YgY2hlY2tSdWxlc2V0cykge1xuICAgICAgICAgICAgdGhpcy5hZGRSdWxlc2V0KHJzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZFJ1bGVzZXQocnM6IFJ1bGVzZXQpIHtcbiAgICAgICAgdGhpcy5ydWxlc2V0cy5wdXNoKHJzKTtcbiAgICAgICAgdGhpcy5ydWxlc2V0SWRzLnB1c2gocnMuaWQpO1xuICAgICAgICBjb25zdCBydWxlSWRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY3Agb2YgcnMuY2hlY2twb2ludHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBjcC5ydWxlcykge1xuICAgICAgICAgICAgICAgIHJ1bGVJZHMucHVzaChydWxlLmlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVMZXZlbHNbcnVsZS5pZF0gPSB0aGlzLnJ1bGVMZXZlbHNbcnVsZS5pZF0gfHwge307XG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlTGV2ZWxzW3J1bGUuaWRdW3JzLmlkXSA9IHJ1bGUubGV2ZWw7XG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlQ2F0ZWdvcnlbcnVsZS5pZF0gPSB0aGlzLnJ1bGVDYXRlZ29yeVtydWxlLmlkXSB8fCB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVDYXRlZ29yeVtydWxlLmlkXVtycy5pZF0gPSBycy5jYXRlZ29yeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJ1bGVzZXRSdWxlc1tycy5pZF0gPSBydWxlSWRzO1xuICAgIH1cblxuICAgIGNoZWNrKG5vZGU6IE5vZGUgfCBEb2N1bWVudCwgcnNJZHM/OiBzdHJpbmcgfCBzdHJpbmdbXSkgOiBQcm9taXNlPFJlcG9ydD4ge1xuICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggcnVsZXMgdG8gcnVuXG4gICAgICAgIGxldCBydWxlSWRzIDogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICAvLyBGaXggdGhlIGlucHV0XG4gICAgICAgIGlmICghcnNJZHMpIHtcbiAgICAgICAgICAgIHJ1bGVJZHMgPSB0aGlzLmVuZ2luZS5nZXRSdWxlc0lkcygpO1xuICAgICAgICB9IGVsc2V7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJzSWRzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcnNJZHMgPSBbcnNJZHNdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJzSWQgb2YgcnNJZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocnNJZCBpbiB0aGlzLnJ1bGVzZXRSdWxlcykge1xuICAgICAgICAgICAgICAgICAgICBydWxlSWRzID0gcnVsZUlkcy5jb25jYXQodGhpcy5ydWxlc2V0UnVsZXNbcnNJZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW5naW5lLmVuYWJsZVJ1bGVzKHJ1bGVJZHMpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgcmVwb3J0IGxldmVsc1xuICAgICAgICBsZXQgbXlUaGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHRoaXMuZW5naW5lLnJ1bihub2RlKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlcG9ydCkge1xuICAgICAgICAgICAgICAgIHJlcG9ydC5ubHMgPSB7fVxuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVwb3J0LnJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5ydWxlSWQgaW4gY2hlY2tObHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5ubHNbcmVzdWx0LnJ1bGVJZF0gPSByZXBvcnQubmxzW3Jlc3VsdC5ydWxlSWRdIHx8IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOiBjaGVja05sc1tyZXN1bHQucnVsZUlkXVswXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yZWFzb25JZCBpbiBjaGVja05sc1tyZXN1bHQucnVsZUlkXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5ubHNbcmVzdWx0LnJ1bGVJZF1bcmVzdWx0LnJlYXNvbklkXSA9IGNoZWNrTmxzW3Jlc3VsdC5ydWxlSWRdW3Jlc3VsdC5yZWFzb25JZF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlWzBdID0gbXlUaGlzLmdldExldmVsKHJzSWRzIGFzIHN0cmluZ1tdLCByZXN1bHQucnVsZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmNhdGVnb3J5ID0gbXlUaGlzLmdldENhdGVnb3J5KHJzSWRzIGFzIHN0cmluZ1tdLCByZXN1bHQucnVsZUlkKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC5wYXRoLmNzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcG9ydDtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldExldmVsKHJzSWRzOiBzdHJpbmdbXSwgcnVsZUlkOiBzdHJpbmcpIDogZVJ1bGVQb2xpY3kge1xuICAgICAgICBpZiAoIXJzSWRzKSByZXR1cm4gZVJ1bGVQb2xpY3kuSU5GT1JNQVRJT047XG4gICAgICAgIGxldCByc0luZm8gPSB0aGlzLnJ1bGVMZXZlbHNbcnVsZUlkXTtcbiAgICAgICAgbGV0IHJldFZhbCA9IG51bGw7XG4gICAgICAgIGlmIChyc0lkcykge1xuICAgICAgICAgICAgaWYgKCEocnVsZUlkIGluIHRoaXMucnVsZUxldmVscykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSdWxlIHRyaWdnZXJlZCBmb3Igd2hpY2ggd2UgaGF2ZSBubyBydWxlIGxldmVsIGluZm9ybWF0aW9uOiBcIitydWxlSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCByc0lkIG9mIHJzSWRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJzSWQgaW4gcnNJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyc0luZm9bcnNJZF0gPT09IGVSdWxlUG9saWN5LlZJT0xBVElPTikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gZVJ1bGVQb2xpY3kuVklPTEFUSU9OO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJzSW5mb1tyc0lkXSA9PT0gZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04gJiYgcmV0VmFsID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXRWYWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGVSdWxlUG9saWN5LklORk9STUFUSU9OO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXRWYWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJ1bGUgdHJpZ2dlcmVkIGZvciB3aGljaCB3ZSBoYXZlIG5vIHJ1bGUgbGV2ZWwgaW5mb3JtYXRpb246IFwiK3J1bGVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICBnZXRDYXRlZ29yeShyc0lkczogc3RyaW5nW10sIHJ1bGVJZDogc3RyaW5nKSA6IGVSdWxlQ2F0ZWdvcnkge1xuICAgICAgICBsZXQgcnNJbmZvID0gdGhpcy5ydWxlQ2F0ZWdvcnlbcnVsZUlkXTtcbiAgICAgICAgbGV0IHJldFZhbCA9IFwiXCI7XG5cbiAgICAgICAgaWYgKCEocnVsZUlkIGluIHRoaXMucnVsZUNhdGVnb3J5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGVSdWxlQ2F0ZWdvcnkuT1RIRVI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyc0lkcykge1xuICAgICAgICAgICAgcnNJZHMgPSB0aGlzLnJ1bGVzZXRJZHM7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCByc0lkIG9mIHJzSWRzKSB7XG4gICAgICAgICAgICBpZiAocnNJZCBpbiByc0luZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnNJbmZvW3JzSWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlUnVsZUNhdGVnb3J5Lk9USEVSO1xuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuLi8uLi8uLi9jb25maWcvQ29uZmlnXCI7XG5cbmxldCBhMTF5SGVscCA9IHtcbiAgICBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9sYW5kbWFya19uYW1lX3VuaXF1ZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vbGFuZG1hcmtfbmFtZV91bmlxdWVgLFxuICAgICAgICBcIkZhaWxfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2xhbmRtYXJrX25hbWVfdW5pcXVlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0xpc3RfTWlzdXNlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGlzdF9NaXN1c2VgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9MaXN0X01pc3VzZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGlzdF9NaXN1c2VgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWFycXVlZV9UcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWFycXVlZV9UcmlnZ2VyYCxcbiAgICAgICAgXCJQYXNzZWRfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NYXJxdWVlX1RyaWdnZXJgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NYXJxdWVlX1RyaWdnZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSGVhZGVyc19GZXdXb3Jkc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0hlYWRlcnNfRmV3V29yZHNgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IZWFkZXJzX0Zld1dvcmRzYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IZWFkZXJzX0Zld1dvcmRzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZWAsXG4gICAgICAgIFwiUGFzc18xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZWAsXG4gICAgICAgIFwiUGFzc18yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZWAsXG4gICAgICAgIFwiRmFpbFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSW1nX1VzZW1hcFZhbGlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSW1nX1VzZW1hcFZhbGlkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSW1nX1VzZW1hcFZhbGlkYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9JbWdfVXNlbWFwVmFsaWRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfT2JqZWN0X0hhc1RleHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9PYmplY3RfSGFzVGV4dGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX09iamVjdF9IYXNUZXh0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfT2JqZWN0X0hhc1RleHRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQXBwbGV0X0hhc0FsdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FwcGxldF9IYXNBbHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9BcHBsZXRfSGFzQWx0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQXBwbGV0X0hhc0FsdGAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FwcGxldF9IYXNBbHRgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9BcHBsZXRfSGFzQWx0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX0F1ZGlvVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0F1ZGlvVHJpZ2dlcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0F1ZGlvVHJpZ2dlcmAsXG4gICAgICAgIFwiTWFudWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfQXVkaW9UcmlnZ2VyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0Jsb2NrcXVvdGVfSGFzQ2l0ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrcXVvdGVfSGFzQ2l0ZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrcXVvdGVfSGFzQ2l0ZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfQmxvY2txdW90ZV9IYXNDaXRlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01ldGFfUmVmcmVzaFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01ldGFfUmVmcmVzaGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01ldGFfUmVmcmVzaGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWV0YV9SZWZyZXNoYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ZyYW1lX0hhc1RpdGxlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRnJhbWVfSGFzVGl0bGVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9GcmFtZV9IYXNUaXRsZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ZyYW1lX0hhc1RpdGxlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX0FsdEJyaWVmXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfQWx0QnJpZWZgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9BbHRCcmllZmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfQWx0QnJpZWZgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQV9UYXJnZXRBbmRUZXh0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQV9UYXJnZXRBbmRUZXh0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQV9UYXJnZXRBbmRUZXh0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9BX1RhcmdldEFuZFRleHRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQXJlYV9IYXNBbHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9BcmVhX0hhc0FsdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FyZWFfSGFzQWx0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQXJlYV9IYXNBbHRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfSW1nQ29sb3JVc2FnZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0ltZ0NvbG9yVXNhZ2VgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9JbWdDb2xvclVzYWdlYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9JbWdDb2xvclVzYWdlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX01ldGFfUmVkaXJlY3RaZXJvXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9gLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9gLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9NZXRhX1JlZGlyZWN0WmVyb2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbGVtX0RlcHJlY2F0ZWRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbGVtX0RlcHJlY2F0ZWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbGVtX0RlcHJlY2F0ZWRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VsZW1fRGVwcmVjYXRlZGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9CbG9ja3F1b3RlX1dyYXBzVGV4dFF1b3RlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfQmxvY2txdW90ZV9XcmFwc1RleHRRdW90ZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5YCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbGVtX0V2ZW50TW91c2VBbmRLZXlgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRG9jX0hhc1RpdGxlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRG9jX0hhc1RpdGxlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRG9jX0hhc1RpdGxlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRG9jX0hhc1RpdGxlYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRG9jX0hhc1RpdGxlYCxcbiAgICAgICAgXCJGYWlsXzNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRG9jX0hhc1RpdGxlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0Jsb2NrX1Nob3VsZEJlSGVhZGluZ1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrX1Nob3VsZEJlSGVhZGluZ2AsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrX1Nob3VsZEJlSGVhZGluZ2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9Gb3JtX0hhc1N1Ym1pdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0Zvcm1fSGFzU3VibWl0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRm9ybV9IYXNTdWJtaXRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0Zvcm1fSGFzU3VibWl0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0VsZW1fVW5pcXVlSWRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbGVtX1VuaXF1ZUlkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRWxlbV9VbmlxdWVJZGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VsZW1fVW5pcXVlSWRgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1hYWGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9Gb250X0NvbG9ySW5Gb3JtXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRm9udF9Db2xvckluRm9ybWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ZvbnRfQ29sb3JJbkZvcm1gLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ZvbnRfQ29sb3JJbkZvcm1gXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTGFiZWxfVW5pcXVlRm9yXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGFiZWxfVW5pcXVlRm9yYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGFiZWxfVW5pcXVlRm9yYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGFiZWxfVW5pcXVlRm9yYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0ltZ19BbHRDb21tb25NaXN1c2VcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9JbWdfQWx0Q29tbW9uTWlzdXNlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSW1nX0FsdENvbW1vbk1pc3VzZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSW1nX0FsdENvbW1vbk1pc3VzZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9JbWdfTG9uZ0Rlc2NyaXB0aW9uMlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ltZ19Mb25nRGVzY3JpcHRpb24yYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSW1nX0xvbmdEZXNjcmlwdGlvbjJgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ltZ19Mb25nRGVzY3JpcHRpb24yYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19IYXNBbHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfSGFzQWx0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0hhc0FsdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19IYXNBbHRgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfSGFzQWx0YCxcbiAgICAgICAgXCJGYWlsXzNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0hhc0FsdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfUHJlX0FTQ0lJQXJ0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfUHJlX0FTQ0lJQXJ0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfUHJlX0FTQ0lJQXJ0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9QcmVfQVNDSUlBcnRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfVmlkZW9SZWZlcmVuY2VUcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfVmlkZW9SZWZlcmVuY2VUcmlnZ2VyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfVmlkZW9SZWZlcmVuY2VUcmlnZ2VyYCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9BdWRpb1ZpZGVvQWx0RmlsZW5hbWVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9Db2xvclNlbWFudGljczFgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NlbGVjdF9IYXNPcHRHcm91cGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0xpc3RfVXNlTWFya3VwXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGlzdF9Vc2VNYXJrdXBgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGlzdF9Vc2VNYXJrdXBgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xpc3RfVXNlTWFya3VwYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TY3JpcHRfT25jbGlja0hUTUwxYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU2NyaXB0X09uY2xpY2tIVE1MMWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU2NyaXB0X09uY2xpY2tIVE1MMWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UYWJsZV9TdHJ1Y3R1cmVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UYWJsZV9TdHJ1Y3R1cmVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UYWJsZV9TdHJ1Y3R1cmVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UYWJsZV9TdHJ1Y3R1cmVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW1nX0FsdFRyaWdnZXJOb25EZWNvcmF0aXZlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0FsdFRyaWdnZXJOb25EZWNvcmF0aXZlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0FsdFRyaWdnZXJOb25EZWNvcmF0aXZlYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfQWx0VHJpZ2dlck5vbkRlY29yYXRpdmVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQmxpbmtfQWx3YXlzVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0JsaW5rX0Fsd2F5c1RyaWdnZXJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9CbGlua19BbHdheXNUcmlnZ2VyYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQmxpbmtfQWx3YXlzVHJpZ2dlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9CbGlua19DU1NUcmlnZ2VyMVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0JsaW5rX0NTU1RyaWdnZXIxYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfQmxpbmtfQ1NTVHJpZ2dlcjFgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0JsaW5rX0NTU1RyaWdnZXIxYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0h0bWxfU2tpcE5hdlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0h0bWxfU2tpcE5hdmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0h0bWxfU2tpcE5hdmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSHRtbF9Ta2lwTmF2YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1RpdGxlX1ZhbGlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGl0bGVfVmFsaWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UaXRsZV9WYWxpZGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1RpdGxlX1ZhbGlkYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UaXRsZV9WYWxpZGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9IZWFkZXJfSGFzQ29udGVudFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0hlYWRlcl9IYXNDb250ZW50YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSGVhZGVyX0hhc0NvbnRlbnRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IZWFkZXJfSGFzQ29udGVudGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICAvLyBKQ0ggLSAwOiBwcm92aWRlcyB0aGUgZ2VuZXJhbCBEQVAgbWVzc2FnZSBmb3IgdGhlIHJ1bGVcbiAgICAvLyAgICAgICBcIlBhc3NfaVwiID8/P1xuICAgIC8vICAgICAgIFwiRmFpbF9qXCIgZGVzY3JpcHRpdmUgbWVzc2FnZSBmb3Igc3BlY2lmaWMgZmFpbHVyZVxuICAgIC8vICAgICAgIFwiUG90ZW50aWFsX2tcIiBkZXNjcmlwdGl2ZSBtZXNzYWdlIGRlc2NyaWJpbmcgY2FzZSB3aGVuIGl0IGlzIG5vdCBhIGZhaWx1cmUgXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICBidXQgbmVlZHMgb3RoZXIgY2hlY2tpbmcgdG8gY29uZmlybSBwYXNzIG9yXG4gICAgXCJXQ0FHMjBfSHRtbF9IYXNMYW5nXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSHRtbF9IYXNMYW5nYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsXG4gICAgICAgIFwiRmFpbF8zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsXG4gICAgICAgIFwiRmFpbF80XCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsXG4gICAgICAgIFwiRmFpbF81XCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsXG4gICAgICAgIFwiUG90ZW50aWFsXzVcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSHRtbF9IYXNMYW5nYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfNlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9IdG1sX0hhc0xhbmdgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9Gb3JtX1RhcmdldEFuZFRleHRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQV9IYXNUZXh0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQV9IYXNUZXh0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQV9IYXNUZXh0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQV9IYXNUZXh0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZGAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZGAsXG4gICAgICAgIFwiRmFpbF8zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZWRpYV9WaWRlb09iamVjdFRyaWdnZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9WaWRlb09iamVjdFRyaWdnZXJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9WaWRlb09iamVjdFRyaWdnZXJgLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX1ZpZGVvT2JqZWN0VHJpZ2dlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1RleHRfU2Vuc29yeVJlZmVyZW5jZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbWJlZF9BdXRvU3RhcnRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbWJlZF9BdXRvU3RhcnRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbWJlZF9BdXRvU3RhcnRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VtYmVkX0F1dG9TdGFydGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9IaW5kZXJGb2N1czFcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9IaW5kZXJGb2N1czFgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9IaW5kZXJGb2N1czFgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX0hpbmRlckZvY3VzMWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9FbGVtX0xhbmdfVmFsaWRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX0xhbmdfVmFsaWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX0xhbmdfVmFsaWRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX0xhbmdfVmFsaWRgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX0xhbmdfVmFsaWRgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX0xhbmdfVmFsaWRgLFxuICAgICAgICBcIkZhaWxfNFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX0xhbmdfVmFsaWRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50YCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50YCxcbiAgICAgICAgXCJGYWlsXzNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1N0eWxlX0V4dGVybmFsU3R5bGVTaGVldFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX0V4dGVybmFsU3R5bGVTaGVldGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX0V4dGVybmFsU3R5bGVTaGVldGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfRXh0ZXJuYWxTdHlsZVNoZWV0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0hlYWRlcl9UcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSGVhZGVyX1RyaWdnZXJgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSGVhZGVyX1RyaWdnZXJgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0hlYWRlcl9UcmlnZ2VyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TY3JpcHRfT25jbGlja0hUTUwyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU2NyaXB0X09uY2xpY2tIVE1MMmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU2NyaXB0X09uY2xpY2tIVE1MMmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UYWJsZV9DYXBTdW1tUmVkdW5kYW50XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RhYmxlX0NhcFN1bW1SZWR1bmRhbnRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UYWJsZV9DYXBTdW1tUmVkdW5kYW50YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfTGFiZWxCZWZvcmVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9MYWJlbEJlZm9yZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfTGFiZWxCZWZvcmVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfTGFiZWxBZnRlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0xhYmVsQWZ0ZXJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9MYWJlbEFmdGVyYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfTGFiZWxBZnRlcmAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0xhYmVsQWZ0ZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRW1iZWRfSGFzTm9FbWJlZFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0VtYmVkX0hhc05vRW1iZWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbWJlZF9IYXNOb0VtYmVkYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbWJlZF9IYXNOb0VtYmVkYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UYWJsZV9TY29wZV9WYWxpZGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19UaXRsZUVtcHR5V2hlbkFsdE51bGxgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfVGl0bGVFbXB0eVdoZW5BbHROdWxsYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9JbkZpZWxkU2V0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfSW5GaWVsZFNldGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0luRmllbGRTZXRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0luRmllbGRTZXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0YCxcbiAgICAgICAgXCJQYXNzX0xvbmVOb2dyb3VwXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGAsXG4gICAgICAgIFwiUGFzc19Hcm91cGVkXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGAsXG4gICAgICAgIFwiUGFzc19SYWRpb05vTmFtZVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRgLFxuICAgICAgICBcIkZhaWxfQ29udHJvbE5hbWVNaXNtYXRjaFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRgLFxuICAgICAgICBcIlBvdGVudGlhbF9Mb25lQ2hlY2tib3hcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfVW5uYW1lZENoZWNrYm94XCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGAsXG4gICAgICAgIFwiRmFpbF9Ob3RHcm91cGVkT3RoZXJHcm91cGVkXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGAsXG4gICAgICAgIFwiRmFpbF9Ob3RHcm91cGVkT3RoZXJOb3RHcm91cGVkXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGAsXG4gICAgICAgIFwiRmFpbF9Ob3RTYW1lR3JvdXBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvblwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvbmAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25gLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvbmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9IYXNPbmNoYW5nZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0hhc09uY2hhbmdlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfSGFzT25jaGFuZ2VgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0hhc09uY2hhbmdlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0VtYmVkX0hhc0FsdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VtYmVkX0hhc0FsdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VtYmVkX0hhc0FsdGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRW1iZWRfSGFzQWx0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfTm9lbWJlZF9IYXNDb250ZW50YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX05vZW1iZWRfSGFzQ29udGVudGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX05vZW1iZWRfSGFzQ29udGVudGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfQ2FwdGlvbl9IYXNDb250ZW50XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0NhcHRpb25fSGFzQ29udGVudGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9DYXB0aW9uX0hhc0NvbnRlbnRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfQ2FwdGlvbl9IYXNDb250ZW50YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9DYXB0aW9uX0luVGFibGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfQ2FwdGlvbl9JblRhYmxlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0NhcHRpb25fSW5UYWJsZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9DYXB0aW9uX0luVGFibGVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfTGFiZWxfSGFzQ29udGVudGAsXG4gICAgICAgIFwiUGFzc19SZWd1bGFyXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50YCxcbiAgICAgICAgXCJQYXNzX0FyaWFMYWJlbFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfTGFiZWxfSGFzQ29udGVudGAsXG4gICAgICAgIFwiUGFzc19MYWJlbGxlZEJ5XCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX0VsZW1fRGlyVmFsaWRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfRWxlbV9EaXJWYWxpZGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9FbGVtX0RpclZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0VsZW1fRGlyVmFsaWRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX0ZyYW1lX1NyY0h0bWxcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfRnJhbWVfU3JjSHRtbGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9GcmFtZV9TcmNIdG1sYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfRnJhbWVfU3JjSHRtbGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc2AsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1RhYmxlX0xheW91dFRyaWdnZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UYWJsZV9MYXlvdXRUcmlnZ2VyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGFibGVfTGF5b3V0VHJpZ2dlcmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGFibGVfTGF5b3V0VHJpZ2dlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9UYWJsZV9EYXRhSGVhZGluZ3NBcmlhXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1RhYmxlX0RhdGFIZWFkaW5nc0FyaWFgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UYWJsZV9EYXRhSGVhZGluZ3NBcmlhYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0xhYmVsX1JlZlZhbGlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfTGFiZWxfUmVmVmFsaWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9MYWJlbF9SZWZWYWxpZGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0xhYmVsX1JlZlZhbGlkYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9VbmlxdWVBY2Nlc3NLZXlgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX1VuaXF1ZUFjY2Vzc0tleWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfU2NyaXB0X0ZvY3VzQmx1cnNgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfU2NyaXB0X0ZvY3VzQmx1cnNgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19JbWdfVXNlbWFwQWx0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0ltZ19Vc2VtYXBBbHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfSW1nX1VzZW1hcEFsdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19JbWdfVXNlbWFwQWx0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1RleHRfRW1vdGljb25zXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGV4dF9FbW90aWNvbnNgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UZXh0X0Vtb3RpY29uc2AsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGV4dF9FbW90aWNvbnNgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfU3R5bGVfQmVmb3JlQWZ0ZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TdHlsZV9CZWZvcmVBZnRlcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1N0eWxlX0JlZm9yZUFmdGVyYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TdHlsZV9CZWZvcmVBZnRlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UZXh0X0xldHRlclNwYWNpbmdcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UZXh0X0xldHRlclNwYWNpbmdgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UZXh0X0xldHRlclNwYWNpbmdgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RleHRfTGV0dGVyU3BhY2luZ2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRSb2xlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9WYWxpZFJvbGVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUm9sZWAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRSb2xlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVZhbHVlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9WYWxpZFByb3BlcnR5VmFsdWVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVZhbHVlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfVmFsaWRJZFJlZlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRJZFJlZmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRJZFJlZmAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRJZFJlZmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1JlcXVpcmVkUHJvcGVydGllc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVxdWlyZWRQcm9wZXJ0aWVzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZXF1aXJlZFByb3BlcnRpZXNgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1JlcXVpcmVkUHJvcGVydGllc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0VtcHR5UHJvcGVydHlWYWx1ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfRW1wdHlQcm9wZXJ0eVZhbHVlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0VtcHR5UHJvcGVydHlWYWx1ZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUHJvcGVydHlgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUHJvcGVydHlgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUHJvcGVydHlgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9JbnZhbGlkVGFiaW5kZXhGb3JBY3RpdmVkZXNjZW5kYW50XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9JbnZhbGlkVGFiaW5kZXhGb3JBY3RpdmVkZXNjZW5kYW50YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9JbnZhbGlkVGFiaW5kZXhGb3JBY3RpdmVkZXNjZW5kYW50YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9JbnZhbGlkVGFiaW5kZXhGb3JBY3RpdmVkZXNjZW5kYW50YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTWlzc2luZ0ZvY3VzYWJsZUNoaWxkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NaXNzaW5nRm9jdXNhYmxlQ2hpbGRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX01pc3NpbmdGb2N1c2FibGVDaGlsZGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTWlzc2luZ0ZvY3VzYWJsZUNoaWxkYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTWlzc2luZ0tleWJvYXJkSGFuZGxlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTWlzc2luZ0tleWJvYXJkSGFuZGxlcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTWlzc2luZ0tleWJvYXJkSGFuZGxlcmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NaXNzaW5nS2V5Ym9hcmRIYW5kbGVyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19QcmVzZW50YXRpb25JbWdIYXNOb25OdWxsQWx0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX1ByZXNlbnRhdGlvbkltZ0hhc05vbk51bGxBbHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19QcmVzZW50YXRpb25JbWdIYXNOb25OdWxsQWx0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlU2VhcmNoTGFuZG1hcmtzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc2AsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9BcHBsaWNhdGlvbkxhbmRtYXJrTGFiZWxgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0FwcGxpY2F0aW9uTGFuZG1hcmtMYWJlbGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlRG9jdW1lbnRSb2xlc2AsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0xhYmVsX1RhcmdldEludmlzaWJsZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0xhYmVsX1RhcmdldEludmlzaWJsZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0xhYmVsX1RhcmdldEludmlzaWJsZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfTGFiZWxfVGFyZ2V0SW52aXNpYmxlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX1ZpZGVvX0hhc05vVHJhY2tgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfVmlkZW9fSGFzTm9UcmFja2AsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX1ZpZGVvX0hhc05vVHJhY2tgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0F1ZGlvX1ZpZGVvX1RyaWdnZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXVkaW9fVmlkZW9fVHJpZ2dlcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BdWRpb19WaWRlb19UcmlnZ2VyYCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXVkaW9fVmlkZW9fVHJpZ2dlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfSW5wdXRfSGFzUmVxdWlyZWRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfSW5wdXRfSGFzUmVxdWlyZWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfSW5wdXRfSGFzUmVxdWlyZWRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19JbnB1dF9IYXNSZXF1aXJlZGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXJpYV9JbWdBbHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9JbWdBbHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9JbWdBbHRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9JbWdBbHRgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9JbWdBbHRgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9JbWdBbHRgXG4gICAgfSxcbiAgICBcIkhBQUNfQXJpYV9TdmdBbHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9TdmdBbHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9TdmdBbHRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9TdmdBbHRgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9TdmdBbHRgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9TdmdBbHRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0JhY2tncm91bmRJbWdfSGFzVGV4dE9yVGl0bGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19CYWNrZ3JvdW5kSW1nX0hhc1RleHRPclRpdGxlYCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQWNjZXNza2V5X05lZWRMYWJlbFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BY2Nlc3NrZXlfTmVlZExhYmVsYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FjY2Vzc2tleV9OZWVkTGFiZWxgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BY2Nlc3NrZXlfTmVlZExhYmVsYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19BcmlhX09yX0hUTUw1X0F0dHJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfT3JfSFRNTDVfQXR0cmAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcmlhX09yX0hUTUw1X0F0dHJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0NhbnZhc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19DYW52YXNgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQ2FudmFzYCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQ2FudmFzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19GaWd1cmVfbGFiZWxcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfRmlndXJlX2xhYmVsYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0ZpZ3VyZV9sYWJlbGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19GaWd1cmVfbGFiZWxgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0lucHV0X1BsYWNlaG9sZGVyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0lucHV0X1BsYWNlaG9sZGVyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0lucHV0X1BsYWNlaG9sZGVyYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfSW5wdXRfUGxhY2Vob2xkZXJgLFxuICAgICAgICBcIlBvdGVudGlhbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19JbnB1dF9QbGFjZWhvbGRlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcImFyaWFfc2VtYW50aWNzX3JvbGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L2FyaWFfc2VtYW50aWNzX3JvbGVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2FyaWFfc2VtYW50aWNzX3JvbGVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L2FyaWFfc2VtYW50aWNzX3JvbGVgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L2FyaWFfc2VtYW50aWNzX3JvbGVgXG4gICAgfSxcbiAgICBcImFyaWFfc2VtYW50aWNzX2F0dHJpYnV0ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vYXJpYV9zZW1hbnRpY3NfYXR0cmlidXRlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX3NlbWFudGljc19hdHRyaWJ1dGVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L2FyaWFfc2VtYW50aWNzX2F0dHJpYnV0ZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9Gb3JtX0NoYW5nZUVtcHR5XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRm9ybV9DaGFuZ2VFbXB0eWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Zvcm1fQ2hhbmdlRW1wdHlgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Zvcm1fQ2hhbmdlRW1wdHlgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0lCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFfUFZgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0lCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQV9QVmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFfUFZgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0JvZHlfRmlyc3RBU2tpcHNfTmF0aXZlX0hvc3RfU2VtYXRpY3NgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9Cb2R5X0ZpcnN0QVNraXBzX05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9Cb2R5X0ZpcnN0QUNvbnRhaW5zU2tpcFRleHRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9Cb2R5X0ZpcnN0QUNvbnRhaW5zU2tpcFRleHRfTmF0aXZlX0hvc3RfU2VtYXRpY3NgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQm9keV9GaXJzdEFDb250YWluc1NraXBUZXh0X05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9Cb2R5X0ZpcnN0QUNvbnRhaW5zU2tpcFRleHRfTmF0aXZlX0hvc3RfU2VtYXRpY3NgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1JlcXVpcmVkQ2hpbGRyZW5fTmF0aXZlX0hvc3RfU2VtYXRpY3NgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9SZXF1aXJlZFBhcmVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVxdWlyZWRQYXJlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1JlcXVpcmVkUGFyZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZXF1aXJlZFBhcmVudF9OYXRpdmVfSG9zdF9TZW1hdGljc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0V2ZW50SGFuZGxlck1pc3NpbmdSb2xlX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9FdmVudEhhbmRsZXJNaXNzaW5nUm9sZV9OYXRpdmVfSG9zdF9TZW1hdGljc2AsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfRXZlbnRIYW5kbGVyTWlzc2luZ1JvbGVfTmF0aXZlX0hvc3RfU2VtYXRpY3NgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0V2ZW50SGFuZGxlck1pc3NpbmdSb2xlX05hdGl2ZV9Ib3N0X1NlbWF0aWNzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfV2lkZ2V0TGFiZWxzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9XaWRnZXRMYWJlbHNfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfV2lkZ2V0TGFiZWxzX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX09ycGhhbmVkQ29udGVudF9OYXRpdmVfSG9zdF9TZW1hdGljc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZWdpb25MYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVnaW9uTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZWdpb25MYWJlbF9JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQmFubmVyTGFuZG1hcmtzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb21wbGVtZW50YXJ5TGFuZG1hcmtzX0ltcGxpY2l0YCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb21wbGVtZW50YXJ5TGFuZG1hcmtzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvTGFuZG1hcmtzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvTGFuZG1hcmtzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvTGFuZG1hcmtzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvTGFuZG1hcmtzX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlRm9ybUxhbmRtYXJrc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVOYXZpZ2F0aW9uTGFuZG1hcmtzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVOYXZpZ2F0aW9uTGFuZG1hcmtzX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Db21wbGVtZW50YXJ5TGFuZG1hcmtMYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVBcnRpY2xlUm9sZXNfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQXJ0aWNsZVJvbGVzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0FydGljbGVSb2xlTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0FydGljbGVSb2xlTGFiZWxfSW1wbGljaXRgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9BcnRpY2xlUm9sZUxhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9BcnRpY2xlUm9sZUxhYmVsX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUdyb3VwUm9sZXNfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlR3JvdXBSb2xlc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfR3JvdXBSb2xlTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0dyb3VwUm9sZUxhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Hcm91cFJvbGVMYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfR3JvdXBSb2xlTGFiZWxfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvSW5TaWJsaW5nU2V0X0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvSW5TaWJsaW5nU2V0X0ltcGxpY2l0YCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0luU2libGluZ1NldF9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0luU2libGluZ1NldF9JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfT25lQmFubmVySW5TaWJsaW5nU2V0X0ltcGxpY2l0YCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfT25lQmFubmVySW5TaWJsaW5nU2V0X0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9Db250ZW50aW5mb1dpdGhOb01haW5fSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdGAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeVJlcXVpcmVkTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsX0ltcGxpY2l0YCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQ29tcGxlbWVudGFyeVJlcXVpcmVkTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJJQk1BX0ZvY3VzX1RhYmJhYmxlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0ZvY3VzX1RhYmJhYmxlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0ZvY3VzX1RhYmJhYmxlYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0lCTUFfRm9jdXNfVGFiYmFibGVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJJQk1BX0ZvY3VzX011bHRpVGFiXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0ZvY3VzX011bHRpVGFiYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0ZvY3VzX011bHRpVGFiYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0lCTUFfRm9jdXNfTXVsdGlUYWJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfU3R5bGVfVHJpZ2dlcjJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9UcmlnZ2VyMmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX1RyaWdnZXIyYCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9UcmlnZ2VyMmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVNYWluc1JlcXVpcmVMYWJlbF9JbXBsaWNpdF8yYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZU1haW5zUmVxdWlyZUxhYmVsX0ltcGxpY2l0XzJgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfTWVkaWFfRG9jdW1lbnRUcmlnZ2VyMlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX01lZGlhX0RvY3VtZW50VHJpZ2dlcjJgLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19BcmlhX0Vycm9yTWVzc2FnZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcmlhX0Vycm9yTWVzc2FnZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcmlhX0Vycm9yTWVzc2FnZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcmlhX0Vycm9yTWVzc2FnZWAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcmlhX0Vycm9yTWVzc2FnZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19MaXN0X0dyb3VwX0xpc3RJdGVtYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0xpc3RfR3JvdXBfTGlzdEl0ZW1gLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FjdGl2ZURlc2NlbmRhbnRDaGVja2AsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FjdGl2ZURlc2NlbmRhbnRDaGVja2AsXG4gICAgICAgIFwiRmFpbF8zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tgLFxuICAgICAgICBcIkZhaWxfNFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19BcHBsaWNhdGlvbl9Sb2xlX1RleHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXBwbGljYXRpb25fUm9sZV9UZXh0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVUb29sYmFyVW5pcXVlTGFiZWxgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsYFxuICAgIH0sXG4gICAgXCJjb21ib2JveF92ZXJzaW9uXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF92ZXJzaW9uYCxcbiAgICAgICAgXCJQYXNzXzEuMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X3ZlcnNpb25gLFxuICAgICAgICBcIkZhaWxfMS4xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfdmVyc2lvbmAsXG4gICAgICAgIFwiUGFzc18xLjJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF92ZXJzaW9uYFxuICAgIH0sXG4gICAgXCJ0YWJsZV9hcmlhX2Rlc2NlbmRhbnRzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS90YWJsZV9hcmlhX2Rlc2NlbmRhbnRzYCxcbiAgICAgICAgXCJleHBsaWNpdF9yb2xlXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vdGFibGVfYXJpYV9kZXNjZW5kYW50c2BcbiAgICB9LFxuICAgIFwiY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9wb3B1cF9yZWZlcmVuY2VgLFxuICAgICAgICBcIlBhc3NfZXhwYW5kZWRcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9wb3B1cF9yZWZlcmVuY2VgLFxuICAgICAgICBcIlBhc3NfY29sbGFwc2VkXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYCxcbiAgICAgICAgXCJGYWlsXzEuMF9taXNzaW5nX293bnNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9wb3B1cF9yZWZlcmVuY2VgLFxuICAgICAgICBcIkZhaWxfMS4yX21pc3NpbmdfY29udHJvbHNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9wb3B1cF9yZWZlcmVuY2VgLFxuICAgICAgICBcIkZhaWxfMS4wX3BvcHVwX3JlZmVyZW5jZV9taXNzaW5nXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYCxcbiAgICAgICAgXCJGYWlsXzEuMl9wb3B1cF9yZWZlcmVuY2VfbWlzc2luZ1wiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X3BvcHVwX3JlZmVyZW5jZWAsXG4gICAgICAgIFwiRmFpbF9jb21ib2JveF9leHBhbmRlZF9oaWRkZW5cIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9wb3B1cF9yZWZlcmVuY2VgLFxuICAgICAgICBcIkZhaWxfY29tYm9ib3hfY29sbGFwc2VkX3Zpc2libGVcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9wb3B1cF9yZWZlcmVuY2VgXG4gICAgfSxcbiAgICBcImNvbWJvYm94X2hhc3BvcHVwXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9oYXNwb3B1cGAsXG4gICAgICAgIFwiUGFzc1wiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2hhc3BvcHVwYCxcbiAgICAgICAgXCJGYWlsX3BvcHVwX3JvbGVfaW52YWxpZFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2hhc3BvcHVwYCxcbiAgICAgICAgXCJGYWlsX2NvbWJvYm94X3BvcHVwX3JvbGVfbWlzbWF0Y2hcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9oYXNwb3B1cGBcbiAgICB9LCAgICBcbiAgICBcImNvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfZm9jdXNhYmxlX2VsZW1lbnRzYCxcbiAgICAgICAgXCJQYXNzXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfZm9jdXNhYmxlX2VsZW1lbnRzYCxcbiAgICAgICAgXCJGYWlsX25vdF90YWJiYWJsZVwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c2AsXG4gICAgICAgIFwiRmFpbF90YWJiYWJsZV9jaGlsZFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c2BcbiAgICB9LFxuICAgIFwiY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50YCxcbiAgICAgICAgXCJQYXNzXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnRgLFxuICAgICAgICBcIkZhaWxfbWlzc2luZ1wiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50YCxcbiAgICAgICAgXCJGYWlsX25vdF9pbl9wb3B1cFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50YCxcbiAgICAgICAgXCJGYWlsX2FjdGl2ZV9yb2xlX2ludmFsaWRcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudGAsXG4gICAgICAgIFwiRmFpbF9hY3RpdmVfbm90X3NlbGVjdGVkXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnRgXG4gICAgfSxcbiAgICBcImNvbWJvYm94X2F1dG9jb21wbGV0ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfYXV0b2NvbXBsZXRlYCxcbiAgICAgICAgXCJQYXNzXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfYXV0b2NvbXBsZXRlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9hdXRvY29tcGxldGVgLFxuICAgICAgICBcIkZhaWxfaW5saW5lXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfYXV0b2NvbXBsZXRlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIxX1N0eWxlX1ZpZXdwb3J0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjFfU3R5bGVfVmlld3BvcnRgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjFfU3R5bGVfVmlld3BvcnRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIxX1N0eWxlX1ZpZXdwb3J0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIxX0xhYmVsX0FjY2Vzc2libGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMV9MYWJlbF9BY2Nlc3NpYmxlYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIxX0xhYmVsX0FjY2Vzc2libGVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMV9MYWJlbF9BY2Nlc3NpYmxlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9WaXNpYmxlTGFiZWxcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9WaXNpYmxlTGFiZWxgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfVmlzaWJsZUxhYmVsYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9WaXNpYmxlTGFiZWxgXG4gICAgfSxcbiAgICBcIm1ldGFfdmlld3BvcnRfem9vbVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vbWV0YV92aWV3cG9ydF96b29tYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vbWV0YV92aWV3cG9ydF96b29tYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L21ldGFfdmlld3BvcnRfem9vbWBcbiAgICB9LFxuICAgIFwiYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX2hpZGRlbl9mb2N1c19taXN1c2VgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX2hpZGRlbl9mb2N1c19taXN1c2VgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L2FyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZWBcbiAgICB9LFxuICAgIFwidGFibGVfaGVhZGVyc19yZWZfdmFsaWRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L3RhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vdGFibGVfaGVhZGVyc19yZWZfdmFsaWRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L3RhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS90YWJsZV9oZWFkZXJzX3JlZl92YWxpZGAsXG4gICAgICAgIFwiRmFpbF8zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vdGFibGVfaGVhZGVyc19yZWZfdmFsaWRgLFxuICAgICAgICBcIkZhaWxfNFwiOiBgJHtDb25maWcuaGVscFJvb3R9L3RhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkYFxuICAgIH1cbn1cblxubGV0IGExMXlIZWxwT2xkID0ge1xuICAgIFwiUlBUX0xpc3RfTWlzdXNlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMy5odG1sXCJdLFxuICAgIFwiUlBUX01hcnF1ZWVfVHJpZ2dlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzUuaHRtbFwiXSxcbiAgICBcIlJQVF9IZWFkZXJzX0Zld1dvcmRzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNy5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwLmh0bWxcIl0sXG4gICAgXCJSUFRfSW1nX1VzZW1hcFZhbGlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTEuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9PYmplY3RfSGFzVGV4dFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzIwLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfQXBwbGV0X0hhc0FsdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzIxLmh0bWxcIl0sXG4gICAgXCJSUFRfTWVkaWFfQXVkaW9UcmlnZ2VyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMjQuaHRtbFwiXSxcbiAgICBcIlJQVF9CbG9ja3F1b3RlX0hhc0NpdGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNS5odG1sXCJdLFxuICAgIFwiUlBUX01ldGFfUmVmcmVzaFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzMzLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfRnJhbWVfSGFzVGl0bGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2czOS5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0MS5odG1sXCJdLFxuICAgIFwiUlBUX01lZGlhX0FsdEJyaWVmXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nOTkuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9BX1RhcmdldEFuZFRleHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTIuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9BcmVhX0hhc0FsdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzI0MC5odG1sXCJdLFxuICAgIFwiUlBUX01lZGlhX0ltZ0NvbG9yVXNhZ2VcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNDUuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9NZXRhX1JlZGlyZWN0WmVyb1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzI1NC5odG1sXCJdLFxuICAgIFwiUlBUX0VsZW1fRGVwcmVjYXRlZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzI1Ni5odG1sXCJdLFxuICAgIFwiUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNjMuaHRtbFwiXSxcbiAgICBcIlJQVF9FbGVtX0V2ZW50TW91c2VBbmRLZXlcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNjkuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9Eb2NfSGFzVGl0bGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNzMuaHRtbFwiXSxcbiAgICBcIlJQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2czMjIuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9Gb3JtX0hhc1N1Ym1pdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzMyNC5odG1sXCJdLFxuICAgIFwiUlBUX0VsZW1fVW5pcXVlSWRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2czNzcuaHRtbFwiXSxcbiAgICBcIlJQVF9Gb250X0NvbG9ySW5Gb3JtXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMzk0Lmh0bWxcIl0sXG4gICAgXCJSUFRfTGFiZWxfVW5pcXVlRm9yXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMzk4Lmh0bWxcIl0sXG4gICAgXCJSUFRfSW1nX0FsdENvbW1vbk1pc3VzZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ1My5odG1sXCJdLFxuICAgIFwiUlBUX0ltZ19Mb25nRGVzY3JpcHRpb24yXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDU0Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW1nX0hhc0FsdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ1NS5odG1sXCJdLFxuICAgIFwiUlBUX1N0eWxlX0JhY2tncm91bmRJbWFnZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ1Ni5odG1sXCJdLFxuICAgIFwiUlBUX1ByZV9BU0NJSUFydFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ1OC5odG1sXCJdLFxuICAgIFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzUxMS5odG1sXCJdLFxuICAgIFwiUlBUX01lZGlhX0F1ZGlvVmlkZW9BbHRGaWxlbmFtZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ2MC5odG1sXCJdLFxuICAgIFwiUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ2Ni5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1NlbGVjdF9IYXNPcHRHcm91cFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ2Ny5odG1sXCJdLFxuICAgIFwiUlBUX0xpc3RfVXNlTWFya3VwXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDY4Lmh0bWxcIl0sXG4gICAgXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ3MC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1RhYmxlX1N0cnVjdHVyZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ3MS5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0ltZ19BbHRUcmlnZ2VyTm9uRGVjb3JhdGl2ZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ3My5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0JsaW5rX0Fsd2F5c1RyaWdnZXJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NzguaHRtbFwiXSxcbiAgICBcIlJQVF9CbGlua19DU1NUcmlnZ2VyMVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ3OS5odG1sXCJdLFxuICAgIFwiUlBUX0h0bWxfU2tpcE5hdlwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ4MS5odG1sXCJdLFxuICAgIFwiUlBUX1RpdGxlX1ZhbGlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDg0Lmh0bWxcIl0sXG4gICAgXCJSUFRfSGVhZGVyX0hhc0NvbnRlbnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0ODguaHRtbFwiXSxcbiAgICBcIldDQUcyMF9IdG1sX0hhc0xhbmdcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0OTAuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9Gb3JtX1RhcmdldEFuZFRleHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0OTEuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9BX0hhc1RleHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0OTUuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0OTcuaHRtbFwiXSxcbiAgICBcIlJQVF9NZWRpYV9WaWRlb09iamVjdFRyaWdnZXJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c1MDEuaHRtbFwiXSxcbiAgICBcIlJQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c1MDIuaHRtbFwiXSxcbiAgICBcIlJQVF9FbWJlZF9BdXRvU3RhcnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c1MDMuaHRtbFwiXSxcbiAgICBcIlJQVF9TdHlsZV9IaW5kZXJGb2N1czFcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c1MDYuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9FbGVtX0xhbmdfVmFsaWRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c1MDcuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbWdfTGlua1RleHROb3RSZWR1bmRhbnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDAwLmh0bWxcIl0sXG4gICAgXCJSUFRfU3R5bGVfRXh0ZXJuYWxTdHlsZVNoZWV0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA3My5odG1sXCJdLFxuICAgIFwiUlBUX0hlYWRlcl9UcmlnZ2VyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAwMi5odG1sXCJdLFxuICAgIFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDA3Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwMTEuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbnB1dF9MYWJlbEJlZm9yZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwMTcuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbnB1dF9MYWJlbEFmdGVyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAxOC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0VtYmVkX0hhc05vRW1iZWRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDIwLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDI1Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwMjcuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbnB1dF9JbkZpZWxkU2V0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAyOC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwMjkuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25cIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDM1Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW5wdXRfSGFzT25jaGFuZ2VcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDUwLmh0bWxcIl0sXG4gICAgXCJSUFRfRW1iZWRfSGFzQWx0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1MS5odG1sXCJdLFxuICAgIFwiVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDUyLmh0bWxcIl0sXG4gICAgXCJWYWxlcmllX0NhcHRpb25fSGFzQ29udGVudFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNTMuaHRtbFwiXSxcbiAgICBcIlZhbGVyaWVfQ2FwdGlvbl9JblRhYmxlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1NC5odG1sXCJdLFxuICAgIFwiVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1NS5odG1sXCJdLFxuICAgIFwiVmFsZXJpZV9FbGVtX0RpclZhbGlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1Ni5odG1sXCJdLFxuICAgIFwiVmFsZXJpZV9GcmFtZV9TcmNIdG1sXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1Ny5odG1sXCJdLFxuICAgIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDU5Lmh0bWxcIl0sXG4gICAgXCJSUFRfVGFibGVfTGF5b3V0VHJpZ2dlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjAuaHRtbFwiXSxcbiAgICBcIlJQVF9UYWJsZV9EYXRhSGVhZGluZ3NBcmlhXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA2MS5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0xhYmVsX1JlZlZhbGlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA2Mi5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA2My5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA2NC5odG1sXCJdLFxuICAgIFwiSEFBQ19JbWdfVXNlbWFwQWx0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA2Ny5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1RleHRfRW1vdGljb25zXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA2OC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1N0eWxlX0JlZm9yZUFmdGVyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA2OS5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1RleHRfTGV0dGVyU3BhY2luZ1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNzAuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNzQuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNzYuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX1ZhbGlkSWRSZWZcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDc3Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9SZXF1aXJlZFByb3BlcnRpZXNcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDc5Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDgyLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA4My5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwODQuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX01pc3NpbmdGb2N1c2FibGVDaGlsZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwODYuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX01pc3NpbmdLZXlib2FyZEhhbmRsZXJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDg3Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW1nX1ByZXNlbnRhdGlvbkltZ0hhc05vbk51bGxBbHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDkwLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwOTcuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQXBwbGljYXRpb25MYW5kbWFya3NcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDk5Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9BcHBsaWNhdGlvbkxhbmRtYXJrTGFiZWxcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTAwLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTAxLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfTGFiZWxfVGFyZ2V0SW52aXNpYmxlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTExMi5odG1sXCJdLFxuICAgIFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTExNy5odG1sXCJdLFxuICAgIFwiSEFBQ19BdWRpb19WaWRlb19UcmlnZ2VyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTExOS5odG1sXCJdLFxuICAgIFwiSEFBQ19BcmlhX0ltZ0FsdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExMjguaHRtbFwiXSxcbiAgICBcIkhBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExMzIuaHRtbFwiXSxcbiAgICBcIkhBQUNfQWNjZXNza2V5X05lZWRMYWJlbFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNDAuaHRtbFwiXSxcbiAgICBcIkhBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE0MS5odG1sXCJdLFxuICAgIFwiSEFBQ19DYW52YXNcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTQzLmh0bWxcIl0sXG4gICAgXCJIQUFDX0ZpZ3VyZV9sYWJlbFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNDQuaHRtbFwiXSxcbiAgICBcIkhBQUNfSW5wdXRfUGxhY2Vob2xkZXJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTQ1Lmh0bWxcIl0sXG4gICAgXCJSUFRfRm9ybV9DaGFuZ2VFbXB0eVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNDcuaHRtbFwiXSxcbiAgICBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNDguaHRtbFwiXSxcbiAgICBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQV9QVlwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNDkuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9Cb2R5X0ZpcnN0QVNraXBzX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE1MC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0JvZHlfRmlyc3RBQ29udGFpbnNTa2lwVGV4dF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNTEuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX1JlcXVpcmVkQ2hpbGRyZW5fTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTUyLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9SZXF1aXJlZFBhcmVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNTMuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX0V2ZW50SGFuZGxlck1pc3NpbmdSb2xlX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE1NC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfV2lkZ2V0TGFiZWxzX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE1Ni5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE1Ny5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfUmVnaW9uTGFiZWxfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTU4Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE1OS5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTYwLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTYxLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvTGFuZG1hcmtzX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2Mi5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2My5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVOYXZpZ2F0aW9uTGFuZG1hcmtzX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2NC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTY1Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNjYuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX0FydGljbGVSb2xlTGFiZWxfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTY3Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUdyb3VwUm9sZXNfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTY4Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9Hcm91cFJvbGVMYWJlbF9JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNjkuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9JblNpYmxpbmdTZXRfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTcwLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTcyLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9Db250ZW50aW5mb1dpdGhOb01haW5fSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTczLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNzQuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE3Ni5odG1sXCJdLFxuICAgIFwiSUJNQV9Gb2N1c19UYWJiYWJsZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNzcuaHRtbFwiXSxcbiAgICBcIklCTUFfRm9jdXNfTXVsdGlUYWJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTc4Lmh0bWxcIl0sXG4gICAgXCJSUFRfU3R5bGVfVHJpZ2dlcjJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTgwLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zUmVxdWlyZUxhYmVsX0ltcGxpY2l0XzJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTgyLmh0bWxcIl0sXG4gICAgXCJIQUFDX01lZGlhX0RvY3VtZW50VHJpZ2dlcjJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTgzLmh0bWxcIl0sXG4gICAgXCJIQUFDX0FyaWFfRXJyb3JNZXNzYWdlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE4NC5odG1sXCJdLFxuICAgIFwiSEFBQ19MaXN0X0dyb3VwX0xpc3RJdGVtXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE4NS5odG1sXCJdLFxuICAgIFwiSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTg2Lmh0bWxcIl0sXG4gICAgXCJIQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExODcuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE4OC5odG1sXCJdLFxuICAgIFwiSEFBQ19Db21ib2JveF9NdXN0X0hhdmVfVGV4dF9JbnB1dFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExOTQuaHRtbFwiXSxcbiAgICBcIkhBQUNfQ29tYm9ib3hfRE9NX0ZvY3VzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE5NS5odG1sXCJdLFxuICAgIFwiSEFBQ19Db21ib2JveF9BdXRvY29tcGxldGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTk2Lmh0bWxcIl0sXG4gICAgXCJIQUFDX0NvbWJvYm94X0F1dG9jb21wbGV0ZV9JbnZhbGlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE5Ny5odG1sXCJdLFxuICAgIFwiSEFBQ19Db21ib2JveF9FeHBhbmRlZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExOTguaHRtbFwiXSxcbiAgICBcIkhBQUNfQ29tYm9ib3hfUG9wdXBcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTk5Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjFfU3R5bGVfVmlld3BvcnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMjAwLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjFfTGFiZWxfQWNjZXNzaWJsZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEyMDIuaHRtbFwiXSxcbiAgICBcIldDQUcyMV9JbnB1dF9BdXRvY29tcGxldGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMjAzLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW5wdXRfVmlzaWJsZUxhYmVsXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTIwNC5odG1sXCJdXG59XG5cblxuZXhwb3J0IHsgYTExeUhlbHAgfSIsIi8vIE5vIHt0b2tlbnN9IGluIHBhc3NpdmUgbWVzc2FnZXMsIHN1Y2ggYXMgMDogXCJhIHBhc3NpdmUgbWVzc2FnZS4uLlwiXG4vLyBObyBiYWNrLXRpY2tzIHVzZWQgaW4gbWVzc2FnZXMgaGVyZSBpbiAudHMgZmlsZSB0eXBlLCB1c2UgPCwgXCIsICdcbi8vIENoYW5nZXMgaW4gbWVzc2FnZXMgdXN1YWxseSByZXF1aXJlIGNvcnJlc3BvbmRpbmcgY2hhbmdlIGluIHRlc3QgY2FzZXNcbi8vXG5sZXQgYTExeU5scyA9IHtcbiAgICAvLyBBVSAtIERPTkVcbiAgICBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCI6IHtcbiAgICAgICAgMDogXCJNdWx0aXBsZSBsYW5kbWFya3Mgc2hvdWxkIGhhdmUgYSB1bmlxdWUgJ2FyaWEtbGFiZWxsZWRieScgb3IgJ2FyaWEtbGFiZWwnIG9yIGJlIG5lc3RlZCBpbiBhIGRpZmZlcmVudCBwYXJlbnQgcmVnaW9uc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIk11bHRpcGxlIFxcXCJ7MH1cXFwiIGxhbmRtYXJrcyB3aXRoIHRoZSBzYW1lIHBhcmVudCByZWdpb24gYXJlIGRpc3Rpbmd1aXNoZWQgYnkgdW5pcXVlICdhcmlhLWxhYmVsJyBvciAnYXJpYS1sYWJlbGxlZGJ5J1wiLFxuICAgICAgICAvLyBGYWlsXzAgb2NjdXJzIHdoZW4gd2UgaGF2ZTogbm90IGRpc2FtYmlndWF0ZWQgYnkgc2FtZSBwYXJlbnQsIGxhYmVscyBhcmUgYmxhbms6IFwiXCIgPT0gXCJcIiwgb3Igc2FtZSBhcmlhLWxhYmVsL2xhYmVsbGVkYnlcbiAgICAgICAgXCJGYWlsXzBcIjogXCJNdWx0aXBsZSBcXFwiezB9XFxcIiBsYW5kbWFya3Mgd2l0aCB0aGUgc2FtZSBwYXJlbnQgcmVnaW9uIGFyZSBub3QgZGlzdGluZ3Vpc2hlZCBmcm9tIG9uZSBhbm90aGVyIGJlY2F1c2UgdGhleSBoYXZlIHRoZSBzYW1lIFxcXCJ7MX1cXFwiIGxhYmVsXCIgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTGlzdF9NaXN1c2VcIjoge1xuICAgICAgICAwOiBcIkxpc3QgZWxlbWVudHMgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgbGlzdHMgb2YgcmVsYXRlZCBpdGVtc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJMaXN0IGVsZW1lbnQgaXMgbWlzc2luZyBvciBpbXByb3Blcmx5IHN0cnVjdHVyZWRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01hcnF1ZWVfVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IFwiVGhlIDxtYXJxdWVlPiBlbGVtZW50IGlzIG9ic29sZXRlIGFuZCBzaG91bGQgbm90IGJlIHVzZWRcIixcbiAgICAgICAgXCJQYXNzZWRfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiU2Nyb2xsaW5nIGNvbnRlbnQgZm91bmQgdGhhdCB1c2VzIHRoZSBvYnNvbGV0ZSA8bWFycXVlZT4gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSGVhZGVyc19GZXdXb3Jkc1wiOiB7XG4gICAgICAgIDA6IFwiSGVhZGluZyBlbGVtZW50cyBtdXN0IG5vdCBiZSB1c2VkIGZvciBwcmVzZW50YXRpb25cIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgdGhlIGhlYWRpbmcgZWxlbWVudCBpcyBhIGdlbnVpbmUgaGVhZGluZ1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbEltYWdlXCI6IHtcbiAgICAgICAgMDogXCJUaGUgPGlucHV0PiBlbGVtZW50IG9mIHR5cGUgXFxcImltYWdlXFxcIiBzaG91bGQgaGF2ZSBhIHRleHQgYWx0ZXJuYXRpdmVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJJbWFnZSBidXR0b24gcHJvdmlkZXMgYWx0ZXJuYXRpdmUgdGV4dCB1c2luZyB0aGUgJ2FsdCcgYXR0cmlidXRlXCIsXG4gICAgICAgIFwiUGFzc18xXCI6IFwiSW1hZ2UgYnV0dG9uIHByb3ZpZGVzIGFsdGVybmF0aXZlIHRleHQgdXNpbmcgYSBBUklBIGxhYmVsXCIsXG4gICAgICAgIFwiUGFzc18yXCI6IFwiSW1hZ2UgYnV0dG9uIHByb3ZpZGVzIGFsdGVybmF0aXZlIHRleHQgdXNpbmcgdGhlICd0aXRsZScgYXR0cmlidXRlXCIsXG4gICAgICAgIFwiRmFpbFwiOiBcIlRoZSA8aW5wdXQ+IGVsZW1lbnQgb2YgdHlwZSBcXFwiaW1hZ2VcXFwiIGhhcyBubyB0ZXh0IGFsdGVybmF0aXZlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9JbWdfVXNlbWFwVmFsaWRcIjoge1xuICAgICAgICAwOiBcIlNlcnZlci1zaWRlIGltYWdlIG1hcCBob3Qtc3BvdHMgbXVzdCBoYXZlIGR1cGxpY2F0ZSB0ZXh0IGxpbmtzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlNlcnZlci1zaWRlIGltYWdlIG1hcCBob3Qtc3BvdHMgZG8gbm90IGhhdmUgZHVwbGljYXRlIHRleHQgbGlua3NcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX09iamVjdF9IYXNUZXh0XCI6IHtcbiAgICAgICAgMDogXCI8b2JqZWN0PiBlbGVtZW50cyBtdXN0IGhhdmUgYSB0ZXh0IGFsdGVybmF0aXZlIGZvciB0aGUgY29udGVudCByZW5kZXJlZCBieSB0aGUgb2JqZWN0XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJBbiA8b2JqZWN0PiBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSB0ZXh0IGFsdGVybmF0aXZlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9BcHBsZXRfSGFzQWx0XCI6IHtcbiAgICAgICAgMDogXCI8YXBwbGV0PiBlbGVtZW50cyBtdXN0IHByb3ZpZGUgYW4gJ2FsdCcgYXR0cmlidXRlIGFuZCBhbiBhbHRlcm5hdGl2ZSBkZXNjcmlwdGlvblwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQW4gPGFwcGxldD4gZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuICdhbHQnIGF0dHJpYnV0ZSB0aGF0IHByb3ZpZGVzIGEgc2hvcnQgdGV4dCBhbHRlcm5hdGl2ZVwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlRoZSAnYWx0JyBhdHRyaWJ1dGUgdmFsdWUgZm9yIGFuIDxhcHBsZXQ+IGVsZW1lbnQgZHVwbGljYXRlcyB0aGUgJ2NvZGUnIGF0dHJpYnV0ZVwiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIkFuIDxhcHBsZXQ+IGVsZW1lbnQgcHJvdmlkZXMgYWx0ZXJuYXRpdmUgdGV4dCwgYnV0IGRvZXMgbm90IHByb3ZpZGUgaW5uZXIgY29udGVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfQXVkaW9UcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogXCJBdWRpbyBpbmZvcm1hdGlvbiBzaG91bGQgYWxzbyBiZSBhdmFpbGFibGUgaW4gdGV4dCBmb3JtXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJNYW51YWxfMVwiOiBcIlByb3ZpZGUgdHJhbnNjcmlwdHMgZm9yIGF1ZGlvIGZpbGVzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9CbG9ja3F1b3RlX0hhc0NpdGVcIjoge1xuICAgICAgICAwOiBcIlVzZSA8YmxvY2txdW90ZT4gb25seSBmb3IgcXVvdGF0aW9ucywgbm90IGluZGVudGF0aW9uXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IDxibG9ja3F1b3RlPiBpcyB1c2VkIG9ubHkgZm9yIHF1b3RhdGlvbnMsIG5vdCBpbmRlbnRhdGlvblwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWV0YV9SZWZyZXNoXCI6IHtcbiAgICAgICAgMDogXCJQYWdlcyBzaG91bGQgbm90IHJlZnJlc2ggYXV0b21hdGljYWxseVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgcGFnZSBpcyBub3QgYmVpbmcgY2F1c2VkIHRvIHJlZnJlc2ggYXV0b21hdGljYWxseVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRnJhbWVfSGFzVGl0bGVcIjoge1xuICAgICAgICAwOiBcIklubGluZSBmcmFtZXMgbXVzdCBoYXZlIGEgdW5pcXVlLCBub24tZW1wdHkgJ3RpdGxlJyBhdHRyaWJ1dGVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIklubGluZSBmcmFtZSBkb2VzIG5vdCBoYXZlIGEgJ3RpdGxlJyBhdHRyaWJ1dGVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZm9ybSBjb250cm9sIG11c3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGxhYmVsXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJGb3JtIGNvbnRyb2wgZWxlbWVudCA8ezB9PiBoYXMgbm8gYXNzb2NpYXRlZCBsYWJlbFwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIkZvcm0gY29udHJvbCB3aXRoIFxcXCJ7MH1cXFwiIHJvbGUgaGFzIG5vIGFzc29jaWF0ZWQgbGFiZWxcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX0FsdEJyaWVmXCI6IHtcbiAgICAgICAgMDogXCJBbHRlcm5hdGl2ZSB0ZXh0IGluICdhbHQnIGF0dHJpYnV0ZSBzaG91bGQgYmUgYnJpZWYgKDwxNTAgY2hhcmFjdGVycylcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVGV4dCBhbHRlcm5hdGl2ZSBpcyBtb3JlIHRoYW4gMTUwIGNoYXJhY3RlcnNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dFwiOiB7XG4gICAgICAgIDA6IFwiVXNlcnMgc2hvdWxkIGJlIHdhcm5lZCBpbiBhZHZhbmNlIGlmIHRoZWlyIGlucHV0IGFjdGlvbiB3aWxsIG9wZW4gYSBuZXcgd2luZG93IG9yIG90aGVyd2lzZSBjaGFuZ2UgdGhlaXIgY29udGV4dFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJJbmZvcm0gdGhlIHVzZXIgd2hlbiB0aGVpciBpbnB1dCBhY3Rpb24gd2lsbCBvcGVuIGEgbmV3IHdpbmRvdyBvciBvdGhlcndpc2UgY2hhbmdlIHRoZWlyIGNvbnRleHRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0FyZWFfSGFzQWx0XCI6IHtcbiAgICAgICAgMDogXCI8YXJlYT4gZWxlbWVudHMgaW4gYW4gaW1hZ2UgbWFwIG11c3QgaGF2ZSBhIHRleHQgYWx0ZXJuYXRpdmVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIjxhcmVhPiBlbGVtZW50IGluIGFuIGltYWdlIG1hcCBoYXMgbm8gdGV4dCBhbHRlcm5hdGl2ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfSW1nQ29sb3JVc2FnZVwiOiB7XG4gICAgICAgIDA6IFwiRG8gbm90IHVzZSBjb2xvciBhcyB0aGUgb25seSBtZWFucyB0byBjb252ZXkgaW5mb3JtYXRpb24sIHByb3ZpZGUgYW4gYWRkaXRpb25hbCBub24tY29sb3IgY3VlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSBjb2xvciBpcyBub3QgdGhlIG9ubHkgbWVhbnMgdG8gY29udmV5IGluZm9ybWF0aW9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9NZXRhX1JlZGlyZWN0WmVyb1wiOiB7XG4gICAgICAgIDA6IFwiUGFnZSBzaG91bGQgbm90IGF1dG9tYXRpY2FsbHkgcmVmcmVzaCB3aXRob3V0IHdhcm5pbmcgb3Igb3B0aW9uIHRvIHR1cm4gaXQgb2ZmIG9yIGFkanVzdCB0aGUgdGltZSBsaW1pdFwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkNoZWNrIHBhZ2UgZG9lcyBub3QgYXV0b21hdGljYWxseSByZWZyZXNoIHdpdGhvdXQgd2FybmluZyBvciBvcHRpb25zXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbGVtX0RlcHJlY2F0ZWRcIjoge1xuICAgICAgICAwOiBcIkF2b2lkIHVzZSBvZiBvYnNvbGV0ZSBsYW5ndWFnZSBmZWF0dXJlcyBpZiBwb3NzaWJsZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJPYnNvbGV0ZSBsYW5ndWFnZSBmZWF0dXJlcyBhcmUgYmVpbmcgdXNlZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfQmxvY2txdW90ZV9XcmFwc1RleHRRdW90ZVwiOiB7XG4gICAgICAgIDA6IFwiUXVvdGF0aW9ucyBzaG91bGQgYmUgbWFya2VkIHdpdGggPHE+IG9yIDxibG9ja3F1b3RlPiBlbGVtZW50c1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJJZiB0aGUgZm9sbG93aW5nIHRleHQgaXMgYSBxdW90YXRpb24sIG1hcmsgaXQgYXMgYSA8cT4gb3IgPGJsb2NrcXVvdGU+IGVsZW1lbnQ6IHswfVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5XCI6IHtcbiAgICAgICAgMDogXCJBbGwgaW50ZXJhY3RpdmUgY29udGVudCB3aXRoIG1vdXNlIGV2ZW50IGhhbmRsZXJzIG11c3QgaGF2ZSBlcXVpdmFsZW50IGtleWJvYXJkIGFjY2Vzc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiTWFudWFsXzFcIjogXCJDb25maXJtIHRoZSA8ezB9PiBlbGVtZW50IHdpdGggbW91c2UgZXZlbnQgaGFuZGxlcihzKSAnezF9JyBoYXMgYSBjb3JyZXNwb25kaW5nIGtleWJvYXJkIGhhbmRsZXIocylcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0RvY19IYXNUaXRsZVwiOiB7XG4gICAgICAgIDA6IFwiVGhlIHBhZ2Ugc2hvdWxkIGhhdmUgYSB0aXRsZSB0aGF0IGNvcnJlY3RseSBpZGVudGlmaWVzIHRoZSBzdWJqZWN0IG9mIHRoZSBwYWdlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNaXNzaW5nIDxoZWFkPiBlbGVtZW50IHNvIHRoZXJlIGNhbiBiZSBubyA8dGl0bGU+IGVsZW1lbnQgcHJlc2VudFwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIk1pc3NpbmcgPHRpdGxlPiBlbGVtZW50IGluIDxoZWFkPiBlbGVtZW50XCIsXG4gICAgICAgIFwiRmFpbF8zXCI6IFwiVGhlIDx0aXRsZT4gZWxlbWVudCBpcyBlbXB0eSAobm8gaW5uZXJIVE1MKVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfQmxvY2tfU2hvdWxkQmVIZWFkaW5nXCI6IHtcbiAgICAgICAgMDogXCJIZWFkaW5nIHRleHQgbXVzdCB1c2UgYSBoZWFkaW5nIGVsZW1lbnRcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkNoZWNrIGlmIHRoaXMgdGV4dCBzaG91bGQgYmUgbWFya2VkIHVwIGFzIGEgaGVhZGluZzogezB9XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9Gb3JtX0hhc1N1Ym1pdFwiOiB7XG4gICAgICAgIDA6IFwiQSA8Zm9ybT4gZWxlbWVudCBzaG91bGQgaGF2ZSBhIHN1Ym1pdCBidXR0b24gb3IgYW4gaW1hZ2UgYnV0dG9uXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGUgPGZvcm0+IGVsZW1lbnQgaGFzIGEgc3VibWl0IGJ1dHRvbiBvciBhbiBpbWFnZSBidXR0b25cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0VsZW1fVW5pcXVlSWRcIjoge1xuICAgICAgICAwOiBcIkVsZW1lbnQgJ2lkJyBhdHRyaWJ1dGUgdmFsdWVzIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGRvY3VtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgPHswfT4gZWxlbWVudCBoYXMgdGhlIGlkIFxcXCJ7MX1cXFwiIHRoYXQgaXMgZW1wdHlcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJUaGUgPHswfT4gZWxlbWVudCBoYXMgdGhlIGlkIFxcXCJ7MX1cXFwiIHRoYXQgaXMgYWxyZWFkeSBpbiB1c2VcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0ZvbnRfQ29sb3JJbkZvcm1cIjoge1xuICAgICAgICAwOiBcIkNvbWJpbmUgY29sb3IgYW5kIGRlc2NyaXB0aXZlIG1hcmt1cCB0byBpbmRpY2F0ZSByZXF1aXJlZCBmb3JtIGZpZWxkc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJDaGVjayBjb2xvciBpcyBub3QgdXNlZCBhcyB0aGUgb25seSB2aXN1YWwgbWVhbnMgdG8gY29udmV5IHdoaWNoIGZpZWxkcyBhcmUgcmVxdWlyZWRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0xhYmVsX1VuaXF1ZUZvclwiOiB7XG4gICAgICAgIDA6IFwiRm9ybSBjb250cm9scyBzaG91bGQgaGF2ZSBleGFjdGx5IG9uZSBsYWJlbFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiRm9ybSBjb250cm9sIGhhcyBtb3JlIHRoYW4gb25lIGxhYmVsXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9JbWdfQWx0Q29tbW9uTWlzdXNlXCI6IHtcbiAgICAgICAgMDogXCInYWx0JyBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIGdvb2QgaW5saW5lIHJlcGxhY2VtZW50IGZvciB0aGUgaW1hZ2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgdGhlIGZpbGUgbmFtZSBzZXJ2ZXMgYXMgYSBnb29kIGlubGluZSByZXBsYWNlbWVudCBmb3IgdGhlIGltYWdlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9JbWdfTG9uZ0Rlc2NyaXB0aW9uMlwiOiB7XG4gICAgICAgIDA6IFwiIFRoZSAnbG9uZ2Rlc2MnIGF0dHJpYnV0ZSBtdXN0IHJlZmVyZW5jZSBIVE1MIGNvbnRlbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZGVzaWduYXRlZCBieSB0aGUgJ2xvbmdkZXNjJyBhdHRyaWJ1dGUgY29udGFpbnMgdmFsaWQgSFRNTCBjb250ZW50IChmaWxlIGV4dGVuc2lvbiBub3QgcmVjb2duaXplZClcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19IYXNBbHRcIjoge1xuICAgICAgICAwOiBcIkltYWdlcyBtdXN0IGhhdmUgYW4gJ2FsdCcgYXR0cmlidXRlIHdpdGggYSBzaG9ydCB0ZXh0IGFsdGVybmF0aXZlIGlmIHRoZXkgY29udmV5IG1lYW5pbmcsIG9yICdhbHQ9XFxcIlxcXCIgaWYgZGVjb3JhdGl2ZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiSW1hZ2UgJ2FsdCcgYXR0cmlidXRlIHZhbHVlIGNvbnNpc3RzIG9ubHkgb2Ygd2hpdGVzcGFjZVwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIkltYWdlIGRvZXMgbm90IGhhdmUgYW4gJ2FsdCcgYXR0cmlidXRlIHNob3J0IHRleHQgYWx0ZXJuYXRpdmVcIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCJJbWFnZSBkb2VzIG5vdCBoYXZlIGFuICdhbHQnIGF0dHJpYnV0ZSBhbmQgJ3RpdGxlJyBhdHRyaWJ1dGUgdmFsdWUgY29uc2lzdHMgb25seSBvZiB3aGl0ZXNwYWNlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VcIjoge1xuICAgICAgICAwOiBcIkltYWdlcyBpbmNsdWRlZCBieSB1c2luZyBDU1MgYWxvbmUgbXVzdCBub3QgY29udmV5IGltcG9ydGFudCBpbmZvcm1hdGlvblwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoZSBDU1MgYmFja2dyb3VuZCBpbWFnZSBkb2VzIG5vdCBjb252ZXkgaW1wb3J0YW50IGluZm9ybWF0aW9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9QcmVfQVNDSUlBcnRcIjoge1xuICAgICAgICAwOiBcIkFTQ0lJIGFydCBtdXN0IGhhdmUgYSB0ZXh0IGFsdGVybmF0aXZlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IEFTQ0lJIGFydCBoYXMgYSB0ZXh0IGFsdGVybmF0aXZlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIjoge1xuICAgICAgICAwOiBcIlByZS1yZWNvcmRlZCBtZWRpYSBzaG91bGQgaGF2ZSBhbiBhdWRpbyB0cmFjayB0aGF0IGRlc2NyaWJlcyB2aXN1YWwgaW5mb3JtYXRpb25cIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IFwiVmVyaWZ5IGF2YWlsYWJpbGl0eSBvZiBhIHVzZXItc2VsZWN0YWJsZSBhdWRpbyB0cmFjayB3aXRoIGRlc2NyaXB0aW9uIG9mIHZpc3VhbCBjb250ZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZWRpYV9BdWRpb1ZpZGVvQWx0RmlsZW5hbWVcIjoge1xuICAgICAgICAwOiBcIkF1ZGlvIG9yIHZpZGVvIG9uIHRoZSBwYWdlIG11c3QgaGF2ZSBhIHNob3J0IHRleHQgYWx0ZXJuYXRpdmUgdGhhdCBkZXNjcmliZXMgdGhlIG1lZGlhIGNvbnRlbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiRmlsZW5hbWUgdXNlZCBhcyBsYWJlbCBmb3IgZW1iZWRkZWQgYXVkaW8gb3IgdmlkZW9cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMVwiOiB7XG4gICAgICAgIDA6IFwiQ29tYmluZSBjb2xvciBhbmQgZGVzY3JpcHRpdmUgbWFya3VwIHRvIGNvbnZleSBpbmZvcm1hdGlvblwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgY29sb3IgaXMgbm90IHVzZWQgYXMgdGhlIG9ubHkgdmlzdWFsIG1lYW5zIG9mIGNvbnZleWluZyBpbmZvcm1hdGlvblwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwXCI6IHtcbiAgICAgICAgMDogXCJHcm91cHMgb2YgcmVsYXRlZCBvcHRpb25zIHdpdGhpbiBhIHNlbGVjdGlvbiBsaXN0IHNob3VsZCBiZSBncm91cGVkIHdpdGggPG9wdGdyb3VwPlwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiR3JvdXAgb2YgcmVsYXRlZCBvcHRpb25zIG1heSBuZWVkIDxvcHRncm91cD5cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0xpc3RfVXNlTWFya3VwXCI6IHtcbiAgICAgICAgMDogXCJVc2UgcHJvcGVyIEhUTUwgbGlzdCBlbGVtZW50cyB0byBjcmVhdGUgbGlzdHNcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB3aGV0aGVyIHRoaXMgaXMgYSBsaXN0IHRoYXQgc2hvdWxkIHVzZSBIVE1MIGxpc3QgZWxlbWVudHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFcIjoge1xuICAgICAgICAwOiBcIlNjcmlwdHMgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGVtdWxhdGUgbGlua3NcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiUG9zc2libGUgdXNlIG9mIGEgc2NyaXB0IHRvIGVtdWxhdGUgYSBsaW5rXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UYWJsZV9TdHJ1Y3R1cmVcIjoge1xuICAgICAgICAwOiBcIlRhYmxlIGVsZW1lbnRzIHdpdGggJ3JvbGU9XFxcInByZXNlbnRhdGlvblxcXCIgb3IgJ3JvbGU9XFxcIm5vbmVcXFwiIHNob3VsZCBub3QgaGF2ZSBzdHJ1Y3R1cmFsIGVsZW1lbnRzIG9yIGF0dHJpYnV0ZXNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSA8ezB9PiBlbGVtZW50IHdpdGggXFxcInByZXNlbnRhdGlvblxcXCIgcm9sZSBvciBcXFwibm9uZVxcXCIgcm9sZSBoYXMgc3RydWN0dXJhbCBlbGVtZW50KHMpIGFuZC9vciBhdHRyaWJ1dGUocykgJ3sxfSdcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19BbHRUcmlnZ2VyTm9uRGVjb3JhdGl2ZVwiOiB7XG4gICAgICAgIDA6IFwiQ29udmV5IGluZm9ybWF0aW9uIHdpdGggdGV4dCByYXRoZXIgdGhhbiBpbWFnZXMgb2YgdGV4dFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCBpbWFnZXMgb2YgdGV4dCBhcmUgbm90IHVzZWQgdG8gY29udmV5IGluZm9ybWF0aW9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9CbGlua19BbHdheXNUcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogXCJDb250ZW50IHRoYXQgYmxpbmtzIHBlcnNpc3RlbnRseSBtdXN0IG5vdCBiZSB1c2VkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJDb250ZW50IGZvdW5kIHRoYXQgYmxpbmtzIHBlcnNpc3RlbnRseVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfQmxpbmtfQ1NTVHJpZ2dlcjFcIjoge1xuICAgICAgICAwOiBcIkRvIG5vdCB1c2UgdGhlIFxcXCJibGlua1xcXCIgdmFsdWUgb2YgdGhlICd0ZXh0LWRlY29yYXRpb24nIHByb3BlcnR5IGZvciBsb25nZXIgdGhhbiBmaXZlIHNlY29uZHNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiQ2hlY2sgdGhlIFxcXCJibGlua1xcXCIgdmFsdWUgb2YgdGhlIENTUyAndGV4dC1kZWNvcmF0aW9uJyBwcm9wZXJ0eSBpcyBub3QgdXNlZCBmb3IgbW9yZSB0aGFuIHRoYW4gZml2ZSBzZWNvbmRzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9IdG1sX1NraXBOYXZcIjoge1xuICAgICAgICAwOiBcIlByb3ZpZGUgYSB3YXkgdG8gYnlwYXNzIGJsb2NrcyBvZiBjb250ZW50IHRoYXQgYXJlIHJlcGVhdGVkIG9uIG11bHRpcGxlIFdlYiBwYWdlc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhlcmUgaXMgYSB3YXkgdG8gYnlwYXNzIGJsb2NrcyBvZiBjb250ZW50IHRoYXQgYXJlIHJlcGVhdGVkIG9uIG11bHRpcGxlIFdlYiBwYWdlc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfVGl0bGVfVmFsaWRcIjoge1xuICAgICAgICAwOiBcIlBhZ2UgPHRpdGxlPiBzaG91bGQgYmUgYSBkZXNjcmlwdGl2ZSB0aXRsZSwgcmF0aGVyIHRoYW4gYSBmaWxlbmFtZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiUGFnZSA8dGl0bGU+IGlzIGVtcHR5XCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzJcIjogXCJWZXJpZnkgdGhhdCB1c2luZyB0aGUgZmlsZW5hbWUgYXMgdGhlIHBhZ2UgPHRpdGxlPiB2YWx1ZSBpcyBkZXNjcmlwdGl2ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSGVhZGVyX0hhc0NvbnRlbnRcIjoge1xuICAgICAgICAwOiBcIkhlYWRpbmcgZWxlbWVudHMgbXVzdCBwcm92aWRlIGRlc2NyaXB0aXZlIHRleHRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkhlYWRpbmcgZWxlbWVudCBoYXMgbm8gZGVzY3JpcHRpdmUgY29udGVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgLy8gSkNIIC0gMDogcHJvdmlkZXMgdGhlIGdlbmVyYWwgREFQIG1lc3NhZ2UgZm9yIHRoZSBydWxlXG4gICAgLy8gICAgICAgXCJQYXNzX2lcIiA/Pz9cbiAgICAvLyAgICAgICBcIkZhaWxfalwiIGRlc2NyaXB0aXZlIG1lc3NhZ2UgZm9yIHNwZWNpZmljIGZhaWx1cmVcbiAgICAvLyAgICAgICBcIlBvdGVudGlhbF9rXCIgZGVzY3JpcHRpdmUgbWVzc2FnZSBkZXNjcmliaW5nIGNhc2Ugd2hlbiBpdCBpcyBub3QgYSBmYWlsdXJlIFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnV0IG5lZWRzIG90aGVyIGNoZWNraW5nIHRvIGNvbmZpcm0gcGFzcyBvclxuICAgIFwiV0NBRzIwX0h0bWxfSGFzTGFuZ1wiOiB7XG4gICAgICAgIDA6IFwiUGFnZSBtdXN0IGlkZW50aWZ5IHRoZSBkZWZhdWx0IGxhbmd1YWdlIG9mIHRoZSBkb2N1bWVudCB3aXRoIGEgJ2xhbmcnIGF0dHJpYnV0ZVwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJQYWdlIGxhbmd1YWdlIGRldGVjdGVkIGFzIFxcXCJ7MH1cXFwiXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiUGFnZSBkZXRlY3RlZCBhcyBYSFRNTCAxLjAsIGJ1dCBoYXMgbmVpdGhlciAnbGFuZycgbm9yICd4bWw6bGFuZycgYXR0cmlidXRlc1wiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlBhZ2UgZGV0ZWN0ZWQgYXMgWEhUTUwsIGJ1dCBkb2VzIG5vdCBoYXZlIGFuICd4bWw6bGFuZycgYXR0cmlidXRlXCIsXG4gICAgICAgIFwiRmFpbF8zXCI6IFwiUGFnZSBkZXRlY3RlZCBhcyBIVE1MLCBidXQgZG9lcyBub3QgaGF2ZSBhICdsYW5nJyBhdHRyaWJ1dGVcIixcbiAgICAgICAgXCJGYWlsXzRcIjogXCJQYWdlIGRldGVjdGVkIHdpdGggJ2xhbmcnIGFuZCAneG1sOmxhbmcnIGF0dHJpYnV0ZXMgYW5kIHByaW1hcnkgbGFuZ3VhZ2VzIGRvIG5vdCBtYXRjaDogXFxcInswfVxcXCIsIFxcXCJ7MX1cXFwiXCIsXG4gICAgICAgIFwiRmFpbF81XCI6IFwiUGFnZSBkZXRlY3RlZCB3aXRoICdsYW5nJyBhbmQgJ3htbDpsYW5nJyBhdHRyaWJ1dGVzIHRoYXQgZG8gbm90IG1hdGNoOiBcXFwiezB9XFxcIiwgXFxcInsxfVxcXCJcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfNVwiOiBcIlBhZ2UgZGV0ZWN0ZWQgYXMgWEhUTUwgMS4wIHdpdGggb25seSBhICdsYW5nJyBhdHRyaWJ1dGUuIENvbmZpcm0gdGhhdCBwYWdlIGlzIG9ubHkgZGVsaXZlcmVkIHZpYSB0ZXh0L2h0bWwgbWltZSB0eXBlXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzZcIjogXCJQYWdlIGRldGVjdGVkIGFzIFhIVE1MIDEuMCB3aXRoIG9ubHkgYW4gJ3htbDpsYW5nJyBhdHRyaWJ1dGUuIENvbmZpcm0gdGhhdCBwYWdlIGlzIG9ubHkgZGVsaXZlcmVkIHZpYSB4bWwgbWltZSB0eXBlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9Gb3JtX1RhcmdldEFuZFRleHRcIjoge1xuICAgICAgICAwOiBcIlVzZXIgc2hvdWxkIGJlIGluZm9ybWVkIGluIGFkdmFuY2Ugd2hlbiBpbnRlcmFjdGluZyB3aXRoIGNvbnRlbnQgY2F1c2VzIGEgY2hhbmdlIG9mIGNvbnRleHRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgaW50ZXJhY3Rpbmcgd2l0aCBjb250ZW50IHdpbGwgbm90IG9wZW4gcG9wLXVwIHdpbmRvd3Mgb3IgY2hhbmdlIHRoZSBhY3RpdmUgd2luZG93IHdpdGhvdXQgaW5mb3JtaW5nIHRoZSB1c2VyXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9BX0hhc1RleHRcIjoge1xuICAgICAgICAwOiBcIkh5cGVybGlua3MgbXVzdCBoYXZlIGEgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGVpciBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiSHlwZXJsaW5rIGhhcyBhIGRlc2NyaXB0aW9uIG9mIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiSHlwZXJsaW5rIGhhcyBubyBsaW5rIHRleHQsIGxhYmVsIG9yIGltYWdlIHdpdGggYSB0ZXh0IGFsdGVybmF0aXZlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRcIjoge1xuICAgICAgICAwOiBcIiA8ZmllbGRzZXQ+IGVsZW1lbnRzIG11c3QgaGF2ZSBhIHNpbmdsZSwgbm9uLWVtcHR5IDxsZWdlbmQ+IGFzIGEgbGFiZWxcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIjxmaWVsZHNldD4gZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgPGxlZ2VuZD5cIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCI8ZmllbGRzZXQ+IGVsZW1lbnQgaGFzIG1vcmUgdGhhbiBvbmUgPGxlZ2VuZD5cIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCI8ZmllbGRzZXQ+IGVsZW1lbnQgPGxlZ2VuZD4gaXMgZW1wdHlcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX1ZpZGVvT2JqZWN0VHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IFwiTGl2ZSBtZWRpYSAoc3RyZWFtaW5nIHZpZGVvIHdpdGggYXVkaW8pIHNob3VsZCBoYXZlIGNhcHRpb25zIGZvciBhdWRpbyBjb250ZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJNYW51YWxfMVwiOiBcIlZlcmlmeSBjYXB0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGxpdmUgbWVkaWEgKHN0cmVhbWluZyB2aWRlbyB3aXRoIGF1ZGlvKVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfVGV4dF9TZW5zb3J5UmVmZXJlbmNlXCI6IHtcbiAgICAgICAgMDogXCJJbnN0cnVjdGlvbnMgbXVzdCBiZSBtZWFuaW5nZnVsIHdpdGhvdXQgc2hhcGUgb3IgbG9jYXRpb24gd29yZHNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiSWYgdGhlIHdvcmQocykgJ3swfScgaXMgcGFydCBvZiBpbnN0cnVjdGlvbnMgZm9yIHVzaW5nIHBhZ2UgY29udGVudCwgY2hlY2sgaXQgaXMgc3RpbGwgdW5kZXJzdGFuZGFibGUgd2l0aG91dCB0aGlzIGxvY2F0aW9uIG9yIHNoYXBlIGluZm9ybWF0aW9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbWJlZF9BdXRvU3RhcnRcIjoge1xuICAgICAgICAwOiBcIk1lY2hhbmlzbSBtdXN0IGJlIGF2YWlsYWJsZSB0byBwYXVzZSBvciBzdG9wIGFuZCBjb250cm9sIHRoZSB2b2x1bWUgb2YgdGhlIGF1ZGlvIHRoYXQgcGxheXMgYXV0b21hdGljYWxseVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhlcmUgaXMgYSBtZWNoYW5pc20gdG8gcGF1c2Ugb3Igc3RvcCBhbmQgY29udHJvbCB0aGUgdm9sdW1lIGZvciB0aGUgYXVkaW8gdGhhdCBwbGF5cyBhdXRvbWF0aWNhbGx5XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9IaW5kZXJGb2N1czFcIjoge1xuICAgICAgICAwOiBcIlRoZSBrZXlib2FyZCBmb2N1cyBpbmRpY2F0b3IgbXVzdCBiZSBoaWdobHkgdmlzaWJsZSB3aGVuIGRlZmF1bHQgYm9yZGVyIG9yIG91dGxpbmUgaXMgbW9kaWZpZWQgYnkgQ1NTXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkNoZWNrIHRoZSBrZXlib2FyZCBmb2N1cyBpbmRpY2F0b3IgaXMgaGlnaGx5IHZpc2libGUgd2hlbiB1c2luZyBDU1MgZWxlbWVudHMgZm9yIGJvcmRlciBvciBvdXRsaW5lXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9FbGVtX0xhbmdfVmFsaWRcIjoge1xuICAgICAgICAwOiBcIlRoZSBsYW5ndWFnZSBvZiBjb250ZW50IG11c3QgYmUgdmFsaWQgYW5kIHNwZWNpZmllZCBpbiBhY2NvcmRhbmNlIHdpdGggQkNQIDQ3XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiTGFuZyBoYXMgYSB2YWxpZCBwcmltYXJ5IGxhbmcgYW5kIGNvbmZvcm1zIHRvIEJDUCA0N1wiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlNwZWNpZmllZCAnbGFuZycgYXR0cmlidXRlIGRvZXMgbm90IGluY2x1ZGUgYSB2YWxpZCBwcmltYXJ5IGxhbmd1YWdlXCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiU3BlY2lmaWVkICdsYW5nJyBhdHRyaWJ1dGUgZG9lcyBub3QgY29uZm9ybSB0byBCQ1AgNDdcIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCJTcGVjaWZpZWQgJ2xhbmcnIGF0dHJpYnV0ZSBkb2VzIG5vdCBpbmNsdWRlIGEgdmFsaWQgcHJpbWFyeSBsYW5ndWFnZVwiLFxuICAgICAgICBcIkZhaWxfNFwiOiBcIlNwZWNpZmllZCAneG1sOmxhbmcnIGF0dHJpYnV0ZSBkb2VzIG5vdCBjb25mb3JtIHRvIEJDUCA0N1wiLFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudFwiOiB7XG4gICAgICAgIDA6IFwiVGhlIHRleHQgYWx0ZXJuYXRpdmUgZm9yIGFuIGltYWdlIHdpdGhpbiBhIGxpbmsgc2hvdWxkIG5vdCByZXBlYXQgdGhlIGxpbmsgdGV4dCBvciBhZGphY2VudCBsaW5rIHRleHRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkxpbmsgdGV4dCBpcyByZXBlYXRlZCBpbiBhbiBpbWFnZSAnYWx0JyB2YWx1ZSB3aXRoaW4gdGhlIHNhbWUgbGlua1wiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIkxpbmsgdGV4dCBvZiBwcmV2aW91cyBsaW5rIGlzIHJlcGVhdGVkIGluIGltYWdlICdhbHQnIHZhbHVlIG9mIGEgbGlua1wiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIkltYWdlICdhbHQnIHZhbHVlIHdpdGhpbiBhIGxpbmsgaXMgcmVwZWF0ZWQgaW4gbGluayB0ZXh0IG9mIHRoZSBsaW5rIGFmdGVyXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9FeHRlcm5hbFN0eWxlU2hlZXRcIjoge1xuICAgICAgICAwOiBcIkNoZWNrIGV4dGVybmFsIHN0eWxlIHNoZWV0cyB0byBlbnN1cmUgdGhhdCBDU1MgaXMgbm90IHVzZWQgdG8gYWRkIGltYWdlcyB0aGF0IGNvbnZleSBpbXBvcnRhbnQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbnRlbnQuXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkV4dGVybmFsIHN0eWxlIHNoZWV0cyBkZXRlY3RlZCBlbnN1cmUgdGhhdCBDU1MgZG9lcyBub3QgYWRkIGltYWdlcyB0aGF0IGNvbnZleSBpbXBvcnRhbnQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbnRlbnQuXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9IZWFkZXJfVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IFwiSGVhZGluZyB0ZXh0IHNob3VsZCBjb3JyZWN0bHkgZGVzY3JpYmUgdGhlIHN1YmplY3Qgb2YgdGhlIHdlYiBwYWdlIHNlY3Rpb25zXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCBoZWFkaW5nIHRleHQgY29ycmVjdGx5IGRlc2NyaWJlcyB0aGUgc3ViamVjdCBvZiBlYWNoIHdlYiBwYWdlIHNlY3Rpb25cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDJcIjoge1xuICAgICAgICAwOiBcIlNjcmlwdHMgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGVtdWxhdGUgbGlua3NcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgJ29uY2xpY2snIGV2ZW50cyBhcmUgbm90IHVzZWQgaW4gc2NyaXB0IHRvIGVtdWxhdGUgYSBsaW5rXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UYWJsZV9DYXBTdW1tUmVkdW5kYW50XCI6IHtcbiAgICAgICAgMDogXCJUaGUgdGFibGUgc3VtbWFyeSBtdXN0IG5vdCBkdXBsaWNhdGUgdGhlIGNhcHRpb25cIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSB0YWJsZSBzdW1tYXJ5IGR1cGxpY2F0ZXMgdGhlIGNhcHRpb25cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlXCI6IHtcbiAgICAgICAgMDogXCJUZXh0IGlucHV0cyBhbmQgPHNlbGVjdD4gZWxlbWVudHMgbXVzdCBoYXZlIGEgbGFiZWwgYmVmb3JlIHRoZSBpbnB1dCBjb250cm9sXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUZXh0IGlucHV0IGlzIG5lc3RlZCBpbiBsYWJlbCBzdWNoIHRoYXQgaW5wdXQgcHJlY2VkZXMgdGhlIGxhYmVsIHRleHRcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJMYWJlbCB0ZXh0IGlzIGxvY2F0ZWQgYWZ0ZXIgaXRzIGFzc29jaWF0ZWQgdGV4dCBpbnB1dCBvciA8c2VsZWN0PiBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9MYWJlbEFmdGVyXCI6IHtcbiAgICAgICAgMDogXCJDaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIG11c3QgaGF2ZSBhIGxhYmVsIGFmdGVyIHRoZSBpbnB1dCBjb250cm9sXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJDaGVja2JveCBvciByYWRpbyBidXR0b24gaXMgbmVzdGVkIGluIGxhYmVsLCBzbyBsYWJlbCBpcyBub3QgYWZ0ZXIgdGhlIGlucHV0IGNvbnRyb2xcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJMYWJlbCB0ZXh0IGlzIGxvY2F0ZWQgYmVmb3JlIGl0cyBhc3NvY2lhdGVkIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbiBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9FbWJlZF9IYXNOb0VtYmVkXCI6IHtcbiAgICAgICAgMDogXCI8ZW1iZWQ+IGVsZW1lbnRzIHNob3VsZCBiZSBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIG5vbi1lbWJlZGRlZCBlbGVtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IHRoZSA8ZW1iZWQ+IGVsZW1lbnQgaXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBub24tZW1iZWRkZWQgZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgLy8gICAgICAgXCJGYWlsXzJcIiBhZGRlZCBwZXIgSFRNTCA1IHNwZWNcbiAgICBcIldDQUcyMF9UYWJsZV9TY29wZV9WYWxpZFwiOiB7XG4gICAgICAgIDA6IFwiVmFsdWUgZm9yICdzY29wZScgYXR0cmlidXRlIG11c3QgYmUgXFxcInJvd1xcXCIsIFxcXCJjb2xcXFwiLCBcXFwicm93Z3JvdXBcXFwiLCBvciBcXFwiY29sZ3JvdXBcXFwiXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJWYWx1ZSBwcm92aWRlZCBpcyBpbnZhbGlkIGZvciB0aGUgJ3Njb3BlJyBhdHRyaWJ1dGVcIixcbiAgICAgICAgXCJGYWlsXzJcIjrCoFwiVGhlICdzY29wZScgYXR0cmlidXRlIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gYSA8dGg+IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19UaXRsZUVtcHR5V2hlbkFsdE51bGxcIjoge1xuICAgICAgICAwOiBcIldoZW4gdGhlIGltYWdlICdhbHQnIGF0dHJpYnV0ZSBpcyBlbXB0eSwgdGhlICd0aXRsZScgYXR0cmlidXRlIG11c3QgYWxzbyBiZSBlbXB0eVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIGltYWdlICdhbHQnIGF0dHJpYnV0ZSBpcyBlbXB0eSwgYnV0IHRoZSAndGl0bGUnIGF0dHJpYnV0ZSBpcyBub3QgZW1wdHlcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0luRmllbGRTZXRcIjoge1xuICAgICAgICAwOiBcIkdyb3VwcyBvZiBsb2dpY2FsbHkgcmVsYXRlZCBpbnB1dCBlbGVtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIHdpdGhpbiBhIDxmaWVsZHNldD4gZWxlbWVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJVc2UgdGhlIDxmaWVsZHNldD4gZWxlbWVudCB0byBncm91cCBsb2dpY2FsbHkgcmVsYXRlZCBpbnB1dCBlbGVtZW50c1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0XCI6IHtcbiAgICAgICAgMDogXCJSZWxhdGVkIHNldHMgb2YgcmFkaW8gYnV0dG9ucyBvciBjaGVja2JveGVzIHNob3VsZCBiZSBwcm9ncmFtbWF0aWNhbGx5IGdyb3VwZWRcIixcbiAgICAgICAgXCJQYXNzX0xvbmVOb2dyb3VwXCI6IFwiezB9IGdyb3VwaW5nIG5vdCByZXF1aXJlZCBmb3IgYSBjb250cm9sIG9mIHRoaXMgdHlwZVwiLFxuICAgICAgICBcIlBhc3NfR3JvdXBlZFwiOiBcInswfSBpbnB1dCBpcyBncm91cGVkIHdpdGggb3RoZXIgcmVsYXRlZCBjb250cm9scyB3aXRoIHRoZSBzYW1lIG5hbWVcIixcbiAgICAgICAgXCJQYXNzX1JhZGlvTm9OYW1lXCI6IFwiUmFkaW8gaW5wdXQgaXMgbm90IGdyb3VwZWQsIGJ1dCBwYXNzZXMgYmVjYXVzZSBpdCBoYXMgbm8gbmFtZSB0byBncm91cCB3aXRoIG90aGVyIHJhZGlvIGlucHV0c1wiLFxuICAgICAgICBcIkZhaWxfQ29udHJvbE5hbWVNaXNtYXRjaFwiOiBcInswfSBpbnB1dCBmb3VuZCB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lLCBcXFwiezJ9XFxcIiBhcyBhIHsxfSBpbnB1dFwiLFxuICAgICAgICBcIlBvdGVudGlhbF9Mb25lQ2hlY2tib3hcIjogXCJWZXJpZnkgdGhhdCB0aGlzIHVuZ3JvdXBlZCBjaGVja2JveCBpbnB1dCBpcyBub3QgcmVsYXRlZCB0byBvdGhlciBjaGVja2JveGVzXCIsXG4gICAgICAgIFwiUG90ZW50aWFsX1VubmFtZWRDaGVja2JveFwiOiBcIlZlcmlmeSB0aGF0IHRoaXMgdW4tbmFtZWQsIHVuZ3JvdXBlZCBjaGVja2JveCBpbnB1dCBpcyBub3QgcmVsYXRlZCB0byBvdGhlciBjaGVja2JveGVzXCIsXG4gICAgICAgIFwiRmFpbF9Ob3RHcm91cGVkT3RoZXJHcm91cGVkXCI6IFwiezB9IGlucHV0IGlzIG5vdCBpbiB0aGUgZ3JvdXAgd2l0aCBhbm90aGVyIHswfSB3aXRoIHRoZSBuYW1lIFxcXCJ7MX1cXFwiXCIsXG4gICAgICAgIFwiRmFpbF9Ob3RHcm91cGVkT3RoZXJOb3RHcm91cGVkXCI6IFwiezB9IGlucHV0IGFuZCBvdGhlcnMgd2l0aCB0aGUgbmFtZSBcXFwiezF9XFxcIiBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcIixcbiAgICAgICAgXCJGYWlsX05vdFNhbWVHcm91cFwiOiBcInswfSBpbnB1dCBpcyBpbiBhIGRpZmZlcmVudCBncm91cCB0aGFuIGFub3RoZXIgezB9IHdpdGggdGhlIG5hbWUgXFxcInsxfVxcXCJcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvblwiOiB7XG4gICAgICAgIDA6IFwiTm8gY2hhbmdlcyBvZiBjb250ZXh0IHNob3VsZCBvY2N1ciB3aGVuIGEgc2VsZWN0aW9uIHZhbHVlIHJlY2VpdmVzIGZvY3VzXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCBubyBjaGFuZ2Ugb2YgY29udGV4dCBvciBhY3Rpb24gb2NjdXJzIHdoZW4gc2VsZWN0aW9uIG9wdGlvbnMgaW4gdGhpcyBjb21wb25lbnQgcmVjZWl2ZSBmb2N1c1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfSGFzT25jaGFuZ2VcIjoge1xuICAgICAgICAwOiBcIlZlcmlmeSB0aGF0IGFueSBjaGFuZ2VzIG9mIGNvbnRleHQgYXJlIGV4cGxhaW5lZCBpbiBhZHZhbmNlIHRvIHRoZSB1c2VyXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IGFueSBjaGFuZ2VzIG9mIGNvbnRleHQgYXJlIGV4cGxhaW5lZCBpbiBhZHZhbmNlIHRvIHRoZSB1c2VyXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbWJlZF9IYXNBbHRcIjoge1xuICAgICAgICAwOiBcIlByb3ZpZGUgYWx0ZXJuYXRpdmUgY29udGVudCBmb3IgPGVtYmVkPiBlbGVtZW50c1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCB0aGUgPGVtYmVkPiBlbGVtZW50IGhhcyBhbHRlcm5hdGl2ZSBjb250ZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfTm9lbWJlZF9IYXNDb250ZW50XCI6IHtcbiAgICAgICAgMDogXCI8bm9lbWJlZD4gZWxlbWVudHMgc2hvdWxkIGNvbnRhaW4gZGVzY3JpcHRpdmUgdGV4dFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJBZGQgZGVzY3JpcHRpdmUgdGV4dCB0byB0aGUgPG5vZW1iZWQ+IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9DYXB0aW9uX0hhc0NvbnRlbnRcIjoge1xuICAgICAgICAwOiBcIkEgPGNhcHRpb24+IGVsZW1lbnQgZm9yIGEgPHRhYmxlPiBlbGVtZW50IG11c3QgY29udGFpbiBkZXNjcmlwdGl2ZSB0ZXh0XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgPHRhYmxlPiBlbGVtZW50IGhhcyBhbiBlbXB0eSA8Y2FwdGlvbj4gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX0NhcHRpb25fSW5UYWJsZVwiOiB7XG4gICAgICAgIDA6IFwiVGhlIDxjYXB0aW9uPiBlbGVtZW50IG11c3QgYmUgbmVzdGVkIGluc2lkZSB0aGUgYXNzb2NpYXRlZCA8dGFibGU+IGVsZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIjxjYXB0aW9uPiBlbGVtZW50IGlzIG5vdCBuZXN0ZWQgaW5zaWRlIGEgPHRhYmxlPiBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfTGFiZWxfSGFzQ29udGVudFwiOiB7XG4gICAgICAgIDA6IFwiQSA8bGFiZWw+IGVsZW1lbnQgbXVzdCBoYXZlIG5vbi1lbXB0eSBkZXNjcmlwdGl2ZSB0ZXh0IHRoYXQgaWRlbnRpZmllcyB0aGUgcHVycG9zZSBvZiB0aGUgaW50ZXJhY3RpdmUgY29tcG9uZW50XCIsXG4gICAgICAgIFwiUGFzc19SZWd1bGFyXCI6IFwiPGxhYmVsPiBlbGVtZW50IGhhcyBhY2Nlc3NpYmxlIG5hbWUgd2l0aCBpbm5lciBjb250ZW50XCIsXG4gICAgICAgIFwiUGFzc19BcmlhTGFiZWxcIjogXCI8bGFiZWw+IGVsZW1lbnQgaGFzIGFjY2Vzc2libGUgbmFtZSB2aWEgJ2FyaWEtbGFiZWwnXCIsXG4gICAgICAgIFwiUGFzc19MYWJlbGxlZEJ5XCI6IFwiPGxhYmVsPiBlbGVtZW50IGhhcyBhY2Nlc3NpYmxlIG5hbWUgdmlhICdhcmlhLWxhYmVsbGVkYnknXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIDxsYWJlbD4gZWxlbWVudCBkb2VzIG5vdCBoYXZlIGRlc2NyaXB0aXZlIHRleHQgdGhhdCBpZGVudGlmaWVzIHRoZSBleHBlY3RlZCBpbnB1dFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX0VsZW1fRGlyVmFsaWRcIjoge1xuICAgICAgICAwOiBcIidkaXInIGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIFxcXCJsdHJcXFwiLCBcXFwicnRsXFxcIiwgb3IgXFxcImF1dG9cXFwiXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJJbnZhbGlkIHZhbHVlIHVzZWQgZm9yIHRoZSAnZGlyJyBhdHRyaWJ1dGVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9GcmFtZV9TcmNIdG1sXCI6IHtcbiAgICAgICAgMDogXCJBIDxmcmFtZT4gY29udGFpbmluZyBub24tSFRNTCBjb250ZW50IG11c3QgYmUgbWFkZSBhY2Nlc3NpYmxlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSA8ZnJhbWU+IGNvbnRlbnQgaXMgYWNjZXNzaWJsZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiOiB7XG4gICAgICAgIDA6IFwiRm9yIGEgY29tcGxleCBkYXRhIHRhYmxlLCBhbGwgPHRoPiBhbmQgPHRkPiBlbGVtZW50cyBtdXN0IGJlIHJlbGF0ZWQgdmlhICdoZWFkZXInIG9yICdzY29wZScgYXR0cmlidXRlc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQ29tcGxleCB0YWJsZSBkb2VzIG5vdCBoYXZlIGhlYWRlcnMgZm9yIGVhY2ggY2VsbCBwcm9wZXJseSBkZWZpbmVkIHdpdGggJ2hlYWRlcicgb3IgJ3Njb3BlJ1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfVGFibGVfTGF5b3V0VHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IFwiQXZvaWQgdXNpbmcgdGFibGVzIHRvIGZvcm1hdCB0ZXh0IGRvY3VtZW50cyBpbiBjb2x1bW5zIHVubGVzcyB0aGUgdGFibGUgY2FuIGJlIGxpbmVhcml6ZWRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRhYmxlIGlzIG5vdCBiZWluZyB1c2VkIHRvIGZvcm1hdCB0ZXh0IGNvbnRlbnQgaW4gY29sdW1ucyB1bmxlc3MgdGhlIHRhYmxlIGNhbiBiZSBsaW5lYXJpemVkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9UYWJsZV9EYXRhSGVhZGluZ3NBcmlhXCI6IHtcbiAgICAgICAgMDogXCJEYXRhIHRhYmxlIG11c3QgaWRlbnRpZnkgaGVhZGVyc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGFibGUgaGFzIG5vIGhlYWRlcnMgaWRlbnRpZmllZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfTGFiZWxfUmVmVmFsaWRcIjoge1xuICAgICAgICAwOiBcIlRoZSAnZm9yJyBhdHRyaWJ1dGUgbXVzdCByZWZlcmVuY2UgYSBub24tZW1wdHksIHVuaXF1ZSAnaWQnIGF0dHJpYnV0ZSBvZiBhbiA8aW5wdXQ+IGVsZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSB2YWx1ZSBcXFwiezB9XFxcIiBvZiB0aGUgJ2ZvcicgYXR0cmlidXRlIGlzIG5vdCB0aGUgJ2lkJyBvZiBhIHZhbGlkIDxpbnB1dD4gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRWxlbV9VbmlxdWVBY2Nlc3NLZXlcIjoge1xuICAgICAgICAwOiBcIidhY2Nlc3NrZXknIGF0dHJpYnV0ZSB2YWx1ZXMgb24gZWFjaCBlbGVtZW50IG11c3QgYmUgdW5pcXVlIGZvciB0aGUgcGFnZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiJ2FjY2Vzc2tleScgYXR0cmlidXRlIHZhbHVlIG9uIHRoZSBlbGVtZW50IGlzIG5vdCB1bmlxdWVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCI6IHtcbiAgICAgICAgMDogXCJTY3JpcHRpbmcgbXVzdCBub3QgcmVtb3ZlIGZvY3VzIGZyb20gY29udGVudCB0aGF0IG5vcm1hbGx5IHJlY2VpdmVzIGZvY3VzXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgc2NyaXB0IGRvZXMgbm90IHJlbW92ZSBmb2N1cyBmcm9tIGNvbnRlbnQgdGhhdCBub3JtYWxseSByZWNlaXZlcyBmb2N1c1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0ltZ19Vc2VtYXBBbHRcIjoge1xuICAgICAgICAwOiBcIkFuIGltYWdlIG1hcCBhbmQgZWFjaCA8YXJlYT4gZWxlbWVudCBpbiBhbiBpbWFnZSBtYXAgbXVzdCBoYXZlIHRleHQgYWx0ZXJuYXRpdmUocylcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkltYWdlIG1hcCBvciBjaGlsZCA8YXJlYT4gaGFzIG5vIHRleHQgYWx0ZXJuYXRpdmVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1RleHRfRW1vdGljb25zXCI6IHtcbiAgICAgICAgMDogXCJFbW90aWNvbnMgbXVzdCBoYXZlIGEgc2hvcnQgdGV4dCBhbHRlcm5hdGl2ZSB0aGF0IGRlc2NyaWJlcyB0aGVpciBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IGVtb3RpY29ucyBoYXZlIGEgdGV4dCBhbHRlcm5hdGl2ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfU3R5bGVfQmVmb3JlQWZ0ZXJcIjoge1xuICAgICAgICAwOiBcIkRvIG5vdCB1c2UgQ1NTICc6OmJlZm9yZScgYW5kICc6OmFmdGVyJyBwc2V1ZG8tZWxlbWVudHMgdG8gaW5zZXJ0IG5vbi1kZWNvcmF0aXZlIGNvbnRlbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoZSAnOjpiZWZvcmUnIGFuZCAnOjphZnRlcicgcHNldWRvLWVsZW1lbnRzIGRvIG5vdCBpbnNlcnQgbm9uLWRlY29yYXRpdmUgY29udGVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nXCI6IHtcbiAgICAgICAgMDogXCJVc2UgQ1NTICdsZXR0ZXItc3BhY2luZycgdG8gY29udHJvbCBzcGFjaW5nIHdpdGhpbiBhIHdvcmRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHNwYWNlIGNoYXJhY3RlcnMgYXJlIG5vdCBiZWluZyB1c2VkIHRvIGNyZWF0ZSBzcGFjZSBiZXR3ZWVuIHRoZSBsZXR0ZXJzIG9mIGEgd29yZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9WYWxpZFJvbGVcIjoge1xuICAgICAgICAwOiBcIkVsZW1lbnRzIG11c3QgaGF2ZSBhIHZhbGlkICdyb2xlJyBwZXIgQVJJQSBzcGVjaWZpY2F0aW9uXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJTb21lIG9mIHRoZSByb2xlcywgJ3swfScsIGRlZmluZWQgb24gdGhlIGVsZW1lbnQgYXJlIG5vdCB2YWxpZCBwZXIgQVJJQSBzcGVjaWZpY2F0aW9uXCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiVGhlIHJvbGUgJ3swfScgZGVmaW5lZCBvbiB0aGUgZWxlbWVudCBpcyBub3QgdmFsaWQgcGVyIEFSSUEgc3BlY2lmaWNhdGlvblwiXG4gICAgfSxcbiAgICBcInRhYmxlX2FyaWFfZGVzY2VuZGFudHNcIjoge1xuICAgICAgICAwOiBcIlRhYmxlIHN0cnVjdHVyZSBlbGVtZW50cyBjYW5ub3Qgc3BlY2lmeSBhbiBleHBsaWNpdCAncm9sZScgd2l0aGluIHRhYmxlIGNvbnRhaW5lcnNcIixcbiAgICAgICAgXCJleHBsaWNpdF9yb2xlXCI6IFwiQW4gZXhwbGljaXQgQVJJQSAncm9sZScgaXMgbm90IHZhbGlkIGZvciA8ezB9PiBlbGVtZW50IHdpdGhpbiBhIEFSSUEgcm9sZSAnezF9JyBwZXIgdGhlIEFSSUEgaW4gSFRNTCBzcGVjaWZpY2F0aW9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZVwiOiB7XG4gICAgICAgIDA6IFwiQVJJQSBwcm9wZXJ0eSB2YWx1ZXMgbXVzdCBiZSB2YWxpZFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIHZhbHVlIFxcXCJ7MH1cXFwiIHNwZWNpZmllZCBmb3IgYXR0cmlidXRlICd7MX0nIG9uIGVsZW1lbnQgPHsyfT4gaXMgbm90IHZhbGlkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1ZhbGlkSWRSZWZcIjoge1xuICAgICAgICAwOiBcIlRoZSBBUklBIHByb3BlcnR5IG11c3QgcmVmZXJlbmNlIGEgbm9uLWVtcHR5IHVuaXF1ZSBpZCBvZiBhbiBleGlzdGluZyBlbGVtZW50IHRoYXQgaXMgdmlzaWJsZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlICdpZCcgXFxcInswfVxcXCIgc3BlY2lmaWVkIGZvciB0aGUgQVJJQSBwcm9wZXJ0eSAnezF9JyB2YWx1ZSBpcyBub3QgdmFsaWRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfUmVxdWlyZWRQcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgMDogXCJXaGVuIHVzaW5nIGEgQVJJQSByb2xlIG9uIGFuIGVsZW1lbnQsIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGVzIGZvciB0aGF0IHJvbGUgbXVzdCBiZSBkZWZpbmVkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJBbiBlbGVtZW50IHdpdGggQVJJQSByb2xlICd7MH0nIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIEFSSUEgYXR0cmlidXRlKHMpOiAnezF9J1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVcIjoge1xuICAgICAgICAwOiBcIldoZW4gc3BlY2lmeWluZyBhIHJlcXVpcmVkIEFSSUEgYXR0cmlidXRlLCB0aGUgdmFsdWUgbXVzdCBub3QgYmUgZW1wdHlcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBlbGVtZW50IGF0dHJpYnV0ZShzKTogJ3swfScgdmFsdWUgaXMgZW1wdHlcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVwiOiB7XG4gICAgICAgIDA6IFwiQVJJQSBhdHRyaWJ1dGVzIG11c3QgYmUgdmFsaWQgZm9yIHRoZSBlbGVtZW50J3Mgcm9sZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIGF0dHJpYnV0ZShzKSAnezB9JyByZWZlcmVuY2VkIGJ5IHRoZSBlbGVtZW50IDx7MX0+IGlzIG5vdCBhIHZhbGlkIEFSSUEgc3RhdGUgb3IgcHJvcGVydHlcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudFwiOiB7XG4gICAgICAgIDA6IFwiRWxlbWVudCB1c2luZyAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBwcm9wZXJ0eSBtdXN0IGhhdmUgaXRzICd0YWJpbmRleCcgYXR0cmlidXRlIHZhbHVlIHNldCB0byAwIG9yIC0xIHRvIGJlIGtleWJvYXJkIGFjY2Vzc2libGVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSA8ezB9PiBlbGVtZW50IHVzaW5nICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIHNldCB0byBcXFwiezF9XFxcIiBkb2VzIG5vdCBoYXZlIGl0cyAndGFiaW5kZXgnIGF0dHJpYnV0ZSB2YWx1ZSBzZXQgdG8gMCBvciAtMVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NaXNzaW5nRm9jdXNhYmxlQ2hpbGRcIjoge1xuICAgICAgICAwOiBcIlVJIGNvbXBvbmVudCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGZvY3VzYWJsZSBjaGlsZCBlbGVtZW50IGZvciBrZXlib2FyZCBhY2Nlc3NcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBkZXNjZW5kZW50IDx7MH0+IGVsZW1lbnQgd2l0aCBcXFwiezF9XFxcIiByb2xlIGhhcyBubyBmb2N1c2FibGUgY2hpbGQgZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NaXNzaW5nS2V5Ym9hcmRIYW5kbGVyXCI6IHtcbiAgICAgICAgMDogXCJJbnRlcmFjdGl2ZSBXQUlfQVJJQSBVSSBjb21wb25lbnRzIG11c3QgcHJvdmlkZSBrZXlib2FyZCBhY2Nlc3NcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoZSA8ezB9PiBlbGVtZW50IHdpdGggXFxcInsxfVxcXCIgcm9sZSBoYXMga2V5Ym9hcmQgYWNjZXNzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdFwiOiB7XG4gICAgICAgIDA6IFwiSW1hZ2UgZGVzaWduYXRlZCBhcyBkZWNvcmF0aXZlIG11c3QgaGF2ZSAnYWx0PVxcXCJcXFwiXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJJbWFnZSBkZXNpZ25hdGVkIGFzIGRlY29yYXRpdmUgaGFzIG5vbi1udWxsICdhbHQnIGF0dHJpYnV0ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc1wiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcInNlYXJjaFxcXCIgcm9sZSBtdXN0IGhhdmUgYSB1bmlxdWUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcInNlYXJjaFxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQXBwbGljYXRpb25MYW5kbWFya3NcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJhcHBsaWNhdGlvblxcXCIgcm9sZSBtdXN0IGhhdmUgYSB1bmlxdWUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcImFwcGxpY2F0aW9uXFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsXCI6IHtcbiAgICAgICAgMDogXCJBbiBlbGVtZW50IHdpdGggXFxcImFwcGxpY2F0aW9uXFxcIiByb2xlIG11c3QgaGF2ZSBhIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJFbGVtZW50IHdpdGggXFxcImFwcGxpY2F0aW9uXFxcIiByb2xlIGRvZXMgbm90IGhhdmUgYSBsYWJlbFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNcIjoge1xuICAgICAgICAwOiBcIkFsbCBlbGVtZW50cyB3aXRoIGEgXFxcImRvY3VtZW50XFxcIiByb2xlIG11c3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIGEgXFxcImRvY3VtZW50XFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0xhYmVsX1RhcmdldEludmlzaWJsZVwiOiB7XG4gICAgICAgIDA6IFwiRG8gbm90IGxhYmVsIGhpZGRlbiA8aW5wdXQ+IGVsZW1lbnRzICgndHlwZT1cXFwiaGlkZGVuXFxcIilcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiSGlkZGVuIDxpbnB1dD4gZWxlbWVudCAoJ3R5cGU9XFxcImhpZGRlblxcXCIpIGlzIHBvc3NpYmx5IGxhYmVsbGVkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiOiB7XG4gICAgICAgIDA6IFwiQSA8dmlkZW8+IGVsZW1lbnQgbXVzdCBoYXZlIGEgdGV4dCBhbHRlcm5hdGl2ZSBmb3IgYW55IG1lYW5pbmdmdWwgYXVkaW8gY29udGVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCBjYXB0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciBhbnkgbWVhbmluZ2Z1bCBhdWRpbyBvciBwcm92aWRlIGEgY2FwdGlvbiB0cmFjayBmb3IgdGhlIDx2aWRlbz4gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0F1ZGlvX1ZpZGVvX1RyaWdnZXJcIjoge1xuICAgICAgICAwOiBcIk1lZGlhIHVzaW5nIDxhdWRpbz4gYW5kL29yIDx2aWRlbz4gZWxlbWVudHMgbXVzdCBoYXZlIGtleWJvYXJkIGFjY2Vzc2libGUgY29udHJvbHNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IFwiVmVyaWZ5IG1lZGlhIHVzaW5nIDxhdWRpbz4gYW5kL29yIDx2aWRlbz4gZWxlbWVudHMgaGF2ZSBrZXlib2FyZCBhY2Nlc3NpYmxlIGNvbnRyb2xzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfSW5wdXRfSGFzUmVxdWlyZWRcIjoge1xuICAgICAgICAwOiBcIklmIHRoZSBhcHBsaWNhdGlvbiBtdXN0IGJlIGFjY2Vzc2libGUgaW4gSW50ZXJuZXQgRXhwbG9yZXIgOCwgdXNlICdhcmlhLXJlcXVpcmVkJyBpbnN0ZWFkIG9mIHRoZSBIVE1MNSAncmVxdWlyZWQnIHByb3BlcnR5XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIklmIHRoZSBhcHBsaWNhdGlvbiBtdXN0IGJlIGFjY2Vzc2libGUgaW4gSW50ZXJuZXQgRXhwbG9yZXIgOCwgdXNlICdhcmlhLXJlcXVpcmVkJyBpbnN0ZWFkIG9mIHRoZSBIVE1MNSAncmVxdWlyZWQnIHByb3BlcnR5XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXJpYV9JbWdBbHRcIjoge1xuICAgICAgICAwOiBcIkFuIGVsZW1lbnQgd2l0aCBcXFwiaW1nXFxcIiByb2xlIG11c3QgaGF2ZSBhIG5vbi1lbXB0eSBsYWJlbFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiRWxlbWVudCB3aXRoIFxcXCJpbWdcXFwiIHJvbGUgaGFzIG5vIGxhYmVsXCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiRWxlbWVudCB3aXRoIFxcXCJpbWdcXFwiIHJvbGUgaGFzIG5vIGxhYmVsIG9yIGFuIGVtcHR5IGxhYmVsXCIsXG4gICAgICAgIFwiRmFpbF8zXCI6IFwiRWxlbWVudCB3aXRoIFxcXCJpbWdcXFwiIHJvbGUgbWlzc2luZyBub24tZW1wdHkgJ2FyaWEtbGFiZWwnIG9yICdhcmlhLWxhYmVsbGVkYnknXCJcbiAgICB9LFxuICAgIFwiSEFBQ19BcmlhX1N2Z0FsdFwiOiB7XG4gICAgICAgIDA6IFwiQW4gZWxlbWVudCB3aXRoIGEgZ3JhcGhpY3Mgcm9sZSBtdXN0IGhhdmUgYSBub24tZW1wdHkgbGFiZWxcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkVsZW1lbnQgd2l0aCBcXFwiezB9XFxcIiBncmFwaGljcyByb2xlIGhhcyBubyBsYWJlbFwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIkVsZW1lbnQgd2l0aCBcXFwiezB9XFxcIiBncmFwaGljcyByb2xlIGhhcyBubyBsYWJlbCBvciBhbiBlbXB0eSBsYWJlbFwiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIkVsZW1lbnQgd2l0aCBcXFwiezB9XFxcIiBncmFwaGljcyByb2xlIG1pc3Npbmcgbm9uLWVtcHR5ICdhcmlhLWxhYmVsJyBvciAnYXJpYS1sYWJlbGxlZGJ5J1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0JhY2tncm91bmRJbWdfSGFzVGV4dE9yVGl0bGVcIjoge1xuICAgICAgICAwOiBcIkJhY2tncm91bmQgaW1hZ2VzIHRoYXQgY29udmV5IGltcG9ydGFudCBpbmZvcm1hdGlvbiBtdXN0IGhhdmUgYSB0ZXh0IGFsdGVybmF0aXZlIHRoYXQgZGVzY3JpYmVzIHRoZSBpbWFnZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiTWFudWFsXzFcIjogXCJWZXJpZnkgaW1wb3J0YW50IGJhY2tncm91bmQgaW1hZ2UgaW5mb3JtYXRpb24gaGFzIGEgdGV4dCBhbHRlcm5hdGl2ZSBpbiBzeXN0ZW0gaGlnaCBjb250cmFzdCBtb2RlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQWNjZXNza2V5X05lZWRMYWJlbFwiOiB7XG4gICAgICAgIDA6IFwiQW4gSFRNTCBlbGVtZW50IHdpdGggYW4gYXNzaWduZWQgJ2FjY2Vzc2tleScgYXR0cmlidXRlIG11c3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGxhYmVsXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlRoZSBIVE1MIGVsZW1lbnQgd2l0aCBhbiBhc3NpZ25lZCAnYWNjZXNza2V5JyBhdHRyaWJ1dGUgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGxhYmVsXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyXCI6IHtcbiAgICAgICAgMDogXCJIVE1MNSBhdHRyaWJ1dGVzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlIGFzc29jaWF0ZWQgQVJJQSBhdHRyaWJ1dGUgdXNlZCBvbiBhbiBpbnB1dCBlbGVtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJIVE1MNSBhdHRyaWJ1dGUgaXMgaW4gY29uZmxpY3Qgd2l0aCB0aGUgYXNzb2NpYXRlZCBBUklBIGF0dHJpYnV0ZSB1c2VkIG9uIGFuIGlucHV0IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19DYW52YXNcIjoge1xuICAgICAgICAwOiBcIlRoZSA8Y2FudmFzPiBlbGVtZW50IG1heSBub3QgYmUgYWNjZXNzaWJsZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiTWFudWFsXzFcIjogXCJWZXJpZnkgYWNjZXNzaWJpbGl0eSBvZiB0aGUgPGNhbnZhcz4gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0ZpZ3VyZV9sYWJlbFwiOiB7XG4gICAgICAgIDA6IFwiQSA8ZmlndXJlPiBlbGVtZW50IG11c3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGxhYmVsXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgPGZpZ3VyZT4gZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgbGFiZWxcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19JbnB1dF9QbGFjZWhvbGRlclwiOiB7XG4gICAgICAgIDA6IFwiSFRNTDUgJ3BsYWNlaG9sZGVyJyBhdHRyaWJ1dGUgbXVzdCBub3QgYmUgdXNlZCBhcyBhIHZpc2libGUgbGFiZWwgcmVwbGFjZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiSFRNTDUgcGxhY2Vob2xkZXIgaXMgdGhlIG9ubHkgdmlzaWJsZSBsYWJlbFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8yXCI6IFwiQWRkaXRpb25hbCB2aXNpYmxlIGxhYmVsIHJlZmVyZW5jZWQgYnkgJ2FyaWEtbGFiZWxsZWRieScgaXMgbm90IHZhbGlkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcImFyaWFfc2VtYW50aWNzX3JvbGVcIjoge1xuICAgICAgICAwOiBcIkFSSUEgcm9sZXMgbXVzdCBiZSB2YWxpZCBmb3IgdGhlIGVsZW1lbnQgdG8gd2hpY2ggdGhleSBhcmUgYXNzaWduZWRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBBUklBIHJvbGUgJ3swfScgaXMgbm90IHZhbGlkIGZvciB0aGUgZWxlbWVudCA8ezF9PlwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlRoZSBBUklBIHJvbGUgJ3swfScgaXMgbm90IHZhbGlkIGZvciB0aGUgZWxlbWVudCA8ezF9PiBhbmQgbWF5IGJlIGlnbm9yZWQgYnkgdGhlIGJyb3dzZXIgc2luY2UgdGhlIGVsZW1lbnQgaXMgZm9jdXNhYmxlXCJcbiAgICB9LFxuICAgIFwiYXJpYV9zZW1hbnRpY3NfYXR0cmlidXRlXCI6IHtcbiAgICAgICAgMDogXCJBUklBIGF0dHJpYnV0ZXMgbXVzdCBiZSB2YWxpZCBmb3IgdGhlIGVsZW1lbnQgYW5kIEFSSUEgcm9sZSB0byB3aGljaCB0aGV5IGFyZSBhc3NpZ25lZFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIEFSSUEgYXR0cmlidXRlICd7MH0nIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGVsZW1lbnQgPHsxfT4gd2l0aCBBUklBIHJvbGUgJ3syfSdcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0Zvcm1fQ2hhbmdlRW1wdHlcIjoge1xuICAgICAgICAwOiBcIkEgZm9ybSBzaG91bGQgbm90IGJlIHN1Ym1pdHRlZCBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgd2FybmluZyB0aGUgdXNlclwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJDb25maXJtIHRoZSBmb3JtIGRvZXMgbm90IHN1Ym1pdCBhdXRvbWF0aWNhbGx5IHdpdGhvdXQgd2FybmluZ1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFcIjoge1xuICAgICAgICAwOiBcIlRoZSBjb250cmFzdCByYXRpbyBvZiB0ZXh0IHdpdGggaXRzIGJhY2tncm91bmQgbXVzdCBtZWV0IFdDQUcgMi4xIEFBIHJlcXVpcmVtZW50c1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGV4dCBjb250cmFzdCBvZiB7MH0gd2l0aCBpdHMgYmFja2dyb3VuZCBpcyBsZXNzIHRoYW4gdGhlIFdDQUcgQUEgbWluaW11bSByZXF1aXJlbWVudHMgZm9yIHRleHQgb2Ygc2l6ZSB7MX1weCBhbmQgd2VpZ2h0IG9mIHsyfVwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVGhlIGZvcmVncm91bmQgdGV4dCBhbmQgaXRzIGJhY2tncm91bmQgY29sb3IgYXJlIGJvdGggZGV0ZWN0ZWQgYXMgezN9LiBWZXJpZnkgdGhlIHRleHQgbWVldHMgdGhlIFdDQUcgMi4xIEFBIHJlcXVpcmVtZW50cyBmb3IgbWluaW11bSBjb250cmFzdFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFfUFZcIjoge1xuICAgICAgICAwOiBcIlRoZSBjb250cmFzdCByYXRpbyBvZiB0ZXh0IHdpdGggaXRzIGJhY2tncm91bmQgKGkuZS4gYmFja2dyb3VuZCB3aXRoIGEgY29sb3IgZ3JhZGllbnQgb3IgYSBiYWNrZ3JvdW5kIGltYWdlKSBtdXN0IG1lZXQgV0NBRyAyLjEgQUEgcmVxdWlyZW1lbnRzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGUgY29udHJhc3QgcmF0aW8gb2YgdGhlIHRleHQgYWdhaW5zdCB0aGUgbGlnaHRlc3QgYW5kIHRoZSBkYXJrZXN0IGNvbG9ycyBvZiB0aGUgYmFja2dyb3VuZCBtZWV0cyB0aGUgV0NBRyAyLjEgQUEgbWluaW11bSByZXF1aXJlbWVudHMgZm9yIHRleHQgb2Ygc2l6ZSB7MX1weCBhbmQgd2VpZ2h0IG9mIHsyfVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IFwiUGFnZXMgbXVzdCBwcm92aWRlIGEgd2F5IHRvIHNraXAgZGlyZWN0bHkgdG8gdGhlIG1haW4gY29udGVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIHBhZ2UgZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBxdWlja2x5IG5hdmlnYXRlIHRvIHRoZSBtYWluIGNvbnRlbnQgKEFSSUEgXFxcIm1haW5cXFwiIGxhbmRtYXJrIG9yIGEgc2tpcCBsaW5rKVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQm9keV9GaXJzdEFDb250YWluc1NraXBUZXh0X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogXCJUaGUgZGVzY3JpcHRpb24gb2YgYSBoeXBlcmxpbmsgdXNlZCB0byBza2lwIGNvbnRlbnQgbXVzdCBjb21tdW5pY2F0ZSB3aGVyZSBpdCBsaW5rcyB0b1wiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgaWYgdGhpcyBoeXBlcmxpbmsgc2tpcHMgY29udGVudCwgdGhlIGRlc2NyaXB0aW9uIGNvbW11bmljYXRlcyB3aGVyZSBpdCBsaW5rcyB0b1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogXCJBbiBlbGVtZW50IHdpdGggYSBBUklBIHJvbGUgbXVzdCBjb250YWluIHJlcXVpcmVkIGNoaWxkcmVuXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlRoZSBlbGVtZW50IHdpdGggcm9sZSBcXFwiezB9XFxcIiBkb2VzIG5vdCBjb250YWluIG9yIG93biBhdCBsZWFzdCBvbmUgY2hpbGQgZWxlbWVudCB3aXRoIGVhY2ggb2YgdGhlIGZvbGxvd2luZyByb2xlczogXFxcInsxfVxcXCJcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfUmVxdWlyZWRQYXJlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjoge1xuICAgICAgICAwOiBcIkFuIGVsZW1lbnQgd2l0aCBhbiBpbXBsaWNpdCBvciBleHBsaWNpdCByb2xlIG11c3QgYmUgY29udGFpbmVkIHdpdGhpbiBhIHZhbGlkIGVsZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBlbGVtZW50IHdpdGggcm9sZSBcXFwiezB9XFxcIiBpcyBub3QgY29udGFpbmVkIGluIG9yIG93bmVkIGJ5IGFuIGVsZW1lbnQgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyByb2xlczogXFxcInsxfVxcXCJcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfRXZlbnRIYW5kbGVyTWlzc2luZ1JvbGVfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjoge1xuICAgICAgICAwOiBcIkVsZW1lbnRzIHdpdGggZXZlbnQgaGFuZGxlcnMgbXVzdCBoYXZlIGEgdmFsaWQgQVJJQSByb2xlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgPHswfT4gZWxlbWVudCB3aXRoICd7MX0nIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBBUklBIHJvbGUgc3BlY2lmaWVkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiSW50ZXJhY3RpdmUgY29tcG9uZW50IG11c3QgaGF2ZSBhIHByb2dyYW1tYXRpY2FsbHkgYXNzb2NpYXRlZCBuYW1lXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJJbnRlcmFjdGl2ZSBjb21wb25lbnQgd2l0aCBBUklBIHJvbGUgJ3swfScgZG9lcyBub3QgaGF2ZSBhIHByb2dyYW1tYXRpY2FsbHkgYXNzb2NpYXRlZCBuYW1lXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IFwiQWxsIGNvbnRlbnQgbXVzdCByZXNpZGUgd2l0aGluIGFuIGVsZW1lbnQgd2l0aCBhIGxhbmRtYXJrIHJvbGVcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJDb250ZW50IGlzIG5vdCB3aXRoaW4gYSBsYW5kbWFyayBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwicmVnaW9uXFxcIiByb2xlIG11c3QgaGF2ZSBhIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJTZWN0aW9uIGVsZW1lbnQgd2l0aCBhbiBpbXBsaWNpdCBcXFwicmVnaW9uXFxcIiByb2xlIGlzIG5vdCBsYWJlbGVkIHdpdGggYW4gJ2FyaWEtbGFiZWwnIG9yICdhcmlhLWxhYmVsbGVkYnknXCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiVGhlIGVsZW1lbnQgd2l0aCBcXFwicmVnaW9uXFxcIiByb2xlIGlzIG5vdCBsYWJlbGVkIHdpdGggYW4gJ2FyaWEtbGFiZWwnIG9yICdhcmlhLWxhYmVsbGVkYnknXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJtYWluXFxcIiByb2xlIHNob3VsZCBoYXZlIGEgdW5pcXVlIHZpc2libGUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcIm1haW5cXFwiIHJvbGUgZG8gbm90IGhhdmUgdW5pcXVlIHZpc2libGUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQmFubmVyTGFuZG1hcmtzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwiYmFubmVyXFxcIiByb2xlIG11c3QgaGF2ZSBhIHVuaXF1ZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwiYmFubmVyXFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVDb21wbGVtZW50YXJ5TGFuZG1hcmtzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwiY29tcGxlbWVudGFyeVxcXCIgcm9sZSBtdXN0IGhhdmUgYSB1bmlxdWUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJjb21wbGVtZW50YXJ5XFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcImNvbnRlbnRpbmZvXFxcIiByb2xlIG11c3QgaGF2ZSBhIHVuaXF1ZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwiY29udGVudGluZm9cXFwiIHJvbGUgZG8gbm90IGhhdmUgdW5pcXVlIGxhYmVsc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJmb3JtXFxcIiByb2xlIG11c3QgaGF2ZSBhIHVuaXF1ZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwiZm9ybVxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcIm5hdmlnYXRpb25cXFwiIHJvbGUgbXVzdCBoYXZlIGEgdW5pcXVlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJuYXZpZ2F0aW9uXFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJjb21wbGVtZW50YXJ5XFxcIiByb2xlIHNob3VsZCBoYXZlIGEgdmlzaWJsZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIGVsZW1lbnQgd2l0aCBcXFwiY29tcGxlbWVudGFyeVxcXCIgcm9sZSBkb2VzIG5vdCBoYXZlIGEgdmlzaWJsZSBsYWJlbFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcImFydGljbGVcXFwiIHJvbGUgbXVzdCBoYXZlIGEgdW5pcXVlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJhcnRpY2xlXFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQXJ0aWNsZVJvbGVMYWJlbF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiQW4gZWxlbWVudCB3aXRoIFxcXCJhcnRpY2xlXFxcIiByb2xlIG11c3QgaGF2ZSBhIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIGVsZW1lbnQgd2l0aCBcXFwiYXJ0aWNsZVxcXCIgcm9sZSBkb2VzIG5vdCBoYXZlIGEgbGFiZWxcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwiZ3JvdXBcXFwiIHJvbGUgbXVzdCBoYXZlIGEgdW5pcXVlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJncm91cFxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0dyb3VwUm9sZUxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJBbiBlbGVtZW50IHdpdGggXFxcImdyb3VwXFxcIiByb2xlIHNob3VsZCBoYXZlIGEgdW5pcXVlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgPHswfT4gZWxlbWVudCB3aXRoIFxcXCJncm91cFxcXCIgcm9sZSBkb2VzIG5vdCBoYXZlIGEgbGFiZWxcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0luU2libGluZ1NldF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiQSBwYWdlLCBkb2N1bWVudCBvciBhcHBsaWNhdGlvbiBzaG91bGQgb25seSBoYXZlIG9uZSBlbGVtZW50IHdpdGggXFxcImNvbnRlbnRpbmZvXFxcIiByb2xlXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwiY29udGVudGluZm9cXFwiIHJvbGUgZm91bmQgb24gYSBwYWdlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiVGhlcmUgbXVzdCBiZSBvbmx5IG9uZSBlbGVtZW50IHdpdGggXFxcImJhbm5lclxcXCIgcm9sZSBvbiB0aGUgcGFnZVwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZWxlbWVudCB3aXRoIFxcXCJiYW5uZXJcXFwiIHJvbGUgb24gdGhlIHBhZ2VcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJBbiBlbGVtZW50IHdpdGggXFxcImNvbnRlbnRpbmZvXFxcIiByb2xlIGlzIG9ubHkgcGVybWl0dGVkIHdpdGggYW4gZWxlbWVudCB3aXRoIFxcXCJtYWluXFxcIiByb2xlXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIGVsZW1lbnQgd2l0aCBcXFwiY29udGVudGluZm9cXFwiIHJvbGUgaXMgcHJlc2VudCB3aXRob3V0IGFuIGVsZW1lbnQgd2l0aCBcXFwibWFpblxcXCIgcm9sZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiQW4gZWxlbWVudCB3aXRoIFxcXCJjb21wbGVtZW50YXJ5XFxcIiByb2xlIG11c3QgaGF2ZSBhIGxhYmVsXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIGVsZW1lbnQgd2l0aCBcXFwiY29tcGxlbWVudGFyeVxcXCIgcm9sZSBkb2VzIG5vdCBoYXZlIGEgbGFiZWxcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIGEgXFxcInJlZ2lvblxcXCIgcm9sZSBtdXN0IGhhdmUgYSB1bmlxdWUgbGFiZWxcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcInJlZ2lvblxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIklCTUFfRm9jdXNfVGFiYmFibGVcIjoge1xuICAgICAgICAwOiBcIkNvbXBvbmVudCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHRhYmJhYmxlIGVsZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiQ29tcG9uZW50IHdpdGggXFxcInswfVxcXCIgcm9sZSBkb2VzIG5vdCBoYXZlIGEgdGFiYmFibGUgZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJJQk1BX0ZvY3VzX011bHRpVGFiXCI6IHtcbiAgICAgICAgMDogXCJDZXJ0YWluIGNvbXBvbmVudHMgbXVzdCBoYXZlIG5vIG1vcmUgdGhhbiBvbmUgdGFiYmFibGUgZWxlbWVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJDb21wb25lbnQgd2l0aCBcXFwiezB9XFxcIiByb2xlIGhhcyBtb3JlIHRoYW4gb25lIHRhYmJhYmxlIGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1N0eWxlX1RyaWdnZXIyXCI6IHtcbiAgICAgICAgMDogXCJXaW5kb3dzIGhpZ2ggY29udHJhc3QgbW9kZSBtdXN0IGJlIHN1cHBvcnRlZCB3aGVuIHVzaW5nIENTUyB0byBpbmNsdWRlLCBwb3NpdGlvbiBvciBhbHRlciBub24tZGVjb3JhdGl2ZSBjb250ZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJNYW51YWxfMVwiOiBcIkNvbmZpcm0gV2luZG93cyBoaWdoIGNvbnRyYXN0IG1vZGUgaXMgc3VwcG9ydGVkIHdoZW4gdXNpbmcgQ1NTIHRvIGluY2x1ZGUsIHBvc2l0aW9uIG9yIGFsdGVyIG5vbi1kZWNvcmF0aXZlIGNvbnRlbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVNYWluc1JlcXVpcmVMYWJlbF9JbXBsaWNpdF8yXCI6IHtcbiAgICAgICAgMDogXCJFbGVtZW50cyB3aXRoIFxcXCJtYWluXFxcIiByb2xlIG11c3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJtYWluXFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyXCI6IHtcbiAgICAgICAgMDogXCJGaWxlIGRvd25sb2FkIG1lY2hhbmlzbXMgc2hvdWxkIGJlIGtleWJvYXJkLW9wZXJhYmxlIGFuZCBwcmVzZXJ2ZSBwYWdlIGZvY3VzIGxvY2F0aW9uXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJNYW51YWxfMVwiOiBcIlZlcmlmeSB0aGF0IHRoZSBmaWxlIGRvd25sb2FkIG1lY2hhbmlzbSBkb2VzIG5vdCBjYXVzZSBhIGtleWJvYXJkIHRyYXBcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19BcmlhX0Vycm9yTWVzc2FnZVwiOiB7XG4gICAgICAgIDA6IFwiQSBjdXN0b20gZXJyb3IgbWVzc2FnZSBtdXN0IHJlZmVyZW5jZSBhIHZhbGlkICdpZCcgdmFsdWUgYW5kIHdoZW4gdHJpZ2dlcmVkIHRoZSBtZXNzYWdlIG11c3QgYmUgYXBwcm9wcmlhdGVseSBleHBvc2VkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJDdXN0b20gZXJyb3IgbWVzc2FnZSBoYXMgaW52YWxpZCByZWZlcmVuY2UgJ2lkJyB2YWx1ZVwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIkN1c3RvbSBlcnJvciBtZXNzYWdlIGlzIG5vdCB2aXNpYmxlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbVwiOiB7XG4gICAgICAgIDA6IFwiTGlzdCBjb21wb25lbnQgd2l0aCBcXFwiZ3JvdXBcXFwiIHJvbGUgbXVzdCBsaW1pdCBjaGlsZHJlbiB0byA8bGlzdGl0ZW0+IGVsZW1lbnRzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJMaXN0IGNvbXBvbmVudCB3aXRoIFxcXCJncm91cFxcXCIgcm9sZSBoYXMgY2hpbGRyZW4gdGhhdCBhcmUgbm90IDxsaXN0aXRlbT4gZWxlbWVudHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tcIjoge1xuICAgICAgICAwOiBcIlRoZSAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBwcm9wZXJ0eSBtdXN0IHJlZmVyZW5jZSB0aGUgJ2lkJyBvZiBhIG5vbi1lbXB0eSwgbm9uLWhpZGRlbiBhY3RpdmUgY2hpbGQgZWxlbWVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIHByb3BlcnR5IGlzIGVtcHR5XCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiVGhlICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIHByb3BlcnR5IHJlZmVyZW5jZXMgYSBoaWRkZW4gbm9kZVwiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIkVsZW1lbnQgaXMgbm90IGEgY29tYm9ib3gsIGFuZCB0aGUgcmVmZXJlbmNlZCBhY3RpdmUtZGVzY2VuZGFudCBlbGVtZW50IGlzIG5vdCBhIHZhbGlkIGRlc2NlbmRhbnRcIixcbiAgICAgICAgXCJGYWlsXzRcIjogXCJFbGVtZW50IGlzIGEgY29tYm9ib3gsIGFuZCB0aGUgcmVmZXJlbmNlZCBhY3RpdmUtZGVzY2VuZGFudCBlbGVtZW50IGlzIG5vdCBjb250cm9sbGVkIGJ5IHRoaXMgY29tcG9uZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXBwbGljYXRpb25fUm9sZV9UZXh0XCI6IHtcbiAgICAgICAgMDogXCJOb24tZGVjb3JhdGl2ZSBzdGF0aWMgdGV4dCBhbmQgaW1hZ2UgY29udGVudCB3aXRoaW4gYW4gZWxlbWVudCB3aXRoIFxcXCJhcHBsaWNhdGlvblxcXCIgcm9sZSBtdXN0IGJlIGFjY2Vzc2libGVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgdGhlIG5vbi1kZWNvcmF0aXZlIHN0YXRpYyB0ZXh0IGFuZCBpbWFnZSBjb250ZW50IHdpdGhpbiBhbiBlbGVtZW50IHdpdGggXFxcImFwcGxpY2F0aW9uXFxcIiByb2xlIGFyZSBhY2Nlc3NpYmxlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsXCI6IHtcbiAgICAgICAgMDogXCJBbGwgdG9vbGJhciBjb21wb25lbnRzIG9uIGEgcGFnZSBtdXN0IGhhdmUgdW5pcXVlIGxhYmVscyBzcGVjaWZpZWRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIHRvb2xiYXIgY29tcG9uZW50cyBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIFwiY29tYm9ib3hfdmVyc2lvblwiOiB7XG4gICAgICAgIDA6IFwiVGhlIGNvbWJvYm94IGRlc2lnbiBwYXR0ZXJuIG11c3QgYmUgdmFsaWQgZm9yIEFSSUEgMS4yXCIsXG4gICAgICAgIFwiUGFzc18xLjBcIjogXCJUaGUgY29tYm9ib3ggZGVzaWduIHBhdHRlcm4gaXMgZGV0ZWN0ZWQgYXMgQVJJQSAxLjAsIHdoaWNoIGlzIGFsbG93ZWQgYnkgQVJJQSAxLjJcIixcbiAgICAgICAgXCJGYWlsXzEuMVwiOiBcIlRoZSBjb21ib2JveCBkZXNpZ24gcGF0dGVybiBpcyBkZXRlY3RlZCBhcyBBUklBIDEuMSwgd2hpY2ggaXMgbm90IGFsbG93ZWQgYnkgQVJJQSAxLjJcIixcbiAgICAgICAgXCJQYXNzXzEuMlwiOiBcIlRoZSBjb21ib2JveCBkZXNpZ24gcGF0dGVybiBpcyBkZXRlY3RlZCBhcyBBUklBIDEuMlwiXG4gICAgfSxcbiAgICBcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiOiB7XG4gICAgICAgIDA6IFwiVGhlICdhcmlhLWNvbnRyb2xzJyAoZm9yIEFSSUEgMS4yKSBvciB0aGUgJ2FyaWEtb3ducycgKGZvciBBUklBIDEuMCkgYXR0cmlidXRlIG9mIHRoZSBleHBhbmRlZCBjb21ib2JveCBtdXN0IHJlZmVyZW5jZSBhIHZhbGlkIHBvcHVwICdpZCcgdmFsdWVcIixcbiAgICAgICAgXCJQYXNzX2V4cGFuZGVkXCI6IFwiVGhlIGNvbWJvYm94IHBvcHVwIHJlZmVyZW5jZWQgYnkgJ2FyaWEtY29udHJvbHMnIChBUklBIDEuMikgb3IgJ2FyaWEtb3ducycgKEFSSUEgMS4wKSBleGlzdHMgYW5kIGlzIHZpc2libGVcIixcbiAgICAgICAgXCJQYXNzX2NvbGxhcHNlZFwiOiBcIlRoZSBjb21ib2JveCBwb3B1cCBpbiBpdHMgY29sbGFwc2VkIHN0YXRlIGRvZXMgbm90IHJlZmVyZW5jZSBhbnkgdmlzaWJsZSBwb3B1cCBhcyByZXF1aXJlZFwiLFxuICAgICAgICBcIkZhaWxfMS4wX21pc3Npbmdfb3duc1wiOiBcIlRoZSAnYXJpYS1vd25zJyBhdHRyaWJ1dGUgb2YgdGhlIGV4cGFuZGVkIGNvbWJvYm94IGlzIG1pc3NpbmdcIixcbiAgICAgICAgXCJGYWlsXzEuMl9taXNzaW5nX2NvbnRyb2xzXCI6IFwiVGhlICdhcmlhLWNvbnRyb2xzJyBhdHRyaWJ1dGUgb2YgdGhlIGV4cGFuZGVkIGNvbWJvYm94IGlzIG1pc3NpbmdcIixcbiAgICAgICAgXCJGYWlsXzEuMF9wb3B1cF9yZWZlcmVuY2VfbWlzc2luZ1wiOiBcIlRoZSAnYXJpYS1vd25zJyBhdHRyaWJ1dGUgXFxcInswfVxcXCIgb2YgdGhlIGV4cGFuZGVkIGNvbWJvYm94IGRvZXMgbm90IHJlZmVyZW5jZSBhIHZhbGlkIHBvcHVwICdpZCcgdmFsdWVcIixcbiAgICAgICAgXCJGYWlsXzEuMl9wb3B1cF9yZWZlcmVuY2VfbWlzc2luZ1wiOiBcIlRoZSAnYXJpYS1jb250cm9scycgYXR0cmlidXRlIFxcXCJ7MH1cXFwiIG9mIHRoZSBleHBhbmRlZCBjb21ib2JveCBkb2VzIG5vdCByZWZlcmVuY2UgYSB2YWxpZCBwb3B1cCAnaWQnIHZhbHVlXCIsXG4gICAgICAgIFwiRmFpbF9jb21ib2JveF9leHBhbmRlZF9oaWRkZW5cIjogXCJUaGUgY29tYm9ib3ggJ2FyaWEtZXhwYW5kZWQnIGF0dHJpYnV0ZSBpcyB0cnVlLCBidXQgdGhlIGNvbWJvYm94IHBvcHVwIGlzIG5vdCB2aXNpYmxlXCIsXG4gICAgICAgIFwiRmFpbF9jb21ib2JveF9jb2xsYXBzZWRfdmlzaWJsZVwiOiBcIlRoZSBjb21ib2JveCAnYXJpYS1leHBhbmRlZCcgYXR0cmlidXRlIGlzIGZhbHNlLCBidXQgdGhlIGNvbWJvYm94IHBvcHVwIGlzIHZpc2libGVcIlxuICAgIH0sXG4gICAgXCJjb21ib2JveF9oYXNwb3B1cFwiOiB7XG4gICAgICAgIDA6IFwiVGhlIGNvbWJvYm94IGF0dHJpYnV0ZSAnYXJpYS1oYXNwb3B1cCcgdmFsdWUgbXVzdCBiZSBhcHByb3ByaWF0ZSBmb3IgdGhlIHJvbGUgb2YgdGhlIGVsZW1lbnQgcmVmZXJlbmNlZCBieSAnYXJpYS1jb250cm9scycgKEFSSUEgMS4yKSBvciAnYXJpYS1vd25zJyAoQVJJQSAxLjApXCIsXG4gICAgICAgIFwiUGFzc1wiOiBcIlRoZSAnYXJpYS1jb250cm9scycgKEFSSUEgMS4yKSBvciAnYXJpYS1vd25zJyAoQVJJQSAxLjApIGFwcHJvcHJpYXRlbHkgcmVmZXJlbmNlcyBhIHZhbGlkIHBvcHVwICdpZCcgdmFsdWVcIixcbiAgICAgICAgXCJGYWlsX3BvcHVwX3JvbGVfaW52YWxpZFwiOiBcIlRoZSAncm9sZScgdmFsdWUgXFxcInswfVxcXCIgb2YgdGhlIHBvcHVwIGVsZW1lbnQgXFxcInsxfVxcXCIgc2hvdWxkIGJlIG9uZSBvZiBcXFwibGlzdGJveFxcXCIsIFxcXCJncmlkXFxcIiwgXFxcInRyZWVcXFwiIG9yIFxcXCJkaWFsb2dcXFwiXCIsXG4gICAgICAgIFwiRmFpbF9jb21ib2JveF9wb3B1cF9yb2xlX21pc21hdGNoXCI6IFwiVGhlIHZhbHVlIG9mIHRoZSBjb21ib2JveCAnYXJpYS1oYXNwb3B1cCcgYXR0cmlidXRlIFxcXCJ7MH1cXFwiIGRvZXMgbm90IG1hdGNoIHRoZSAncm9sZScgdmFsdWUgb2YgdGhlIHBvcHVwIGVsZW1lbnQgXFxcInsxfVxcXCJcIlxuICAgIH0sICAgIFxuICAgIFwiY29tYm9ib3hfZm9jdXNhYmxlX2VsZW1lbnRzXCI6IHtcbiAgICAgICAgMDogXCJUYWJiYWJsZSBmb2N1cyBmb3IgdGhlIGNvbWJvYm94IG11c3QgYmUgYWxsb3dlZCBvbmx5IG9uIHRoZSB0ZXh0IGlucHV0LCBleGNlcHQgd2hlbiB1c2luZyBhIGRpYWxvZyBwb3B1cFwiLFxuICAgICAgICBcIlBhc3NcIjogXCJET00gZm9jdXMgaXMgYWxsb3dlZCBvbmx5IG9uIHRoZSBjb21ib2JveCBlbGVtZW50IGFzIHJlcXVpcmVkXCIsXG4gICAgICAgIFwiRmFpbF9ub3RfdGFiYmFibGVcIjogXCJUaGUgY29tYm9ib3ggZWxlbWVudCBkb2VzIG5vdCBhbGxvdyBET00gZm9jdXMgYXMgcmVxdWlyZWRcIixcbiAgICAgICAgXCJGYWlsX3RhYmJhYmxlX2NoaWxkXCI6IFwiVGhlIHBvcHVwIG9mIHRoZSBjb21ib2JveCBoYXMgRE9NIGZvY3VzIG9yIGhhcyAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBkZWZpbmVkLCB3aGljaCBpcyBub3QgYWxsb3dlZFwiXG4gICAgfSxcbiAgICBcImNvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50XCI6IHtcbiAgICAgICAgMDogXCInYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBtdXN0IGJlIHVzZWQgdG8gZGVmaW5lIGZvY3VzIHdpdGhpbiB0aGUgY29tYm9ib3ggcG9wdXAsIGV4Y2VwdCB3aGVuIHVzaW5nIGEgZGlhbG9nIHBvcHVwXCIsXG4gICAgICAgIFwiUGFzc1wiOiBcIidhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIGlzIHVzZWQgYXBwcm9wcmlhdGVseSBmb3IgdGhpcyBjb21ib2JveFwiLFxuICAgICAgICBcIkZhaWxfbWlzc2luZ1wiOiBcIlRoZSBlbGVtZW50IHJlZmVyZW5jZWQgYnkgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgXFxcInswfVxcXCIgZG9lcyBub3QgZXhpc3RcIixcbiAgICAgICAgXCJGYWlsX25vdF9pbl9wb3B1cFwiOiBcIlRoZSBlbGVtZW50IHJlZmVyZW5jZWQgYnkgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgXFxcInswfVxcXCIgZG9lcyBub3QgZXhpc3Qgd2l0aGluIHRoZSBwb3B1cCByZWZlcmVuY2VkIGJ5ICdpZCcgXFxcInsxfVxcXCJcIixcbiAgICAgICAgXCJGYWlsX2FjdGl2ZV9yb2xlX2ludmFsaWRcIjogXCJUaGUgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgXFxcInswfVxcXCIgcmVmZXJlbmNlcyBhbiBlbGVtZW50IHdpdGggdGhlIHJvbGVzIFxcXCJ7MX1cXFwiLCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgQVJJQSByb2xlIG9mICdvcHRpb24nLCAnZ3JpZGNlbGwnLCAncm93Jywgb3IgJ3RyZWVpdGVtJ1wiLFxuICAgICAgICBcIkZhaWxfYWN0aXZlX25vdF9zZWxlY3RlZFwiOiBcIlRoZSAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBcXFwiezB9XFxcIiByZWZlcmVuY2VzIGFuIGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBoYXZlICdhcmlhLXNlbGVjdGVkJyBzZXQgdG8gdHJ1ZVwiLFxuICAgIH0sXG4gICAgXCJjb21ib2JveF9hdXRvY29tcGxldGVcIjoge1xuICAgICAgICAwOiBcIkEgY29tYm9ib3ggdGhhdCBzdXBwb3J0cyBhdXRvY29tcGxldGlvbiBiZWhhdmlvciBtdXN0IGhhdmUgdGhlICdhcmlhLWF1dG9jb21wbGV0ZScgYXR0cmlidXRlIG9ubHkgb24gaXRzIHRleHQgaW5wdXQgZWxlbWVudCB3aXRoIGEgdmFsaWQgdmFsdWU7IGEgdmFsdWUgb2YgJ1xcXCJpbmxpbmVcXFwiJyBpcyBub3Qgc3VwcG9ydGVkXCIsXG4gICAgICAgIFwiUGFzc1wiOiBcIlRoZSBjb21ib2JveCBkb2VzIG5vdCB1c2UgJ2FyaWEtYXV0b2NvbXBsZXRlJyB2YWx1ZSAnXFxcImlubGluZVxcXCInIG5vciBkb2VzIGl0IGhhdmUgJ2FyaWEtYXV0b2NvbXBsZXRlJyBkZWZpbmVkIHdpdGhpbiB0aGUgcG9wdXBcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgY29tYm9ib3ggaGFzIHRoZSAnYXJpYS1hdXRvY29tcGxldGUnIGF0dHJpYnV0ZSBpbmNvcnJlY3RseSBzZXQgb24gYW4gZWxlbWVudCB3aXRoaW4gdGhlIHBvcHVwIHJlZmVyZW5jZWQgYnkgXFxcInswfVxcXCJcIixcbiAgICAgICAgXCJGYWlsX2lubGluZVwiOiBcIlRoZSBjb21ib2JveCBkb2VzIG5vdCBzdXBwb3J0IGFuICdhcmlhLWF1dG9jb21wbGV0ZScgYXR0cmlidXRlIHZhbHVlIHNldCB0byAnXFxcImlubGluZVxcXCInIFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjFfU3R5bGVfVmlld3BvcnRcIjoge1xuICAgICAgICAwOiBcIlRleHQgbXVzdCBzY2FsZSB1cCB0byAyMDAlIHdpdGhvdXQgbG9zcyBvZiBjb250ZW50IG9yIGZ1bmN0aW9uYWxpdHlcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IHRleHQgc2l6ZWQgdXNpbmcgdmlld3BvcnQgdW5pdHMgY2FuIGJlIHJlc2l6ZWQgdXAgdG8gMjAwJVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjFfTGFiZWxfQWNjZXNzaWJsZVwiOiB7XG4gICAgICAgIDA6IFwiQWNjZXNzaWJsZSBuYW1lIG11c3QgbWF0Y2ggb3IgY29udGFpbiB0aGUgdmlzaWJsZSBsYWJlbCB0ZXh0XCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQWNjZXNzaWJsZSBuYW1lIGRvZXMgbm90IG1hdGNoIG9yIGNvbnRhaW4gdGhlIHZpc2libGUgbGFiZWwgdGV4dFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjFfSW5wdXRfQXV0b2NvbXBsZXRlXCI6IHtcbiAgICAgICAgMDogXCJUaGUgJ2F1dG9jb21wbGV0ZScgYXR0cmlidXRlJ3MgdG9rZW4ocykgbXVzdCBiZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGlucHV0IGZvcm0gZmllbGRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSAnYXV0b2NvbXBsZXRlJyBhdHRyaWJ1dGUncyB0b2tlbihzKSBhcmUgbm90IGFwcHJvcHJpYXRlIGZvciB0aGUgaW5wdXQgZm9ybSBmaWVsZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfVmlzaWJsZUxhYmVsXCI6IHtcbiAgICAgICAgMDogXCJBbiBpbnB1dCBlbGVtZW50IG11c3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHZpc2libGUgbGFiZWxcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlRoZSBpbnB1dCBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCB2aXNpYmxlIGxhYmVsXCJcbiAgICB9LFxuICAgIFwibWV0YV92aWV3cG9ydF96b29tXCI6IHtcbiAgICAgICAgMDogXCJUaGUgJ21ldGFbbmFtZT12aWV3cG9ydF0nIHNob3VsZCBub3QgcHJldmVudCB0aGUgYnJvd3NlciB6b29taW5nIHRoZSBjb250ZW50XCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlRoZSAnbWV0YVtuYW1lPXZpZXdwb3J0XScgZG9lcyBub3QgcHJldmVudCB0aGUgYnJvd3NlciB6b29taW5nIHRoZSBjb250ZW50XCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJDb25maXJtIHRoZSAnbWV0YVtuYW1lPXZpZXdwb3J0XScgd2l0aCBcXFwiezB9XFxcIiBjYW4gYmUgem9vbWVkIGJ5IHVzZXJcIlxuICAgIH0sXG4gICAgXCJhcmlhX2hpZGRlbl9mb2N1c19taXN1c2VcIjoge1xuICAgICAgICAwOiBcIkEgZm9jdXNhYmxlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSB3aXRoaW4gdGhlIHN1YnRyZWUgb2YgYW4gZWxlbWVudCB3aXRoICdhcmlhLWhpZGRlbicgc2V0IHRvIFxcXCJ0cnVlXFxcIlwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkVsZW1lbnQgXFxcInswfVxcXCIgc2hvdWxkIG5vdCBiZSBmb2N1c2FibGUgd2l0aGluIHRoZSBzdWJ0cmVlIG9mIGFuIGVsZW1lbnQgd2l0aCBhbiAnYXJpYS1oaWRkZW4nIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICd0cnVlJ1wiXG4gICAgfSxcbiAgICBcInRhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkXCI6IHtcbiAgICAgICAgMDogXCJUaGUgJ2hlYWRlcnMnIGF0dHJpYnV0ZSBzaG91bGQgcmVmZXIgdG8gYSB2YWxpZCBjZWxsIGluIHRoZSBzYW1lIHRhYmxlXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlICdoZWFkZXJzJyBhdHRyaWJ1dGUgdmFsdWUgXFxcInswfVxcXCIgZG9lcyBub3QgcmVmZXJlbmNlIGEgdmFsaWQgJ2lkJyBpbiB0aGlzIGRvY3VtZW50XCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiVGhlICdoZWFkZXJzJyBhdHRyaWJ1dGUgdmFsdWUgXFxcInswfVxcXCIgcmVmZXJzIHRvIGl0c2VsZlwiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIlRoZSAnaGVhZGVycycgYXR0cmlidXRlIHZhbHVlIFxcXCJ7MH1cXFwiIGRvZXMgbm90IHJlZmVyIHRvIGEgY2VsbCBpbiB0aGUgc2FtZSB0YWJsZVwiLFxuICAgICAgICBcIkZhaWxfNFwiOiBcIlRoZSAnaGVhZGVycycgYXR0cmlidXRlIHZhbHVlIFxcXCJ7MH1cXFwiIGRvZXMgbm90IHJlZmVyIHRvIGEgY2VsbCBpbmRpY2F0ZWQgd2l0aCA8dGg+IG9yIGEgcm9sZSBvZiBcXFwiY29sdW1uaGVhZGVyXFxcIiBvciBcXFwicm93aGVhZGVyXFxcIlwiXG4gICAgfVxufVxuZXhwb3J0IHsgYTExeU5scyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBpbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG4gICAgaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuICAgIGltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vZG9tL0RPTVV0aWxcIjtcbiAgICBcbiAgICBsZXQgYXJpYUhpZGRlblJ1bGUgOiBSdWxlW10gPSBbXG4gICAgICAgICAgICAgICAgXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRoaXMgcnVsZSBjaGVja3MgdGhhdCBlbGVtZW50cyB3aXRoIGFuIGFyaWEtaGlkZGVuIGF0dHJpYnV0ZSBkbyBub3QgY29udGFpbiBmb2N1c2FibGUgZWxlbWVudHNcbiAgICAgICAgICogT3JpZ2luOiBBQ1QgaHR0cHM6Ly9hY3QtcnVsZXMuZ2l0aHViLmlvL3J1bGVzLzZjZmE4NFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbYXJpYS1oaWRkZW49dHJ1ZV0sIGRvbToqW2FyaWEtaGlkZGVuPXRydWVdIGRvbToqXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pIDogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtub2RlTmFtZV0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgIH0gICAgICAgIFxuICAgIH1dXG5cbiAgICBleHBvcnQgeyBhcmlhSGlkZGVuUnVsZSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlRGV0YWlscywgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNBbmNob3IgfSBmcm9tIFwiLi9ycHQtYW5jaG9yLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNDYW52YXMgfSBmcm9tIFwiLi9ycHQtY2FudmFzLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNGcmFtZSB9IGZyb20gXCIuL3JwdC1mcmFtZS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzTWV0YSB9IGZyb20gXCIuL3JwdC1tZXRhLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNDb2xvciB9IGZyb20gXCIuL3JwdC1jb2xvci1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzSGVhZGluZyB9IGZyb20gXCIuL3JwdC1oZWFkaW5nLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNBcHBsZXQgfSBmcm9tIFwiLi9ycHQtYXBwbGV0LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNDb21ib2JveCB9IGZyb20gXCIuL3JwdC1jb21ib2JveC1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzSGllciB9IGZyb20gXCIuL3JwdC1oaWVyYXJjaHktcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc09iamVjdCB9IGZyb20gXCIuL3JwdC1vYmplY3QtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0FwcCB9IGZyb20gXCIuL3JwdC1hcHBsaWNhdGlvbi1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzRWxlbSB9IGZyb20gXCIuL3JwdC1lbGVtLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNIdG1sIH0gZnJvbSBcIi4vcnB0LWh0bWwtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc1NjcmlwdCB9IGZyb20gXCIuL3JwdC1zY3JpcHQtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0FyZWEgfSBmcm9tIFwiLi9ycHQtYXJlYS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzRW1iZWQgfSBmcm9tIFwiLi9ycHQtZW1iZWQtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0ltZyB9IGZyb20gXCIuL3JwdC1pbWctcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc1NlbGVjdCB9IGZyb20gXCIuL3JwdC1zZWxlY3QtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0FyaWEgfSBmcm9tIFwiLi9ycHQtYXJpYS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzRmllbGRzZXQgfSBmcm9tIFwiLi9ycHQtZmllbGRzZXQtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0lucHV0IH0gZnJvbSBcIi4vcnB0LWlucHV0LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNTdHlsZSB9IGZyb20gXCIuL3JwdC1zdHlsZS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzTGFiZWxpbmcgfSBmcm9tIFwiLi9ycHQtYXJpYUxhYmVsaW5nLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNGaWcgfSBmcm9tIFwiLi9ycHQtZmlndXJlLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNMYWJlbCB9IGZyb20gXCIuL3JwdC1sYWJlbC1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzVGFibGUgfSBmcm9tIFwiLi90YWJsZS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzQmxpbmsgfSBmcm9tIFwiLi9ycHQtYmxpbmstcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0ZvY3VzIH0gZnJvbSBcIi4vcnB0LWZvY3VzLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNMaXN0IH0gZnJvbSBcIi4vcnB0LWxpc3QtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc1RleHQgfSBmcm9tIFwiLi9ycHQtdGV4dC1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzQmxvY2txdW90ZSB9IGZyb20gXCIuL3JwdC1ibG9ja3F1b3RlLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNGb250IH0gZnJvbSBcIi4vcnB0LWZvbnQtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc01hcnF1ZWUgfSBmcm9tIFwiLi9ycHQtbWFycXVlZS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzVGl0bGUgfSBmcm9tIFwiLi9ycHQtdGl0bGUtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0JvZHkgfSBmcm9tIFwiLi9ycHQtYm9keS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzRm9ybSB9IGZyb20gXCIuL3JwdC1mb3JtLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNNZWRpYSB9IGZyb20gXCIuL3JwdC1tZWRpYS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzVmlkZW8gfSBmcm9tIFwiLi9ycHQtdmlkZW8tcnVsZXNcIjtcbmltcG9ydCB7IGFyaWFIaWRkZW5SdWxlIH0gZnJvbSBcIi4vYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCI7XG5cbmxldCBhMTF5UnVsZXM6IFJ1bGVbXSA9IFtdLmNvbmNhdChcbiAgICBhMTF5UnVsZXNBbmNob3JcbiAgICAsIGExMXlSdWxlc0NhbnZhc1xuICAgICwgYTExeVJ1bGVzRnJhbWVcbiAgICAsIGExMXlSdWxlc01ldGFcbiAgICAsIGExMXlSdWxlc0NvbG9yXG4gICAgLCBhMTF5UnVsZXNIZWFkaW5nXG4gICAgLCBhMTF5UnVsZXNBcHBsZXRcbiAgICAsIGExMXlSdWxlc0NvbWJvYm94XG4gICAgLCBhMTF5UnVsZXNIaWVyXG4gICAgLCBhMTF5UnVsZXNPYmplY3RcbiAgICAsIGExMXlSdWxlc0FwcFxuICAgICwgYTExeVJ1bGVzRWxlbVxuICAgICwgYTExeVJ1bGVzSHRtbFxuICAgICwgYTExeVJ1bGVzU2NyaXB0XG4gICAgLCBhMTF5UnVsZXNBcmVhXG4gICAgLCBhMTF5UnVsZXNFbWJlZFxuICAgICwgYTExeVJ1bGVzSW1nXG4gICAgLCBhMTF5UnVsZXNTZWxlY3RcbiAgICAsIGExMXlSdWxlc0FyaWFcbiAgICAsIGExMXlSdWxlc0ZpZWxkc2V0XG4gICAgLCBhMTF5UnVsZXNJbnB1dFxuICAgICwgYTExeVJ1bGVzU3R5bGVcbiAgICAsIGExMXlSdWxlc0xhYmVsaW5nXG4gICAgLCBhMTF5UnVsZXNGaWdcbiAgICAsIGExMXlSdWxlc0xhYmVsXG4gICAgLCBhMTF5UnVsZXNUYWJsZVxuICAgICwgYTExeVJ1bGVzQmxpbmtcbiAgICAsIGExMXlSdWxlc0ZvY3VzXG4gICAgLCBhMTF5UnVsZXNMaXN0XG4gICAgLCBhMTF5UnVsZXNUZXh0XG4gICAgLCBhMTF5UnVsZXNCbG9ja3F1b3RlXG4gICAgLCBhMTF5UnVsZXNGb250XG4gICAgLCBhMTF5UnVsZXNNYXJxdWVlXG4gICAgLCBhMTF5UnVsZXNUaXRsZVxuICAgICwgYTExeVJ1bGVzQm9keVxuICAgICwgYTExeVJ1bGVzRm9ybVxuICAgICwgYTExeVJ1bGVzTWVkaWFcbiAgICAsIGExMXlSdWxlc1ZpZGVvXG4gICAgLCBhcmlhSGlkZGVuUnVsZVxuKTtcblxuZXhwb3J0IHsgYTExeVJ1bGVzIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuLi8uLi8uLi8uLlwiO1xuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcywgUnVsZUNvbnRleHRIaWVyYXJjaHkgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0FuY2hvcjogUnVsZVtdID0gW3tcbiAgICBpZDogXCJkZXRlY3Rvcl90YWJiYWJsZVwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBjb250ZXh0SGllcmFyY2hpZXM/OiBSdWxlQ29udGV4dEhpZXJhcmNoeSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBpZiAoIVJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBoaWVyQ29udGV4dCA9IGNvbnRleHRIaWVyYXJjaGllcy5hcmlhW2NvbnRleHRIaWVyYXJjaGllcy5hcmlhLmxlbmd0aC0xXTtcbiAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsIFtdLCBbe1xuICAgICAgICAgICAgbmFtZTogaGllckNvbnRleHQuYXR0cmlidXRlcy5uYW1lLFxuICAgICAgICAgICAgcm9sZTogaGllckNvbnRleHQucm9sZSxcbiAgICAgICAgICAgIHRhYmluZGV4OiBwYXJzZUludChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSB8fCBcIjBcIilcbiAgICAgICAgfV0pO1xuICAgIH1cbn0sXG57XG4gICAgaWQ6IFwiV0NBRzIwX0FfSGFzVGV4dFwiLFxuICAgIGNvbnRleHQ6IFwiYXJpYTpsaW5rXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikudG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJ1bGUgb25seSBwYXNzZXMgaWYgYW4gZWxlbWVudCBoYXMgaW5uZXIgY29udGVudCxcbiAgICAgICAgLy8gaW4gdGhlIGNhc2UgdGhhdCB0aGVyZSBpcyBvbmx5IGhpZGRlbiBjb250ZW50IHVuZGVyIHRoZSB0aGUgZWxlbWVudCBpdCBpcyBhIHZpb2xhdGlvblxuICAgICAgICBsZXQgcGFzc2VkID1cbiAgICAgICAgICAgIEFSSUFNYXBwZXIuY29tcHV0ZU5hbWUocnVsZUNvbnRleHQpLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICAgICB8fCBSUFRVdGlsLm5vblRhYmFibGVDaGlsZENoZWNrKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiAgICAsIHtcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlcmUgaXMgYSB0YXJnZXQsIGFuZCB0ZXh0IGRvZXMgbm90IHNwZWNpZnkgYSBuZXcgd2luZG93LlxuICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg4MywgUlBUIDExMiwgUlBUIEc0OTFcbiAgICAgKi9cbiAgICBpZDogXCJXQ0FHMjBfQV9UYXJnZXRBbmRUZXh0XCIsXG4gICAgY29udGV4dDogXCJkb206YVt0YXJnZXRdLGRvbTphcmVhW3RhcmdldF0sZG9tOmJhc2VbdGFyZ2V0XVwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgLy8gc2tpcCB0aGUgcnVsZSBpZiBpdCdzIEFUIGhpZGRlbiBhbmQgbm90IHRhYmJhYmxlXG4gICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkgJiYgIVJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBwYXJhbVdpblRleHQ6IHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogW1wibmV3IHdpbmRvd1wiLCBcIm5ldyB0YWJcIl0sXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdFN0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInRhcmdldFwiKTtcbiAgICAgICAgbGV0IHBhc3NlZCA9IHRTdHIgPT0gXCJfcGFyZW50XCIgfHwgdFN0ciA9PSBcIl9zZWxmXCIgfHwgdFN0ciA9PSBcIl90b3BcIiB8fCBSUFRVdGlsLmdldEZyYW1lQnlOYW1lKHJ1bGVDb250ZXh0LHRTdHIpICE9IG51bGw7XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAvLyBOYW1lIGlzIG5vdCBwYXJ0IG9mIHRoaXMgZnJhbWVzZXQg4oCTIG11c3QgaGF2ZSBwb3RlbnRpYWwgdG8gY3JlYXRlIG5ldyB3aW5kb3c/XG4gICAgICAgICAgICAvLyBTZWUgaWYgYSBuZXcgd2luZG93IGlzIG1lbnRpb25lZFxuICAgICAgICAgICAgbGV0IHRleHRTdHIgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidGl0bGVcIikpXG4gICAgICAgICAgICAgICAgdGV4dFN0ciArPSBcIiBcIiArIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInRpdGxlXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFwYXNzZWQgJiYgaSA8IHBhcmFtcy5wYXJhbVdpblRleHQudmFsdWUubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgaWYgKHRleHRTdHIuaW5kZXhPZihwYXJhbXMucGFyYW1XaW5UZXh0LnZhbHVlW2ldKSAhPSAtMSkgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFzc2VkID8gUnVsZVBhc3MoXCJQYXNzXzBcIikgOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgfVxufV07XG5leHBvcnQgeyBhMTF5UnVsZXNBbmNob3IgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNBcHBsZXQgOiBSdWxlW10gPSBbXG5cbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGUgYXBwbGV0IGFsdCB0ZXh0IGlzIHBvb3JcbiAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMzVcbiAgICAgKi9cbiAgICBpZDogXCJXQ0FHMjBfQXBwbGV0X0hhc0FsdFwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOmFwcGxldFwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pIDogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgIGlmICghUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhbHRcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBhbHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikudHJpbSgpO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImNvZGVcIikgJiYgYWx0ID09IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImNvZGVcIikudHJpbSgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5dXG5leHBvcnQgeyBhMTF5UnVsZXNBcHBsZXQgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNBcHA6IFJ1bGVbXSA9IFtcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW55IGNoaWxkIG9mIGFwcGxpY2F0aW9uIHJvbGUgaXMgbm90IGFuIGFydGljbGUgb3IgYSBkb2N1bWVudFxuICAgICAgICAgKiBPcmlnaW46ICBXQUktQVJJQSAxLjFcbiAgICAgICAgICogXHRcdFx0aHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXBwbGljYXRpb25cbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfQXBwbGljYXRpb25fUm9sZV9UZXh0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSkgOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImFwcGxpY2F0aW9uXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gcnVsZUNvbnRleHQuY2hpbGROb2RlcztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZVZpc2libGUoY2hpbGRyZW5baV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MoY2hpbGRyZW5baV0sIFwiZG9jdW1lbnRcIikgfHwgUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MoY2hpbGRyZW5baV0sIFwiYXJ0aWNsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZHJlbltpXS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gY2hpbGRyZW5baV0ubm9kZVZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9XG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0FwcCB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0FyZWE6IFJ1bGVbXSA9IFtcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlIGFyZWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFsdCB0ZXh0XG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEgyNFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0FyZWFfSGFzQWx0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmFyZWFcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSkgOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhbHRcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzQXJlYSB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MsIFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5pbXBvcnQgeyBBUklBRGVmaW5pdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vYXJpYS9BUklBRGVmaW5pdGlvbnNcIjtcbmltcG9ydCB7IEZyYWdtZW50VXRpbCB9IGZyb20gXCIuLi91dGlsL2ZyYWdtZW50XCI7XG5pbXBvcnQgeyBBUklBTWFwcGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5cbmxldCBhMTF5UnVsZXNBcmlhOiBSdWxlW10gPSBbe1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIHJvbGUgaXMgbm90IGEgdmFsaWQgV0FJLUFSSUEgcm9sZVxuICAgICAqIE9yaWdpbjogIFdDQUcgMi4wIGd1aWRlbGluZSA0LjEuMiBOYW1lLCBSb2xlLCBWYWx1ZVxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCA0LjFiXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9WYWxpZFJvbGVcIixcbiAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBsZXQgcm9sZVN0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChyb2xlU3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkZXNpZ25QYXR0ZXJucyA9IEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJucztcbiAgICAgICAgbGV0IHJvbGVzID0gcm9sZVN0ci5zcGxpdCgvXFxzKy8pO1xuICAgICAgICAvLyBub3cgd2UgaGF2ZSBhbGwgcm9sZSBhdHRyaWJ1dGVzXG4gICAgICAgIGxldCBpbnZhbGlkUm9sZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCByb2xlIG9mIHJvbGVzKSB7XG4gICAgICAgICAgICBpZiAoIShyb2xlLnRvTG93ZXJDYXNlKCkgaW4gZGVzaWduUGF0dGVybnMpKSB7XG4gICAgICAgICAgICAgICAgaW52YWxpZFJvbGVzLnB1c2gocm9sZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbcm9sZXNbaV1dKTtcbiAgICAgICAgaWYgKGludmFsaWRSb2xlcy5sZW5ndGggPT09IHJvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIsIFtpbnZhbGlkUm9sZXMuam9pbihcIixcIildKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbnZhbGlkUm9sZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJGYWlsXzFcIiwgW2ludmFsaWRSb2xlcy5qb2luKFwiLFwiKV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW4gaW52YWxpZCBXQUktQVJJQSBwcm9wZXJ0eSBpcyBmb3VuZCBhbnl3aGVyZVxuICAgICAqIFx0XHRcdFx0KG9uIGFuIGVsZW1lbnQgd2l0aCBhIHJvbGUgb3Igb24gYW4gZWxlbWVudCB3aXRoIG5vIHJvbGUpLlxuICAgICAqIE9yaWdpbjogIFdDQUcgMi4wIGd1aWRlbGluZSA0LjEuMiBOYW1lLCBSb2xlLCBWYWx1ZVxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCA0LjFiXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKlxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBsZXQgY29udGV4dEF0dHJpYnV0ZXMgPSBydWxlQ29udGV4dC5hdHRyaWJ1dGVzO1xuICAgICAgICAvLyBUaGlzIGdldHMgYWxsIGVsZW1lbnRzIHdpdGggYXR0cmlidXRlcyBzbyB3ZSBzdGlsbCBoYXZlIHNvbWVcbiAgICAgICAgLy8gT3V0IG9mIFNjb3BlIHNpbmNlIG5vdCBhbGwgYXR0cmlidXRlcyBhcmUgYXJpYSBcblxuICAgICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGxldCBwcm9wZXJ0eURhdGFUeXBlcyA9IEFSSUFEZWZpbml0aW9ucy5wcm9wZXJ0eURhdGFUeXBlcztcbiAgICAgICAgICAgIGxldCBmYWlsZWRQcm9wZXJ0aWVzID0gXCJcIjtcbiAgICAgICAgICAgIGxldCB0ZXN0ZWRQcm9wZXJ0aWVzID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBjb250ZXh0QXR0cmlidXRlcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBhdHRyTmFtZSA9IGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZShydWxlQ29udGV4dCwgYXR0ck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRlc3RlZFByb3BlcnRpZXMrKztcbiAgICAgICAgICAgICAgICAgICAgLy8gTm93IHdlIGp1c3QgaGF2ZSBhcmlhIGF0dHJpYnV0ZXMgd2hpY2ggY2FuXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3Mgb3IgZmFpbCBiYXNlZCBvbiB3aGV0aGVyIHRoZXJlIHByb3BlcnR5IGlzIHZhbGlkXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhVHlwZXMgPSBwcm9wZXJ0eURhdGFUeXBlc1thdHRyTmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YVR5cGVzKSB7IC8vIGlmIHByb3BlcnR5IGlzIG5vdCBpbiB2YWxpZCBwcm9wZXJ0eSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgZmFpbGVkUHJvcGVydGllcyBjb21tYSBzZXAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhaWxlZFByb3BlcnRpZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRQcm9wZXJ0aWVzID0gYXR0ck5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZFByb3BlcnRpZXMgPSBmYWlsZWRQcm9wZXJ0aWVzICsgXCIsIFwiICsgYXR0ck5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGVzdGVkUHJvcGVydGllcyA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZhaWxlZFByb3BlcnRpZXMubGVuZ3RoICE9IDApIHtcbiAgICAgICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChmYWxzZSwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBbZmFpbGVkUHJvcGVydGllcywgcnVsZUNvbnRleHQudGFnTmFtZV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbZmFpbGVkUHJvcGVydGllcywgcnVsZUNvbnRleHQudGFnTmFtZV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvL3JldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBKQ0ggLSBwYXNzaW5nIGlzIGJhc2VkIG9uIGFsbCBhdHRyaWJ1dGVzIG5vdCBqdXN0IGFyaWEgYXR0cmlidXRlc1xuICAgICAgICAvLyAgICAgICBsZWFkaW5nIHRvIE9WRVIgQ09VTlRJTkcgc28gbW92ZWQgcGFzcyB1cFxuICAgICAgICAvL3JldHVybiBSdWxlUGFzcygxKTtcbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIHJvbGUgaXMgZ2l2ZW4gYW5kIGEgcmVxdWlyZWQgcHJvcGVydHkgb2YgdGhlIHJvbGUgaXMgbWlzc2luZy5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgNC4xLjIgTmFtZSwgUm9sZSwgVmFsdWVcbiAgICAgKiBcdFx0XHRDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgNC4xYlxuICAgICAqXHRcdFx0T3BlbiBBamF4IEFsbGlhbmNlIEFjY2Vzc2liaWxpdHkgV29ya2luZyBHcm91cCBydWxlc2V0XG4gICAgICovXG4gICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRQcm9wZXJ0aWVzXCIsXG4gICAgY29udGV4dDogXCJkb206Kltyb2xlXVwiLFxuICAgIGRlcGVuZGVuY2llczogW1wiUnB0X0FyaWFfVmFsaWRSb2xlXCJdLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgbGV0IGF0dHJOYW1lQXJyID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCByb2xlTmFtZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgZGVzaWduUGF0dGVybnMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnM7XG4gICAgICAgIGxldCByb2xlcyA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgbGV0IGltcGxpY2l0Um9sZSA9IEFSSUFNYXBwZXIuZWxlbVRvSW1wbGljaXRSb2xlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgbGV0IGhhc0F0dHJpYnV0ZSA9IFJQVFV0aWwuaGFzQXR0cmlidXRlO1xuICAgICAgICBsZXQgdGVzdGVkUm9sZXMgPSAwO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwLCByb2xlc0xlbmd0aCA9IHJvbGVzLmxlbmd0aDsgaiA8IHJvbGVzTGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIGlmIChyb2xlc1tqXSA9PT0gaW1wbGljaXRSb2xlKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0gJiYgUlBUVXRpbC5nZXRSb2xlUmVxdWlyZWRQcm9wZXJ0aWVzKHJvbGVzW2pdLCBydWxlQ29udGV4dCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxldCByZXF1aXJlZFJvbGVQcm9wcyA9IFJQVFV0aWwuZ2V0Um9sZVJlcXVpcmVkUHJvcGVydGllcyhyb2xlc1tqXSwgcnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGxldCByb2xlTWlzc2luZ1JlcVByb3AgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0ZXN0ZWRSb2xlcysrO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBwcm9wZXJ0aWVzTGVuZ3RoID0gcmVxdWlyZWRSb2xlUHJvcHMubGVuZ3RoOyBpIDwgcHJvcGVydGllc0xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCByZXF1aXJlZFJvbGVQcm9wc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGFuIGFyaWEtbGFiZWxsZWRieSBpc24ndCBwcmVzZW50LCBhbiBhcmlhLWxhYmVsIHdpbGwgbWVldCB0aGUgcmVxdWlyZW1lbnQuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRSb2xlUHJvcHNbaV0gPT0gXCJhcmlhLWxhYmVsbGVkYnlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoIWhhc0F0dHJpYnV0ZShydWxlQ29udGV4dCwgXCJhcmlhLWxhYmVsXCIpKSB8fCAocm9sZXNbaV0gIT0gXCJyYWRpb2dyb3VwXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lQXJyLnB1c2gocmVxdWlyZWRSb2xlUHJvcHNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlTWlzc2luZ1JlcVByb3AgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZWRSb2xlUHJvcHNbaV0gPT0gXCJhcmlhLXZhbHVlbm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsIFwiYXJpYS12YWx1ZXRleHRcIikpIHx8IChyb2xlc1tpXSAhPSBcInByb2dyZXNzYmFyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lQXJyLnB1c2gocmVxdWlyZWRSb2xlUHJvcHNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlTWlzc2luZ1JlcVByb3AgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZWRSb2xlUHJvcHNbaV0gPT0gXCJhcmlhLWNvbnRyb2xzXCIgJiYgcm9sZXNbal0gPT0gXCJjb21ib2JveFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCB0aGlzIGNoZWNrIHNpbmNlIGFyaWEtY29udHJvbHMgaW4gdGhlIHRleHRib3ggb2YgYSBjb21ib2JveCBpcyBhbHJlYWR5IGhhbmRsZWQgaW4gcnVsZSBIQUFDX0NvbWJvYm94X011c3RfaGF2ZV9UZXh0X0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lQXJyLnB1c2gocmVxdWlyZWRSb2xlUHJvcHNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVNaXNzaW5nUmVxUHJvcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvbGVNaXNzaW5nUmVxUHJvcCA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lQXJyLnB1c2gocm9sZXNbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmV0VG9rZW4gPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHBhc3NlZCA9IGF0dHJOYW1lQXJyLmxlbmd0aCA9PSAwOyAvLyBvbmx5IGFyaWEgYXR0cmlidXRlcyBzbyBOTyBPVVQgT0YgU0NPUEVcbiAgICAgICAgcmV0VG9rZW4ucHVzaChyb2xlTmFtZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICByZXRUb2tlbi5wdXNoKGF0dHJOYW1lQXJyLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgYXR0ck5hbWVBcnIsICcnLCBwYXNzZWQgPT0gdHJ1ZSA/IFtdIDogcmV0VG9rZW4pO1xuICAgICAgICBpZiAodGVzdGVkUm9sZXMgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCByZXRUb2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIHJvbGUgaXMgZ2l2ZW4gYW5kIGEgcHJvcGVydHkgb2YgdGhlIHJvbGUgaXMgZW1wdHkuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDQuMS4yIE5hbWUsIFJvbGUsIFZhbHVlXG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDQuMWJcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX0VtcHR5UHJvcGVydHlWYWx1ZVwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV1cIixcbiAgICBkZXBlbmRlbmNpZXM6IFtcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiXSxcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCBhdHRyTmFtZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgZGVzaWduUGF0dGVybnMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnM7XG4gICAgICAgIGxldCBoYXNBdHRyaWJ1dGUgPSBSUFRVdGlsLmhhc0F0dHJpYnV0ZTtcbiAgICAgICAgbGV0IHRlc3RlZFByb3BlcnRpZXMgPSAwO1xuXG4gICAgICAgIGxldCByb2xlcyA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByb2xlcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKGRlc2lnblBhdHRlcm5zW3JvbGVzW2pdXSAmJiBSUFRVdGlsLmdldFJvbGVSZXF1aXJlZFByb3BlcnRpZXMocm9sZXNbal0sIHJ1bGVDb250ZXh0KSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVpcmVkUm9sZVByb3BzID0gUlBUVXRpbC5nZXRSb2xlUmVxdWlyZWRQcm9wZXJ0aWVzKHJvbGVzW2pdLCBydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IHJlcXVpcmVkUm9sZVByb3BzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhdHRyaWJ1dGUgPSByZXF1aXJlZFJvbGVQcm9wc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0F0dHJpYnV0ZShydWxlQ29udGV4dCwgYXR0cmlidXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVkUHJvcGVydGllcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVWYWx1ZSA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUocmVxdWlyZWRSb2xlUHJvcHNbaV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlVmFsdWUubGVuZ3RoID09IDApIGF0dHJOYW1lQXJyLnB1c2gocmVxdWlyZWRSb2xlUHJvcHNbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVkUm9sZVByb3BzW2ldID09IFwiYXJpYS1sYWJlbGxlZGJ5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocm9sZXNbaV0gPT0gXCJyYWRpb2dyb3VwXCIpICYmIChoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsIFwiYXJpYS1sYWJlbFwiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZWRQcm9wZXJ0aWVzKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVWYWx1ZSA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCA9PSAwKSBhdHRyTmFtZUFyci5wdXNoKFwiYXJpYS1sYWJlbFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXF1aXJlZFJvbGVQcm9wc1tpXSA9PSBcImFyaWEtdmFsdWVub3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyb2xlc1tpXSA9PSBcInByb2dyZXNzYmFyXCIpICYmIChoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsIFwiYXJpYS12YWx1ZXRleHRcIikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVkUHJvcGVydGllcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlVmFsdWUgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS12YWx1ZXRleHRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlVmFsdWUubGVuZ3RoID09IDApIGF0dHJOYW1lQXJyLnB1c2goXCJhcmlhLXZhbHVldGV4dFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0pIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFnUHJvcGVydHkgPSBSUFRVdGlsLmdldEVsZW1lbnRBcmlhUHJvcGVydHkocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGxldCBwZXJtaXR0ZWRSb2xlcyA9IFtdO1xuICAgICAgICAgICAgICAgIHBlcm1pdHRlZFJvbGVzLnB1c2gocm9sZXNbal0pO1xuICAgICAgICAgICAgICAgIGxldCBhbGxvd2VkQXR0cmlidXRlcyA9IFJQVFV0aWwuZ2V0QWxsb3dlZEFyaWFBdHRyaWJ1dGVzKHJ1bGVDb250ZXh0LCBwZXJtaXR0ZWRSb2xlcywgdGFnUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBhbGxvd2VkQXR0cmlidXRlcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gYWxsb3dlZEF0dHJpYnV0ZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUgPT0gXCJhcmlhLWNoZWNrZWRcIiB8fCBhdHRyaWJ1dGUgPT0gXCJhcmlhLXNlbGVjdGVkXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSA9PSBcImFyaWEtZXhwYW5kZWRcIiB8fCBhdHRyaWJ1dGUgPT0gXCJhcmlhLW9yaWVudGF0aW9uXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSA9PSBcImFyaWEtbGV2ZWxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0F0dHJpYnV0ZShydWxlQ29udGV4dCwgYXR0cmlidXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZFByb3BlcnRpZXMrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZVZhbHVlID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lQXJyLnB1c2goYXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJldE1zZyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgcGFzc2VkID0gYXR0ck5hbWVBcnIubGVuZ3RoID09IDA7XG4gICAgICAgIHJldE1zZy5wdXNoKGF0dHJOYW1lQXJyLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgYXR0ck5hbWVBcnIsICcnLCByZXRNc2cpO1xuICAgICAgICBpZiAodGVzdGVkUHJvcGVydGllcyA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgcmV0TXNnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbn0sXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgV0FJLUFSSUEgcHJvcGVydHkgb2YgdHlwZSBOTVRPS0VOLCBpbnQsIGRlY2ltYWwgYW5kIGJvb2xlYW4gaGFzIGFuIGludmFsaWQgdmFsdWUuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDQuMS4yIE5hbWUsIFJvbGUsIFZhbHVlXG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDQuMWJcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZVwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCB2YWx1ZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgYXR0ck5hbWVBcnIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IGRhdGFUeXBlQXJyID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCBwcm9wZXJ0eURhdGFUeXBlcyA9IEFSSUFEZWZpbml0aW9ucy5wcm9wZXJ0eURhdGFUeXBlcztcbiAgICAgICAgbGV0IGNvbnRleHRBdHRyaWJ1dGVzID0gcnVsZUNvbnRleHQuYXR0cmlidXRlcztcbiAgICAgICAgbGV0IHRlc3RlZFByb3BlcnR5VmFsdWVzID0gMDtcblxuICAgICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSBjb250ZXh0QXR0cmlidXRlcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBhdHRyTmFtZSA9IGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZShydWxlQ29udGV4dCwgYXR0ck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhVHlwZXMgPSBwcm9wZXJ0eURhdGFUeXBlc1thdHRyTmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGxldCBub2RlVmFsdWUgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcoY29udGV4dEF0dHJpYnV0ZXNbaV0ubm9kZVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGVzdGVkUHJvcGVydHlWYWx1ZXMrKztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFUeXBlcyAmJiBkYXRhVHlwZXMudmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVR5cGVzLnZhbHVlcy5pbmRleE9mKG5vZGVWYWx1ZSkgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVR5cGVzLnZhbHVlcy5pbmRleE9mKCd1bmRlZmluZWQnKSAhPSAtMSAmJiBub2RlVmFsdWUubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90cmFuc2xhdGUgJ3VuZGVmaW5lZCcgdG8gbWVhbiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyaWEtcmVsZXZhbnQgaXMgcmVwcmVzZW50ZWQgYXMgYSBzcGFjZSBkZWxpbWl0ZWQgbGlzdCBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZGl0aW9ucywgcmVtb3ZhbHMsIHRleHQ7IG9yIGEgc2luZ2xlIGNhdGNoLWFsbCB2YWx1ZSBhbGwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhVHlwZXMudHlwZSA9PT0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2Vuc1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXR0clZhbHVlcyA9IGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5vZGVWYWx1ZS50cmltKCkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHZhbHVlIGFsbCBpcyBzcGVjaWZpZWQsIGl0IGNhbm5vdCBoYXZlIGFueSBvdGhlciB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJWYWx1ZXMubGVuZ3RoID4gMSAmJiBhdHRyVmFsdWVzLmluY2x1ZGVzKFwiYWxsXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVBcnIucHVzaChjb250ZXh0QXR0cmlidXRlc1tpXS5ub2RlVmFsdWUuc3BsaXQoXCIgXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKGF0dHJOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZUFyci5wdXNoKGRhdGFUeXBlcy52YWx1ZXMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNoID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhdHRyVmFsdWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBpbmRpdmlkdWFsIHZhbHVlIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiBhbGxvd2VkIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0clZhbHVlc1tqXSAhPSBcIlwiICYmICFkYXRhVHlwZXMudmFsdWVzLmluY2x1ZGVzKGF0dHJWYWx1ZXNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc2guaGFzT3duUHJvcGVydHkoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaFthdHRyTmFtZV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lQXJyLnB1c2goYXR0ck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVBcnIucHVzaChhdHRyVmFsdWVzW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlQXJyLnB1c2goZGF0YVR5cGVzLnZhbHVlcy50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXJyLnB1c2goY29udGV4dEF0dHJpYnV0ZXNbaV0ubm9kZVZhbHVlLnNwbGl0KFwiIFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKGF0dHJOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlQXJyLnB1c2goZGF0YVR5cGVzLnZhbHVlcy50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhVHlwZXMgJiYgZGF0YVR5cGVzLnR5cGUgJiYgZGF0YVR5cGVzLnR5cGUgPT09IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpVmFsID0gcGFyc2VJbnQobm9kZVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihpVmFsKSB8fCAoXCJcIitpVmFsICE9PSBub2RlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVBcnIucHVzaChub2RlVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lQXJyLnB1c2goYXR0ck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFUeXBlcyAmJiBkYXRhVHlwZXMudHlwZSAmJiBkYXRhVHlwZXMudHlwZSA9PSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2RlY2ltYWxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZWYWwgPSBwYXJzZUZsb2F0KG5vZGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oZlZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUFyci5wdXNoKG5vZGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ck5hbWVBcnIucHVzaChhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGVzICYmIGRhdGFUeXBlcy50eXBlICYmIChkYXRhVHlwZXMudHlwZSA9PSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2Jvb2xlYW5cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0bXBWID0gbm9kZVZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcFYgIT09IFwidHJ1ZVwiICYmIHRtcFYgIT09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXJyLnB1c2gobm9kZVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKGF0dHJOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhVHlwZXMgJiYgZGF0YVR5cGVzLnR5cGUgJiYgKGRhdGFUeXBlcy50eXBlID09IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjc3RyaW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZWRQcm9wZXJ0eVZhbHVlcy0tO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXRNc2cgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHBhc3NlZCA9IGF0dHJOYW1lQXJyLmxlbmd0aCA9PSAwO1xuICAgICAgICByZXRNc2cucHVzaCh2YWx1ZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICByZXRNc2cucHVzaChhdHRyTmFtZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICByZXRNc2cucHVzaChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgLy8gcmV0TXNnLnB1c2ggKGRhdGFUeXBlQXJyLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgYXR0ck5hbWVBcnIsICcnLCByZXRNc2cpO1xuICAgICAgICBpZiAodGVzdGVkUHJvcGVydHlWYWx1ZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIHJldE1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhbiBXQUktQVJJQSBwcm9wZXJ0eSBpZCByZWZlcmVuY2UgaXMgaW52YWxpZC4gIEZvciBleGFtcGxlOlxuICAgICAqIFx0XHRcdFx0Rm9yIGEgZ2l2ZW4gaWQsIHRyaWdnZXJzIGlmIGFuIGVsZW1lbnQgZG9lc24ndCBleGlzdHMgdGhhdCBjb250YWlucyB0aGUgaWQuXG4gICAgICogXHRcdFx0XHRUcmlnZ2VycyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgaWRzIHdoZW4gb25seSBvbmUgaXMgdmFsaWQuXG4gICAgICogXHRcdFx0XHRUcmlnZ2VycyBpZiB0aGVyZSBpcyBhbiBlbXB0eSBpZCB2YWx1ZS5cbiAgICAgKiAgICAgICAgICAgICAgVHJpZ2dlcnMgaWYgdGhlcmUgaXMgb25seSBhIHNwYWNlIGluIHRoZSBpZCB2YWx1ZS5cbiAgICAgKiAgICAgICAgICAgICAgVHJpZ2dlcnMgaWYgdGhlIElEIHJlZmVyZW5jZSBpcyBhIGhpZGRlbiBlbGVtZW50IGFuZCB0aGUgYXJpYS0qIGF0dHJpYnV0ZVxuICAgICAqICAgICAgICAgICAgICBkb2VzIG5vdCBzdXBwb3J0IGhpZGRlbiBlbGVtZW50IHJlZmVyZW5jZS5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgNC4xLjIgTmFtZSwgUm9sZSwgVmFsdWVcbiAgICAgKiBcdFx0XHRDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgNC4xYlxuICAgICAqXHRcdFx0T3BlbiBBamF4IEFsbGlhbmNlIEFjY2Vzc2liaWxpdHkgV29ya2luZyBHcm91cCBydWxlc2V0XG4gICAgICovXG4gICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRJZFJlZlwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCBwYXNzID0gdHJ1ZTtcbiAgICAgICAgbGV0IGF0dHJOYW1lQXJyID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCBub25FeGlzdGFudElEcyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgb3duZXJEb2N1bWVudCA9IEZyYWdtZW50VXRpbC5nZXRPd25lckZyYWdtZW50KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgbGV0IGNvbnRleHRBdHRyaWJ1dGVzID0gcnVsZUNvbnRleHQuYXR0cmlidXRlcztcbiAgICAgICAgbGV0IGlkVG9rZW5zID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCB0ZXN0ZWRSZWZlcmVuY2VzID0gMDtcblxuICAgICAgICBpZiAoY29udGV4dEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBhdHRyTGVuZ3RoID0gY29udGV4dEF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgYXR0ckxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFzcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgbGV0IGF0dHJOYW1lID0gY29udGV4dEF0dHJpYnV0ZXNbaV0ubmFtZTtcbiAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5pc0RlZmluZWRBcmlhQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBhdHRyTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGFUeXBlcyA9IEFSSUFEZWZpbml0aW9ucy5wcm9wZXJ0eURhdGFUeXBlc1thdHRyTmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhVHlwZXMgJiYgZGF0YVR5cGVzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdXBwb3J0c09uZUlEUmVmID0gKGRhdGFUeXBlcy50eXBlID09IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaWRyZWZcIikgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBkYXRhIHR5cGUgc3VwcG9ydHMgb25lIG9yIG1vcmUgaWQgcmVmcyBkbyBlcnJvciBjaGVja2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRzT25lSURSZWYgfHwgKGRhdGFUeXBlcy50eXBlID09IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaWRyZWZzXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVkUmVmZXJlbmNlcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlVmFsdWVMZW5ndGggPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcoY29udGV4dEF0dHJpYnV0ZXNbaV0ubm9kZVZhbHVlKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkQXJyYXkgPSBjb250ZXh0QXR0cmlidXRlc1tpXS5ub2RlVmFsdWUuc3BsaXQoXCIgXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGFuIGVtcHR5IElEIFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlVmFsdWVMZW5ndGggPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRUb2tlbnMucHVzaChcIlxcXCJcIiArIGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5vZGVWYWx1ZSArIFwiXFxcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRvbyBtYW55IElEUmVmc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1cHBvcnRzT25lSURSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBoYXMgdG9vIG1hbnkgSURSZWZzIGl0IGlzIGFuIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlVmFsdWVMZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkQXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNhcHR1cmUgYWxsIHRoZSBJRFJlZnMgZm9yIGlkVG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgeiA9IDAsIGxlbmd0aCA9IGlkQXJyYXkubGVuZ3RoOyB6IDwgbGVuZ3RoOyArK3opIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkQXJyYXlbel0gIT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRUb2tlbnMucHVzaChpZEFycmF5W3pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgaWQgcmVmcyBhcmUgaW52YWxpZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXNzICYmIG5vZGVWYWx1ZUxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwLCBsZW5ndGggPSBpZEFycmF5Lmxlbmd0aDsgaiA8IGxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWRBcnJheVtqXS5sZW5ndGggPiAwKSB7IC8vIGl0IGlzIGFuIGVtcHR5IHN0cmluZyBpZiBzcGFjZXMgYXJlIG9uZSBhZnRlciB0aGUgb3RoZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGVsZW1lbnQgYnkgSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudEJ5SWQgPSBvd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkQXJyYXlbal0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyBpZiB0aGUgZWxlbWVudCBleGlzdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gZWxlbWVudEJ5SWQgIT0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGV4aXN0cyBhbmQgdGhpcyBpcyBhbiBhcmlhIGF0dHJpYnV0ZSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBoaWRkZW4gSUQgcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBwZXJmb3JtIGEgaXNOb2RlVmlzaWJsZSBjaGVjaywgaW4gdGhlIGNhc2UgdGhlIG5vZGUgaXMgbm90IHZpc2libGUgdGhlbiB3ZSByZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWxzZSBhbmQgdHJ1ZSBvdGhlcndpc2UuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3MgJiYgIWRhdGFUeXBlcy5oaWRkZW5JRFJlZlN1cHBvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gUlBUVXRpbC5pc05vZGVWaXNpYmxlKGVsZW1lbnRCeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkQXJyYXlbal0gIT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRUb2tlbnMucHVzaChpZEFycmF5W2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IG9uZSBvZiB0aGUgaWQgcmVmZXJlbmNlcyBuZWVkIHRvIGJlIHZhbGlkIHRvIG1hcmsgdGhlIHJ1bGUgYXMgcGFzc2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZXJlZm9yZSBpZiB3ZSBmaW5kIGEgc2luZ2xlIHZpc2libGUgZWxlbWVudCB0aGVuIHN0b3AgY2hlY2tpbmcgYW5kIG1hcmsgYXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXNzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3MpIGF0dHJOYW1lQXJyLnB1c2goYXR0ck5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFzc2VkID0gYXR0ck5hbWVBcnIubGVuZ3RoID09IDA7XG4gICAgICAgIGxldCByZXRUb2tlbjEgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHJldFRva2VuMiA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgcmV0VG9rZW4zID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG5cbiAgICAgICAgICAgIHJldFRva2VuMi5wdXNoKGF0dHJOYW1lQXJyLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgICAgICByZXRUb2tlbjMucHVzaChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIGlmIChpZFRva2Vucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0VG9rZW4xLnB1c2goaWRUb2tlbnMuam9pbihcIiwgXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgYXR0ck5hbWVBcnIsICcnLCBwYXNzZWQgPT0gdHJ1ZSA/IFtdIDogW3JldFRva2VuMSwgcmV0VG9rZW4yLCByZXRUb2tlbjNdKTtcbiAgICAgICAgaWYgKHRlc3RlZFJlZmVyZW5jZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtyZXRUb2tlbjEudG9TdHJpbmcoKSwgcmV0VG9rZW4yLnRvU3RyaW5nKCksIHJldFRva2VuMy50b1N0cmluZygpXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxuXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgcmVxdWlyZWQgY2hpbGQgcm9sZSBpcyBub3QgZm91bmQuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDQuMS4yIE5hbWUsIFJvbGUsIFZhbHVlLCBnMTA4MFxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCA0LjFiXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgY29udGV4dDogXCJkb206Kltyb2xlXVwiLFx0XHQvLyBhY2NvcmRpbmcgdG8gTmF0YWxpZSBhbmQgQ2hhcnUsIHRoaXMgcnVsZSBvbmx5IGNoZWNrIGZvciBleHBsaWNpdCByb2xlIHNvIHdlIGNhbiB1c2Ugcm9sZSBpbnN0ZWFkIG9mIGNoZWNraW5nIGV2ZXJ5IGVsZW1lbnRcbiAgICBkZXBlbmRlbmNpZXM6IFtcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiXSxcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICBsZXQgZGVzaWduUGF0dGVybnMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnM7XG4gICAgICAgIGxldCByb2xlcyA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGxldCByb2xlTmFtZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgcmVxdWlyZWRDaGlsZHJlbiA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgZWxlbWVudCBpcyBoaWRkZW4gYnkgZGlzYWJsZWQgaHRtbDUgYXR0cmlidXRlIG9yIGFyaWEtZGlzYWJsZWQ6XG4gICAgICAgIC8vICAxLiBJbiB0aGUgY2FzZSB0aGF0IHRoaXMgZWxlbWVudCBoYXMgYSBkaXNhYmxlZCBhdHRyaWJ1dGUgYW5kIHRoZSBlbGVtZW50IHN1cHBvcnRzIGl0LCB3ZSBtYXJrIHRoaXMgcnVsZSBhcyBwYXNzZWQuXG4gICAgICAgIC8vICAyLiBJbiB0aGUgY2FzZSB0aGF0IHRoaXMgZWxlbWVudCBoYXMgYSBhcmlhLWRpc2FibGVkIGF0dHJpYnV0ZSB0aGVuLCB3ZSBtYXJrIHRoaXMgcnVsZSBhcyBwYXNzZWQuXG4gICAgICAgIC8vIEZvciBib3RoIG9mIHRoZSBjYXNlcyBhYm92ZSB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGFueSBmdXJ0aGVyIGNoZWNrcywgYXMgdGhlIGVsZW1lbnQgaXMgZGlzYWJsZWQgaW4gc29tZSBmb3JtIG9yIGFub3RoZXIuXG4gICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZURpc2FibGVkKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaiA9IDAsIGxlbmd0aCA9IHJvbGVzLmxlbmd0aDsgaiA8IGxlbmd0aDsgKytqKSB7XG5cbiAgICAgICAgICAgIGlmIChyb2xlc1tqXSA9PT0gXCJjb21ib2JveFwiKSB7XG4gICAgICAgICAgICAgICAgLy8gIEZvciBjb21ib2JveCwgd2UgaGF2ZSBnMTE5MyAuLi4gZzExOTkgdG8gY2hlY2sgdGhlIHZhbHVlcyBldGMuXG4gICAgICAgICAgICAgICAgLy8gIFdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciAxMTUyIGFnYWluLiBTbywgd2UgYnlwYXNzIGl0IGhlcmUuXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRlc2lnblBhdHRlcm5zW3JvbGVzW2pdXSAmJiBkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0ucmVxQ2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkQ2hpbGRyZW4gPSBkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0ucmVxQ2hpbGRyZW47XG4gICAgICAgICAgICAgICAgbGV0IHJvbGVNaXNzaW5nUmVxQ2hpbGQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgcmVxdWlyZWRDaGlsZHJlbkxlbmd0aCA9IHJlcXVpcmVkQ2hpbGRyZW4ubGVuZ3RoOyBpIDwgcmVxdWlyZWRDaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuZ2V0RGVzY2VuZGFudFdpdGhSb2xlSGlkZGVuKHJ1bGVDb250ZXh0LCByZXF1aXJlZENoaWxkcmVuW2ldLCB0cnVlLCB0cnVlKSB8fCBSUFRVdGlsLmdldEFyaWFPd25zV2l0aFJvbGVIaWRkZW4ocnVsZUNvbnRleHQsIHJlcXVpcmVkQ2hpbGRyZW5baV0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIGFuIGh0bWwgZXF1aXZhbGVudCBjaGlsZCBtZWV0cyB0aGUgcmVxdWlyZW1lbnQgKGUuZy4sIHJhZGlvZ3JvdXAgY29udGFpbnMgaHRtbCByYWRpbyBidXR0b25zKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWxFcXVpdiA9IGRlc2lnblBhdHRlcm5zW3JlcXVpcmVkQ2hpbGRyZW5baV1dLmh0bWxFcXVpdjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChodG1sRXF1aXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgbncubmV4dE5vZGUoKSAmJiBudy5ub2RlICE9IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAxLiBPbmx5IHJ1biBpc05vZGVWaXNpYmxlIGNoZWNrIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBOT1QgYmUgY2hlY2tlZC4gSW4gdGhlIGNhc2UgdGhhdCBoaWRkZW4gY29udGVudCBpcyB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGUgaWYgY29uZGl0aW9ucyB1c2VzIHNob3J0LWNpcmN1aXRpbmcgc28gaWYgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBub3QgdHJ1ZSBpdCB3aWxsIG5vdCBjaGVjayB0aGUgbmV4dCBvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgIHNvIG9uIGFuZCBzbyBmb3J0aC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihudy5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIGlmIHRoZSBlbGVtZW50IGhhcyBleHBsaWNpdCByb2xlIHNwZWNpZmllZC4gSWYgc28sIGhvbm9yIHRoZSByb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUlBUVXRpbC5oYXNBbnlSb2xlKG53Lm5vZGUsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5pc0h0bWxFcXVpdihudy5ub2RlLCBodG1sRXF1aXYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpIGJyZWFrOyAvLyBicmVhayBpbmNyZW1lbnRpbmcgb3ZlciByZXF1aXJlZCBjaGlsZHJlbi4gQXQgbGVhc3Qgb25lIHJlcXVpcmVkIGNoaWxkIHdhcyBmb3VuZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGJyZWFrOyAvLyBicmVhayBpbmNyZW1lbnRpbmcgb3ZlciByZXF1aXJlZCBjaGlsZHJlbi4gQXQgbGVhc3Qgb25lIHJlcXVpcmVkIGNoaWxkIHdhcyBmb3VuZC5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgcGFzc2VkID0gdHJ1ZTsgLy8gTm8gcmVxdWlyZWQgY2hpbGRyZW4gZm9yIHRoaXMgcm9sZVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByb2xlTmFtZUFyci5wdXNoKHJvbGVzW2pdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmV0VG9rZW4gPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4ucHVzaChyb2xlTmFtZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICByZXRUb2tlbi5wdXNoKHJlcXVpcmVkQ2hpbGRyZW4uam9pbihcIiwgXCIpKTtcbiAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIHJldFRva2VuKTtcbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiB0aGVyZSBpcyBhIHZhbGlkIHJvbGUgYW5kIHRoZSByb2xlIGlzIHJlcXVpcmVkIHRvIGhhdmUgYSBjb250YWluZXIgYnV0IHRoZSBjb250YWluZXIgaXMgbWlzc2luZy5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgNC4xLjIgTmFtZSwgUm9sZSwgVmFsdWVcbiAgICAgKiBcdFx0XHRDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgNC4xYlxuICAgICAqXHRcdFx0T3BlbiBBamF4IEFsbGlhbmNlIEFjY2Vzc2liaWxpdHkgV29ya2luZyBHcm91cCBydWxlc2V0XG4gICAgICpcbiAgICAgKlRPRE86IERvZXMgdGhpcyBydWxlIG5lZWQgdG8gY2hlY2sgZm9yIGh0bWwgZXF1aXZhbGVudHMgbGlrZSB0aGUgUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbiBydWxlIGRvZXM/XG4gICAgICogRm9yIG5vdywgZG9uJ3QgY2hlY2sgaHRtbCBlcXVpdmFsZW50cyB1bnRpbCB0aGVyZSBhcmUgdXNlIGNhc2VzIGZvdW5kIHRoYXQgd2lsbCBiZW5lZml0IGZyb20gdGhpcyBjaGVjay5cbiAgICAgKlxuICAgICAqIFRoZSBYcGF0aCBcImNvbnRhaW5zXCIgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIHJvbGVzIHNwZWNpZmllZC4gQWxzbywgYSBzZWFyY2ggZm9yIG1lbnUgd2hlcmUgXG4gICAgICogcm9sZT1cIm5hdmlnYXRpb24gbWVudWJhclwiIHdpbGwgcmV0dXJuIGEgbm9kZS4gIFNvIGFsbCBwYXJlbnQgcm9sZXMgbXVzdCBiZSB0b2tlbml6ZWQgYW5kIHNlYXJjaGVkLlxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkUGFyZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgY29udGV4dDogXCJkb206Kltyb2xlXVwiLFxuICAgIGRlcGVuZGVuY2llczogW1wiUnB0X0FyaWFfVmFsaWRSb2xlXCJdLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30sIGhpZXJhcmNoaWVzPzogUnVsZUNvbnRleHRIaWVyYXJjaHkpOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgIGxldCBkZXNpZ25QYXR0ZXJucyA9IEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJucztcbiAgICAgICAgbGV0IHJvbGVOYW1lQXJyID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCBjb250YWluZXJSb2xlcyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgdGVzdGVkQ29udGFpbmVyID0gMDtcblxuICAgICAgICBsZXQgcm9sZXMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGxldCBhbmNlc3RvclJvbGVzID0gaGllcmFyY2hpZXNbXCJhcmlhXCJdLm1hcChpbmZvID0+IGluZm8ucm9sZSk7XG4gICAgICAgIGxldCBwYXJlbnRSb2xlID0gYW5jZXN0b3JSb2xlc1thbmNlc3RvclJvbGVzLmxlbmd0aC0yXTtcbiAgICAgICAgbGV0IGNvdW50ID0gMjtcbiAgICAgICAgd2hpbGUgKHBhcmVudFJvbGUgPT09ICdub25lJykge1xuICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIHBhcmVudFJvbGUgPSBhbmNlc3RvclJvbGVzW2FuY2VzdG9yUm9sZXMubGVuZ3RoLWNvdW50XTtcblxuICAgICAgICB9ICAgXG4gICAgICAgIGZvciAobGV0IGogPSAwLCBsZW5ndGggPSByb2xlcy5sZW5ndGg7IGogPCBsZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKGRlc2lnblBhdHRlcm5zW3JvbGVzW2pdXSAmJiBkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0uY29udGFpbmVyICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0ZXN0ZWRDb250YWluZXIrKztcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJSb2xlcyA9IGRlc2lnblBhdHRlcm5zW3JvbGVzW2pdXS5jb250YWluZXI7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGNvbnRhaW5lcnNMZW5ndGggPSBjb250YWluZXJSb2xlcy5sZW5ndGg7ICFwYXNzZWQgJiYgaSA8IGNvbnRhaW5lcnNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBwYXJlbnRSb2xlID09PSBjb250YWluZXJSb2xlc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXNzZWQgPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcm9sZU5hbWVBcnIucHVzaChyb2xlc1tqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXRUb2tlbjEgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4xLnB1c2gocm9sZU5hbWVBcnIuam9pbihcIiwgXCIpKTtcbiAgICAgICAgbGV0IHJldFRva2VuMiA9IG5ldyBBcnJheSgpO1xuICAgICAgICByZXRUb2tlbjIucHVzaChjb250YWluZXJSb2xlcy5qb2luKFwiLCBcIikpO1xuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IFtyZXRUb2tlbjEsIHJldFRva2VuMl0pO1xuICAgICAgICBpZiAodGVzdGVkQ29udGFpbmVyID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbcmV0VG9rZW4xLnRvU3RyaW5nKCksIHJldFRva2VuMi50b1N0cmluZygpXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBjb250ZW50IGlzIG5vdCBlbmNsb3NlZCBpbiBhIGxhbmRtYXJrIHJvbGVcbiAgICAgKiBPcmlnaW46IENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICovXG4gICAgaWQ6IFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgY29udGV4dDogXCJkb206KlwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30sIGhpZXJhcmNoaWVzPzogUnVsZUNvbnRleHRIaWVyYXJjaHkpOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgbGV0IHBhcmFtcyA9IFJQVFV0aWwuZ2V0Q2FjaGUoY29udGV4dC5kb20ubm9kZS5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLCBudWxsKTtcbiAgICAgICAgaWYgKCFwYXJhbXMpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBsYW5kbWFya3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcImJhbm5lclwiLCBcImNvbXBsZW1lbnRhcnlcIiwgXCJjb250ZW50aW5mb1wiLCBcImZvcm1cIiwgXCJtYWluXCIsIFwibmF2aWdhdGlvblwiLCBcInJlZ2lvblwiLCBcInNlYXJjaFwiXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwb3NzaWJsZU9ycGhhbmVkV2lkZ2V0czoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW1wiYnV0dG9uXCIsIFwiY29tYm9ib3hcIiwgXCJjaGVja2JveFwiLCBcImdyaWRcIiwgXCJoZWFkaW5nXCIsIFwibGlua1wiLCBcImxpc3RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGlzdGJveFwiLCBcIm1lbnVcIiwgXCJtZW51YmFyXCIsIFwicHJvZ3Jlc3NiYXJcIiwgXCJyYWRpb1wiLCBcInRhYmxpc3RcIiwgXCJ0ZXh0Ym94XCIsIFwidG9vbGJhclwiLCBcInRyZWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidHJlZWdyaWRcIlxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBvc3NpYmxlT3JwaGFuZWRFbGVtZW50czoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW1wicFwiLCBcInRhYmxlXCIsIFwiaW5wdXRcIiwgXCJ0ZXh0YXJlYVwiLCBcInNlbGVjdFwiLCBcImJ1dHRvblwiLCBcImFcIiwgXCJvbFwiLCBcInVsXCIsIFwiZGxcIiwgXCJoMVwiLCBcImgyXCIsIFwiaDNcIiwgXCJoNFwiLCBcImg1XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImg2XCIsIFwiZW1iZWRcIiwgXCJvYmplY3RcIiwgXCJhcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBub0xhbmRtYXJrZWRSb2xlczoge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGVzZSByb2xlcyBkb24ndCByZXF1aXJlIGxhbmRtYXJrc1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW1wiYWxlcnRcIiwgXCJhbGVydGRpYWxvZ1wiLCBcImRpYWxvZ1wiLCBcInRvb2x0aXBcIl0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWFwTGFuZG1hcmtzOiB7fSxcbiAgICAgICAgICAgICAgICBtYXBQb3NzaWJsZU9ycGhhbmVkV2lkZ2V0czoge30sXG4gICAgICAgICAgICAgICAgbWFwUG9zc2libGVPcnBoYW5lZEVsZW1lbnRzOiB7fSxcbiAgICAgICAgICAgICAgICBtYXBOb0xhbmRtYXJrZWRSb2xlczoge31cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCBhcnJheXMgdG8gbWFwc1xuICAgICAgICAgICAgcGFyYW1zLm1hcExhbmRtYXJrcyA9IHt9O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGFuZG1hcmtzLnZhbHVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcExhbmRtYXJrc1twYXJhbXMubGFuZG1hcmtzLnZhbHVlW2ldXSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtcy5tYXBQb3NzaWJsZU9ycGhhbmVkV2lkZ2V0cyA9IHt9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5wb3NzaWJsZU9ycGhhbmVkV2lkZ2V0cy52YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXBQb3NzaWJsZU9ycGhhbmVkV2lkZ2V0c1twYXJhbXMucG9zc2libGVPcnBoYW5lZFdpZGdldHMudmFsdWVbaV1dID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyYW1zLm1hcFBvc3NpYmxlT3JwaGFuZWRFbGVtZW50cyA9IHt9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5wb3NzaWJsZU9ycGhhbmVkRWxlbWVudHMudmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWFwUG9zc2libGVPcnBoYW5lZEVsZW1lbnRzW3BhcmFtcy5wb3NzaWJsZU9ycGhhbmVkRWxlbWVudHMudmFsdWVbaV1dID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyYW1zLm1hcE5vTGFuZG1hcmtlZFJvbGVzID0ge31cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLm5vTGFuZG1hcmtlZFJvbGVzLnZhbHVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcE5vTGFuZG1hcmtlZFJvbGVzW3BhcmFtcy5ub0xhbmRtYXJrZWRSb2xlcy52YWx1ZVtpXV0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKGNvbnRleHQuZG9tLm5vZGUub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIiwgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShydWxlQ29udGV4dCkgfHwgIC8vIGF2b2lkIGRpYWdub3NpbmcgZzExNTcgZm9yIG5vbi12aXNpYmxlIG5vZGVzXG4gICAgICAgICAgICAoUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cyAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cyAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzLmluZGV4T2Yobm9kZU5hbWUpID4gLTEpKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZWxlbXNXaXRob3V0Q29udGVudCA9IFtcImFyZWFcIiwgXCJpbnB1dFwiLCBcImVtYmVkXCIsIFwiYnV0dG9uXCIsIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIl07XG4gICAgICAgIGlmICghUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpICYmIC8vb25seSB0cmlnZ2VyIHRoZSBydWxlIG9uIGVsZW1lbnRzIHRoYXQgaGF2ZSBjb250ZW50XG4gICAgICAgICAgICBlbGVtc1dpdGhvdXRDb250ZW50LmluZGV4T2Yobm9kZU5hbWUpID09PSAtMSkgeyAvLyBhIGZldyBlbGVtcyB3aWhvdXQgY29udGVudCBzaG91bGQgbm90IGJlIHNraXBwZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaG9ydCBjaXJjdWl0IGZvciBsYXlvdXQgdGFibGVzXG4gICAgICAgIGlmIChub2RlTmFtZSA9PSBcInRhYmxlXCIgJiYgUlBUVXRpbC5pc0xheW91dFRhYmxlKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBpdCBpcyBhIHBvc3NpYmxlIG9ycGhhblxuICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGlzUG9zc2libGVPcnBoYW5lZFdpZGdldCA9IFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgcGFyYW1zLm1hcFBvc3NpYmxlT3JwaGFuZWRXaWRnZXRzLCB0cnVlKTtcbiAgICAgICAgLy9leGNsdWRlIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwieHl6LmNzc1wiPiBpbiB0aGUgPGhlYWQ+IGFuZCA8Ym9keT4oIzYwOClcbiAgICAgICAgLy9oYXZpbmcgbGluayBpbiB0aGUgaGVhZCBjb3VsZCBjYXVzZSBsb3Qgb2YgdmlvbGFpb25zICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgaWYgKG5vZGVOYW1lID09PSAnbGluaycpIHtcbiAgICAgICAgICAgIGlzUG9zc2libGVPcnBoYW5lZFdpZGdldCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlzUG9zc2libGVPcnBoYW5lZEVsZW1lbnQgPSBub2RlTmFtZSBpbiBwYXJhbXMubWFwUG9zc2libGVPcnBoYW5lZEVsZW1lbnRzO1xuICAgICAgICBpZiAoaXNQb3NzaWJsZU9ycGhhbmVkV2lkZ2V0IHx8IGlzUG9zc2libGVPcnBoYW5lZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIC8vIFNlZSBpZiBhbmNlc3RvciBoYXMgbGFuZG1hcmsgcm9sZXMgb3IgaW1wbGljaXQgbGFuZCBtYXJrIHJvbGVzXG4gICAgICAgICAgICBsZXQgcGFyZW50Um9sZXMgPSBoaWVyYXJjaGllc1tcImFyaWFcIl0ubWFwKGluZm8gPT4gaW5mby5yb2xlKTtcbiAgICAgICAgICAgIHBhc3NlZCA9IHBhcmVudFJvbGVzLmZpbHRlcihyb2xlID0+IHJvbGUgaW4gcGFyYW1zLm1hcExhbmRtYXJrcykubGVuZ3RoID4gMFxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCBmYWlsIGVsZW1lbnRzIHdoZW4gYSBwYXJlbnQgb3Igc2libGluZyBoYXMgZmFpbGVkIC0gY2F1c2VzIHRvbyBtYW55IG1lc3NhZ2VzLlxuICAgICAgICAgICAgICAgIGxldCB3YWxrRWxlbWVudCA9IERPTVV0aWwucGFyZW50RWxlbWVudChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgd2Fsa0VsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldENhY2hlKHdhbGtFbGVtZW50LCBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHdhbGtFbGVtZW50ID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KHdhbGtFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fsa0VsZW1lbnQgPSBydWxlQ29udGV4dC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgd2Fsa0VsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldENhY2hlKHdhbGtFbGVtZW50LCBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHdhbGtFbGVtZW50ID0gd2Fsa0VsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3YWxrRWxlbWVudCA9IHJ1bGVDb250ZXh0LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgd2Fsa0VsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldENhY2hlKHdhbGtFbGVtZW50LCBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHdhbGtFbGVtZW50ID0gd2Fsa0VsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRcIiwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBydWxlIGlmIGVsZW1lbnQgaXMgYSBzdGFuZC1hbG9uZSB3aWRnZXRcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTm9UcmlnZ2VyXCIsIGZhbHNlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBwYXJhbXMubWFwTm9MYW5kbWFya2VkUm9sZXMsIHRydWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIHBhcmFtcy5tYXBOb0xhbmRtYXJrZWRSb2xlcywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTm9UcmlnZ2VyXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBbXSk7XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxuLy8tLS0tLS0tLVxuLy8gS2V5Ym9hcmQgQWNjZXNzaWJsZVxuLy8gLS0tLS0tLS1cbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW4gZWxlbWVudCBjb250YWlucyBhbiBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgYW5kIGRvZXMgbm90IGNvbnRhaW4gYSB0YWJpbmRleCBhdHRyaWJ1ZSB3aXRoIGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHplcm8uXG4gICAgICogICAgICAgICAgICAgIERvIG5vdCB0cmlnZ2VyIGlmIHRoZSBlbGVtZW50IGhhcyBkaXNhYmxlZCAoaWYgc3VwcG9ydGVkIG9uIGVsZW1lbnQpLCBvciB0aGUgZWxlbWVudCBoYXMgYXJpYS1kaXNhYmxlZCBzZXQgdG8gdHJ1ZS5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgMi4xLjEgS2V5Ym9hcmQsIGcxMDg0XG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuMWFcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX0ludmFsaWRUYWJpbmRleEZvckFjdGl2ZWRlc2NlbmRhbnRcIixcbiAgICBjb250ZXh0OiBcImRvbToqW2FyaWEtYWN0aXZlZGVzY2VuZGFudF1cIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAvLyBSdWxlIG5vdCBzdXBwb3J0ZWQgb24gbW9iaWxlXG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJjbGFzc1wiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKS5zdWJzdHJpbmcoMCwgMykgPT0gXCJtYmxcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGVsZW1lbnQgaXMgaGlkZGVuIGJ5IGRpc2FibGVkIGh0bWw1IGF0dHJpYnV0ZSBvciBhcmlhLWRpc2FibGVkOlxuICAgICAgICAvLyAgMS4gSW4gdGhlIGNhc2UgdGhhdCB0aGlzIGVsZW1lbnQgaGFzIGEgZGlzYWJsZWQgYXR0cmlidXRlIGFuZCB0aGUgZWxlbWVudCBzdXBwb3J0cyBpdCwgd2UgbWFyayB0aGlzIHJ1bGUgYXMgcGFzc2VkLlxuICAgICAgICAvLyAgMi4gSW4gdGhlIGNhc2UgdGhhdCB0aGlzIGVsZW1lbnQgaGFzIGEgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGUgdGhlbiwgd2UgbWFyayB0aGlzIHJ1bGUgYXMgcGFzc2VkLlxuICAgICAgICAvLyBGb3IgYm90aCBvZiB0aGUgY2FzZXMgYWJvdmUgd2UgZG8gbm90IG5lZWQgdG8gcGVyZm9ybSBhbnkgZnVydGhlciBjaGVja3MsIGFzIHRoZSBlbGVtZW50IGlzIGRpc2FibGVkIGluIHNvbWUgZm9ybSBvciBhbm90aGVyLlxuICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVEaXNhYmxlZChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIHRhYmluZGV4IGF0dHJpYnV0ZSBpcyBwcm92aWRlZCB0aGVuIHZlcmlmeSB0aGF0IGl0IGlzIDAgb3IgLTFcbiAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5pc1RhYmJhYmxlKHJ1bGVDb250ZXh0KSB8fCBSUFRVdGlsLnRhYkluZGV4TEVaZXJvKHJ1bGVDb250ZXh0KTtcblxuICAgICAgICAvLyBCdWlsZCBhcnJheSBmb3Igbm9kZSB0b2tlblxuICAgICAgICBsZXQgcmV0VG9rZW4xID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHJldFRva2VuMS5wdXNoKG5vZGVOYW1lKTtcblxuICAgICAgICAvLyBCdWlsZCBhcnJheSBmb3IgaWQgcmVmZXJlbmNlZCBieSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcbiAgICAgICAgbGV0IHJldFRva2VuMiA9IG5ldyBBcnJheSgpO1xuICAgICAgICByZXRUb2tlbjIucHVzaChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIikuc3BsaXQoXCIgXCIpLmpvaW4oXCIsIFwiKSk7XG5cbiAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIHBhc3NlZCA9PSB0cnVlID8gW10gOiBbcmV0VG9rZW4xLCByZXRUb2tlbjJdKTtcbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbcmV0VG9rZW4xLnRvU3RyaW5nKCksIHJldFRva2VuMi50b1N0cmluZygpXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIG5vbi1mb3JtIG9yIG5vbi1hbmNob3IgZWxlbWVudCBoYXMgYW4gZXZlbnQgaGFuZGxlciBidXQgaXMgbWlzc2luZyBhIHJvbGUgYXR0cmlidXRlLlxuICAgICAqIE9yaWdpbjogIFdDQUcgMi4wIGd1aWRlbGluZSA0LjEuMiBOYW1lLCBSb2xlLCBWYWx1ZVxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCA0LjFiXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9FdmVudEhhbmRsZXJNaXNzaW5nUm9sZV9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipbb25jbGlja10sZG9tOipbb25ibHVyXSwgZG9tOipbb25kYmxjbGlja10sIGRvbToqW29uZm9jdXNdLCBkb206KltvbmtleWRvd25dLFwiICtcbiAgICAgICAgXCJkb206KltvbmtleXByZXNzXSwgZG9tOipbb25rZXl1cF0sIGRvbToqW29ubW91c2Vkb3duXSwgZG9tOipbb25tb3VzZXVwXSwgZG9tOipbb25tb3VzZW1vdmVdLCBcIiArXG4gICAgICAgIFwiZG9tOipbb25tb3VzZW91dF0sIGRvbToqW29ubW91c2VvdmVyXSwgZG9tOipbb25yZXNpemVdLCBkb206KltvbmNoYW5nZV1cIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIC8vIERvbid0IHRyaWdnZXIgdGhpcyBmb3IgU1ZHIGVsZW1lbnQgZm9yIG5vdyB1bnRpbCBhIGRldGVybWluYXRpb24gaXMgbWFkZSAoYnkgUmljaClcbiAgICAgICAgLy8gdG8gc3VwcG9ydCBTVkcgYXQgYSBwb2ludCB3aGVuIHRoZSBTVkcgYTExeSBzcGVjIGlzIHJlYWR5LlxuICAgICAgICBpZiAoUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJzdmdcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy90aGlzIHJ1bGUgaXMgcGFzc2VkIGlmIGEgZWxlbWVudCBoYXMgYXR0cmlidXQgcm9sZSBcbiAgICAgICAgLy9hbHNvLCBwYXNzZWQgb2YgZWxlbWVudCBoYXMgbnkgaW1wbGljaXQgcm9sZXMuIFxuICAgICAgICBpZiAoUlBUVXRpbC5oYXNBbnlSb2xlKHJ1bGVDb250ZXh0LCB0cnVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9wYXNzIGlmIHRoaXMgZWxlbWVudCBpcyByZWNlaXZlZCBmb2N1cyBieSBkZWZhdWx0XG4gICAgICAgIGlmIChSUFRVdGlsLmlzZm9jdXNhYmxlQnlEZWZhdWx0KHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy92YWxpZGF0ZSBpZiB0aGlzIGVsZW1lbnQgaGFzIGFueSBvZiB0aGUgZ2l2ZW4gZXZlbnQgaGFuZGxlcidzXG4gICAgICAgIGxldCByZXRUb2tlbjEgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4xLnB1c2gocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGxldCBldmVudEFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICAvLyBGcm9tIFdDQUcyMF9TY3JpcHRfVXNlVzNDRG9tRnVuY3Rpb25zXG4gICAgICAgIC8vbGV0IGV2ZW50cyA9IFtcIm9uYmx1clwiLCBcIm9uZm9jdXNcIiwgXCJvbmNoYW5nZVwiLCBcIm9uY2xpY2tcIiwgXCJvbmNvbnRleHRtZW51XCIsIFwib25kYmxjbGlja1wiLCBcIm9ua2V5ZG93blwiLFxuICAgICAgICAvLyAgICAgICAgICAgICAgXCJvbmtleXByZXNzXCIsIFwib25rZXl1cFwiLCBcIm9ubG9hZFwiLCBcIm9ubW91c2Vkb3duXCIsIFwib25tb3VzZXVwXCIsIFwib25tb3VzZW1vdmVcIiwgXCJvbm1vdXNlb3V0XCIsXG4gICAgICAgIC8vICAgICAgICAgICAgICBcIm9ubW91c2VvdmVyXCIsIFwib25tb3VzZXdoZWVsXCIsIFwib25yZXNldFwiLCBcIm9ucGFzdGVcIiwgXCJvbnJlc2l6ZVwiLCBcIm9uc2Nyb2xsXCIsXG4gICAgICAgIC8vICAgICAgICAgICAgICBcIm9uc2VsZWN0XCIsIFwib25zdWJtaXRcIiwgXCJvbmFjdGl2YXRlXCIsIFwib25kZWFjdGl2YXRlXCIsIFwib25tb3VzZWVudGVyXCIsIFwib25tb3VzZWxlYXZlXCJdO1xuICAgICAgICBsZXQgZXZlbnRzID0gW1wib25ibHVyXCIsIFwib25mb2N1c1wiLCBcIm9uY2hhbmdlXCIsIFwib25jbGlja1wiLCBcIm9uZGJsY2xpY2tcIiwgXCJvbmtleWRvd25cIixcbiAgICAgICAgICAgIFwib25rZXlwcmVzc1wiLCBcIm9ua2V5dXBcIiwgXCJvbm1vdXNlZG93blwiLCBcIm9ubW91c2V1cFwiLCBcIm9ubW91c2Vtb3ZlXCIsIFwib25tb3VzZW91dFwiLFxuICAgICAgICAgICAgXCJvbm1vdXNlb3ZlclwiLCBcIm9ucmVzaXplXCJcbiAgICAgICAgXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoZXZlbnRzW2ldKSlcbiAgICAgICAgICAgICAgICBldmVudEFyci5wdXNoKGV2ZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJldFRva2VuMiA9IG5ldyBBcnJheSgpO1xuICAgICAgICByZXRUb2tlbjIucHVzaChldmVudEFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChmYWxzZSwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBbcmV0VG9rZW4xLCByZXRUb2tlbjJdKTtcbiAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtyZXRUb2tlbjEudG9TdHJpbmcoKSwgcmV0VG9rZW4yLnRvU3RyaW5nKCldKTtcbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBMb29rIGZvciBjb250YWluZXIgZWxlbWVudHMgd2l0aG91dCBhbiAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyB0aGF0IGhhdmUgcmVxdWlyZWQgY2hpbGRyZW4uICBBdCBsZWFzdCBvbmUgY2hpbGQgbXVzdCBiZSBmb2N1c2FibGUuXG4gICAgICogTm90ZTogUmVxdWlyZWQgY2hpbGRyZW4gd29uJ3QgaGF2ZSBtdWx0aXBsZSByb2xlcyBzcGVjaWZpZWQgaW4gdGhlIHJvbGUgYXR0cmlidXRlLCBidXQgdGhpcyBhc3N1bXB0aW9uIG1heSBub3QgYmUgY29ycmVjdC5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgMi4xLjEgS2V5Ym9hcmQsIGcxMDg2XG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuMWFcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX01pc3NpbmdGb2N1c2FibGVDaGlsZFwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV1cIixcbiAgICBkZXBlbmRlbmNpZXM6IFtcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiXSxcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgLy8gQW4gQVJJQSBsaXN0IGlzIG5vdCBpbnRlcmFjdGl2ZVxuICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCB7IFwibGlzdFwiOiB0cnVlLCBcInJvd1wiOiB0cnVlLCBcInJvd2dyb3VwXCI6IHRydWUsIFwidGFibGVcIjogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3QgYSB2YWxpZCBtZXNzYWdlIGZvciBtb2JpbGUgYmVjYXVzZSBhbGwgZWxlbWVudHMgYXJlIGZvY3VzYWJsZSBpbiBpT1Mgd2hlbiBWb2ljZU92ZXIgaXMgZW5hYmxlZC5cbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImNsYXNzXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImNsYXNzXCIpLnN1YnN0cmluZygwLCAzKSA9PSBcIm1ibFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgZWxlbWVudCBpcyBoaWRkZW4gYnkgZGlzYWJsZWQgaHRtbDUgYXR0cmlidXRlIG9yIGFyaWEtZGlzYWJsZWQ6XG4gICAgICAgIC8vICAxLiBJbiB0aGUgY2FzZSB0aGF0IHRoaXMgZWxlbWVudCBoYXMgYSBkaXNhYmxlZCBhdHRyaWJ1dGUgYW5kIHRoZSBlbGVtZW50IHN1cHBvcnRzIGl0LCB3ZSBtYXJrIHRoaXMgcnVsZSBhcyBwYXNzZWQuXG4gICAgICAgIC8vICAyLiBJbiB0aGUgY2FzZSB0aGF0IHRoaXMgZWxlbWVudCBoYXMgYSBhcmlhLWRpc2FibGVkIGF0dHJpYnV0ZSB0aGVuLCB3ZSBtYXJrIHRoaXMgcnVsZSBhcyBwYXNzZWQuXG4gICAgICAgIC8vIEZvciBib3RoIG9mIHRoZSBjYXNlcyBhYm92ZSB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGFueSBmdXJ0aGVyIGNoZWNrcywgYXMgdGhlIGVsZW1lbnQgaXMgZGlzYWJsZWQgaW4gc29tZSBmb3JtIG9yIGFub3RoZXIuXG4gICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZURpc2FibGVkKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyByZWZlcmVuY2VkIGJ5IGEgY29tYm9ib3guIElmIHNvLCBmb2N1cyBpcyBjb250cm9sbGVkIGJ5IHRoZSBjb21ib2JveFxuICAgICAgICBsZXQgaWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJpZFwiKTtcbiAgICAgICAgaWYgKGlkICYmIGlkLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAqW2FyaWEtY29udHJvbHM9JyR7aWR9J11bcm9sZT0nY29tYm9ib3gnXWApKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gICAgICAgIFxuXG4gICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICBsZXQgZG9jID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudDtcbiAgICAgICAgbGV0IGhhc0F0dHJpYnV0ZSA9IFJQVFV0aWwuaGFzQXR0cmlidXRlO1xuICAgICAgICBsZXQgcm9sZU5hbWVBcnIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IG5vZGVOYW1lID0gXCJcIjtcbiAgICAgICAgbGV0IGluU2NvcGUgPSBmYWxzZTtcblxuICAgICAgICBsZXQgcm9sZXMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm9sZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIGlmIChBUklBRGVmaW5pdGlvbnMuY29udGFpbmVycy5pbmNsdWRlcyhyb2xlc1tqXSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGlzYWJsZWQgPSBoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsICdhcmlhLWRpc2FibGVkJykgPyBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpIDogJyc7XG4gICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkICE9ICd0cnVlJyAmJiAhaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JykgJiYgIVJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcUNoaWxkcmVuID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVzW2pdXS5yZXFDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcUNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpblNjb3BlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwID0gXCJkZXNjZW5kYW50OjoqW1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXFDaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhwICs9IFwiQHJvbGU9J1wiICsgcmVxQ2hpbGRyZW5baV0gKyBcIicgb3IgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB4cCA9IHhwLnN1YnN0cmluZygwLCB4cC5sZW5ndGggLSA0KSArICddJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4cGF0aFJlc3VsdCA9IGRvYy5ldmFsdWF0ZSh4cCwgcnVsZUNvbnRleHQsIFJQVFV0aWwuZGVmYXVsdE5TUmVzb2x2ZXIsIDAgLyogWFBhdGhSZXN1bHQuQU5ZX1RZUEUgKi8sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHI6IEVsZW1lbnQgPSB4cGF0aFJlc3VsdC5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAociAmJiAhcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAxLiBPbmx5IHJ1biBpc05vZGVWaXNpYmxlIGNoZWNrIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBOT1QgYmUgY2hlY2tlZC4gSW4gdGhlIGNhc2UgdGhhdCBoaWRkZW4gY29udGVudCBpcyB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoZSBpZiBjb25kaXRpb25zIHVzZXMgc2hvcnQtY2lyY3VpdGluZyBzbyBpZiB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG5vdCB0cnVlIGl0IHdpbGwgbm90IGNoZWNrIHRoZSBuZXh0IG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBzbyBvbiBhbmQgc28gZm9ydGguXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0geHBhdGhSZXN1bHQuaXRlcmF0ZU5leHQoKSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLnRhYkluZGV4TEVaZXJvKHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSBwYXNzZWQgPSBSUFRVdGlsLmlzZm9jdXNhYmxlQnlEZWZhdWx0KHIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVxdWlyZWQgY2hpbGQgaXMgbm90IGZvY3VzYWJsZSB2aWEgdGFiaW5kZXguICBTZWUgaWYgdGhlcmUgaXMgYSBncmFuZGNoaWxkIHRoYXQgaXMgZm9jdXNhYmxlIGJ5IGRlZmF1bHQgb3IgYnkgdGFiaW5kZXguXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwMiA9IFwiZGVzY2VuZGFudDo6KlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeHBhdGhSZXN1bHQyID0gZG9jLmV2YWx1YXRlKHhwMiwgciwgUlBUVXRpbC5kZWZhdWx0TlNSZXNvbHZlciwgMCAvKiBYUGF0aFJlc3VsdC5BTllfVFlQRSAqLywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByMiA9IHhwYXRoUmVzdWx0Mi5pdGVyYXRlTmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocjIgJiYgIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMS4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoZSBpZiBjb25kaXRpb25zIHVzZXMgc2hvcnQtY2lyY3VpdGluZyBzbyBpZiB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG5vdCB0cnVlIGl0IHdpbGwgbm90IGNoZWNrIHRoZSBuZXh0IG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgIHNvIG9uIGFuZCBzbyBmb3J0aC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4ocjIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjIgPSB4cGF0aFJlc3VsdDIuaXRlcmF0ZU5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwudGFiSW5kZXhMRVplcm8ocjIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHBhc3NlZCA9IFJQVFV0aWwuaXNmb2N1c2FibGVCeURlZmF1bHQocjIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjIgPSB4cGF0aFJlc3VsdDIuaXRlcmF0ZU5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lQXJyID0gci5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lID0gci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0geHBhdGhSZXN1bHQuaXRlcmF0ZU5leHQoKSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGVyYXRpb25cbiAgICAgICAgbGV0IHJldFRva2VuMSA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgcmV0VG9rZW4yID0gbmV3IEFycmF5KCk7XG5cbiAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhlIGFycmF5cy9zdHJpbmdzIGFyZSBlbXB0eSwgdGhhdCBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIHZpb2xhdGlvbiBzbyB3ZSBjYW4gcmVzZXQgaXQgYmFjayB0byBwYXNzZWQsIHRoZSByZWFzb24gZm9yIHRoaXNcbiAgICAgICAgLy8gaXMgdGhhdCB3ZSBhcmUgc2V0dGluZyBwYXNzZWQ9ZmFsc2Ugd2hpbGUgd2UgcGVyZm9ybSBhIGxvb3Agd2hpY2ggY2F1c2VzIHZpb2xhdGlvbiB0byB0cmlnZ2VyIGV2ZW4gaWYgdGhlcmUgaXMgbm8gaXNzdWVzLiBJbnN0ZWFkIG9mXG4gICAgICAgIC8vIHVwZGF0aW5nIHRoZSB3aG9sZSBydWxlIHRvIHN3aXRjaCBmcm9tIHVzaW5nIHBhc3NlZCBpbiB0aGF0IHdheSBzaW1wbHkgZG8gdGhlIGNoZWNrIGF0IHRoaXMgcG9pbnQuXG4gICAgICAgIGlmIChub2RlTmFtZS5sZW5ndGggPiAwICYmIHJvbGVOYW1lQXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldFRva2VuMS5wdXNoKG5vZGVOYW1lKTtcbiAgICAgICAgICAgIHJldFRva2VuMi5wdXNoKHJvbGVOYW1lQXJyLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBwYXNzZWQgPT0gdHJ1ZSA/IFtdIDogW3JldFRva2VuMSwgcmV0VG9rZW4yXSk7XG4gICAgICAgIGlmICghaW5TY29wZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtyZXRUb2tlbjEudG9TdHJpbmcoKSwgcmV0VG9rZW4yLnRvU3RyaW5nKCldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbn0sXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IEZpbmQgZWxlbWVudHMgd2l0aG91dCBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgdGhhdCBoYXZlIHJvbGVzIHdpdGggcmVxdWlyZWQgY2hpbGRyZW4uIFxuICAgICAqIEVpdGhlciB0aGUgY2hpbGRyZW4gb3IgdGhlIHBhcmVudCBtdXN0IGhhdmUga2V5Ym9hcmQgZXZlbnQgaGFuZGxlcnMuXG4gICAgICogTm90ZTogUmVxdWlyZWQgY2hpbGRyZW4gd29uJ3QgaGF2ZSBtdWx0aXBsZSByb2xlcyBzcGVjaWZpZWQgaW4gdGhlIHJvbGUgYXR0cmlidXRlLCBidXQgdGhpcyBhc3N1bXB0aW9uIG1heSBub3QgYmUgY29ycmVjdC5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgMi4xLjEgS2V5Ym9hcmQsIGcxMDg3XG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuMWFcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX01pc3NpbmdLZXlib2FyZEhhbmRsZXJcIixcbiAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdXCIsXG4gICAgZGVwZW5kZW5jaWVzOiBbXCJScHRfQXJpYV9WYWxpZFJvbGVcIl0sXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICBsZXQgc2F2ZWRQYXNzZWQgPSBwYXNzZWQ7XG4gICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICBsZXQgZGVzaWduUGF0dGVybnMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnM7XG4gICAgICAgIGxldCByb2xlcyA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgbGV0IGhhc0F0dHJpYnV0ZSA9IFJQVFV0aWwuaGFzQXR0cmlidXRlO1xuICAgICAgICAvLyBDb21wb3NpdGUgdXNlciBpbnRlcmZhY2Ugd2lkZ2V0IHJvbGVzLiBUaGV5IGFjdCBhcyBjb250YWluZXJzIHRoYXQgbWFuYWdlIG90aGVyLCBjb250YWluZWQgd2lkZ2V0cy5cbiAgICAgICAgbGV0IHJvbGVDb250YWluZXJzID0gW1wiY29tYm9ib3hcIiwgXCJncmlkXCIsIFwibGlzdGJveFwiLCBcIm1lbnVcIiwgXCJtZW51YmFyXCIsIFwicmFkaW9ncm91cFwiLCBcInRhYmxpc3RcIiwgXCJ0cmVlXCIsIFwidHJlZWdyaWRcIl07XG4gICAgICAgIGxldCByb2xlTmFtZUFyciA9IG5ldyBBcnJheSgpO1xuXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm9sZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIGxldCBwYXR0ZXJuID0gZGVzaWduUGF0dGVybnNbcm9sZXNbal1dO1xuICAgICAgICAgICAgaWYgKHJvbGVDb250YWluZXJzLmluZGV4T2Yocm9sZXNbal0pID49IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgZGlzYWJsZWQgPSBoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsICdhcmlhLWRpc2FibGVkJykgPyBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpIDogJyc7XG4gICAgICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB0aGVyZSBpcyBhIGtleWJvYXJkIGV2ZW50IGhhbmRsZXIgb24gdGhlIHBhcmVudCBlbGVtZW50LlxuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25rZXlkb3duXCIpIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ua2V5cHJlc3NcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5vIGtleWJvYXJkIGV2ZW50IGhhbmRsZXIgZm91bmQgb24gcGFyZW50LiAgU2VlIGlmIGtleWJvYXJkIGV2ZW50IGhhbmRsZXJzIGFyZSBvbiByZXF1aXJlZCBjaGlsZCBlbGVtZW50cy5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVxQ2hpbGRyZW4gPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnNbcm9sZXNbal1dLnJlcUNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXFDaGlsZHJlbikgeyAvKiBTTUYgVE9ETyBtZW51YmFyIGRvZXMgbm90IGhhdmUgYW55IHJlcUNoaWxkcmVuICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCByZXF1aXJlZENoaWxkcmVuTGVuZ3RoID0gcmVxQ2hpbGRyZW4ubGVuZ3RoOyBpIDwgcmVxdWlyZWRDaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeHAgPSBcIipbY29udGFpbnMoQHJvbGUsJ1wiICsgcmVxQ2hpbGRyZW5baV0gKyBcIicpXVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwYXRoUmVzdWx0ID0gZG9jLmV2YWx1YXRlKHhwLCBydWxlQ29udGV4dCwgUlBUVXRpbC5kZWZhdWx0TlNSZXNvbHZlciwgMCAvKiBYUGF0aFJlc3VsdC5BTllfVFlQRSAqLywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgciA9IHhwYXRoUmVzdWx0Lml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAoci5oYXNBdHRyaWJ1dGUoXCJvbmtleWRvd25cIikgfHwgci5oYXNBdHRyaWJ1dGUoXCJvbmtleXByZXNzXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoaWxkIGRpZCBub3QgaGF2ZSBhIGtleSBoYW5kbGVyLiAgU2VlIGlmIGFueSBvZiB0aGUgZ3JhbmRjaGlsZHJlbiBkby5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwMiA9IFwiZGVzY2VuZGFudDo6KlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeHBhdGhSZXN1bHQyID0gZG9jLmV2YWx1YXRlKHhwMiwgciwgUlBUVXRpbC5kZWZhdWx0TlNSZXNvbHZlciwgMCAvKiBYUGF0aFJlc3VsdC5BTllfVFlQRSAqLywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByMjogRWxlbWVudCA9IHhwYXRoUmVzdWx0Mi5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChyMiAmJiAhcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIG5vdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAxLiBPbmx5IHJ1biBpc05vZGVWaXNpYmxlIGNoZWNrIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBOT1QgYmUgY2hlY2tlZC4gSW4gdGhlIGNhc2UgdGhhdCBoaWRkZW4gY29udGVudCBpcyB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihyMikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMiA9IHhwYXRoUmVzdWx0Mi5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwudGFiSW5kZXhMRVplcm8ocjIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIyLmhhc0F0dHJpYnV0ZShcIm9ua2V5ZG93blwiKSB8fCByMi5oYXNBdHRyaWJ1dGUoXCJvbmtleXByZXNzXCIpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIHRhYmluZGV4IGZvY3VzYWJsZSBlbGVtZW50IGZvdW5kIHdpdGggYSBrZXkgaGFuZGxlci4gIFNlZSBpZiBhbiBlbGVtZW50IGZvY3VzYWJsZSBieSBkZWZhdWx0IGhhcyBhIGhhbmRsZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNmb2N1c2FibGVCeURlZmF1bHQocjIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IChyMi5oYXNBdHRyaWJ1dGUoXCJvbmtleWRvd25cIikgfHwgcjIuaGFzQXR0cmlidXRlKFwib25rZXlwcmVzc1wiKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXMgdGhpcyBhbiBhY3Rpb24gbGluaz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJhXCIgJiYgcjIuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhyZWYgPSByMi5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3Rpb24gbGluayBtdXN0IHN0YXJ0IHdpdGggXCJqYXZhc2NyaXB0OlwiLCBtdXN0IG5vdCBjb250YWluIGEgXCJ2b2lkXCIgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtdXN0IGhhdmUgYSBmdW5jdGlvbiBuYW1lIGZvbGxvd2luZyBcImphdmFzY3JpcHQ6XCIgKGkuZS4sIGhyZWYubGVuZ3RoID4gMTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAoaHJlZi5zdGFydHNXaXRoKFwiamF2YXNjcmlwdDpcIikgJiYgaHJlZi5pbmRleE9mKFwidm9pZFwiKSA9PSAtMSAmJiBocmVmLmxlbmd0aCA+IDExKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyID0geHBhdGhSZXN1bHQyLml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGwgdGhlIHJlcXVpcmVkIGNoaWxkcmVuIChvciBhbnkgZGVzY2VuZGFudHMgb2YgdGhlIHJlcXVpcmVkIGNoaWxkcmVuKSBtdXN0IGhhdmUga2V5cHJlc3Mva2V5ZG93blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBub3QsIGl0IGlzIGEgZmFpbHVyZSwgbm8gbmVlZCB0byBrZWVwIGNoZWNraW5nIGFueSBtb3JlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHhwYXRoUmVzdWx0Lml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjdXJyZW50IGVsZW1lbnQgZmFpbGVkIHRoZSBrZXlkb3duL2tleXByZXNzLCBhbmQgaXQgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjaGlsZHJlbiwgc3VjaCBhcyBtZW51YmFyLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQncyBjaGVjayBpdHMgZGVzY2VuZGFudHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4cDIgPSBcImRlc2NlbmRhbnQ6OipcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwYXRoUmVzdWx0MiA9IGRvYy5ldmFsdWF0ZSh4cDIsIHJ1bGVDb250ZXh0LCBSUFRVdGlsLmRlZmF1bHROU1Jlc29sdmVyLCAwIC8qIFhQYXRoUmVzdWx0LkFOWV9UWVBFICovLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHIyID0geHBhdGhSZXN1bHQyLml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHIyICYmICFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDEuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGUgaWYgY29uZGl0aW9ucyB1c2VzIHNob3J0LWNpcmN1aXRpbmcgc28gaWYgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBub3QgdHJ1ZSBpdCB3aWxsIG5vdCBjaGVjayB0aGUgbmV4dCBvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBzbyBvbiBhbmQgc28gZm9ydGguXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHIyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyID0geHBhdGhSZXN1bHQyLml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC50YWJJbmRleExFWmVybyhyMikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocjIuaGFzQXR0cmlidXRlKFwib25rZXlkb3duXCIpIHx8IHIyLmhhc0F0dHJpYnV0ZShcIm9ua2V5cHJlc3NcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm8gdGFiaW5kZXggZm9jdXNhYmxlIGVsZW1lbnQgZm91bmQgd2l0aCBhIGtleSBoYW5kbGVyLiAgU2VlIGlmIGFuIGVsZW1lbnQgZm9jdXNhYmxlIGJ5IGRlZmF1bHQgaGFzIGEgaGFuZGxlci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5pc2ZvY3VzYWJsZUJ5RGVmYXVsdChyMikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gKHIyLmhhc0F0dHJpYnV0ZShcIm9ua2V5ZG93blwiKSB8fCByMi5oYXNBdHRyaWJ1dGUoXCJvbmtleXByZXNzXCIpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJcyB0aGlzIGFuIGFjdGlvbiBsaW5rP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocjIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImFcIiAmJiByMi5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHJlZiA9IHIyLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjdGlvbiBsaW5rIG11c3Qgc3RhcnQgd2l0aCBcImphdmFzY3JpcHQ6XCIsIG11c3Qgbm90IGNvbnRhaW4gYSBcInZvaWRcIiBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG11c3QgaGF2ZSBhIGZ1bmN0aW9uIG5hbWUgZm9sbG93aW5nIFwiamF2YXNjcmlwdDpcIiAoaS5lLiwgaHJlZi5sZW5ndGggPiAxMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IChocmVmLnN0YXJ0c1dpdGgoXCJqYXZhc2NyaXB0OlwiKSAmJiBocmVmLmluZGV4T2YoXCJ2b2lkXCIpID09IC0xICYmIGhyZWYubGVuZ3RoID4gMTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjIgPSB4cGF0aFJlc3VsdDIuaXRlcmF0ZU5leHQoKSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdHRyaWJ1dGUgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgaXMgc3BlY2lmaWVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJvbGVOYW1lQXJyLnB1c2gocm9sZXNbal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgc2F2ZWRQYXNzZWQpIHtcbiAgICAgICAgICAgICAgICBzYXZlZFBhc3NlZCA9IHBhc3NlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXRUb2tlbjEgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4xLnB1c2gocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIGxldCByZXRUb2tlbjIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4yLnB1c2gocm9sZU5hbWVBcnIuam9pbihcIiwgXCIpKTtcblxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyByZWZlcmVuY2VkIGJ5IGEgY29tYm9ib3guIElmIHNvLCBsZWF2ZSBpdCB0byB0aGUgY29tYm9ib3ggcnVsZXMgdG8gY2hlY2tcbiAgICAgICAgbGV0IGlkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIik7XG4gICAgICAgIGlmIChpZCAmJiBpZC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihgKlthcmlhLWNvbnRyb2xzPScke2lkfSddW3JvbGU9J2NvbWJvYm94J11gKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzYXZlZFBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFtyZXRUb2tlbjEudG9TdHJpbmcoKSwgcmV0VG9rZW4yLnRvU3RyaW5nKCldKTtcbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBib3RoIEhUTUwgNSBhdHRyaWJ1dGUgYW5kIHRoZSBhc3NvY2lhdGVkIFdBSS1BUklBIGF0dHJpYnV0ZSBhcmUgaW4gYW4gZWxlbWVudFxuICAgICAqIE9yaWdpbjogIEhUTUwgNSAtIHBlciBSaWNoYXJkIFNjaHdlcmR0ZmVnZXIncyByZXF1aXJlbWVudHMuIGcxMTQxXG4gICAgICovXG4gICAgaWQ6IFwiSEFBQ19BcmlhX09yX0hUTUw1X0F0dHJcIixcbiAgICBjb250ZXh0OiBcImRvbToqW2FyaWEtcmVxdWlyZWRdLCBkb206KlthcmlhLWF1dG9jb21wbGV0ZV0sIGRvbToqW2FyaWEtcmVhZG9ubHldLCBkb206KlthcmlhLWRpc2FibGVkXSwgZG9tOipbYXJpYS1wbGFjZWhvbGRlcl1cIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLXJlcXVpcmVkXCIpICYmXG4gICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLXJlcXVpcmVkXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhc3NlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJwbGFjZWhvbGRlclwiKSAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLXBsYWNlaG9sZGVyXCIpKSB7XG4gICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFzc2VkICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtYXV0b2NvbXBsZXRlXCIpKSB7XG4gICAgICAgICAgICBsZXQgYXJpYUF1dG9Db21wbGV0ZUF0dHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWF1dG9jb21wbGV0ZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCBteU5vZGUgPSBydWxlQ29udGV4dDtcbiAgICAgICAgICAgIGxldCBodG1sNUF1dG9Db21wbGV0ZUF0dHIgPSBudWxsO1xuXG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuZWVkIHRvIGRvIGEgY29uc2lkZXJhdGlvbiBmb3IgaGlkZGVuIGluIHRoaXMgbm9kZSB3YWxrIGlmIHRoZSBydWxlQ29udGV4dCBub2RlIGlzIGhpZGRlbiB0aGVuXG4gICAgICAgICAgICAvLyB0aGlzIHJ1bGUgd2lsbCBub3QgdHJpZ2dlciBhcyBoaWRkZW4gdGFrZXMgaW5oZXJpdGFuY2UgZnJvbSB0aGUgcGFyZW50IG5vZGVzIHRoYXQgdGhpcyBpcyB3YWxraW5nIHVwIHRvLlxuICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB3ZSBldmVyIG5lZWQgdG8gY29uc2lkZXIgaGlkZGVuIGZvciB0aGlzIGNhc2UgbmVlZCB0byBhZGQgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihteU5vZGUpXG4gICAgICAgICAgICAvLyBhbmQgY29udGludWUgdG8gdGhlIG5leHQgbm9kZS5cbiAgICAgICAgICAgIHdoaWxlICgobXlOb2RlICE9IG51bGwpICYmIChteU5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSAnaHRtbCcpICYmICghKG15Tm9kZS5oYXNBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIikpKSkge1xuICAgICAgICAgICAgICAgIG15Tm9kZSA9IERPTVV0aWwucGFyZW50RWxlbWVudChteU5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKG15Tm9kZSAhPSBudWxsKSAmJiAobXlOb2RlLmhhc0F0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiKSkpIHtcbiAgICAgICAgICAgICAgICBodG1sNUF1dG9Db21wbGV0ZUF0dHIgPSBteU5vZGUuZ2V0QXR0cmlidXRlKFwiYXV0b2NvbXBsZXRlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiBIVE1MNSBhdXRvY29tcGxldGUgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBhbmQgY29uZmxpY3Rpbmcgd2l0aCBhcmlhIHRhZ1xuICAgICAgICAgICAgaWYgKChodG1sNUF1dG9Db21wbGV0ZUF0dHIgIT0gbnVsbCkgJiZcbiAgICAgICAgICAgICAgICAoaHRtbDVBdXRvQ29tcGxldGVBdHRyID09IFwib25cIiAmJlxuICAgICAgICAgICAgICAgICAgICBhcmlhQXV0b0NvbXBsZXRlQXR0ciA9PSBcIm5vbmVcIikpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocGFzc2VkICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlYWRvbmx5XCIpICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtcmVhZG9ubHlcIikgJiZcbiAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtcmVhZG9ubHlcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFzc2VkICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIikpIHtcbiAgICAgICAgICAgIC8vICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT0gXCJmYWxzZVwiKXtcbiAgICAgICAgICAgIGxldCBhcmlhRGlzYWJsZWRBdHRyID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCBteU5vZGUgPSBydWxlQ29udGV4dDtcbiAgICAgICAgICAgIGxldCBodG1sNURpc2FibGVkQXR0cjogYm9vbGVhbiB8IHN0cmluZyA9IG15Tm9kZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcblxuICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBkbyBhIGNvbnNpZGVyYXRpb24gZm9yIGhpZGRlbiBpbiB0aGlzIG5vZGUgd2FsayBpZiB0aGUgcnVsZUNvbnRleHQgbm9kZSBpcyBoaWRkZW4gdGhlblxuICAgICAgICAgICAgLy8gdGhpcyBydWxlIHdpbGwgbm90IHRyaWdnZXIgYXMgaGlkZGVuIHRha2VzIGluaGVyaXRhbmNlIGZyb20gdGhlIHBhcmVudCBub2RlcyB0aGF0IHRoaXMgaXMgd2Fsa2luZyB1cCB0by5cbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgd2UgZXZlciBuZWVkIHRvIGNvbnNpZGVyIGhpZGRlbiBmb3IgdGhpcyBjYXNlIG5lZWQgdG8gYWRkIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4obXlOb2RlKVxuICAgICAgICAgICAgLy8gYW5kIGNvbnRpbnVlIHRvIHRoZSBuZXh0IG5vZGUuXG4gICAgICAgICAgICB3aGlsZSAoKG15Tm9kZSAhPSBudWxsKSAmJiAobXlOb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gJ2h0bWwnKSAmJiAoIShteU5vZGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikpKSkge1xuICAgICAgICAgICAgICAgIG15Tm9kZSA9IERPTVV0aWwucGFyZW50RWxlbWVudChteU5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKG15Tm9kZSAhPSBudWxsKSAmJiAobXlOb2RlLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpKSkge1xuICAgICAgICAgICAgICAgIGh0bWw1RGlzYWJsZWRBdHRyID0gbXlOb2RlLmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiBIVE1MNSBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIGFuZCBjb25mbGljdGluZyB3aXRoIGFyaWEgdGFnXG4gICAgICAgICAgICAvLyBOb3RlIFJQVCBXZWJBcHAgaGFzIGEgYnVnIHRoYXQgaW5qZWN0IGRpc2FibGVkIG9yIERJU0FCTEVEIGFzIHRoZSBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICAgICAgICBpZiAoKChodG1sNURpc2FibGVkQXR0ciA9PSB0cnVlIHx8IGh0bWw1RGlzYWJsZWRBdHRyID09IFwiXCIgfHwgaHRtbDVEaXNhYmxlZEF0dHIgPT0gXCJESVNBQkxFRFwiIHx8IGh0bWw1RGlzYWJsZWRBdHRyID09IFwiZGlzYWJsZWRcIikgJiYgbXlOb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gJ2h0bWwnKSAmJlxuICAgICAgICAgICAgICAgIChhcmlhRGlzYWJsZWRBdHRyID09IFwiZmFsc2VcIikpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBbXSk7XG4gICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgfVxuICAgIH1cbn0sXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHJvbGUgY29uZmxpY3Qgd2l0aCBBUklBIGltcGxpY2l0U2VtYW50aWNzIHJlc3RyaWN0aW9uc1xuICAgICAqIFxuICAgICAqIE5vdGU6IFJwdF9BcmlhX1ZhbGlkUm9sZSBjaGVja3MgaWYgdGhlIHJvbGUgc3BlY2lmaWVkIGlzIGRlZmluZWQgYnkgQVJJQS4gVGhpcyBkZXRlcm1pbmVzXG4gICAgICogaWYgdGhhdCByb2xlIGlzIHZhbGlkIGdpdmVuIHRoZSBjb250ZXh0LlxuICAgICAqIE5hdGl2ZSBob3N0IHNlbWFudGljcyAxMTQ2XG4gICAgICovXG4gICAgaWQ6IFwiYXJpYV9zZW1hbnRpY3Nfcm9sZVwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIiwgLy8gY2hlY2tzIGZvciBhbGwgZWxlbWVudHMsIHNpbmNlIHJvbGUgbWlnaHQgbm90IGJlIHNwZWNpZmllZCBidXQgdGhlIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBjaGVja2VkLlxuICAgIGRlcGVuZGVuY2llczogW1wiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVwiXSwgIC8vd2UgY2FuJ3QgdXNlIFJwdF9BcmlhX1ZhbGlkUm9sZSB0byB2YWxpZGF0ZSB0aGUgcm9sZXMgYmVjYXVzZSB0aGUgY29udGV4dCBpcyBkaWZmZXJlbnRcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgbGV0IGRvbVJvbGVzIDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGRvbVJvbGVzID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pOyAvLyBzZXBhcmF0ZWQgYnkgb25lIG9yIG1vcmUgd2hpdGUgc3BhY2VzXG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRhZ05hbWUgPSBydWxlQ29udGV4dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIC8vIFJvbGVzIGFsbG93ZWQgb24gdGhpcyBub2RlXG4gICAgICAgIGxldCBhbGxvd2VkUm9sZXMgPSBbXTtcblxuICAgICAgICAvLyBGYWlsaW5nIHJvbGVzXG4gICAgICAgIGxldCBmYWlsUm9sZVRva2VucyA9IFtdO1xuICAgICAgICAvLyBQYXNzaW5nIHJvbGVzXG4gICAgICAgIGxldCBwYXNzUm9sZVRva2VucyA9IFtdO1xuXG4gICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShydWxlQ29udGV4dCk7XG4gICAgICAgIGFsbG93ZWRSb2xlcyA9IFJQVFV0aWwuZ2V0QWxsb3dlZEFyaWFSb2xlcyhydWxlQ29udGV4dCwgdGFnUHJvcGVydHkpO1xuXG5cbiAgICAgICAgLy8gVGVzdGluZyByZXN0cmljdGlvbnMgZm9yIGVhY2ggcm9sZSBhbmQgYWRkaW5nIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZXMgdG8gdGhlIGFsbG93ZWQgYXR0cmlidXRlIGxpc3RcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb21Sb2xlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGFsbG93ZWRSb2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZhaWxSb2xlVG9rZW5zLmluY2x1ZGVzKGRvbVJvbGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsUm9sZVRva2Vucy5wdXNoKGRvbVJvbGVzW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFhbGxvd2VkUm9sZXMuaW5jbHVkZXMoXCJhbnlcIikpIHsgLy8gYW55IHJvbGUgaXMgdmFsaWQgc28gbm8gY2hlY2tpbmcgaGVyZS4gdGhlIHZhbGlkaXR5IG9mIHRoZSBhcmlhIHJvbGUgaXMgY2hlY2tlZCBieSBScHRfQXJpYV9WYWxpZFJvbGVcbiAgICAgICAgICAgICAgICBpZiAoIWFsbG93ZWRSb2xlcy5pbmNsdWRlcyhkb21Sb2xlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmYWlsUm9sZVRva2Vucy5pbmNsdWRlcyhkb21Sb2xlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxSb2xlVG9rZW5zLnB1c2goZG9tUm9sZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghcGFzc1JvbGVUb2tlbnMuaW5jbHVkZXMoZG9tUm9sZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NSb2xlVG9rZW5zLnB1c2goZG9tUm9sZXNbaV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChhbGxvd2VkUm9sZXMuaW5jbHVkZXMoXCJhbnlcIikpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFzc1JvbGVUb2tlbnMuaW5kZXhPZihkb21Sb2xlc1tpXSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NSb2xlVG9rZW5zLnB1c2goZG9tUm9sZXNbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBmb3IgbG9vcFxuICAgICAgICBpZiAoZmFpbFJvbGVUb2tlbnMuaW5jbHVkZXMoXCJwcmVzZW50YXRpb25cIikgfHwgZmFpbFJvbGVUb2tlbnMuaW5jbHVkZXMoXCJub25lXCIpICYmIFJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiLCBbZmFpbFJvbGVUb2tlbnMuam9pbihcIiwgXCIpLCB0YWdOYW1lXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmFpbFJvbGVUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dCwgXCJhcmlhX3NlbWFudGljc19yb2xlXCIsIFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtmYWlsUm9sZVRva2Vucy5qb2luKFwiLCBcIiksIHRhZ05hbWVdKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXNzUm9sZVRva2Vucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIiwgW3Bhc3NSb2xlVG9rZW5zLmpvaW4oXCIsIFwiKSwgdGFnTmFtZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWxvdyBmb3IgbGlzdGluZyBhbGwgYWxsb3dlZCByb2xlIGFuZCBhdHRyaWJ1dGVzLiAgV2UgY2FuIGRlbGV0ZSBpdCBpZiB3ZSBhcmUgbm90IHVzaW5nIGl0IG5leHQgeWVhciAoMjAxOCkgIzI4M1xuICAgICAgICAvLyAgICAgIHJldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IFtyb2xlT3JBdHRyaWJ1dGVUb2tlbnMsIHRhZ05hbWUsIGFsbG93ZWRSb2xlT3JBdHRyaWJ1dGVUb2tlbnNdKTtcbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiByb2xlIGNvbmZsaWN0IHdpdGggQVJJQSBpbXBsaWNpdFNlbWFudGljcyByZXN0cmljdGlvbnNcbiAgICAgKiBcbiAgICAgKiBOb3RlOiBScHRfQXJpYV9WYWxpZFJvbGUgY2hlY2tzIGlmIHRoZSByb2xlIHNwZWNpZmllZCBpcyBkZWZpbmVkIGJ5IEFSSUEuIFRoaXMgZGV0ZXJtaW5lc1xuICAgICAqIGlmIHRoYXQgcm9sZSBpcyB2YWxpZCBnaXZlbiB0aGUgY29udGV4dC5cbiAgICAgKiBOYXRpdmUgaG9zdCBzZW1hbnRpY3MgMTE0NlxuICAgICAqL1xuICAgIGlkOiBcImFyaWFfc2VtYW50aWNzX2F0dHJpYnV0ZVwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIiwgLy8gY2hlY2tzIGZvciBhbGwgZWxlbWVudHMsIHNpbmNlIHJvbGUgbWlnaHQgbm90IGJlIHNwZWNpZmllZCBidXQgdGhlIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBjaGVja2VkLlxuICAgIGRlcGVuZGVuY2llczogW10sICAvL3dlIGNhbid0IHVzZSBScHRfQXJpYV9WYWxpZFJvbGUgdG8gdmFsaWRhdGUgdGhlIHJvbGVzIGJlY2F1c2UgdGhlIGNvbnRleHQgaXMgZGlmZmVyZW50XG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAvLyBUaGUgdGhlIEFSSUEgcm9sZSBpcyBjb21wbGV0ZWx5IGludmFsaWQsIHNraXAgdGhpcyBjaGVja1xuICAgICAgICBpZiAoUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJhcmlhX3NlbWFudGljc19yb2xlXCIsIFwiXCIpID09PSBcIkZhaWxfMVwiKSByZXR1cm4gbnVsbDtcbiAgICAgICAgbGV0IHJvbGUgPSBBUklBTWFwcGVyLm5vZGVUb1JvbGUocnVsZUNvbnRleHQpO1xuICAgICAgICBpZiAoIXJvbGUpIHtcbiAgICAgICAgICAgIHJvbGUgPSBcIm5vbmVcIjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdGFnTmFtZSA9IHJ1bGVDb250ZXh0LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAvLyBGYWlsaW5nIGF0dHJpYnV0ZXNcbiAgICAgICAgbGV0IGZhaWxBdHRyaWJ1dGVUb2tlbnMgPSBbXTtcbiAgICAgICAgLy8gUGFzc2luZyBhdHRyaWJ1dGVzXG4gICAgICAgIGxldCBwYXNzQXR0cmlidXRlVG9rZW5zID0gW107XG5cbiAgICAgICAgbGV0IHRhZ1Byb3BlcnR5ID0gUlBUVXRpbC5nZXRFbGVtZW50QXJpYVByb3BlcnR5KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgLy8gQXR0cmlidXRlcyBhbGxvd2VkIG9uIHRoaXMgbm9kZVxuICAgICAgICBsZXQgYWxsb3dlZEF0dHJpYnV0ZXMgPSBSUFRVdGlsLmdldEFsbG93ZWRBcmlhQXR0cmlidXRlcyhydWxlQ29udGV4dCwgW3JvbGVdLCB0YWdQcm9wZXJ0eSk7XG5cbiAgICAgICAgLy8gaW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgaGFzIG5vIHJvbGUgYnV0IGl0IGNhbiB0YWtlIGFuIGFyaWEtcmVxdWlyZWQuIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBsaWtlIHRoaXMuXG4gICAgICAgIC8vIFNvIHdlIGFkZCBpdCBpbiB0aGUgY29kZSBpbnN0ZWFkIG9mIGFkZGluZyBuZXcgbWVjaGFuaXNtIHRvIHRoZSBhcmlhLWRlZmluaXRpb24uanNcbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInR5cGVcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKSA9PT0gXCJwYXNzd29yZFwiKSB7XG4gICAgICAgICAgICBhbGxvd2VkQXR0cmlidXRlcy5wdXNoKFwiYXJpYS1yZXF1aXJlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkb21BdHRyaWJ1dGVzID0gcnVsZUNvbnRleHQuYXR0cmlidXRlcztcblxuICAgICAgICBpZiAoZG9tQXR0cmlidXRlcykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkb21BdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGF0dHJOYW1lID0gZG9tQXR0cmlidXRlc1tpXS5uYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGxldCBpc0FyaWEgPSBhdHRyTmFtZS5zdWJzdHJpbmcoMCwgNSkgPT09ICdhcmlhLSc7XG4gICAgICAgICAgICAgICAgaWYgKGlzQXJpYSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFsbG93ZWRBdHRyaWJ1dGVzLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy92YWxpZCBhdHRyaWJ1dGVzIGNhbiBiZSBub25lIGFsc28gd2hpY2ggaXMgY292ZXJlZCBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAhZmFpbEF0dHJpYnV0ZVRva2Vucy5pbmNsdWRlcyhhdHRyTmFtZSkgPyBmYWlsQXR0cmlidXRlVG9rZW5zLnB1c2goYXR0ck5hbWUpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAhcGFzc0F0dHJpYnV0ZVRva2Vucy5pbmNsdWRlcyhhdHRyTmFtZSkgPyBwYXNzQXR0cmlidXRlVG9rZW5zLnB1c2goYXR0ck5hbWUpIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1x0XHRpZighcGFzc2VkKXtcbiAgICAgICAgLy9cdFx0XHQgIGlmKHJvbGVUb2tlbnMubGVuZ3RoICE9PSAwKXsgLy8gUnVsZSBmYWlsdXJlIGlzIHByZXNlbnRcbiAgICAgICAgLy9cdFx0ICAgXHRcdFx0YWxsb3dlZFJvbGVUb2tlbnMgPSBhbGxvd2VkUm9sZVRva2Vucy5jb25jYXQoYWxsb3dlZFJvbGVzKTsgLy8gVGhpcyBjYW4gYmUgY29uY2F0ZW5hdGluZyBlbXB0eSBsaXN0XG4gICAgICAgIC8vXHRcdFx0ICB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vXHQgICAgXHQgIGlmKGF0dHJpYnV0ZVRva2Vucy5sZW5ndGggIT09IDApeyAvLyBBdHRyaWJ1dGUgZmFpbHVyZSBpcyBwcmVzZW50XG4gICAgICAgIC8vXHQgICAgXHRcdCAgYWxsb3dlZEF0dHJpYnV0ZVRva2VucyA9IGFsbG93ZWRBdHRyaWJ1dGVUb2tlbnMuY29uY2F0KGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgLy9cdCAgICBcdCAgfVxuICAgICAgICAvL1xuICAgICAgICAvL1x0ICAgIH1cblxuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IFtyb2xlT3JBdHRyaWJ1dGVUb2tlbnMsIHRhZ05hbWVdKTtcbiAgICAgICAgaWYgKGZhaWxBdHRyaWJ1dGVUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtmYWlsQXR0cmlidXRlVG9rZW5zLmpvaW4oXCIsIFwiKSwgdGFnTmFtZSwgcm9sZV0pO1xuICAgICAgICB9IGVsc2UgaWYgKHBhc3NBdHRyaWJ1dGVUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsIFtwYXNzQXR0cmlidXRlVG9rZW5zLmpvaW4oXCIsIFwiKSwgdGFnTmFtZSwgcm9sZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWxvdyBmb3IgbGlzdGluZyBhbGwgYWxsb3dlZCByb2xlIGFuZCBhdHRyaWJ1dGVzLiAgV2UgY2FuIGRlbGV0ZSBpdCBpZiB3ZSBhcmUgbm90IHVzaW5nIGl0IG5leHQgeWVhciAoMjAxOCkgIzI4M1xuICAgICAgICAvLyAgICAgIHJldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IFtyb2xlT3JBdHRyaWJ1dGVUb2tlbnMsIHRhZ05hbWUsIGFsbG93ZWRSb2xlT3JBdHRyaWJ1dGVUb2tlbnNdKTtcbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBBUklBIGVycm9yIG1lc3NhZ2UgaXMgaGlkZGVuIG9yIGRvZXNuJ3QgZXhpc3QgXG4gICAgICogXHRcdFx0XHR3aGVuIGFyaWEtaW52YWxpZCBpcyB0cnVlLlxuICAgICAqIE9yaWdpbjogIElCTSBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMy4zLjFcbiAgICAgKlxuICAgICAqL1xuICAgIGlkOiBcIkhBQUNfQXJpYV9FcnJvck1lc3NhZ2VcIixcbiAgICBjb250ZXh0OiBcImRvbToqW2FyaWEtaW52YWxpZD10cnVlXVwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgbGV0IGFyaWFfZXJyTXNnSWQgPSBSUFRVdGlsLmdldEFyaWFBdHRyaWJ1dGUocnVsZUNvbnRleHQsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIik7XG5cbiAgICAgICAgLy8gSWYgYXJpYS1lcnJvcm1lc3NhZ2UgaXMgbm90IHByb3ZpZGVkLCB0aGVuIE9VVF9PRl9TQ09QRVxuICAgICAgICBpZiAoIWFyaWFfZXJyTXNnSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1zZ19lbGUgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgYXJpYV9lcnJNc2dJZCk7XG5cbiAgICAgICAgLy8gUE9GMDogSW52YWxpZCBpZCByZWZlcmVuY2VcbiAgICAgICAgaWYgKCFtc2dfZWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQT0YxOiBSZWZlcmVuY2VkIGVsZW1lbnQgaXMgbm90IHZpc2libGVcbiAgICAgICAgaWYgKCFSUFRVdGlsLmlzTm9kZVZpc2libGUobXNnX2VsZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICB9XG59XG5cbiAgICAvL25leHQgcnVsZVxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzQXJpYSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIxLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5pbXBvcnQgeyBBUklBRGVmaW5pdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vYXJpYS9BUklBRGVmaW5pdGlvbnNcIjtcbmltcG9ydCB7IEZyYWdtZW50VXRpbCB9IGZyb20gXCIuLi91dGlsL2ZyYWdtZW50XCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBBUklBTWFwcGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uXCI7XG5pbXBvcnQgeyBET01XYWxrZXIgfSBmcm9tIFwiLi4vLi4vLi4vZG9tL0RPTVdhbGtlclwiO1xuXG5sZXQgYTExeVJ1bGVzTGFiZWxpbmc6IFJ1bGVbXSA9IFtcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSBsYW5kbWFyayBlbGVtZW50IGhhcyB0aGUgc2FtZSBwYXJlbnQtbGFuZG1hcmssIFxuICAgICAgICAgKiBBTkQgdGhlIHNhbWUgcm9sZSBhcyBhbm90aGVyIGxhbmRtYXJrLCBcbiAgICAgICAgICogQU5EIGlzIG5vdCBkaWZmZXJlbnRpYXRlZCBieSBhcmlhLWxhYmVsIG9yIGFyaWEtbGFiZWxsZWRieS4gXG4gICAgICAgICAqIFRoaXMgY2F1c2VzIGl0IHRvIGJlIGRpZmZpY3VsdCBmb3IgYSBrZXlib2FyZCB1c2VyIHRvIGtub3cgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gbGFuZG1hcmtzXG4gICAgICAgICAqIE9yaWdpbjogIGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvV0NBRzIxL1RlY2huaXF1ZXMvYXJpYS9BUklBMTMgdGhpcyBpcyBub3QgZGlyZWN0bHkgcGFydCBvZiB0aGUgQVJJQSBzcGVjIHNvIHRoaXMgaXMgb25seSBpbiB0aGUgSUJNIHJ1bGVzIGFzIGEgVmlvbGF0aW9uXG4gICAgICAgICAqIFxuICAgICAgICAgKiBOT1RFOiBXaGVuIHdlIGhhdmUgdHdvIGxhbmRtYXJrcyBhdCB0aGUgcm9vdCBsZXZlbCBvZiB0aGUgZG9jdW1lbnQgdGhpcyBydWxlIHdpbGwgbm90IGNoZWNrIGZvciB0aGF0LiBcbiAgICAgICAgICogRm9yIGV4YW1wbGUgaWYgd2UgaGF2ZSA8Ym9keT4gPG1haW4gaWQ9XCJtYWluMVwiPjwvbWFpbj4gPG1haW4gaWQ9XCJtYWluMlwiPjxtYWluPiA8L2JvZHk+IHdlIGRvIG5vdCBmYWlsIHRoaXMgcnVsZS4gXG4gICAgICAgICAqIEFsdGhvdWdodCB0aGlzIG1pZ2h0IGJlIGFuIGFjY2Vzc2liaWxpdHkgZXJyb3IgYW55d2F5LiBTZWU6XG4gICAgICAgICAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0ODk2NDc2L2Nhbi1pLXVzZS1tb3JlLXRoYW4tb25lLW1haW4taHRtbC10YWctaW4tdGhlLXNhbWUtcGFnZS8zNDkwNjAzN1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwibGFuZG1hcmtfbmFtZV91bmlxdWVcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbXBsZW1lbnRhcnksIGFyaWE6YmFubmVyLCBhcmlhOmNvbnRlbnRpbmZvLCBhcmlhOm1haW4sIGFyaWE6bmF2aWdhdGlvbiwgYXJpYTpyZWdpb24sIGFyaWE6c2VhcmNoLCBhcmlhOmZvcm1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgLy8gVE9ETyBkbyBJIG5lZWQgdG8gZml0ZXIgb3V0IGJhZCBjb250ZW50aW5mbyBub2RlczogVGhlIGZvb3RlciBlbGVtZW50IGlzIG5vdCBhIGNvbnRlbnRpbmZvIGxhbmRtYXJrIHdoZW4gaXQgaXMgYSBkZXNjZW5kYW50IG9mIHRoZSBmb2xsb3dpbmcgSFRNTDUgc2VjdGlvbmluZyBlbGVtZW50czogaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTcvTk9URS13YWktYXJpYS1wcmFjdGljZXMtMS4xLTIwMTcxMjE0L2V4YW1wbGVzL2xhbmRtYXJrcy9IVE1MNS5odG1sXG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG93bmVyRG9jdW1lbnQgPSBGcmFnbWVudFV0aWwuZ2V0T3duZXJGcmFnbWVudChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgZm9ybUNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCIsIG51bGwpO1xuXG4gICAgICAgICAgICBpZiAoIWZvcm1DYWNoZSkge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiLS0tLS0tLS0tRU5URVJJTkcgRk9STSBDQUNIRVwiKVxuICAgICAgICAgICAgICAgIGZvcm1DYWNoZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbk5vZGVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTm9kZXNQYXJlbnRzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZDogW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IG5hdmlnYXRpb25Ob2Rlc1RlbXAgPSBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FzaWRlLFtyb2xlPVwiY29tcGxlbWVudGFyeVwiXSwgZm9vdGVyLFtyb2xlPVwiY29udGVudGluZm9cIl0sIGhlYWRlcixbcm9sZT1cImJhbm5lclwiXSwgbWFpbixbcm9sZT1cIm1haW5cIl0sIG5hdixbcm9sZT1cIm5hdmlnYXRpb25cIl0sIGZvcm0sW3JvbGU9XCJmb3JtXCJdLCBzZWN0aW9uLFtyb2xlPVwicmVnaW9uXCJdLFtyb2xlPVwic2VhcmNoXCJdJyk7XG4gICAgICAgICAgICAgICAgbGV0IG5hdmlnYXRpb25Ob2RlcyA9IEFycmF5LmZyb20obmF2aWdhdGlvbk5vZGVzVGVtcCk7XG4gICAgICAgICAgICAgICAgbGV0IG5hdmlnYXRpb25Ob2Rlc1BhcmVudHMgPSBbXTtcbiAgICAgICAgICAgICAgICBsZXQgbmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZCA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXZpZ2F0aW9uTm9kZXMubGVuZ3RoOyBpKyspIHsgLy8gTG9vcCBvdmVyIGFsbCB0aGUgbGFuZG1hcmsgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVscyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IG5hdmlnYXRpb25Ob2Rlc1tpXS5wYXJlbnRFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHMucHVzaChhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGVscy5sZW5ndGg7IGorKykgeyAvLyBMb29wIG92ZXIgYWxsIHRoZSBwYXJlbnRzIG9mIHRoZSBsYW5kbWFyayBub2Rlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluZCBuZWFyZXN0IGxhbmRtYXJrIHBhcmVudCBiYXNlZCBvbiB0aGUgdGFnTmFtZSBvciB0aGUgcm9sZSBhdHRyaWJ1dGUgXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFnTmFtZVRyaWdnZXIgPSBbXCJBU0lERVwiLCBcIkZPT1RFUlwiLCBcIkZPUk1cIiwgXCJIRUFERVJcIiwgXCJNQUlOXCIsIFwiTkFWXCIsIFwiU0VDVElPTlwiXS5pbmNsdWRlcyhlbHNbal0udGFnTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByb2xlTmFtZVRyaWdnZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbHNbal0uaGFzQXR0cmlidXRlKFwicm9sZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lVHJpZ2dlciA9IFtcImNvbXBsZW1lbnRhcnlcIiwgXCJjb250ZW50aW5mb1wiLCBcImZvcm1cIiwgXCJiYW5uZXJcIiwgXCJtYWluXCIsIFwibmF2aWdhdGlvblwiLCBcInJlZ2lvblwiLCBcInNlYXJjaFwiXS5pbmNsdWRlcyhlbHNbal0uZ2V0QXR0cmlidXRlKFwicm9sZVwiKSkgLy8gVE9ETyB3ZSBhcmUgbm90IGNvdmVyaW5nIHRoZSBjYXNlIHdoZXJlIGEgZWxlbWVuZW50IHdpdGggbXVsdGlwbGUgcm9sZXMuIEUuZy4gcm9sZSA9IFwiZm9ybSBiYW5uZXJcIi4gVGhpcyBpcyBhIGltcHJvdm1lbnQgd2UgbWlnaHQgd2FudCB0byBhZGQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWdOYW1lVHJpZ2dlciB8fCByb2xlTmFtZVRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZWFyZXN0IHBhcmVudC1sYW5kbWFyayBmb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc1BhcmVudHMucHVzaChlbHNbal0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID09PSBlbHMubGVuZ3RoIC0gMSkgeyAvLyBUaGlzIG5vZGUgaXMgYXQgdGhlIGhlYWQgb2YgdGhlIGZpbGUgc28gaXQgZG9lcyBub3QgaGF2ZSBhIHBhcmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc1BhcmVudHMucHVzaChudWxsKSAvLyBUT0RPIG1pZ2h0IHdhbnQgdG8gY2hhbmdlIHRvIE5VTExcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IG5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYXZpZ2F0aW9uTm9kZXMubGVuZ3RoOyBpKyspIHsgLy8gTG9vcCBvdmVyIGFsbCB0aGUgbGFuZG1hcmsgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHMucHVzaChBUklBTWFwcGVyLmNvbXB1dGVOYW1lKG5hdmlnYXRpb25Ob2Rlc1tpXSkpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF2aWdhdGlvbk5vZGVzUGFyZW50cy5sZW5ndGg7IGkrKykgeyAvLyBMb29wIG92ZXIgYWxsIHRoZSBwYXJlbnRzIG9mIHRoZSBsYW5kbWFyayBub2RlcyB0byBmaW5kIGR1cGxpY2F0ZXNcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoRm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhc3NfMF9mbGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbmF2aWdhdGlvbk5vZGVzUGFyZW50cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPT09IGkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBjb21wYXJlIGFnYWluc3Qgb3Vyc2VsZnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlmIHN0YXRlbWVudCBmb2N1cyBvbiB0aGUgY2FzZSB3aGVyZSB0aGUgcGFyZW50IGxhbmRtYXJrIGlzIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmF2aWdhdGlvbk5vZGVzUGFyZW50c1tpXSA9PT0gbnVsbCkgJiYgKG5hdmlnYXRpb25Ob2Rlc1BhcmVudHNbal0gPT09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGxvb2tpbmcgYXQgdHdvIHJvb3Qgbm9kZXMsIHNvIHdlIHNob3VsZCBjb21wYXJlIHRoZW0uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFSSUFNYXBwZXIubm9kZVRvUm9sZShuYXZpZ2F0aW9uTm9kZXNbaV0pID09PSBBUklBTWFwcGVyLm5vZGVUb1JvbGUobmF2aWdhdGlvbk5vZGVzW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCb3RoIG5vZGVzIGhhdmUgdGhlIHNhbWUgcm9sZSBBTkRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuYXZpZ2F0aW9uTm9kZXNDb21wdXRlZExhYmVsc1tpXSA9PT0gbmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBib3RoIGhhdmUgdGhlIHNhbWUgKGNvbXB1dGVkKSBhcmlhLWxhYmVsL2FyaWEtbGFiZWxsZWRieVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKG5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzW2ldID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZC5wdXNoKFwiRmFpbF8wXCIpOyAgLy8gRmFpbCAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hGb3VuZCA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FtZSBwYXJlbnRzICYmIHNhbWUgbm9kZSByb2xlcyBCVVQgZGlmZmVyZW50IGNvbXB1dGVkIGFyaWEtbGFiZWwvYXJpYS1sYWJlbGxlZGJ5IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhdCBsZWFzdCBhIFBhc3NfMC4gQnV0IHdlIG5lZWQgdG8gY2hlY2sgYWxsIG5vZGVzIHRvIHNlZSBpZiBhbm90aGVyIG9uZSBmYWlscy4gU28gc2V0IGEgZmxhZy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfMF9mbGFnID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FtZSBwYXJlbnRzIGJ1dCBkaWZmZXJlbnQgbm9kZSByb2xlcyAvLyBOb3QgYXBwbGljYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIGlmICgobmF2aWdhdGlvbk5vZGVzUGFyZW50c1tpXSA9PT0gbnVsbCkgfHwgKG5hdmlnYXRpb25Ob2Rlc1BhcmVudHNbal0gPT09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGxvb2tpbmcgYXQgYSBzaW5nbGUgcm9vdCBub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpZiBzdGF0ZW1lbnQgZm9jdXMgb24gdGhlIGNhc2Ugd2hlcmUgdGhlIHBhcmVudCBsYW5kbWFyayBpcyBOT1QgbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERPTVV0aWwuc2FtZU5vZGUobmF2aWdhdGlvbk5vZGVzUGFyZW50c1tpXSwgbmF2aWdhdGlvbk5vZGVzUGFyZW50c1tqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRoZSBzYW1lIHBhcmVudC1sYW5kbWFyayBBTkQgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBUklBTWFwcGVyLm5vZGVUb1JvbGUobmF2aWdhdGlvbk5vZGVzW2ldKSA9PT0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKG5hdmlnYXRpb25Ob2Rlc1tqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90aCBub2RlcyBoYXZlIHRoZSBzYW1lIHJvbGUgQU5EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHNbaV0gPT09IG5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYm90aCBoYXZlIHRoZSBzYW1lIChjb21wdXRlZCkgYXJpYS1sYWJlbC9hcmlhLWxhYmVsbGVkYnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChuYXZpZ2F0aW9uTm9kZXNDb21wdXRlZExhYmVsc1tpXSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmQucHVzaChcIkZhaWxfMFwiKTsgIC8vIEZhaWwgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbWUgcGFyZW50cyAmJiBzYW1lIG5vZGUgcm9sZXMgQlVUIGRpZmZlcmVudCBjb21wdXRlZCBhcmlhLWxhYmVsL2FyaWEtbGFiZWxsZWRieSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYXQgbGVhc3QgYSBQYXNzXzAuIEJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCBub2RlcyB0byBzZWUgaWYgYW5vdGhlciBvbmUgZmFpbHMuIFNvIHNldCBhIGZsYWcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXzBfZmxhZyA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbWUgcGFyZW50cyBidXQgZGlmZmVyZW50IG5vZGUgcm9sZXMgLy8gTm90IGFwcGxpY2FibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpZmZlcmVudCBwYXJlbnRzIC8vIE5vdCBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaEZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFzc18wX2ZsYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTm9kZXNNYXRjaEZvdW5kLnB1c2goXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmQucHVzaChcIm51bGxcIik7IC8vIFRoaXMgaXMgbm90IHRoZSBrZXl3b3JkIG51bGwgb24gcHVycG9zZS4gSXQgaXMgYSBzcGFjZWhvbGRlciBpbiB0aGUgYXJyYXkgc28gaW5kZXhlcyBtYXRjaCB1cC5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHMgPSBuYXZpZ2F0aW9uTm9kZXNDb21wdXRlZExhYmVscztcbiAgICAgICAgICAgICAgICBmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzID0gbmF2aWdhdGlvbk5vZGVzO1xuICAgICAgICAgICAgICAgIGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXNQYXJlbnRzID0gbmF2aWdhdGlvbk5vZGVzUGFyZW50cztcbiAgICAgICAgICAgICAgICBmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZCA9IG5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmQ7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCIsIGZvcm1DYWNoZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBUT0RPIEFkZCB2YWxpZGF0aW9uIHRoYXQgYWxsIDMgYXJyYXlzIGFyZSB0aGUgc2FtZSBsZW5ndGhcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIi0tLS0tLS0tLS0tLS1FbmQgZm9ybUNhY2hlXCIpXG5cbiAgICAgICAgICAgIH0gLy8gRW5kIGZvcm1DYWNoZVxuXG4gICAgICAgICAgICBsZXQgaW5kZXhUb0NoZWNrID0gLTE7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5pc1NhbWVOb2RlKGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4VG9DaGVjayA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluZGV4VG9DaGVjayA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZFtpbmRleFRvQ2hlY2tdLmluY2x1ZGVzKFwiUGFzc18wXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXNNYXRjaEZvdW5kW2luZGV4VG9DaGVja10sIFtBUklBTWFwcGVyLm5vZGVUb1JvbGUoZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2Rlc1tpbmRleFRvQ2hlY2tdKV0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZFtpbmRleFRvQ2hlY2tdLmluY2x1ZGVzKFwiRmFpbF8wXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXNNYXRjaEZvdW5kW2luZGV4VG9DaGVja10sIFtBUklBTWFwcGVyLm5vZGVUb1JvbGUoZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2Rlc1tpbmRleFRvQ2hlY2tdKSwgZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzW2luZGV4VG9DaGVja11dKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgcmVnaW9uIHJvbGUgaXMgbm90IGxhYmVsZWQgd2l0aCBhbiBhcmlhLWxhYmVsIG9yIGFyaWEtbGFiZWxsZWRieVxuICAgICAgICAgKiBhbHNvLCBjaGVjayA8c2VjdGlvbj4gZWxlbWVudCBhcyB0aGlzIGVsZW1lbnQgaGFzICdyZWdpb24nIGFzIGltcGxpY2l0IHJvbGVcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV0sIGRvbTpzZWN0aW9uXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgdGFnTmFtZSA9IHJ1bGVDb250ZXh0LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgaWYgKHRhZ05hbWUgPT09IFwic2VjdGlvblwiICYmICFSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIFwicmVnaW9uXCIsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRhZ05hbWUgIT09IFwic2VjdGlvblwiICYmICFSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJyZWdpb25cIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzQXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKHRhZ05hbWUgPT09IFwic2VjdGlvblwiID8gXCJGYWlsXzFcIiA6IFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgbWFpbiBsYW5kbWFya3MgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIEFsc28sIGNvbnNpZGUgZWxlbWVudHMgd2l0aCBpbXBsaWNpdCByb2xlcyBzdWNoIGFzIDxtYWluPiBlbGVtZW50XG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhICBSdWxlIDExODJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMlwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6bWFpblwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGNvbnRleHRMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcblxuICAgICAgICAgICAgbGV0IHBhcmVudERvY1JvbGUgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiZG9jdW1lbnRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgbWFpbnMgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwibWFpblwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYWlucy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChtYWluc1tpXSA9PT0gcnVsZUNvbnRleHQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIGxldCB0aGlzUGFyZW50RG9jUm9sZSA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShtYWluc1tpXSwgXCJkb2N1bWVudFwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpc1BhcmVudERvY1JvbGUgPT09IHBhcmVudERvY1JvbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuZ2V0QXJpYUxhYmVsKG1haW5zW2ldKSA9PT0gY29udGV4dExhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIG1haW4gbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZFxuICAgICAgICAgKiB0aGV5IGRvbid0IGhhdmUgdW5pcXVlLCB2aXNpYmxlIGxhYmVscy5cbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Ym9keVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vY2FsbCBnZXRFbGVtZW50c0J5Um9sZUhpZGRlbiB3aXRoIGNvbnNpZGVySW1wbGljaXQgZmxhZyBhcyB0cnVlIFxuICAgICAgICAgICAgLy9zbyB0aGF0IHRoZSBtZXRob2QgcmV0dXJzIDxtYWluPiBlbGVtZW50cyBcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwibWFpblwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzVW5pcXVlQXJpYUxhYmVsbGVkYnkobGFuZG1hcmtzKTtcblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGJhbm5lciBsYW5kbWFya3MgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6YmFubmVyXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJiYW5uZXJcIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdFwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlQmFubmVyTGFuZG1hcmtzX0ltcGxpY2l0XCIsIGR1cGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBteUxhYmVsID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgIT09IFwiXCIgJiYgKCEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMSk7XG5cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgcnVsZUNvbnRleHQsICcnLCAnJywgWyBteUxhYmVsIF0pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGJhbm5lciBsYW5kbWFya3MgaW4gYSBzZXQgb2Ygc2libGluZ3NcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdLCBkb206aGVhZGVyXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImJhbm5lclwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5nZXRTaWJsaW5nV2l0aFJvbGVIaWRkZW4ocnVsZUNvbnRleHQsIFwiYmFubmVyXCIsIHRydWUsIHRydWUpID09PSBudWxsO1xuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgY29tcGxlbWVudGFyeSByb2xlIGlzIG5vdCBsYWJlbGVkIHdpdGggYW4gYXJpYS1sYWJlbCBvciBhcmlhLWxhYmVsbGVkYnlcbiAgICAgICAgICogYWxzbywgY29uc2lkZXIgPGFzaWRlPiBhcyB0aGlzIGVsZW1lbnQgaGFzIGltcGxpY2l0ICdjb21wbGVtZW50YXJ5JyByb2xlLlxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdLCBkb206YXNpZGVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwiY29tcGxlbWVudGFyeVwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIGNvbXBsZW1lbnRhcnkgcm9sZSBpcyBub3QgbGFiZWxlZCB3aXRoIGFuIGFyaWEtbGFiZWxsZWRieVxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKiBOb3RlIHRoaXMgaXMgYSByZWNvbW1lbmRhdGlvbi4gUnB0X0FyaWFfQ29tcGxlbWVudGFyeVJlcXVpcmVkTGFiZWwgaXMgcmVxdWlyZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5TGFuZG1hcmtMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdLCBkb206YXNpZGVcIixcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBbXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdFwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwiY29tcGxlbWVudGFyeVwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhcmlhLWxhYmVsbGVkYnlcIik7XG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICdyb2xlJywgJycsIFtdKTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgY29tcGxlbWVudGFyeSBsYW5kbWFya3MgYXJlIHByZXNlbnQgYW5kIFxuICAgICAgICAgKiB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVscy5cbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6Y29tcGxlbWVudGFyeVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICAvLyBBbHNvLCBjb25zaWRlciBJbXBsaWNpdCByb2xlIGNoZWNraW5nLiBcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiY29tcGxlbWVudGFyeVwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsICE9PSBcIlwiICYmICghKG15TGFiZWwgaW4gZHVwZXMpIHx8IGR1cGVzW215TGFiZWxdIDw9IDEpO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIHJ1bGVDb250ZXh0LCAnJywgJycsIFsgbXlMYWJlbCBdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgY29udGVudGluZm8gbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6Y29udGVudGluZm9cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgLy8gQWxzbywgY29uc2lkZXIgSW1wbGljaXQgcm9sZSBjaGVja2luZy4gXG4gICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbnRlbnRpbmZvXCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGxhbmRtYXJrcy5sZW5ndGggPT09IDAgfHwgbGFuZG1hcmtzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZHVwZXMgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9MYW5kbWFya3NfSW1wbGljaXRcIiwgZHVwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG15TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gbXlMYWJlbCAhPT0gXCJcIiAmJiAoIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxKTtcblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBydWxlQ29udGV4dCwgJycsICcnLCBbIG15TGFiZWwgXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbXlMYWJlbF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGNvbnRlbnRpbmZvIG5vZGVzIGluIGEgc2V0IG9mIHNpYmxpbmdzLlxuICAgICAgICAgKiBBbHNvLCBjb25zaWRlciA8Zm9vdGVyPiBlbGVtZW50IHdoaWNoIGhhcyBpbXBsaWNpdCByb2xlXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvSW5TaWJsaW5nU2V0X0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV0sIGRvbTpmb290ZXIsIGRvbTphZGRyZXNzXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL2ZpbmQgb3V0IGlmIDxmb290ZXI+IGVsZW1lbnQgaGFzIHNpYmxpbmdzIGFzIDxmb290ZXI+IGhhcyBpbXBsaWNpdCBjb250ZW50aW5mbyByb2xlXG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImNvbnRlbnRpbmZvXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSAhUlBUVXRpbC5nZXRTaWJsaW5nV2l0aFJvbGVIaWRkZW4ocnVsZUNvbnRleHQsIFwiY29udGVudGluZm9cIiwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgY29udGVudGluZm8gcm9sZSBpcyBwcmVzZW50LCBidXQgbm8gbWFpbiByb2xlIGlzIHByZXNlbnQuXG4gICAgICAgICAqIEFsc28sIGNvbnNpZGVyIGltcGxpY3Qgcm9sZXMgZm9yIDxtYWluPiwgPGZvb3Rlcj4gYW5kIDxhZGRyZXNzPiBlbGVtZW50cyBhcyB0aGVzZSBlbGVtZW50c1xuICAgICAgICAgKiBoYXZlIGltcGxpY2l0IGNvbnRlbnRpbmZvIHJvbGVzLlxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV0sIGRvbTpmb290ZXIsIGRvbTphZGRyZXNzXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL2NvbnNpZGVyIGltcGxpY2l0IHJvbGVcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwiY29udGVudGluZm9cIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIm1haW5cIiwgdHJ1ZSwgdHJ1ZSkubGVuZ3RoID4gMDtcblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgZm9ybSBsYW5kbWFya3MgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Ym9keVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiZm9ybVwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmhhc1VuaXF1ZUFyaWFMYWJlbHNMb2NhbGx5KGxhbmRtYXJrcywgZmFsc2UpO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIGxhbmRtYXJrcywgJycsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbCgyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgZm9ybSBsYW5kbWFya3MgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmZvcm1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcblxuICAgICAgICAgICAgLy8gUGVyIGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDE3L05PVEUtd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS0yMDE3MTIxNC9leGFtcGxlcy9sYW5kbWFya3MvSFRNTDUuaHRtbFxuICAgICAgICAgICAgLy8gZm9ybSBlbGVtZW50IHNob3VsZCBvbmx5IGJlIGNvbnNpZGVyZWQgaWYgaXQgaGFzIGFuIGFyaWEgbGFiZWwgb3IgdGl0bGVcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpID09PSBcImZvcm1cIlxuICAgICAgICAgICAgICAgIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIilcbiAgICAgICAgICAgICAgICB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIilcbiAgICAgICAgICAgICAgICB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0aXRsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiZm9ybVwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NfSW1wbGljaXRcIiwgbnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFkdXBlcykge1xuICAgICAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NfSW1wbGljaXRcIiwgZHVwZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBsZXQgcGFzc2VkID0gbXlMYWJlbCAhPT0gXCJcIiAmJiAoIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIG5hdmlnYXRpb24gbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVOYXZpZ2F0aW9uTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpuYXZpZ2F0aW9uXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwibmF2aWdhdGlvblwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdFwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdFwiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsICE9PSBcIlwiICYmICghKG15TGFiZWwgaW4gZHVwZXMpIHx8IGR1cGVzW215TGFiZWxdIDw9IDEpO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIHJ1bGVDb250ZXh0LCAnJywgJycsIFsgbXlMYWJlbCBdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIHNlYXJjaCBsYW5kbWFya3MgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc1wiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6c2VhcmNoXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJzZWFyY2hcIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc1wiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlU2VhcmNoTGFuZG1hcmtzXCIsIGR1cGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBteUxhYmVsID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgIT09IFwiXCIgJiYgKCEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMSk7XG5cbiAgICAgICAgICAgIC8vIHJldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIHJ1bGVDb250ZXh0LCAnJywgJycsIFsgbXlMYWJlbCBdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogPGNwPiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgcmVnaW9uIHJvbGUgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIEFsc28sIGNvbnNpZGVyICA8c2VjdGlvbj4gZWxlbWVudCBhcyB0aGlzIGVsZW1lbnQgaGFzIGltcGxpY2l0ICdyZWdpb24nIHJvbGVcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpyZWdpb25cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIFBlciBodHRwczovL3d3dy53My5vcmcvVFIvMjAxNy9OT1RFLXdhaS1hcmlhLXByYWN0aWNlcy0xLjEtMjAxNzEyMTQvZXhhbXBsZXMvbGFuZG1hcmtzL0hUTUw1Lmh0bWxcbiAgICAgICAgICAgIC8vIGZvcm0gZWxlbWVudCBzaG91bGQgb25seSBiZSBjb25zaWRlcmVkIGlmIGl0IGhhcyBhbiBhcmlhIGxhYmVsIG9yIHRpdGxlXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSA9PT0gXCJyZWdpb25cIlxuICAgICAgICAgICAgICAgIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIilcbiAgICAgICAgICAgICAgICB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIilcbiAgICAgICAgICAgICAgICB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0aXRsZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwicmVnaW9uXCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0XCIsIG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRcIiwgZHVwZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBsZXQgcGFzc2VkID0gbXlMYWJlbCAhPT0gXCJcIiAmJiAoIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW4gYXBwbGljYXRpb24gcm9sZSBpcyBub3QgbGFiZWxlZCB3aXRoIGFuIGFyaWEtbGFiZWxsZWRieSBvciBhcmlhLWxhYmVsXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9BcHBsaWNhdGlvbkxhbmRtYXJrTGFiZWxcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmFwcGxpY2F0aW9uXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgLy8gcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGFwcGxpY2F0aW9uIGxhbmRtYXJrcyBhcmUgcHJlc2VudCBhbmQgdGhleSBkb24ndCBoYXZlIHVuaXF1ZSBsYWJlbHNcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXBwbGljYXRpb25MYW5kbWFya3NcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmFwcGxpY2F0aW9uXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJhcHBsaWNhdGlvblwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlQXBwbGljYXRpb25MYW5kbWFya3NcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzXCIsIGR1cGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBteUxhYmVsID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgIT09IFwiXCIgJiYgKCEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMSk7XG5cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgcnVsZUNvbnRleHQsICcnLCAnJywgWyBteUxhYmVsIF0pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgZG9jdW1lbnQgcm9sZXMgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmRvY3VtZW50XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJkb2N1bWVudFwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlRG9jdW1lbnRSb2xlc1wiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlRG9jdW1lbnRSb2xlc1wiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsID09PSBcIlwiIHx8ICghKG15TGFiZWwgaW4gZHVwZXMpIHx8IGR1cGVzW215TGFiZWxdIDw9IDEpO1xuXG4gICAgICAgICAgICAvLyByZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBydWxlQ29udGV4dCwgJycsICcnLCBbIG15TGFiZWwgXSk7IFxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW4gYXJ0aWNsZSByb2xlIGlzIG5vdCBsYWJlbGVkIHdpdGggYW4gYXJpYS1sYWJlbGxlZGJ5IG9yIGFyaWEtbGFiZWxcbiAgICAgICAgICogY29uc2lkZXIgPGFydGljbGU+IGVsZW1lbnQgd2l0aCBpbXBsaWNpdCByb2xlIGFydGljbGVcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX0FydGljbGVSb2xlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmFydGljbGVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmhhc0FyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAvLyByZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgYXJ0aWNsZSByb2xlcyBhcmUgcHJlc2VudCBhbmQgdGhleSBkb24ndCBoYXZlIHVuaXF1ZSBsYWJlbHNcbiAgICAgICAgICogQWxzbywgY29uc2lkZXIgPGFydGljbGU+IGVsZW1lbnQgd2l0aCBpbXBsaWNpdCBhcnRpY2xlIHJvbGUuIFxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVBcnRpY2xlUm9sZXNfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmFydGljbGVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgLy8gQWxzbywgY29uc2lkZXIgSW1wbGljaXQgcm9sZSBjaGVja2luZy4gXG4gICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImFydGljbGVcIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlQXJ0aWNsZVJvbGVzX0ltcGxpY2l0XCIsIGR1cGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBteUxhYmVsID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgPT09IFwiXCIgfHwgIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIHJ1bGVDb250ZXh0LCAnJywgJycsIFsgbXlMYWJlbCBdKTsgXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbXlMYWJlbF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgZ3JvdXAgcm9sZSBpcyBub3QgbGFiZWxlZCB3aXRoIGFuIGFyaWEtbGFiZWxsZWRieSBvciBhcmlhLWxhYmVsXG4gICAgICAgICAqIEFsc28sIGNvbnNpZGVyIDxkZXRhaWxzPiBlbGVtZW50IHdoaWNoIGhhcyBpbXBsaWNpdCBhcnRpY2xlIHJvbGUuIFxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfR3JvdXBSb2xlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Kltyb2xlXSwgZG9tOmRldGFpbHNcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCByb2xlTmFtZSA9IFwiZ3JvdXBcIjtcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIHJvbGVOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSAhIVJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJtZW51YmFyXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICEhUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcIm1lbnVcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgISFSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwidHJlZVwiKTtcbiAgICAgICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJ1bGUgZG9lcyBub3QgYXBwbHkgaW4gYSBtZW51YmFyL21lbnUvdHJlZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByZXRUb2tlbjEgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgICAgIHJldFRva2VuMS5wdXNoKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgbGV0IHJldFRva2VuMiA9IG5ldyBBcnJheSgpO1xuICAgICAgICAgICAgcmV0VG9rZW4yLnB1c2gocm9sZU5hbWUpO1xuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBwYXNzZWQgPT09IHRydWUgPyBbXSA6IFtyZXRUb2tlbjEsIHJldFRva2VuMl0pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW3JldFRva2VuMS50b1N0cmluZygpLCByZXRUb2tlbjIudG9TdHJpbmcoKV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGdyb3VwIHJvbGVzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBBbHNvLCBjb25zaWRlciA8ZGV0YWlscz4gZWxlbWVudCB3aGljaCBoYXMgaW1wbGljaXQgJ2dyb3VwJyByb2xlXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUdyb3VwUm9sZXNfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmdyb3VwXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgLy8gQWxzbywgY29uc2lkZXIgSW1wbGljaXQgcm9sZSBjaGVja2luZy4gXG4gICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImdyb3VwXCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGxhbmRtYXJrcy5sZW5ndGggPT09IDAgfHwgbGFuZG1hcmtzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZHVwZXMgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCIsIG51bGwpO1xuICAgICAgICAgICAgaWYgKCFkdXBlcykge1xuICAgICAgICAgICAgICAgIGR1cGVzID0gUlBUVXRpbC5maW5kQXJpYUxhYmVsRHVwZXMobGFuZG1hcmtzKTtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCIsIGR1cGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBteUxhYmVsID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgPT09IFwiXCIgfHwgIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIHJ1bGVDb250ZXh0LCAnJywgJycsIFsgbXlMYWJlbCBdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIFdBSS1BUklBIHdpZGdldCBkb2VzIG5vdCBoYXZlIGFuIGFjY2Vzc2libGUgbmFtZSB2aWEgYW4gQVJJQSBsYWJlbCBvciBpbm5lciB0ZXh0XG4gICAgICAgICAqIEFsc28sIGNvbnNpZGVyIHdpZGdldHMgd2l0aCBpbXBsaWNpdCByb2xlcy5cbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvKiByZW1vdmVkIHRoZSByb2xlIGNoZWNrIHJvbGU9IHByZXNlbnRhdGlvbiBhbmQgcm9sZT1ub25lIHNpbmNlIHRoZXNlIDIgcm9sZXMgYXJlIG5vdCBpbiB0aGUgbGlzdCBvZiB3aWRnZXQgdHlwZSByb2xlcyAqL1xuICAgICAgICAgICAgaWYgKChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikgPT09IFwiaGlkZGVuXCIpXG4gICAgICAgICAgICAgICAgfHwgKFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJjb21ib2JveFwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAhKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcInRleHRib3hcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcInNlYXJjaGJveFwiKSkpKSB7IC8vIHdlIG5lZWQgdG8gZGlhZ25vc2UgdGhhdCBhIGNvbWJvYm94IGlucHV0IHRleHRib3ggaGFzIGEgbGFiZWwoZ2l0aHViIGlzc3VlICMxMTA0KSBcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGVsZW1Sb2xlID0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCB0YWdOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgLy8gSGFuZGxlZCBieSBXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbFxuICAgICAgICAgICAgbGV0IHNraXBSb2xlcyA9IFtcImJ1dHRvblwiLCBcImNoZWNrYm94XCIsIFwiY29tYm9ib3hcIixcbiAgICAgICAgICAgICAgICBcImxpc3Rib3hcIiwgXCJtZW51aXRlbWNoZWNrYm94XCIsIFwibWVudWl0ZW1yYWRpb1wiLCBcInJhZGlvXCIsIFwic2VhcmNoYm94XCIsXG4gICAgICAgICAgICAgICAgXCJzbGlkZXJcIiwgXCJzcGluYnV0dG9uXCIsIFwic3dpdGNoXCIsIFwidGV4dGJveFwiLCBcInByb2dyZXNzYmFyXCIsIFwibGlua1wiXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICBpZiAoc2tpcFJvbGVzLmluY2x1ZGVzKGVsZW1Sb2xlKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAodGFnTmFtZSA9PT0gXCJvdXRwdXRcIlxuICAgICAgICAgICAgICAgIHx8IHRhZ05hbWUgPT09IFwiaW5wdXRcIiAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpID09PSBcImZpbGVcIikge1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBGb3JtL2lucHV0IGVsZW1lbnRzIGFyZSBjaGVja2VkIGJ5IEc0MSwgd2Ugc2tpcCB0aGVtIGZyb20gdGhpcyBydWxlLiBHaXRodWIgaXNzdWUgNDQ5XG4gICAgICAgICAgICAgICAgbGV0IHNraXBFbGVtZW50cyA9IFtcImlucHV0XCIsIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIiwgXCJidXR0b25cIiwgXCJkYXRhbGlzdFwiLCBcIm9wdGdyb3VwXCIsIFwib3B0aW9uXCIsIFwia2V5Z2VuXCIsIFwib3V0cHV0XCIsIFwicHJvZ3Jlc3NcIiwgXCJtZXRlclwiXTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcEVsZW1lbnRzLmluZGV4T2YocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhdm9pZCBkaWFnbm9zaW5nIHRoZSBwb3B1cCBsaXN0IG9mIGEgY29tYm9ib3guXG4gICAgICAgICAgICBsZXQgcm9sZXNUb0NoZWNrID0gW1wibGlzdGJveFwiLCBcInRyZWVcIiwgXCJncmlkXCIsIFwiZGlhbG9nXCJdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByb2xlc1RvQ2hlY2subGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIHJvbGVzVG9DaGVja1tqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbWJvYm94ZXMgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiY29tYm9ib3hcIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgY29tYm9ib3hlcy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbWJvYm94ID0gY29tYm9ib3hlc1trXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcmlhX293bnMgPSBSUFRVdGlsLmdldEVsZW1lbnRBdHRyaWJ1dGUoY29tYm9ib3gsIFwiYXJpYS1vd25zXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyaWFfb3ducykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvd25zID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGFyaWFfb3ducy50cmltKCkpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93bnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG93bmVkID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIG93bnNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3duZWQgPT09IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgcHJvaGliaXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRlc2lnblBhdHRlcm5zID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zO1xuICAgICAgICAgICAgLy9nZXQgYXR0cmlidXRlIHJvbGVzIGFzIHdlbGwgYXMgaW1wbGljaXQgcm9sZXMuXG4gICAgICAgICAgICBsZXQgcm9sZXMgPSBSUFRVdGlsLmdldFJvbGVzKHJ1bGVDb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICAgIGxldCBudW1XaWRnZXRzVGVzdGVkID0gMDtcbiAgICAgICAgICAgIGxldCBpbnRlcmFjdGl2ZVJvbGVUeXBlcyA9IFtcIndpZGdldFwiLCBcImxpdmVSZWdpb25cIiwgXCJ3aW5kb3dcIl07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gcm9sZXMubGVuZ3RoOyBwYXNzZWQgJiYgaSA8IGxlbmd0aDsgKytpKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgcGF0dGVybiA9IGRlc2lnblBhdHRlcm5zW3JvbGVzW2ldXTtcblxuICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJuXG4gICAgICAgICAgICAgICAgICAgICYmIHBhdHRlcm4ubmFtZVJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICYmIHBhdHRlcm4ucm9sZVR5cGVcbiAgICAgICAgICAgICAgICAgICAgJiYgaW50ZXJhY3RpdmVSb2xlVHlwZXMuaW5jbHVkZXMocGF0dGVybi5yb2xlVHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgKytudW1XaWRnZXRzVGVzdGVkO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFsbCB3aWRnZXRzIG1heSBoYXZlIGFuIGF1dGhvciBzdXBwbGllZCBhY2Nlc3NpYmxlIG5hbWUuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRpdGxlIGlzIGxlZ2FsLCBidXQgZG9uJ3QgYWR2ZXJ0aXNlIGl0cyB1c2UgaW4gZG9jdW1lbnRhdGlvbi5cbiAgICAgICAgICAgICAgICAgICAgLy8gRW5jb3VyYWdlIHVzZSBvZiBhcmlhLWxhYmVsLCBhcmlhLWxhYmVsbGVkYnkgb3IgaHRtbCBsYWJlbCBlbGVtZW50LlxuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmhhc0FyaWFMYWJlbChydWxlQ29udGV4dCkgfHwgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0aXRsZVwiKSB8fCBSUFRVdGlsLmdldExhYmVsRm9yRWxlbWVudEhpZGRlbihydWxlQ29udGV4dCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgcGF0dGVybi5uYW1lRnJvbSAmJiBwYXR0ZXJuLm5hbWVGcm9tLmluZGV4T2YoXCJjb250ZW50c1wiKSA+PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB3aWRnZXQncyBhY2Nlc3NpYmxlIG5hbWUgaXMgc3VwcGxpZWQgYnkgZWxlbWVudCdzIGlubmVyIHRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRPckFsdChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkgeyAvLyBjaGVjayBpZiBpdCBoYXMgaW1wbGljaXQgbGFiZWwsIGxpa2UgPGxhYmVsPjxpbnB1dCAuLi4uPmFiYyA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNJbXBsaWNpdExhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHJ1bGVDb250ZXh0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbWdcIiAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicm9sZVwiKSAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhbHRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IERPTVV0aWwuY2xlYW5XaGl0ZXNwYWNlKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKSkudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5uYW1lRnJvbS5pbmRleE9mKFwicHJvaGliaXRlZFwiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9oaWJpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG51bVdpZGdldHNUZXN0ZWQgPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbZWxlbVJvbGVdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy9UT0RPXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgaWYgKHByb2hpYml0ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgbXVsdGlwbGUgdG9vbGJhcnMgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIE9yaWdpbjogIFdBSS1BUklBXG4gICAgICAgICAqIFx0XHRcdGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI3Rvb2xiYXJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTp0b29sYmFyXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJ0b29sYmFyXCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGxhbmRtYXJrcy5sZW5ndGggPT09IDAgfHwgbGFuZG1hcmtzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZHVwZXMgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVUb29sYmFyVW5pcXVlTGFiZWxcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbFwiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsICE9PSBcIlwiICYmICghKG15TGFiZWwgaW4gZHVwZXMpIHx8IGR1cGVzW215TGFiZWxdIDw9IDEpO1xuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbXlMYWJlbF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzTGFiZWxpbmcgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNCbGluazogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZXJlIGlzIGEgYmxpbmsgZWxlbWVudFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBHMTFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9CbGlua19BbHdheXNUcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmJsaW5rXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHsgLy8gRXJyb3JcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciBDU1MgdXNhZ2UgdGhhdCBibGlua3NcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NzlcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9CbGlua19DU1NUcmlnZ2VyMVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpzdHlsZSwgZG9tOipbc3R5bGVdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgdGV4dFZhbHVlID0gUlBUVXRpbC5nZXRJbm5lclRleHQocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZSgnc3R5bGUnKSkge1xuICAgICAgICAgICAgICAgIHRleHRWYWx1ZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRleHRWYWx1ZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJ0ZXh0LWRlY29yYXRpb246YmxpbmtcIikgPT0gLTE7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0JsaW5rIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzQmxvY2txdW90ZTogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgPGJsb2NrcXVvdGU+IHdpdGhvdXQgY2l0ZSwgb3Igd2l0aCBjaXRlIHRoYXQgaXMgb25seSB3aGl0ZXNwYWNlLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9CbG9ja3F1b3RlX0hhc0NpdGVcIixcbiAgICAgICAgY29udGV4dDogXCJkb206YmxvY2txdW90ZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiY2l0ZVwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNpdGVFbGVtcyA9IFJQVFV0aWwuZ2V0RG9jRWxlbWVudHNCeVRhZyhydWxlQ29udGV4dCwgXCJjaXRlXCIpO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IGNpdGVFbGVtcyAhPSBudWxsICYmIGNpdGVFbGVtcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgcXVvdGVzIGFyZSB1c2VkIHRoYXQgYXJlIG5vdCBpbiA8cT4gb3IgPGJsb2NrcXVvdGU+IG9yIDxzY3JpcHQ+XG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHMjYzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfQmxvY2txdW90ZV9XcmFwc1RleHRRdW90ZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIG1pbldvcmRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAzLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbWluV29yZHMgPSB2YWxpZGF0ZVBhcmFtcy5taW5Xb3Jkcy52YWx1ZTtcblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgd2Fsa05vZGUgPSBydWxlQ29udGV4dC5maXJzdENoaWxkIGFzIE5vZGU7XG4gICAgICAgICAgICBsZXQgdmlvbGF0ZWR0ZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgd2Fsa05vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBDb21wbHkgdG8gdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgd2lsbCBiZSBkb25lIGJ5IGRlZmF1bHQgYXMgdGhpcyBydWxlIHRyaWdnZXJzIG9uIGVhY2ggZWxlbWVudFxuICAgICAgICAgICAgICAgIC8vIGFuZCBmb3IgZWFjaCBlbGVtZW50IGl0IG9ubHkgY2hlY2tzIHRoYXQgc2luZ2xlIGVsZW1lbnRzIHRleHQgbm9kZXMgYW5kIG5vdGhpbmcgZWxzZS4gU28gYWxsIGlubmVyIGVsZW1lbnRzIHdpbGwgYmVcbiAgICAgICAgICAgICAgICAvLyBjb3ZlcmVkIG9uIHRoZWlyIG93bi4gQ3VycmVudGx5IGZvciB0aGlzIHJ1bGUgYnkgZGVmYXVsdCBDaGVjayBIaWRkZW4gQ29udGVudCB3aWxsIHdvcmssIGFzIHdlIGFyZSBkb2luZ1xuICAgICAgICAgICAgICAgIC8vIGEgbm9kZSB3YWxrIG9ubHkgb24gc2libGluZ3Mgc28gaXQgd291bGQgbm90IGdldCB0ZXh0IG5vZGVzIGZyb20gb3RoZXIgc2libGluZ3MgYXQgYWxsLlxuICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIGluIHRoZSBmdXR1cmUgc29tZXRoaW5nIGNobmdlcywganVzdCBuZWVkIHRvIGFkZCAmJiAhUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHdhbGtOb2RlKSB0byB0aGUgYmVsb3dcbiAgICAgICAgICAgICAgICAvLyBpZi5cbiAgICAgICAgICAgICAgICBpZiAod2Fsa05vZGUubm9kZU5hbWUgPT0gXCIjdGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRWYWwgPSB3YWxrTm9kZS5ub2RlVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvIHRoZSByZWdleCB0ZXN0cyBmaXJzdCAtIHNob3VsZCBiZSBmYXN0XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFwb3N0cm9waGUnc1xuICAgICAgICAgICAgICAgICAgICB0eHRWYWwgPSB0eHRWYWwucmVwbGFjZSgvKFxcUyknKFxcUykvZywgXCIkMSQyXCIpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGJsUXVvdGVzID0gdHh0VmFsLm1hdGNoKC8oXCJbXlwiXStcIikvZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzbmdsUXVvdGVzID0gdHh0VmFsLm1hdGNoKC8oJ1teJ10rJykvZyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdhbGsgdGhlIHBhcmVudHMgLSBvbmx5IGNvbnRpbnVlIHRlc3RpbmcgaWYgd2UgZm91bmQgYSBxdW90ZSwgYnV0XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIG5vdCBhbHJlYWR5IG1hcmtlZCB1cFxuICAgICAgICAgICAgICAgICAgICAvLyBBbHNvIHNraXAgaWYgd2UncmUgaW4gYSBzY3JpcHQgLSB0aGVyZSdzIGxvdHMgb2YgcXVvdGVzIHVzZWQgaW4gc2NyaXB0c1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGRibFF1b3RlcyAhPSBudWxsIHx8IHNuZ2xRdW90ZXMgIT0gbnVsbCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuZ2V0QW5jZXN0b3Iod2Fsa05vZGUsIFtcImJsb2NrcXVvdGVcIiwgXCJxXCIsIFwic2NyaXB0XCIsIFwic3R5bGVcIl0pID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYmxRdW90ZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBwYXNzZWQgJiYgaSA8IGRibFF1b3Rlcy5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC53b3JkQ291bnQoZGJsUXVvdGVzW2ldKSA8IG1pbldvcmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNuZ2xRdW90ZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBwYXNzZWQgJiYgaSA8IHNuZ2xRdW90ZXMubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwud29yZENvdW50KHNuZ2xRdW90ZXNbaV0pIDwgbWluV29yZHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhbnkgbGluZWZlZWQgaW5zaWRlIHRoZSBxdW90ZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlvbGF0ZWR0ZXh0ID0gdHh0VmFsLnJlcGxhY2UobmV3IFJlZ0V4cChcIlxcXFxyP1xcXFxufFxcXFxyXCIsXCJnXCIpLFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRibFF1b3RlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlvbGF0ZWR0ZXh0ID0gc25nbFF1b3Rlcy5qb2luKFwiLCBcIikucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXHI/XFxcXG58XFxcXHJcIiwgXCJnXCIpLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNuZ2xRdW90ZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGVkdGV4dCA9IGRibFF1b3Rlcy5qb2luKFwiLCBcIikucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXHI/XFxcXG58XFxcXHJcIiwgXCJnXCIpLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGVkdGV4dCA9IGRibFF1b3Rlcy5jb25jYXQoc25nbFF1b3Rlcykuam9pbihcIiwgXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChcIlxcXFxyP1xcXFxufFxcXFxyXCIsIFwiZ1wiKSwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIGlmIHdlJ3JlIG5vdCBpbiB0aGUgYm9keSBvciBpZiB3ZSdyZSBpbiBhIHNjcmlwdCBvciBjb2RlIHNlZ21lbnRcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tBbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFtcImJvZHlcIiwgXCJzY3JpcHRcIiwgXCJjb2RlXCJdKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBjaGVja0FuY2VzdG9yID09IG51bGwgfHwgY2hlY2tBbmNlc3Rvci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwiYm9keVwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL2lmIHRoZSB2aW9sYXRlZHRleHQgaXMgbG9uZ2VyIHRoYW4gNjkgY2hhcnMsIG9ubHkga2VlcCB0aGUgZmlyc3QgMzIsIHRoZSBcIiAuLi4gXCIsIGFuZCB0aGUgbGFzdCAzMiBjaGFycyBcbiAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHZpb2xhdGVkdGV4dC5sZW5ndGggJiYgdmlvbGF0ZWR0ZXh0Lmxlbmd0aCA+IDY5KSB7XG4gICAgICAgICAgICAgICAgdmlvbGF0ZWR0ZXh0ID0gdmlvbGF0ZWR0ZXh0LnN1YnN0cmluZygwLCAzMikgKyBcIiAuLi4gXCIgKyB2aW9sYXRlZHRleHQuc3Vic3RyaW5nKHZpb2xhdGVkdGV4dC5sZW5ndGgtMzIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFzc2VkID8gUnVsZVBhc3MoXCJQYXNzXzBcIikgOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3Zpb2xhdGVkdGV4dF0pO1xuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNCbG9ja3F1b3RlIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MsIFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5pbXBvcnQgeyBBbmNlc3RvclV0aWwgfSBmcm9tIFwiLi4vdXRpbC9hbmNlc3RvclwiO1xuXG5sZXQgYTExeVJ1bGVzQm9keTogUnVsZVtdID0gW1xuICAgIHtcbiAgICAgICAgaWQ6IFwiV0NBRzIwX0JvZHlfRmlyc3RBU2tpcHNfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Ym9keVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBjb250ZXh0SGllcmFyY2hpZXM/OiBSdWxlQ29udGV4dEhpZXJhcmNoeSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgLy8gVGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IGluc2lkZSBhIHByZXNlbnRhdGlvbmFsIGZyYW1lXG4gICAgICAgICAgICBpZiAoQW5jZXN0b3JVdGlsLmlzUHJlc2VudGF0aW9uRnJhbWUoY29udGV4dEhpZXJhcmNoaWVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgYW5jaG9ycyBvbiB0aGUgcGFnZVxuICAgICAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGZvciBsYW5kbWFya3MgZmlyc3RcbiAgICAgICAgICAgIGxldCBwYXNzZWQ7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJJQk1faGFzTGFuZG1hcmtzX0ltcGxpY2l0XCIsIG51bGwpID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dCwgXCJJQk1faGFzTGFuZG1hcmtzX0ltcGxpY2l0XCIsIFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgW1wiYXBwbGljYXRpb25cIiwgXCJiYW5uZXJcIiwgXCJjb21wbGVtZW50YXJ5XCIsIFwiY29udGVudGluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgXCJmb3JtXCIsIFwibWFpblwiLCBcIm5hdmlnYXRpb25cIiwgXCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgIF0sIHRydWUsIHRydWUpLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJJQk1faGFzTGFuZG1hcmtzX0ltcGxpY2l0XCIsIGZhbHNlKTtcblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHsgLy8gTm8gbGFuZG1hcmtzLCBjaGVjayBmb3Igc2tpcCBsaW5rc1xuICAgICAgICAgICAgICAgIGxldCBhbmNob3JzID0gUlBUVXRpbC5nZXREb2NFbGVtZW50c0J5VGFnKHJ1bGVDb250ZXh0LCBcImFcIik7XG5cbiAgICAgICAgICAgICAgICAvLyBTa2lwIGFuY2hvciBzaG91bGQgYmUgdGhlIGZpcnN0IG9uZSBvbiB0aGUgcGFnZSB3aXRoIGFuIGhyZWYgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgbGV0IHRlc3RBbmNob3IgPSBudWxsO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYW5jaG9yc1tpXS5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShhbmNob3JzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEFuY2hvciA9IGFuY2hvcnNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFB1bGwgb3V0IHRoZSB0YXJnZXQgaWRcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0SWQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICh0ZXN0QW5jaG9yICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhyZWZTdHIgPSB0ZXN0QW5jaG9yLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpZHggPSBocmVmU3RyLmluZGV4T2YoXCIjXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRJZCA9IGhyZWZTdHIuc3Vic3RyaW5nKGlkeCArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIERldGVybWluZSBpZiB0aGVyZSBpcyBhbiBlbGVtZW50IGlkIG9yIG5hbWVkIGFuY2hvciBvbiB0aGUgcGFnZSB3aXRoIHRoaXNcbiAgICAgICAgICAgICAgICAvLyB0YXJnZXQgaWQuXG5cbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBkb2MuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0SWQpICE9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcGFzc2VkICYmIGkgPCBhbmNob3JzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFuY2hvcnNbaV0uaGFzQXR0cmlidXRlKFwiaHJlZlwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnNbaV0uaGFzQXR0cmlidXRlKFwibmFtZVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvcnNbaV0uZ2V0QXR0cmlidXRlKFwibmFtZVwiKSA9PSB0YXJnZXRJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHNraXAgdGV4dCBkb2VzIG5vdCBjb250YWluIGNlcnRhaW4gdGV4dCBzdHJpbmdzIGFuZFxuICAgICAgICAgKiAgdGhlcmUgYXJlIG5vIGxhbmRtYXJrcyB1c2VkIG9uIHRoZSBwYWdlLlxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBHMVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0JvZHlfRmlyc3RBQ29udGFpbnNTa2lwVGV4dF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpib2R5XCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiV0NBRzIwX0JvZHlfRmlyc3RBU2tpcHNfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIHBhcmFtU2tpcFRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcInNraXBcIiwgXCJqdW1wXCJdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIltzdHJpbmddXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBhbmNob3JzIG9uIHRoZSBwYWdlXG4gICAgICAgICAgICBsZXQgZG9jID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudDtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGxhbmRtYXJrcyBmaXJzdFxuICAgICAgICAgICAgbGV0IHBhc3NlZDtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0LCBcIklCTV9oYXNMYW5kbWFya3NfSW1wbGljaXRcIiwgbnVsbCkgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0LCBcIklCTV9oYXNMYW5kbWFya3NfSW1wbGljaXRcIiwgUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBbXCJhcHBsaWNhdGlvblwiLCBcImJhbm5lclwiLCBcImNvbXBsZW1lbnRhcnlcIiwgXCJjb250ZW50aW5mb1wiLFxuICAgICAgICAgICAgICAgICAgICBcImZvcm1cIiwgXCJtYWluXCIsIFwibmF2aWdhdGlvblwiLCBcInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgXSwgdHJ1ZSwgdHJ1ZSkubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0LCBcIklCTV9oYXNMYW5kbWFya3NfSW1wbGljaXRcIiwgZmFsc2UpO1xuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgeyAvLyBObyBsYW5kbWFya3MsIGNoZWNrIGZvciBza2lwIGxpbmtzXG4gICAgICAgICAgICAgICAgbGV0IGxpbmtzID0gZG9jLmxpbmtzO1xuICAgICAgICAgICAgICAgIC8vIFNraXAgbGluayBzaG91bGQgYmUgdGhlIGZpcnN0IG9uZSBvbiB0aGUgcGFnZSB3aXRoIGFuIGhyZWYgYXR0cmlidXRlIChpLmUuLCBsaW5rc1swXSlcbiAgICAgICAgICAgICAgICAvLyBhbHNvIGlmIHRoZSBmaXJzdCBsaW5rIGlzIGhpZGRlbiB0aGVuIHdlIHNob3VsZCBhbHNvIHRyaWdnZXIgYSB2aW9sYXRpb24uXG4gICAgICAgICAgICAgICAgaWYgKGxpbmtzICYmIGxpbmtzLmxlbmd0aCA+IDAgJiYgUlBUVXRpbC5pc05vZGVWaXNpYmxlKGxpbmtzWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdFRleHQgPSBSUFRVdGlsLmdldElubmVyVGV4dChkb2MubGlua3NbMF0pLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcGFzc2VkICYmIGkgPCB2YWxpZGF0ZVBhcmFtcy5wYXJhbVNraXBUZXh0LnZhbHVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0ZXN0VGV4dC5pbmRleE9mKHZhbGlkYXRlUGFyYW1zLnBhcmFtU2tpcFRleHQudmFsdWVbaV0pICE9IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHBhc3NlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzQm9keSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNDYW52YXM6IFJ1bGVbXSA9IFtcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlIGlubmVyIGh0bWwgb2YgYSBjYW52YXMgZWxlbWVudCBpcyBlbXB0eVxuICAgICAgICAgKiBPcmlnaW46ICBIVE1MIDUgLSBwZXIgUmljaGFyZCBTY2h3ZXJkdGZlZ2VyJ3MgcmVxdWlyZW1lbnRzLiBnMTE0M1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiSEFBQ19DYW52YXNcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Y2FudmFzXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHJ1bGVDb250ZXh0LmlubmVySFRNTC50cmltKCkubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZU1hbnVhbChcIk1hbnVhbF8xXCIpO1xuICAgICAgICB9XG5cbiAgICB9XG5dXG5leHBvcnQgeyBhMTF5UnVsZXNDYW52YXMgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBSUFRVdGlsU3R5bGUsIE5vZGVXYWxrZXIgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0NvbG9yOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICBcImlkXCI6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBXCIsXG4gICAgICAgIFwiY29udGV4dFwiOiBcImRvbToqXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIC8vIGF2b2lkIGRpYWdub3NpbmcgZWxlbWVudHMgdGhhdCBhcmUgbm90IHZpc2libGVcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKHJ1bGVDb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgIChSUFRVdGlsLmhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzICE9IG51bGwgJiZcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cyAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cy5pbmRleE9mKG5vZGVOYW1lKSA+IC0xKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIGVsZW1lbnQgaGFzIGNoaWxkcmVuIHdpdGggYWN0dWFsIHRleHQuXG4gICAgICAgICAgICBsZXQgY2hpbGRTdHIgPSBcIlwiO1xuICAgICAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBydWxlQ29udGV4dC5jaGlsZE5vZGVzO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXNbaV0ubm9kZVR5cGUgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZFN0ciArPSBjaGlsZE5vZGVzW2ldLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgaWYgKGNoaWxkU3RyLnRyaW0oKS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHdpbiA9IGRvYy5kZWZhdWx0VmlldztcbiAgICAgICAgICAgIGlmICghd2luKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc3R5bGUgPSB3aW4uZ2V0Q29tcHV0ZWRTdHlsZShydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gSkNIIGNsaXAgSU5GTzpcbiAgICAgICAgICAgIC8vICAgICAgVGhlIGNsaXAgcHJvcGVydHkgbGV0cyB5b3Ugc3BlY2lmeSBhIHJlY3RhbmdsZSB0byBjbGlwIGFuIGFic29sdXRlbHkgcG9zaXRpb25lZCBlbGVtZW50LiBcbiAgICAgICAgICAgIC8vICAgICAgVGhlIHJlY3RhbmdsZSBzcGVjaWZpZWQgYXMgZm91ciBjb29yZGluYXRlcywgYWxsIGZyb20gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgZWxlbWVudCB0byBiZSBjbGlwcGVkLlxuICAgICAgICAgICAgLy8gICAgICBQcm9wZXJ0eSB2YWx1ZXM6XG4gICAgICAgICAgICAvLyAgICAgICAgICBub25lICAgICAgICBUaGlzIGlzIGRlZmF1bHQuIE5vIGNsaXBwaW5nIGlzIGRvbmVcbiAgICAgICAgICAgIC8vICAgICAgICAgIGF1dG8gICAgICAgIE5vIGNsaXBwaW5nIHdpbGwgYmUgZG9uZVxuICAgICAgICAgICAgLy8gICAgICAgICAgc2hhcGUgICAgICAgVGhlIG9ubHkgdmFsaWQgdmFsdWUgaXM6IHJlY3QgKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdClcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgIGUuZy4sIGNsaXA6IHJlY3QoMTBweCwgMjBweCwgMzBweCwgNDBweCk7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB0aGUgZm91ciB2YWx1ZXMgYXJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIG1hcmdpbi9wYWRkaW5nXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjdCB2YWx1ZXMgYXJlIHBvc2l0aXZlIHBpeGVsIHZhbHVlcywgZS5nLiwgMTBweCwgZXRjLlxuICAgICAgICAgICAgLy8gICAgICAgICAgbWFyZ2luLWJveCAgVXNlcyB0aGUgbWFyZ2luIGJveCBhcyB0aGUgcmVmZXJlbmNlIGJveFxuICAgICAgICAgICAgLy8gICAgICAgICAgYm9yZGVyLWJveCAgVXNlcyB0aGUgYm9yZGVyIGJveCBhcyB0aGUgcmVmZXJlbmNlIGJveFxuICAgICAgICAgICAgLy8gICAgICAgICAgcGFkZGluZy1ib3ggVXNlcyB0aGUgcGFkZGluZyBib3ggYXMgdGhlIHJlZmVyZW5jZSBib3hcbiAgICAgICAgICAgIC8vICAgICAgICAgIGNvbnRlbnQtYm94XG4gICAgICAgICAgICAvLyAgICAgICAgICBmaWxsLWJveFxuICAgICAgICAgICAgLy8gICAgICAgICAgc3Ryb2tlLWJveFxuICAgICAgICAgICAgLy8gICAgICBOT1RFOiB0aGUgQ1NTIGNsaXAgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgICAgICAgICAgLy8gICAgICBBbHNvOiBjbGlwIG9ubHkgd29ya3MgaWYgdGhlIGVsZW1lbnQgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGFuZCBjYW4gb25seSBkbyByZWN0YW5nbGVzXG4gICAgICAgICAgICAvLyBjaGVjayBpZiBlbGVtZW50IHZpc2libGVcbiAgICAgICAgICAgIGxldCB2aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChzdHlsZS53aWR0aCAhPT0gXCIwXCIgJiZcbiAgICAgICAgICAgICAgICBzdHlsZS5oZWlnaHQgIT09IFwiMFwiICYmXG4gICAgICAgICAgICAgICAgc3R5bGUub3BhY2l0eSAhPT0gXCIwXCIgJiZcbiAgICAgICAgICAgICAgICBzdHlsZS5kaXNwbGF5ICE9PSdub25lJyAmJlxuICAgICAgICAgICAgICAgIHN0eWxlLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nICYmIFxuICAgICAgICAgICAgICAgIHN0eWxlLm92ZXJmbG93ICE9PSAnaGlkZGVuJyAmJiBcbiAgICAgICAgICAgICAgICAvLyBsZWZ0IGFuZCByaWdodCB3b3JrIHdpdGggYWxsIGFic29sdXRlIHVuaXRzXG4gICAgICAgICAgICAgICAgKHN0eWxlLmxlZnQgPT09IFwiYXV0b1wiIHx8IChzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJyAmJiBwYXJzZUludChzdHlsZS5sZWZ0LnJlcGxhY2UoL1teMC05ListXS8sICcnKSkgPiAwKSkgJiZcbiAgICAgICAgICAgICAgICAoc3R5bGUubGVmdCA9PT0gXCJhdXRvXCIgfHwgKHN0eWxlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnICYmIHBhcnNlSW50KHN0eWxlLnRvcC5yZXBsYWNlKC9bXjAtOS4rLV0vLCAnJykpID4gMCkpKSB7IFxuICAgICAgICAgICAgICAgIHZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZWxlbWVudCBJUyB2aXNpYmxlXCIpO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiQ0hFQ0sgQ09MT1IgQ09OVFJBU1QgdW5sZXNzIHRvIHNtYWxsXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJlbGVtZW50IE5PVCB2aXNpYmxlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJETyBOT1QgQ0hFQ0sgQ09MT1IgQ09OVFJBU1RcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcblxuICAgICAgICAgICAgbGV0IGNsaXBIZWlnaHQgPSAtMTtcbiAgICAgICAgICAgIGlmIChzdHlsZS5jbGlwICE9PSBcImF1dG9cIikge1xuICAgICAgICAgICAgICAgIGxldCBjbGlwU3RyaW5nID0gc3R5bGUuY2xpcC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGlmIChjbGlwU3RyaW5nLmluY2x1ZGVzKFwicmVjdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVCcmFja2V0cyA9IC9cXCgoLiopXFwpL2c7XG4gICAgICAgICAgICAgICAgICB2YXIgbGlzdE9mVGV4dCA9IFtdO1xuICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kID0gcmVCcmFja2V0cy5leGVjKGNsaXBTdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgdmFyIGZvdW5kQXJyID0gZm91bmRbMV0uc3BsaXQoJywgJyk7XG4gICAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8Zm91bmRBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJmb3VuZEFycltcIixpLFwiXSA9IFwiLGZvdW5kQXJyW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdE9mVGV4dC5wdXNoKGZvdW5kQXJyW2ldKTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwibGlzdE9mVGV4dCA9IFwiLGxpc3RPZlRleHQpO1xuICAgICAgICAgICAgICAgIGNsaXBIZWlnaHQgPSBwYXJzZUludChsaXN0T2ZUZXh0WzBdLnJlcGxhY2UoL3B4L2csICcnKSkgLSBwYXJzZUludChsaXN0T2ZUZXh0WzJdLnJlcGxhY2UoL3B4L2csICcnKSk7XG4gICAgICAgICAgICAgICAgY2xpcEhlaWdodCA9IE1hdGguYWJzKGNsaXBIZWlnaHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBKQ0ggY2xpcC1wYXRoIElORk86XG4gICAgICAgICAgICAvLyAgICAgIEV4Y2VsbGVudCBhcnRpY2xlIG9uIGNsaXAtcGF0aDogaHR0cHM6Ly9pc2hhZGVlZC5jb20vYXJ0aWNsZS9jbGlwLXBhdGgvXG4gICAgICAgICAgICAvLyAgICAgIGNsaXAtcGF0aCBpcyBhIHRvdGFsbHkgZGlmZmVyZW50IGFuaW1hbCB3aXRoIG1hbnksIG1hbnkgZGlmZmVyZW50IHZhcmlhdGlvbnNcbiAgICAgICAgICAgIC8vICAgICAgVGhlIGdvYWwgd2FzIGZvciBpdCB0byBub3QgYmUgYXMgbGltaXRlZCBhcyBjbGlwXG4gICAgICAgICAgICAvLyAgICAgIFRoZSBzeW50YXggaXMgbW9yZSBjb21wbGljYXRlZCAoYXMgaXQgZG9lcyBtb3JlKSBhbmQgaXQgaXMgZGlmZmVyZW50IGZyb20gY2xpcCxcbiAgICAgICAgICAgIC8vICAgICAgZS5nLiwgdGhlIGFib3ZlIGNsaXAgcmVjdGFuZ2xlIHdvdWxkIGJlIGNsaXAtcGF0aDogaW5zZXQoMTBweCAyMHB4IDMwcHggNDBweCk7XG4gICAgICAgICAgICAvLyAgICAgIE5vdGU6IHRoZXJlIGFyZSBubyBjb21tYXNcbiAgICAgICAgICAgIC8vICAgICAgQWxzbywgaXQgY2FuIHRha2Ugc2luZ2xlIHZhbHVlcyB0byBtYWtlIGFsbCBzaWRlcyB0aGUgc2FtZSwgb3IgMiB2YWx1ZXMgKHZlcnQvaG9yaSkuXG4gICAgICAgICAgICAvLyAgICAgIG9yIDMgdmFsdWVzICh0b3AvaG9yaS9ib3R0b20pXG4gICAgICAgICAgICAvLyAgICAgIEFuZCBwZXJjZW50YWdlcyBjYW4gd29ya3MgYXMgd2VsbCBhcyBweFxuICAgICAgICAgICAgLy8gICAgICBcbiAgICAgICAgICAgIC8vICAgICAgQWx0aG91Z2ggdGhlcmUgYXJlIGZpdmUgZGlmZmVyZW50IHNoYXBlczogaW5zZXQgKHRlcm0gdXNlZCBmb3IgcmVjdGFuZ2xlKSwgY2lyY2xlLFxuICAgICAgICAgICAgLy8gICAgICAgICAgZWxsaXBzZSwgcG9seWdvbiwgcGF0aCAtIHdlIHdpbGwgb25seSBjb25jZXJuIG91cnNlbHZlcyB3aXRoIGluc2V0XG4gICAgICAgICAgICAvLyAgICAgIFRoZXJlIGFyZSA3IGJveCB2YWx1ZXM6IG1hcmdpbi1ib3gsIGJvcmRlci1ib3gsIHBhZGRpbmctYm94LCBjb250ZW50LWJveCwgZmlsbC1ib3gsIHN0cm9rZS1ib3gsIHZpZXctYm94XG4gICAgICAgICAgICAvLyAgICAgIEJveCBhbmQgc2hhcGUgdmFsdWVzIG1heSBiZSBjb21iaW5lZDogY2xpcC1wYXRoOiBwYWRkaW5nLWJveCBjaXJjbGUoNTBweCBhdCAwIDEwMHB4KTtcbiAgICAgICAgICAgIC8vICAgICAgTk9URTogdGhlIGJveCB2YWx1ZXMgYXJlIE5PVCBpbnR1aXRpdmUsIHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19TaGFwZXMvRnJvbV9ib3hfdmFsdWVzI21hcmdpbi1ib3hcbiAgICAgICAgICAgIC8vICAgICAgXG4gICAgICAgICAgICAvLyAgICAgIFNvIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hhdCBhbW91bnQgb2YgZWZmb3J0IGRvIHdlIHdhbnQgdG8gaW52ZXN0IGludG8gY2xpcC1wYXRoXG4gICAgICAgICAgICAvLyBcblxuICAgICAgICAgICAgLy8gSkNIIGRvbid0IGRvIGNsaXAtcGF0aCBub3cgXG4gICAgICAgICAgICBsZXQgY2xpcFBhdGhIZWlnaHQgPSAtMTtcbiAgICAgICAgICAgIC8vIGlmIChzdHlsZS5jbGlwUGF0aCAhPT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcInN0eWxlLmNsaXBQYXRoID0gXCIsc3R5bGUuY2xpcFBhdGgpO1xuICAgICAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKFwic3R5bGUuY2xpcFBhdGgudG9TdHJpbmcgPSBcIixzdHlsZS5jbGlwUGF0aC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIC8vICAgICBsZXQgY2xpcFN0cmluZyA9IHN0eWxlLmNsaXBQYXRoLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAvLyAgICAgaWYgKGNsaXBTdHJpbmcuaW5jbHVkZXMoXCJpbnNldFwiKSkge1xuICAgICAgICAgICAgLy8gICAgICAgICB2YXIgcmVCcmFja2V0cyA9IC9cXCgoLiopXFwpL2c7XG4gICAgICAgICAgICAvLyAgICAgICB2YXIgbGlzdE9mVGV4dCA9IFtdO1xuICAgICAgICAgICAgLy8gICAgICAgdmFyIGZvdW5kID0gcmVCcmFja2V0cy5leGVjKGNsaXBTdHJpbmcpO1xuICAgICAgICAgICAgLy8gICAgICAgdmFyIGZvdW5kQXJyID0gZm91bmRbMV0uc3BsaXQoJyAnKTtcbiAgICAgICAgICAgIC8vICAgICAgIGZvciAobGV0IGk9MDsgaTxmb3VuZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhcImZvdW5kQXJyW1wiLGksXCJdID0gXCIsZm91bmRBcnJbaV0pO1xuICAgICAgICAgICAgLy8gICAgICAgICBsaXN0T2ZUZXh0LnB1c2goZm91bmRBcnJbaV0pO1xuICAgICAgICAgICAgLy8gICAgICAgfTtcbiAgICAgICAgICAgIC8vICAgICB9XG4gICAgICAgICAgICAvLyAgICAgY29uc29sZS5sb2coXCJsaXN0T2ZUZXh0ID0gXCIsbGlzdE9mVGV4dCk7XG4gICAgICAgICAgICAgICAgLy8gY2xpcFBhdGhIZWlnaHQgPSBwYXJzZUludChsaXN0T2ZUZXh0WzBdLnJlcGxhY2UoL3B4L2csICcnKSkgLSBwYXJzZUludChsaXN0T2ZUZXh0WzJdLnJlcGxhY2UoL3B4L2csICcnKSk7XG4gICAgICAgICAgICAgICAgLy8gY2xpcFBhdGhIZWlnaHQgPSBNYXRoLmFicyhjbGlwSGVpZ2h0KTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiY2xpcFBhdGhIZWlnaHQgPSBcIiwgY2xpcFBhdGhIZWlnaHQpO1xuXG4gICAgICAgICAgICAvLyBpZiAoc3R5bGUucG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiAmJiBzdHlsZS5jbGlwID09PSBcInJlY3QoMHB4LCAwcHgsIDBweCwgMHB4KVwiICYmIHN0eWxlLm92ZXJmbG93ICE9PSBcInZpc2libGVcIikge1xuICAgICAgICAgICAgLy8gSkNIIGFyYml0cmFyaWx5IHVzZSBsZXNzIHRoYXQgN3B4IGZvciBjbGlwSGVpZ2h0XG4gICAgICAgICAgICBpZiAoc3R5bGUucG9zaXRpb24gPT09IFwiYWJzb2x1dGVcIiAmJiBjbGlwSGVpZ2h0IDwgNyAmJiBjbGlwSGVpZ2h0ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRE8gTk9UIENIRUNLIENPTE9SIENPTlRSQVNUIGJlY2F1c2UgdG9vIHNtYWxsXCIpO1xuICAgICAgICAgICAgICAgIC8vIENvcm5lciBjYXNlIHdoZXJlIGl0ZW0gaXMgaGlkZGVuIChhY2Nlc3NpYmlsaXR5IGhpZGluZyB0ZWNobmlxdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaXJzdCBkZXRlcm1pbmUgdGhlIGNvbG9yIGNvbnRyYXN0IHJhdGlvXG4gICAgICAgICAgICBsZXQgY29sb3JDb21ibyA9IFJQVFV0aWwuQ29sb3JDb21ibyhydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgZmcgPSBjb2xvckNvbWJvLmZnO1xuICAgICAgICAgICAgbGV0IGJnID0gY29sb3JDb21iby5iZztcbiAgICAgICAgICAgIGxldCByYXRpbyA9IGZnLmNvbnRyYXN0UmF0aW8oYmcpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJmZyA9IFwiLCBmZywgXCIgICBiZyA9IFwiLCBiZywgXCIgICByYXRpbyA9IFwiLCByYXRpbyk7XG4gICAgICAgICAgICBsZXQgd2VpZ2h0ID0gUlBUVXRpbFN0eWxlLmdldFdlaWdodE51bWJlcihzdHlsZS5mb250V2VpZ2h0KTtcbiAgICAgICAgICAgIGxldCBzaXplID0gUlBUVXRpbFN0eWxlLmdldEZvbnRJblBpeGVscyhzdHlsZS5mb250U2l6ZSk7XG4gICAgICAgICAgICBsZXQgaXNMYXJnZVNjYWxlID0gc2l6ZSA+PSAyNCB8fCBzaXplID49IDE4LjYgJiYgd2VpZ2h0ID49IDcwMDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSByYXRpbyA+PSA0LjUgfHwgKHJhdGlvID49IDMgJiYgaXNMYXJnZVNjYWxlKTtcbiAgICAgICAgICAgIGxldCBoYXNCYWNrZ3JvdW5kID0gY29sb3JDb21iby5oYXNCR0ltYWdlIHx8IGNvbG9yQ29tYm8uaGFzR3JhZGllbnQ7XG5cbiAgICAgICAgICAgIGxldCBpc0Rpc2FibGVkID0gUlBUVXRpbC5pc05vZGVEaXNhYmxlZChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAoIWlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udHJvbCA9IFJQVFV0aWwuZ2V0Q29udHJvbE9mTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSBSUFRVdGlsLmlzTm9kZURpc2FibGVkKGNvbnRyb2wpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKCFpc0Rpc2FibGVkICYmIG5vZGVOYW1lID09PSAnbGFiZWwnICYmIFJQVFV0aWwuaXNEaXNhYmxlZEJ5Rmlyc3RDaGlsZEZvcm1FbGVtZW50KHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlOyBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc0Rpc2FibGVkICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImlkXCIpICYmIFJQVFV0aWwuaXNEaXNhYmxlZEJ5UmVmZXJyaW5nRWxlbWVudChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiRVhUX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFcIiwge1xuICAgICAgICAgICAgICAgIFwicmF0aW9cIjogcmF0aW8sXG4gICAgICAgICAgICAgICAgXCJpc0xhcmdlU2NhbGVcIjogaXNMYXJnZVNjYWxlLFxuICAgICAgICAgICAgICAgIFwid2VpZ2h0XCI6IHdlaWdodCxcbiAgICAgICAgICAgICAgICBcInNpemVcIjogc2l6ZSxcbiAgICAgICAgICAgICAgICBcImhhc0JhY2tncm91bmRcIjogaGFzQmFja2dyb3VuZCxcbiAgICAgICAgICAgICAgICBcImlzRGlzYWJsZWRcIjogaXNEaXNhYmxlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaGFzQmFja2dyb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIEFsbG93IG90aGVyIGNvbG9yIHJ1bGUgdG8gZmlyZSBpZiB3ZSBoYXZlIGEgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZiBlbGVtZW50IG9yIHBhcmVudCBpcyBkaXNhYmxlZCwgdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IChidXQgbWF5IGJlIDM6MSBpbiBmdXR1cmUpXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBbcmF0aW8udG9GaXhlZCgyKSwgc2l6ZSwgd2VpZ2h0LCBmZy50b0hleCgpLCBiZy50b0hleCgpLCBjb2xvckNvbWJvLmhhc0JHSW1hZ2UsIGNvbG9yQ29tYm8uaGFzR3JhZGllbnRdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZnLnRvSGV4KCkgPT09IGJnLnRvSGV4KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiLCBbcmF0aW8udG9GaXhlZCgyKSwgc2l6ZSwgd2VpZ2h0LCBmZy50b0hleCgpLCBiZy50b0hleCgpLCBjb2xvckNvbWJvLmhhc0JHSW1hZ2UsIGNvbG9yQ29tYm8uaGFzR3JhZGllbnRdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW3JhdGlvLnRvRml4ZWQoMiksIHNpemUsIHdlaWdodCwgZmcudG9IZXgoKSwgYmcudG9IZXgoKSwgY29sb3JDb21iby5oYXNCR0ltYWdlLCBjb2xvckNvbWJvLmhhc0dyYWRpZW50XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIixbcmF0aW8udG9GaXhlZCgyKSwgc2l6ZSwgd2VpZ2h0LCBmZy50b0hleCgpLCBiZy50b0hleCgpLCBjb2xvckNvbWJvLmhhc0JHSW1hZ2UsIGNvbG9yQ29tYm8uaGFzR3JhZGllbnRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBcImlkXCI6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWXCIsXG4gICAgICAgIFwiY29udGV4dFwiOiBcImRvbToqXCIsXG4gICAgICAgIFwiZGVwZW5kZW5jaWVzXCI6IFtcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQVwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAvLyBhdm9pZCBkaWFnbm9zaW5nIGRpc2FibGVkIG5vZGVzIG9yIHRob3NlIHRoYXQgYXJlIG5vdCB2aXNpYmxlLlxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQocnVsZUNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShydWxlQ29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAoUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cyAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMuaW5kZXhPZihub2RlTmFtZSkgPiAtMSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwcmVjYWxjID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJFWFRfQ29sb3JfQ29udHJhc3RfV0NBRzJBQVwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghcHJlY2FsYykgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHByZWNhbGMucmF0aW8gPj0gNC41IHx8IChwcmVjYWxjLnJhdGlvID49IDMgJiYgcHJlY2FsYy5pc0xhcmdlU2NhbGUpO1xuXG4gICAgICAgICAgICAvLyBJZiBlbGVtZW50IG9yIHBhcmVudCBpcyBkaXNhYmxlZCwgdGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IChidXQgbWF5IGJlIDM6MSBpbiBmdXR1cmUpXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBwcmVjYWxjLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3ByZWNhbGMucmF0aW8udG9GaXhlZCgyKSwgcHJlY2FsYy5zaXplLCBwcmVjYWxjLndlaWdodF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIixbcHJlY2FsYy5yYXRpby50b0ZpeGVkKDIpLCBwcmVjYWxjLnNpemUsIHByZWNhbGMud2VpZ2h0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgXCJpZFwiOiBcIklCTUFfTGlua19Db250cmFzdF9XQ0FHMkFBXCIsXG4gICAgICAgIFwiY29udGV4dFwiOiBcImFbaHJlZl0gfCAqW29uY2xpY2tdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgdGhpc0NvbG9yQ29tYm8gPSBSUFRVdGlsLkNvbG9yQ29tYm8ocnVsZUNvbnRleHQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IGNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJFWFRfTGlua19Db250cmFzdF9XQ0FHMkFBXCIsIG51bGwpXG4gICAgICAgICAgICBpZiAoY2FjaGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjYWNoZSA9IHt9O1xuXG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhpcyBsaW5rIGhhcyBjaGlsZHJlbiB3aXRoIGFjdHVhbCB0ZXh0LlxuICAgICAgICAgICAgICAgIGxldCBjaGlsZFN0ciA9IFwiXCI7XG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBydWxlQ29udGV4dC5jaGlsZE5vZGVzO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2Rlc1tpXS5ub2RlVHlwZSA9PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFN0ciArPSBjaGlsZE5vZGVzW2ldLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRTdHIudHJpbSgpLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG5cbiAgICAgICAgICAgICAgICAvLyBEZWZpbmUgaGVscGVyc1xuICAgICAgICAgICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICAgICAgICAgIGlmICghZG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHdpbiA9IGRvYy5kZWZhdWx0VmlldztcbiAgICAgICAgICAgICAgICBpZiAoIXdpbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IGlzTGluayA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09IDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICgobm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09IFwiQVwiICYmIG5vZGUuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmhhc0F0dHJpYnV0ZShcIm9uY2xpY2tcIikpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsZXQgaXNJdGVtID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT0gMSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09IFwiQlJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29tcFN0eWxlID0gbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSwgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29tcFN0eWxlKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21wU3R5bGUuZGlzcGxheSAhPSBcImlubGluZVwiO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBsZXQgdGhpc1N0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGxldCB0aGlzV2VpZ2h0ID0gUlBUVXRpbFN0eWxlLmdldFdlaWdodE51bWJlcih0aGlzU3R5bGUuZm9udFdlaWdodCk7XG4gICAgICAgICAgICAgICAgbGV0IHRoaXNTaXplID0gUlBUVXRpbFN0eWxlLmdldEZvbnRJblBpeGVscyh0aGlzU3R5bGUuZm9udFNpemUpO1xuICAgICAgICAgICAgICAgIGNhY2hlLmlzTGFyZ2VTY2FsZSA9IHRoaXNTaXplID49IDI0IHx8IHRoaXNTaXplID49IDE4LjYgJiYgdGhpc1dlaWdodCA+PSA3MDA7XG4gICAgICAgICAgICAgICAgbGV0IHRlc3RJbmZvID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCB3ZWlnaHQgPSBSUFRVdGlsU3R5bGUuZ2V0V2VpZ2h0TnVtYmVyKHN0eWxlLmZvbnRXZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IFJQVFV0aWxTdHlsZS5nZXRGb250SW5QaXhlbHMoc3R5bGUuZm9udFNpemUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xvckNvbWJvT3RoZXIgPSBSUFRVdGlsLkNvbG9yQ29tYm8obm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmZ1JhdGlvID0gdGhpc0NvbG9yQ29tYm8uZmcuY29udHJhc3RSYXRpbyhjb2xvckNvbWJvT3RoZXIuZmcpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgYmdSYXRpbyA9IHRoaXNDb2xvckNvbWJvLmJnLmNvbnRyYXN0UmF0aW8oY29sb3JDb21ib090aGVyLmJnKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNjYWxlQ2hhbmdlID0gTWF0aC5hYnMod2VpZ2h0IC0gdGhpc1dlaWdodCkgPj0gMzAwXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBNYXRoLmFicyhzaXplIC0gdGhpc1NpemUpID4gNVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgc3R5bGUudGV4dERlY29yYXRpb24gIT0gdGhpc1N0eWxlLnRleHREZWNvcmF0aW9uO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJyYXRpb1wiOiBNYXRoLm1heChmZ1JhdGlvLCBiZ1JhdGlvKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZmdSYXRpb1wiOiBmZ1JhdGlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJiZ1JhdGlvXCI6IGJnUmF0aW8sXG4gICAgICAgICAgICAgICAgICAgICAgICBcInNjYWxlQ2hhbmdlXCI6IHNjYWxlQ2hhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb2xvckNvbWJvXCI6IGNvbG9yQ29tYm9PdGhlclxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBwcmV2aW91cyB0ZXh0XG4gICAgICAgICAgICAgICAgbGV0IHdhbGtQcmV2ID0gbmV3IE5vZGVXYWxrZXIocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHdoaWxlICh3YWxrUHJldi5wcmV2Tm9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwcmV2aW91cyBpcyBhIGxpbmssIG9yIGEgbmV3bGluZSwgZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaW5rKHdhbGtQcmV2Lm5vZGUpIHx8IGlzSXRlbSh3YWxrUHJldi5ub2RlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBpZiAod2Fsa1ByZXYubm9kZS5ub2RlVHlwZSA9PSAzICYmIHdhbGtQcmV2Lm5vZGUubm9kZVZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3YWxrUHJldi5ub2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKHdhbGtQcmV2Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUucHJldiA9IHRlc3RJbmZvKHdhbGtQcmV2Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHdhbGtOZXh0ID0gbmV3IE5vZGVXYWxrZXIocnVsZUNvbnRleHQsIHRydWUpO1xuICAgICAgICAgICAgICAgIHdoaWxlICh3YWxrTmV4dC5uZXh0Tm9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgbmV4dCB0ZXh0XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBuZXh0IGlzIGEgbGluaywgb3IgYSBuZXdsaW5lLCBkbyBub3RoaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0xpbmsod2Fsa05leHQubm9kZSkgfHwgaXNJdGVtKHdhbGtOZXh0Lm5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3YWxrTmV4dC5ub2RlLm5vZGVUeXBlID09IDMgJiYgd2Fsa05leHQubm9kZS50ZXh0Q29udGVudC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa05leHQubm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZSh3YWxrTmV4dC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLm5leHQgPSB0ZXN0SW5mbyh3YWxrTmV4dC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dCwgXCJFWFRfTGlua19Db250cmFzdF9XQ0FHMkFBXCIsIGNhY2hlKTtcblxuICAgICAgICAgICAgbGV0IGlzTGFyZ2VTY2FsZSA9IGNhY2hlLmlzTGFyZ2VTY2FsZTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHJhdGlvID0gMDtcbiAgICAgICAgICAgIGxldCBvdGhlckNvbG9yID0gbnVsbDtcbiAgICAgICAgICAgIGxldCBnb29kUmF0aW8gPSBpc0xhcmdlU2NhbGUgPyAzIDogNC41O1xuICAgICAgICAgICAgaWYgKGNhY2hlLnByZXYpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBjYWNoZS5wcmV2LnJhdGlvID49IGdvb2RSYXRpbyB8fFxuICAgICAgICAgICAgICAgIGNhY2hlLnByZXYuc2NhbGVDaGFuZ2U7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF0aW8gPSBjYWNoZS5wcmV2LmZnUmF0aW87XG4gICAgICAgICAgICAgICAgICAgIG90aGVyQ29sb3IgPSBjYWNoZS5wcmV2LmNvbG9yQ29tYm87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChjYWNoZS5uZXh0KSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gcGFzc2VkICYmIGNhY2hlLm5leHQucmF0aW8gPj0gZ29vZFJhdGlvIHx8XG4gICAgICAgICAgICAgICAgY2FjaGUubmV4dC5zY2FsZUNoYW5nZTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICByYXRpbyA9IGNhY2hlLm5leHQuZmdSYXRpbztcbiAgICAgICAgICAgICAgICAgICAgb3RoZXJDb2xvciA9IGNhY2hlLm5leHQuY29sb3JDb21ibztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3JhdGlvLnRvRml4ZWQoMiksIHRoaXNDb2xvckNvbWJvLmZnLnRvSGV4KCksIG90aGVyQ29sb3IuZmcudG9IZXgoKV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0NvbG9yIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IEZyYWdtZW50VXRpbCB9IGZyb20gXCIuLi91dGlsL2ZyYWdtZW50XCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmZ1bmN0aW9uIHBhdHRlcm5EZXRlY3QoZWxlbTogRWxlbWVudCkgOiBTdHJpbmcge1xuICAgIC8vIGNoZWNrICdleHBsaWNpdCcgcm9sZSBjb21ib2JveCBhbmQgdGhhdCBpdCBpcyBub3QgPHNlbGVjdD4uIFxuICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzZWxlY3RcIiAmJiBlbGVtLmdldEF0dHJpYnV0ZShcInJvbGVcIikgIT09IFwiY29tYm9ib3hcIikge1xuICAgICAgICByZXR1cm4gXCJpbXBsaWNpdFwiO1xuICAgIH0gZWxzZSBpZiAoZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgXG4gICAgICAgICYmICghZWxlbS5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSA9PT0gXCJ0ZXh0XCIpXG4gICAgICAgICYmIGVsZW0uaGFzQXR0cmlidXRlKFwiYXJpYS1vd25zXCIpICYmICFlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtY29udHJvbHNcIikpIFxuICAgIHtcbiAgICAgICAgLy8gTG9va3MgbGlrZSB0aGlzIGlzIGFuIEFSSUEgMS4wIHBhdHRlcm4sIHdoaWNoIHRoZSBBUklBIDEuMiBzcGVjIHNheXMgdG8gY29udGludWUgdG8gYWxsb3dcbiAgICAgICAgcmV0dXJuIFwiMS4wXCI7XG4gICAgfSBlbHNlIGlmIChlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09IFwiaW5wdXRcIiBcbiAgICAgICAgJiYgZWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIikgJiYgIWVsZW0uaGFzQXR0cmlidXRlKFwiYXJpYS1jb250cm9sc1wiKSkgXG4gICAge1xuICAgICAgICAvLyBMb29rcyBsaWtlIHRoaXMgaXMgYW4gQVJJQSAxLjEgcGF0dGVybiwgd2hpY2ggdGhlIEFSSUEgMS4yIHNwZWMgc2F5cyBpcyBub3cgaW52YWxpZFxuICAgICAgICByZXR1cm4gXCIxLjFcIjtcbiAgICB9XG4gICAgLy8gQXNzdW1lIHRoZXkncmUgdHJ5aW5nIHRvIGRvIHRoZSBsYXRlc3QsIDEuMiBwYXR0ZXJuXG4gICAgcmV0dXJuIFwiMS4yXCI7XG59XG5cbmxldCBhMTF5UnVsZXNDb21ib2JveDogUnVsZVtdID0gW1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUaGlzIHJ1bGUgZmFpbHMgaWYgYSAxLjEgcGF0dGVybiBpcyBkZXRlY3RlZCxcbiAgICAgKiBidXQgbW9yZSBpbXBvcnRhbnRseSBpZGVudGlmaWVzIGVsZW1lbnRzIGltcG9ydGFudCBmb3IgMS4wXG4gICAgICogYW5kIDEuMiBzcGVjaWZpYyBjaGVja2luZ1xuICAgICAqIFxuICAgICAqIEFSSUEgMS4yIGludHJvZHVlcyBhIG5vbi1lZGl0YWJsZSBjb21ib2JveCwgYnV0IGFsc28gYWxsb3dzIGEgMS4wIGNvbWJvYm94XG4gICAgICogT3JpZ2luOiAgV0FJLUFSSUEgMS4yXG4gICAgICogICAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMi8jY29tYm9ib3hcbiAgICAgKi9cbiAgICB7XG4gICAgICAgIGlkOiBcImNvbWJvYm94X3ZlcnNpb25cIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbWJvYm94XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShydWxlQ29udGV4dCkgfHwgUlBUVXRpbC5pc05vZGVEaXNhYmxlZChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXR0ZXJuID0gcGF0dGVybkRldGVjdChydWxlQ29udGV4dCk7XG5cbiAgICAgICAgICAgIC8vIFdlIGRvbid0IGFzc2VzcyBuYXRpdmUgc2VsZWN0IGVsZW1lbnRzIGhlcmVcbiAgICAgICAgICAgIGlmIChwYXR0ZXJuID09PSBcImltcGxpY2l0XCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHRhZ05hbWUgPSBydWxlQ29udGV4dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgZXhwYW5kZWQgPSAoUlBUVXRpbC5nZXRBcmlhQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtZXhwYW5kZWRcIikgfHwgXCJcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiO1xuICAgICAgICAgICAgbGV0IGVkaXRhYmxlID0gdGFnTmFtZSA9PT0gXCJpbnB1dFwiICYmICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSB8fCBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwidGV4dFwiKTtcblxuICAgICAgICAgICAgbGV0IGtleSA9IGNvbnRleHRbXCJkb21cIl0ucm9sZVBhdGg7XG4gICAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbWJvYm94XCIsIHt9KTtcbiAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0ge1xuICAgICAgICAgICAgICAgICAgICBcImlucHV0RWxlbWVudFwiOiBlZGl0YWJsZSA/IHJ1bGVDb250ZXh0IDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCJwYXR0ZXJuXCI6IHBhdHRlcm4sXG4gICAgICAgICAgICAgICAgICAgIFwiZXhwYW5kZWRcIjogZXhwYW5kZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb21ib2JveFwiLCBjYWNoZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE5vIHhwYXRoP1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAocGF0dGVybiA9PT0gXCIxLjBcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMS4wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuID09PSBcIjEuMVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xLjFcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhdHRlcm4gPT09IFwiMS4yXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzEuMlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRoaXMgcnVsZSBmYWlscyBpZiB0aGUgcG9wdXAgb2YgdGhlIGNvbWJvYm94IGNhbm5vdCBiZSBkZXRlY3RlZFxuICAgICAqXG4gICAgICogTm90ZTogY29tYm9ib3ggcmVxdWlyZXMgdGhlIGlkLCBhbmQgaXQgbXVzdCByZWZlcmVuY2UgYW4gYXBwcm9wcmlhdGUgZWxlbWVudFxuICAgICAqIFRoZSBwb3B1cCBtaWdodCBiZSBlbXB0eSwgYnV0IGl0IGhhcyB0byBleGlzdCBpbiB0aGUgRE9NXG4gICAgICogXG4gICAgICogT3JpZ2luOiAgV0FJLUFSSUEgMS4yXG4gICAgICogICAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy0xLjIvI3dhaS1hcmlhLXJvbGVzLXN0YXRlcy1hbmQtcHJvcGVydGllcy02XG4gICAgICovXG4gICAge1xuICAgICAgICBpZDogXCJjb21ib2JveF9wb3B1cF9yZWZlcmVuY2VcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbWJvYm94XCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiY29tYm9ib3hfdmVyc2lvblwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbWJvYm94XCIsIHt9KTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gY29udGV4dFtcImRvbVwiXS5yb2xlUGF0aDtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZEVsZW0gPSBjYWNoZVtjYWNoZUtleV07XG4gICAgICAgICAgICBpZiAoIWNhY2hlZEVsZW0pIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgeyBwYXR0ZXJuLCBleHBhbmRlZCB9ID0gY2FjaGVkRWxlbTtcblxuICAgICAgICAgICAgbGV0IHBvcHVwSWQ7XG4gICAgICAgICAgICBsZXQgcG9wdXBFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHBhdHRlcm4gPT09IFwiMS4wXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtb3duc1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29tYm9ib3ggaXNuJ3QgZXhwYW5kZWQsIHRoaXMgYXR0cmlidXRlIGlzbid0IHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZXhwYW5kZWQgPyBudWxsIDogUnVsZUZhaWwoXCJGYWlsXzEuMF9taXNzaW5nX293bnNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvcHVwSWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIik7XG4gICAgICAgICAgICAgICAgcG9wdXBFbGVtZW50ID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIHBvcHVwSWQpO1xuICAgICAgICAgICAgICAgIGlmICghcG9wdXBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb21ib2JveCBpc24ndCBleHBhbmRlZCwgdGhpcyBhdHRyaWJ1dGUgaXNuJ3QgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFleHBhbmRlZCA/IG51bGwgOiBSdWxlRmFpbChcIkZhaWxfMS4wX3BvcHVwX3JlZmVyZW5jZV9taXNzaW5nXCIsIFtwb3B1cElkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuID09PSBcIjEuMlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWNvbnRyb2xzXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb21ib2JveCBpc24ndCBleHBhbmRlZCwgdGhpcyBhdHRyaWJ1dGUgaXNuJ3QgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFleHBhbmRlZCA/IG51bGw6IFJ1bGVGYWlsKFwiRmFpbF8xLjJfbWlzc2luZ19jb250cm9sc1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9wdXBJZCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtY29udHJvbHNcIik7XG4gICAgICAgICAgICAgICAgcG9wdXBFbGVtZW50ID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIHBvcHVwSWQpO1xuICAgICAgICAgICAgICAgIGlmICghcG9wdXBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb21ib2JveCBpc24ndCBleHBhbmRlZCwgdGhpcyBhdHRyaWJ1dGUgaXNuJ3QgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFleHBhbmRlZCA/IG51bGwgOiBSdWxlRmFpbChcIkZhaWxfMS4yX3BvcHVwX3JlZmVyZW5jZV9taXNzaW5nXCIsIFtwb3B1cElkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gV2UgaGF2ZSBhbiBlbGVtZW50LCBzdGljayBpdCBpbiB0aGUgY2FjaGUgYW5kIHRoZW4gY2hlY2sgaXRzIHJvbGVcbiAgICAgICAgICAgIGNhY2hlZEVsZW0ucG9wdXBJZCA9IHBvcHVwSWQ7XG4gICAgICAgICAgICBjYWNoZWRFbGVtLnBvcHVwRWxlbWVudCA9IHBvcHVwRWxlbWVudDtcblxuXG4gICAgICAgICAgICBpZiAoZXhwYW5kZWQgJiYgIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShwb3B1cEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF9jb21ib2JveF9leHBhbmRlZF9oaWRkZW5cIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFleHBhbmRlZCAmJiBSUFRVdGlsLmlzTm9kZVZpc2libGUocG9wdXBFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfY29tYm9ib3hfY29sbGFwc2VkX3Zpc2libGVcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhleHBhbmRlZCA/IFwiUGFzc19leHBhbmRlZFwiIDogXCJQYXNzX2NvbGxhcHNlZFwiKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogT3JpZ2luOiAgV0FJLUFSSUEgMS4yXG4gICAgICAgICAqICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4yLyN3YWktYXJpYS1yb2xlcy1zdGF0ZXMtYW5kLXByb3BlcnRpZXMtNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiY29tYm9ib3hfaGFzcG9wdXBcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbWJvYm94XCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXCJdLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgY2FjaGUgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiY29tYm9ib3hcIiwge30pO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVLZXkgPSBjb250ZXh0W1wiZG9tXCJdLnJvbGVQYXRoO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVkRWxlbSA9IGNhY2hlW2NhY2hlS2V5XTtcbiAgICAgICAgICAgIGlmICghY2FjaGVkRWxlbSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjb25zdCB7IHBvcHVwRWxlbWVudCwgcG9wdXBJZCB9ID0gY2FjaGVkRWxlbTtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXNuJ3QgZGVmaW5lZCwgdGhlIGNvbWJvYm94IGlzIHByb2JhYmx5IGNvbGxhcHNlZC4gQSByZWZlcmVuY2UgZXJyb3IgaXNcbiAgICAgICAgICAgIC8vIGRldGVjdGVkIGluIGNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVxuICAgICAgICAgICAgaWYgKCFwb3B1cEVsZW1lbnQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBwb3B1cCByb2xlIGlzIGxpc3Rib3gsIGdyaWQsIHRyZWUsIG9yIGRpYWxvZyBhbmQgdGhhdCBpdCBtYXRjaGVzIHRoZSBjb21ib2JveFxuICAgICAgICAgICAgbGV0IHBvcHVwUm9sZXMgPSBSUFRVdGlsLmdldFJvbGVzKHBvcHVwRWxlbWVudCwgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgdmFsaWRSb2xlcyA9IFtcImxpc3Rib3hcIiwgXCJncmlkXCIsIFwidHJlZVwiLCBcImRpYWxvZ1wiXS5maWx0ZXIoKHZhbGlkUm9sZSkgPT4gcG9wdXBSb2xlcy5pbmNsdWRlcyh2YWxpZFJvbGUpKTtcbiAgICAgICAgICAgIGlmICh2YWxpZFJvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfcG9wdXBfcm9sZV9pbnZhbGlkXCIsIFtwb3B1cFJvbGVzLmpvaW4oXCIsXCIpLCBwb3B1cElkXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBwb3B1cFJvbGUgPSB2YWxpZFJvbGVzWzBdO1xuICAgICAgICAgICAgICAgIGxldCBoYXNwb3B1cFZhbCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIikgfHwgXCJsaXN0Ym94XCI7XG4gICAgICAgICAgICAgICAgLy8gUG9wdXAgcm9sZSBtdXN0IG1hdGNoIGFyaWEtaGFzcG9wdXAgdW5sZXNzIHBvcHVwUm9sZSBpcyBsaXN0Ym94LCB0aGVuIGFyaWEtaGFzcG9wdXAgc2hvdWxkIG5vdCBiZSBkZWZpbmVkICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGlmIChoYXNwb3B1cFZhbCAhPT0gcG9wdXBSb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3B1cFJvbGUgIT09IFwibGlzdGJveFwiIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtaGFzcG9wdXBcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfY29tYm9ib3hfcG9wdXBfcm9sZV9taXNtYXRjaFwiLCBbaGFzcG9wdXBWYWwsIHBvcHVwUm9sZV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc1wiKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IEZvciBhICdjb21ib2JveCcsIG9ubHkgdGhlIHRleHRib3ggc2hvdWxkIHJlY2VpdmUgRE9NIGZvY3VzLiBcbiAgICAgICAgICogRm9jdXMgb2YgdGhlIGxpc3Rib3ggc2hvdWxkIGJlIG1hbmFnZWQgdmlhIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBvbiB0aGUgdGV4dGJveC5cbiAgICAgICAgICogSWYgYW55IGVsZW1lbnQgb3RoZXIgdGhhbiB0aGUgdGV4dGJveCB3aXRoaW4gdGhlIGNvbWJvYm94IG9yIGFyaWEtb3duZWQgZWxlbWVudCBoYXMgYSB0YWJpbmRleCA+PSAwIG9yIGFyaWEtYWN0aXZlZGVzY2VuZGFudCwgRkFJTFxuICAgICAgICAgKiBPcmlnaW46ICBXQUktQVJJQSAxLjJcbiAgICAgICAgICogICAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy0xLjIvI3dhaS1hcmlhLXJvbGVzLXN0YXRlcy1hbmQtcHJvcGVydGllcy02XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJjb21ib2JveF9mb2N1c2FibGVfZWxlbWVudHNcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbWJvYm94XCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXCJdLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbWJvYm94XCIsIHt9KTtcbiAgICAgICAgICAgIGxldCBjYWNoZWRFbGVtID0gY2FjaGVbY29udGV4dFtcImRvbVwiXS5yb2xlUGF0aF07XG4gICAgICAgICAgICBpZiAoIWNhY2hlZEVsZW0pIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgeyBwb3B1cEVsZW1lbnQsIGV4cGFuZGVkIH0gPSBjYWNoZWRFbGVtO1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpc24ndCBkZWZpbmVkLCB0aGUgY29tYm9ib3ggaXMgcHJvYmFibHkgY29sbGFwc2VkLiBBIHJlZmVyZW5jZSBlcnJvciBpc1xuICAgICAgICAgICAgLy8gZGV0ZWN0ZWQgaW4gY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXG4gICAgICAgICAgICBpZiAoIXBvcHVwRWxlbWVudCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGNvbnN0IHBvcHVwUm9sZSA9IFJQVFV0aWwuZ2V0Um9sZXMocG9wdXBFbGVtZW50LCB0cnVlKVswXTtcblxuICAgICAgICAgICAgbGV0IHJldFZhbCA9IFtdXG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChSdWxlRmFpbChcIkZhaWxfbm90X3RhYmJhYmxlXCIpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gT25seSBtYWtlcyBzZW5zZSB0byBjaGVjayB0aGUgcG9wdXAgd2hlbiBleHBhbmRlZFxuICAgICAgICAgICAgLy8gdGhpcyBkb2VzIG5vdCBhcHBseSB0byBkaWFsb2dzLCByZXR1cm4gcGFzcyBzaW5jZSB0aGUgbWFpbiBlbGVtZW50IHdhcyBmb2N1c2FibGUgYWJvdmVcbiAgICAgICAgICAgIGlmIChleHBhbmRlZCA9PT0gZmFsc2UgfHwgcG9wdXBSb2xlID09PSBcImRpYWxvZ1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc1wiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIGV4YW1pbmUgdGhlIGNoaWxkcmVuXG4gICAgICAgICAgICBpZiAocG9wdXBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocG9wdXBFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBwb3B1cEVsZW1lbnQgJiYgbncubm9kZSAhPSBwb3B1cEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG53Lm5vZGUubm9kZVR5cGUgPT09IDEgJiYgUlBUVXRpbC5pc05vZGVWaXNpYmxlKG53Lm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhUlBUVXRpbC5pc1RhYmJhYmxlKG53Lm5vZGUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIVJQVFV0aWwuZ2V0QXJpYUF0dHJpYnV0ZShudy5ub2RlLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChSdWxlRmFpbChcIkZhaWxfdGFiYmFibGVfY2hpbGRcIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAocmV0VmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBGb3IgYSAnY29tYm9ib3gnLCBvbmx5IHRoZSB0ZXh0Ym94IHNob3VsZCByZWNlaXZlIERPTSBmb2N1cy4gXG4gICAgICAgICAqIEZvY3VzIG9mIHRoZSBsaXN0Ym94IHNob3VsZCBiZSBtYW5hZ2VkIHZpYSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgb24gdGhlIHRleHRib3guXG4gICAgICAgICAqIElmIGFueSBlbGVtZW50IG90aGVyIHRoYW4gdGhlIHRleHRib3ggd2l0aGluIHRoZSBjb21ib2JveCBvciBhcmlhLW93bmVkIGVsZW1lbnQgaGFzIGEgdGFiaW5kZXggPj0gMCBvciBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsIEZBSUxcbiAgICAgICAgICogT3JpZ2luOiAgV0FJLUFSSUEgMS4yXG4gICAgICAgICAqICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4yLyN3YWktYXJpYS1yb2xlcy1zdGF0ZXMtYW5kLXByb3BlcnRpZXMtNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbWJvYm94XCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXCJdLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbWJvYm94XCIsIHt9KTtcbiAgICAgICAgICAgIGxldCBjYWNoZWRFbGVtID0gY2FjaGVbY29udGV4dFtcImRvbVwiXS5yb2xlUGF0aF07XG4gICAgICAgICAgICBpZiAoIWNhY2hlZEVsZW0pIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgeyBwb3B1cEVsZW1lbnQsIHBvcHVwSWQgfSA9IGNhY2hlZEVsZW07XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzbid0IGRlZmluZWQsIHRoZSBjb21ib2JveCBpcyBwcm9iYWJseSBjb2xsYXBzZWQuIEEgcmVmZXJlbmNlIGVycm9yIGlzXG4gICAgICAgICAgICAvLyBkZXRlY3RlZCBpbiBjb21ib2JveF9wb3B1cF9yZWZlcmVuY2VcbiAgICAgICAgICAgIGlmICghcG9wdXBFbGVtZW50KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gVGhpcyBydWxlIG9ubHkgYXBwbGllcyBpZiB0aGUgYWN0aXZlZGVzY2VuZGFudCBpcyBzcGVjaWZpZWRcbiAgICAgICAgICAgIGxldCBhY3RpdmVJZCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKTtcbiAgICAgICAgICAgIGlmICghYWN0aXZlSWQgfHwgYWN0aXZlSWQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgYWN0aXZlRWxlbSA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBhY3RpdmVJZCk7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZUVsZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsX21pc3NpbmdcIiwgW2FjdGl2ZUlkXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBleGFtaW5lIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgaWYgKHBvcHVwRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHBvcHVwRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFmb3VuZCAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gcG9wdXBFbGVtZW50ICYmIG53Lm5vZGUgIT0gcG9wdXBFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudy5ub2RlLm5vZGVUeXBlID09PSAxICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShudy5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBudy5lbGVtKCkuZ2V0QXR0cmlidXRlKFwiaWRcIikgPT09IGFjdGl2ZUlkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmV0VmFsID0gW107XG5cbiAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChSdWxlUGFzcyhcIkZhaWxfbm90X2luX3BvcHVwXCIsIFthY3RpdmVJZCwgcG9wdXBJZF0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGFjdGl2ZVJvbGVzID0gUlBUVXRpbC5nZXRSb2xlcyhhY3RpdmVFbGVtLCB0cnVlKTtcbiAgICAgICAgICAgIGxldCB2YWxpZFJvbGVzID0gW1wib3B0aW9uXCIsIFwiZ3JpZGNlbGxcIiwgXCJyb3dcIiwgXCJ0cmVlaXRlbVwiXS5maWx0ZXIoKHZhbGlkUm9sZSkgPT4gYWN0aXZlUm9sZXMuaW5jbHVkZXModmFsaWRSb2xlKSk7XG4gICAgICAgICAgICBpZiAodmFsaWRSb2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChSdWxlRmFpbChcIkZhaWxfYWN0aXZlX3JvbGVfaW52YWxpZFwiLCBbYWN0aXZlSWQsIGFjdGl2ZVJvbGVzLmpvaW4oXCIsXCIpXSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYWN0aXZlRWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLXNlbGVjdGVkXCIpICE9PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIHJldFZhbC5wdXNoKFJ1bGVGYWlsKFwiRmFpbF9hY3RpdmVfbm90X3NlbGVjdGVkXCIsIFthY3RpdmVJZF0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJldFZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogSW4gYSAnY29tYm9ib3gnLCB0aGUgJ2FyaWEtYXV0b2NvbXBsZXRlJyBwcm9wZXJ0eSBzaG91bGQgb25seSBiZSBzZXQgb24gdGhlIHRleHQgaW5wdXQuIFxuICAgICAgICAgKiBMb29rIGEgdGhlIGxpc3Rib3ggYW5kIG90aGVyIGVsZW1lbnRzIChvdGhlciB0aGFuIHRoZSB0ZXh0Ym94KSBhbmQgRkFJTCBpZiBhdXRvY29tcGxldGUgZm91bmQuXG4gICAgICAgICAqIE9yaWdpbjogIFdBSS1BUklBIDEuMlxuICAgICAgICAgKiBcdFx0XHRodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4yLyNjb21ib2JveFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiY29tYm9ib3hfYXV0b2NvbXBsZXRlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpjb21ib2JveFwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBjYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb21ib2JveFwiLCB7fSk7XG4gICAgICAgICAgICBsZXQgY2FjaGVkRWxlbSA9IGNhY2hlW2NvbnRleHRbXCJkb21cIl0ucm9sZVBhdGhdO1xuICAgICAgICAgICAgaWYgKCFjYWNoZWRFbGVtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHsgcG9wdXBJZCwgcG9wdXBFbGVtZW50IH0gPSBjYWNoZWRFbGVtO1xuXG4gICAgICAgICAgICBsZXQgcmV0VmFsID0gW107XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1hdXRvY29tcGxldGVcIikgPT09IFwiaW5saW5lXCIpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChSdWxlRmFpbChcIkZhaWxfaW5saW5lXCIpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIGV4YW1pbmUgdGhlIGNoaWxkcmVuXG4gICAgICAgICAgICBpZiAocG9wdXBFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocG9wdXBFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBwb3B1cEVsZW1lbnQgJiYgbncubm9kZSAhPSBwb3B1cEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG53Lm5vZGUubm9kZVR5cGUgPT09IDEgJiYgUlBUVXRpbC5pc05vZGVWaXNpYmxlKG53Lm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhbncuZWxlbSgpLmhhc0F0dHJpYnV0ZShcImFyaWEtYXV0b2NvbXBsZXRlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldFZhbC5wdXNoKFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtwb3B1cElkXSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmV0VmFsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGVuZCBvZiBydWxlc1xuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNDb21ib2JveCB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgTGFuZ1V0aWwgfSBmcm9tIFwiLi4vdXRpbC9sYW5nXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5cbmxldCBhMTF5UnVsZXNFbGVtOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgZWxlbWVudCBsYW5ndWFnZSBhdHRyaWJ1dGVzIGFyZSB2YWxpZFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINThcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9FbGVtX0xhbmdfVmFsaWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KltsYW5nXSwgZG9tOipbeG1sOmxhbmddXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImxhbmdcIikpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZU5hbWUgIT09IFwiaHRtbFwiICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImxhbmdcIikgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBva2F5IHRvIGhhdmUgYSBsYW5nPVwiXCIgaWYgbm90IG9uIGh0bWxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFuZ1N0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImxhbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghTGFuZ1V0aWwudmFsaWRQcmltYXJ5TGFuZyhsYW5nU3RyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghTGFuZ1V0aWwuaXNCY3A0NyhsYW5nU3RyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInhtbDpsYW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVOYW1lICE9PSBcImh0bWxcIiAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIG9rYXkgdG8gaGF2ZSBhIGxhbmc9XCJcIiBpZiBub3Qgb24gaHRtbFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsYW5nU3RyID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghTGFuZ1V0aWwudmFsaWRQcmltYXJ5TGFuZyhsYW5nU3RyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghTGFuZ1V0aWwuaXNCY3A0NyhsYW5nU3RyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF80XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBlbGVtZW50cyBvciBhdHRycmlidXRlcyBhcmUgZGVwcmVjYXRlZFxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9FbGVtX0RlcHJlY2F0ZWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206YXBwbGV0LCBkb206YmFzZWZvbnQsIGRvbTpjZW50ZXIsIGRvbTpkaXIsIGRvbTpmb250LCBkb206aXNpbmRleCwgZG9tOmxpc3RpbmcsIGRvbTptZW51XCIgK1xuICAgICAgICAgICAgXCIsIGRvbTpwbGFpbnRleHQsIGRvbTpzcGFjZXIsIGRvbTpzLCBkb206c3RyaWtlLCBkb206dSwgZG9tOnhtcCwgZG9tOipbYWxpZ25dLCBkb206KltsaW5rXSwgZG9tOipbYXJjaGl2ZV1cIiArXG4gICAgICAgICAgICBcIiwgZG9tOipbYmFja2dyb3VuZF0sIGRvbToqW2JnY29sb3JdLCBkb206KltjbGVhcl0sIGRvbToqW2NvZGVdLCBkb206Kltjb2xvcl1cIiArXG4gICAgICAgICAgICBcIiwgZG9tOipbY29tcGFjdF0sIGRvbToqW2ZhY2VdLCBkb206Kltoc3BhY2VdLCBkb206KltsYW5ndWFnZV0sIGRvbToqW2xpbmtdXCIgK1xuICAgICAgICAgICAgXCIsIGRvbToqW25vc2hhZGVdLCBkb206Kltub3dyYXBdLCBkb206KltvYmplY3RdLCBkb206Kltwcm9tcHRdLCBkb206KltzdGFydF1cIiArXG4gICAgICAgICAgICBcIiwgZG9tOipbdGV4dF0sIGRvbToqW3ZlcnNpb25dLCBkb206Klt2bGlua10sIGRvbToqW3ZzcGFjZV0sIGRvbTppbWdbYm9yZGVyXVwiICtcbiAgICAgICAgICAgIFwiLCBkb206b2JqZWN0W2JvcmRlcl0sIGRvbTp0ZFtoZWlnaHRdLCBkb206dGhbaGVpZ2h0XSwgZG9tOmxpW3R5cGVdLCBkb206b2xbdHlwZV1cIiArXG4gICAgICAgICAgICBcIiwgZG9tOnVsW3R5cGVdLCBkb206bGlbdmFsdWVdLCBkb206cHJlW3dpZHRoXSwgZG9tOmhyW3dpZHRoXSwgZG9tOnRkW3dpZHRoXSwgZG9tOnRoW3dpZHRoXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gSFRNTFVuaXQgYXV0byBhZGRzIGEgdGJvZHlbYWxpZ249bGVmdF0gdG8gdGFibGVzIGlmIHRib2R5IGlzIG1pc3NpbmchXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcInRib2R5XCIgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYWxpZ25cIikpXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gICAgICAgIGlmICghcGFzc2VkKVxuICAgICAgICAgICAgLy8gICAgICAgICAgICBQYWNrYWdlcy5qYXZhLmxhbmcuU3lzdGVtLmVyci5wcmludGxuKFwiXCIrcnVsZUNvbnRleHQubm9kZU5hbWUpO1xuICAgICAgICAgICAgLy8gICAgICAgIFBhY2thZ2VzLmphdmEubGFuZy5TeXN0ZW0uZXJyLnByaW50bG4oXCJcIitydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbGlnblwiKSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGlzIGVsZW0ncyBpZCBpc24ndCBvYnRhaW5lZCBieSBnZXRFbGVtZW50QnlJZFxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9FbGVtX1VuaXF1ZUlkXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbaWRdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBKQ0ggLSBOTyBPVVQgT0YgU0NPUEUgaGlkZGVuIGluIGNvbnRleHRcbiAgICAgICAgICAgIGxldCBpZCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImlkXCIpO1xuXG4gICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IGlkIGlzIGVtcHR5IHdlIHNob3VsZCB0cmlnZ2VyIGEgdmlvbGF0aW9uIHJpZ2h0IGF3YXkgd2l0aCBvdXQgY2hlY2tpbmcgXG4gICAgICAgICAgICAvLyBmb3IgdW5pcXVlbmVzcy5cbiAgICAgICAgICAgIGlmIChpZCA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KGZhbHNlLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIFtydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBpZF0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgaWRdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgaWQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGVsZW1lbnQgPT09IHJ1bGVDb250ZXh0O1xuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIHBhc3NlZCA9PSB0cnVlID8gW10gOiBbcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgaWRdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIsIFtydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBpZF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHRoaXMgZWxlbSdzIGFjY2Vzc2tleSBpc24ndCB1bmlxdWVcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgRjE3XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfRWxlbV9VbmlxdWVBY2Nlc3NLZXlcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlthY2Nlc3NrZXldXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbWFwID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIldDQUcyMF9FbGVtX1VuaXF1ZUFjY2Vzc0tleVwiLCB7fSk7XG5cbiAgICAgICAgICAgIGxldCBrZXkgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhY2Nlc3NrZXlcIik7XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSAhKGtleSBpbiBtYXApO1xuICAgICAgICAgICAgbWFwW2tleV0gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhbiBhc3Nlc3NrZXkgZG9lc24ndCBoYXZlIGEgbGFiZWxcbiAgICAgICAgICogT3JpZ2luOiAgSFRNTCA1IC0gcGVyIFJpY2hhcmQgU2Nod2VyZHRmZWdlcidzIHJlcXVpcmVtZW50cy4gZzExNDBcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfQWNjZXNza2V5X05lZWRMYWJlbFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW2FjY2Vzc2tleV1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInRpdGxlXCIpKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhcmlhLWxhYmVsXCIpKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4ocnVsZUNvbnRleHQsIHRydWUpKSB7IC8vIGlnbm9yZSBoaWRkZW5cbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIGFzc3VtZSB0aGUgdmFsaWRpdHkgb2YgdGhlIGlkIChvZiBhcmlhLWxhYmVsbGVkYnkpIGlzIGNoZWNrZWQgYnkgYSBkaWZmZXJlbnQgcnVsZVxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIlxuICAgICAgICAgICAgICAgICYmIERPTVV0aWwucGFyZW50Tm9kZShydWxlQ29udGV4dCkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJsYWJlbFwiKSB7XG4gICAgICAgICAgICAgICAgLy8gYXNzdW1lIHRoZSB2YWxpZGl0eSBvZiB0aGUgbGFiZWwsIGUuZy4gZW1wdHkgbGFiZWwsIGlzIGNoZWNrZWQgYnkgYSBkaWZmZXJlbnQgcnVsZVxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGEgbW91c2UgZXZlbnQgaXMgdXNlZCBhbmQgYSBtYXRjaGluZyBrZXlib2FyZCBldmVudCBpcyBub3RcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IGcyNjlcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9FbGVtX0V2ZW50TW91c2VBbmRLZXlcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KltvbmRibGNsaWNrXSwgZG9tOipbb25tb3VzZW1vdmVdLCBkb206Kltvbm1vdXNlZG93bl0sIFwiICtcbiAgICAgICAgICAgIFwiZG9tOipbb25tb3VzZXVwXSwgZG9tOipbb25tb3VzZW92ZXJdLCBkb206Kltvbm1vdXNlb3V0XSwgZG9tOipbb25jbGlja11cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSB8fFxuICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25kYmxjbGlja1wiKSAmJlxuICAgICAgICAgICAgICAgICAgICAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZW1vdmVcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbm1vdXNlZG93blwiKSB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmtleWRvd25cIikpICYmXG4gICAgICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZXVwXCIpIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ua2V5dXBcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZW92ZXJcIikgfHwgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25mb2N1c1wiKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbm1vdXNlb3V0XCIpIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9uYmx1clwiKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmNsaWNrXCIpIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ua2V5cHJlc3NcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lID09IFwiYVwiIHx8IG5vZGVOYW1lID09IFwiYnV0dG9uXCIpKTtcblxuICAgICAgICAgICAgbGV0IGZhaWxlZE1vdXNlRXZlbnRzID0gbmV3IEFycmF5KCk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIC8vc3RvcmUgYW5kIGRpc3BsYXkgZXZlbnQgbmFtZSBhbmQgbm9kZSBuYW1lIGluIHRoZSB0b2tlbnNcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25kYmxjbGlja1wiKSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsZWRNb3VzZUV2ZW50cy5wdXNoKFwib25kYmxjbGlja1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ubW91c2Vtb3ZlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZE1vdXNlRXZlbnRzLnB1c2goXCJvbm1vdXNlbW92ZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ubW91c2Vkb3duXCIpICYmICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmtleWRvd25cIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkTW91c2VFdmVudHMucHVzaChcIm9ubW91c2Vkb3duXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZXVwXCIpICYmICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmtleXVwXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZE1vdXNlRXZlbnRzLnB1c2goXCJvbm1vdXNldXBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbm1vdXNlb3ZlclwiKSAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25mb2N1c1wiKSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsZWRNb3VzZUV2ZW50cy5wdXNoKFwib25tb3VzZW92ZXJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbm1vdXNlb3V0XCIpICYmICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmJsdXJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkTW91c2VFdmVudHMucHVzaChcIm9ubW91c2VvdXRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmNsaWNrXCIpICYmICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmtleXByZXNzXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKG5vZGVOYW1lID09IFwiYVwiIHx8IG5vZGVOYW1lID09IFwiYnV0dG9uXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkTW91c2VFdmVudHMucHVzaChcIm9uY2xpY2tcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZU1hbnVhbChcIk1hbnVhbF8xXCIsIFtub2RlTmFtZSwgZmFpbGVkTW91c2VFdmVudHMuam9pbihcIiwgXCIpXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGFuIGludmFsaWQgdmFsdWUgaXMgdXNlZCBmb3IgdGhlIGRpciBhdHRyaWJ1dGVcbiAgICAgICAgICogT3JpZ2luOiBWYWxlcmllXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJWYWxlcmllX0VsZW1fRGlyVmFsaWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KltkaXJdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgZGlyU3RyID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiZGlyXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZGlyU3RyID09IFwibHRyXCIgfHwgZGlyU3RyID09IFwicnRsXCIgfHwgZGlyU3RyID09IFwiYXV0b1wiO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzRWxlbSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNFbWJlZDogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgZW1iZWQgaXMgbWlzc2luZyBlbWJlZCwgb3IgaXMgbm90IGltbWVkaWF0ZWx5IGFmdGVyXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg0NlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0VtYmVkX0hhc05vRW1iZWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZW1iZWRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBydWxlQ29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcIm5vZW1iZWRcIikubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgbGV0IHdhbGtOb2RlID0gcnVsZUNvbnRleHQubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgd2Fsa05vZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdhbGtOb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJub2VtYmVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh3YWxrTm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiI3RleHRcIiAmJiB3YWxrTm9kZS5ub2RlVmFsdWUudHJpbSgpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod2Fsa05vZGUubm9kZVR5cGUgPT0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB3YWxrTm9kZSA9IHdhbGtOb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIE5vZW1iZWQgaGFzIG5vIGNvbnRlbnRcbiAgICAgICAgICogT3JpZ2luOiBWYWxlcmllXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJWYWxlcmllX05vZW1iZWRfSGFzQ29udGVudFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpub2VtYmVkXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBQcm92aWRlIGFsdGVybmF0aXZlIGNvbnRlbnQgZm9yIGVtYmVkZWQgZWxlbWVudHMuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHMzIwIHBpZWNlIG5vdCBjb250YWluZWQgaW4gV0NBRzIwX0VtYmVkX0hhU05vRW1iZWRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9FbWJlZF9IYXNBbHRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZW1iZWRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhbHRcIik7XG4gICAgICAgICAgICByZXR1cm4gcGFzc2VkID8gUnVsZVBhc3MoXCJQYXNzXzBcIikgOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIG1lZGlhIGF1dG9tYXRpY2FsbHkgc3RhcnRzXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNTAzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfRW1iZWRfQXV0b1N0YXJ0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnBhcmFtW25hbWU9YXV0b3BsYXldLCBkb206cGFyYW1bbmFtZT1hdXRvc3RhcnRdLCBcIiArXG4gICAgICAgICAgICBcImRvbTplbWJlZFtmbGFzaHZhcnNdLCBkb206ZW1iZWRbc3JjXSwgXCIgK1xuICAgICAgICAgICAgXCJkb206KlthdXRvc3RhcnQ9dHJ1ZV0sIGRvbToqW2F1dG9zdGFydD0xXSwgZG9tOmJnc291bmRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiYmdzb3VuZFwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09IFwicGFyYW1cIikge1xuICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID0gXCJcIjtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidmFsdWVcIikpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IGNvbnRlbnQuaW5kZXhPZihcIjA7XCIpID09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgIShjb250ZW50LmluZGV4T2YoXCJ0cnVlXCIpICE9IC0xIHx8IGNvbnRlbnQuaW5kZXhPZihcIjFcIikgIT0gLTEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PSBcImVtYmVkXCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJmbGFzaHZhcnNcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImZsYXNodmFyc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gc3RyLmluZGV4T2YoXCJhdXRvc3RhcnQ9dHJ1ZVwiKSA9PSAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyLmluZGV4T2YoXCJhdXRvc3RhcnQ9MVwiKSA9PSAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhc3NlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJzcmNcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInNyY1wiKTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gc3RyLmluZGV4T2YoXCJhdXRvc3RhcnQ9dHJ1ZVwiKSA9PSAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyLmluZGV4T2YoXCJhdXRvc3RhcnQ9MVwiKSA9PSAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImF1dG9zdGFydFwiKSkge1xuICAgICAgICAgICAgICAgIGxldCB2YWwgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhdXRvc3RhcnRcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB2YWwgIT0gJ3RydWUnICYmIHZhbCAhPSAnMSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFzc2VkID8gUnVsZVBhc3MoXCJQYXNzXzBcIikgOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzRW1iZWQgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNGaWVsZHNldDogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgZmllbGRzZXQgaXMgbWlzc2luZyBhIGxlZ2VuZFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINzFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZmllbGRzZXRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIGEgbGVnZW5kIGlzIGhpZGRlbiwgd2Ugc2hvdWxkIHN0aWxsIHRyaWdnZXIgYSB2aW9sYXRpb25zIGZvciB0aGlzXG4gICAgICAgICAgICBsZXQgbGVnZW5kcyA9IFJQVFV0aWwuZ2V0Q2hpbGRCeVRhZ0hpZGRlbihydWxlQ29udGV4dCwgXCJsZWdlbmRcIiwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKGxlZ2VuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gRmllbGRzZXQgaGFzIE5PIExlZ2VuZFxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGVnZW5kcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgLy8gRmllbGRzZXQgaGFzIG1vcmUgdGhhbiBvbmUgbGVnZW5kXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChSUFRVdGlsLmdldElubmVyVGV4dChsZWdlbmRzWzBdKS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gRmllbGRzZXQgaGFzIGxlZ2VuZCBidXQgbGVnZW5kIGlzIGVtcHR5XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzRmllbGRzZXQgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzRmlnOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZSBmaWd1cmUgZG9lc24ndCBoYXZlIGEgPGZpZ2NhcHRpb24+IGFuZCBkb2Vzbid0IGhhdmUgYSB2YWxpZCBhcmlhLWxhYmVsbGVkYnlcbiAgICAgICAgICogT3JpZ2luOiAgSFRNTCA1IC0gcGVyIFJpY2hhcmQgU2Nod2VyZHRmZWdlcidzIHJlcXVpcmVtZW50cy4gZzExNDRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfRmlndXJlX2xhYmVsXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmZpZ3VyZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KSA6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGZpZ3VyZXMgPSBydWxlQ29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImZpZ2NhcHRpb25cIik7XG5cbiAgICAgICAgICAgIC8vIExvb3Agb3ZlciBhbGwgdGhlIGZpZ2NhcHRpb24gZWxlbWVudHMgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSB0aGF0IGlzIG5vdCBlbXB0eSBhbmQgbm90IGhpZGRlbi5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcGFzc2VkICYmIGkgPCBmaWd1cmVzLmxlbmd0aDsgKytpKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBNYXJrIHRoaXMgcnVsZSBhcyBwYXNzZWQgaWYgYW55IG9uZSBvZiB0aGUgZmlndXJlY2FwdGlvbiBlbGVtZW50IGhhcyBjb250ZW50IGFuZCBpcyB2aXNpYmxlXG4gICAgICAgICAgICAgICAgaWYgKGZpZ3VyZXNbaV0uaW5uZXJIVE1MLnRyaW0oKS5sZW5ndGggPiAwICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShmaWd1cmVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyB3ZSBvbmx5IGNoZWNrIGlmIHRoZSBcImFyaWEtbGFiZWxsZWRieVwiIGlzIHRoZXJlLiBUaGVyZSBpcyBhIGRpZmZlcmVudCBydWxlIHRvIGNoZWNrIGlmIHRoZSBpZCBpcyB2YWxpZC5cbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc0ZpZyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwsIE5vZGVXYWxrZXIgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcbmltcG9ydCB7IEFSSUFNYXBwZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi5cIjtcblxubGV0IGExMXlSdWxlc0ZvY3VzOiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogRGV0ZXJtaW5lIGlmIHdpZGdldHMgdGhhdCBzaG91bGQgaGF2ZSBmb2N1cyBoYXZlIGEgdGFiIHN0b3BcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIklCTUFfRm9jdXNfVGFiYmFibGVcIixcbiAgICAgICAgY29udGV4dDpcbiAgICAgICAgICAgIC8vIHdpZGdldFxuICAgICAgICAgICAgLy8gLSBjb21tYW5kIFxuICAgICAgICAgICAgXCJhcmlhOmJ1dHRvbixhcmlhOmxpbmtcIlxuICAgICAgICAgICAgLy8gXCIsbWVudWl0ZW1cIlxuICAgICAgICAgICAgLy8gLSBjb21wb3NpdGVcbiAgICAgICAgICAgICsgXCIsYXJpYTpzcGluYnV0dG9uLGFyaWE6dGFibGlzdFwiXG4gICAgICAgICAgICAvLyBcIixncmlkXCJcbiAgICAgICAgICAgIC8vIC0tIHNlbGVjdFxuICAgICAgICAgICAgKyBcIixhcmlhOmNvbWJvYm94LGFyaWE6bGlzdGJveCxhcmlhOm1lbnUsYXJpYTpyYWRpb2dyb3VwLGFyaWE6dHJlZVwiXG4gICAgICAgICAgICAvLyAtIGlucHV0XG4gICAgICAgICAgICArIFwiLGFyaWE6Y2hlY2tib3gsYXJpYTpzbGlkZXIsYXJpYTpzcGluYnV0dG9uLGFyaWE6dGV4dGJveFwiXG4gICAgICAgICAgICAvLyArIFwiLG9wdGlvbixyYWRpb1wiXG4gICAgICAgICAgICAvLyAtIGdyaWRjZWxsXG4gICAgICAgICAgICAvLyArIFwiLGNvbHVtbmhlYWRlcixyb3doZWFkZXJcIlxuICAgICAgICAgICAgLy8gLSByYW5nZVxuICAgICAgICAgICAgLy8gICAgICAgICsgXCIscHJvZ3Jlc3NiYXJcIlxuICAgICAgICAgICAgKyBcIixhcmlhOnNjcm9sbGJhcixhcmlhOnNsaWRlcixhcmlhOnNwaW5idXR0b25cIlxuICAgICAgICAvLyAtIHJvdyxzZXBhcmF0b3IsdGFiXG4gICAgICAgIC8vIG90aGVyXG4gICAgICAgIC8vICAgICAgICArIFwiLGFydGljbGVcIlxuICAgICAgICAsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcm9sZSA9IEFSSUFNYXBwZXIubm9kZVRvUm9sZShydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICArK2NvdW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgbm9kZSBoYXMgY2hpbGRyZW4sIGxvb2sgZm9yIHRhYiBzdG9wcyBpbiB0aGUgY2hpbGRyZW5cbiAgICAgICAgICAgIGlmIChjb3VudCA8IDEgJiYgcnVsZUNvbnRleHQuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoY291bnQgPCAxICYmIG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobncubm9kZS5ub2RlVHlwZSA9PSAxICYmICFudy5iRW5kVGFnICYmIFJQVFV0aWwuaXNUYWJiYWJsZShudy5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBjb3VudCA+PSAxO1xuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3JvbGVdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IEZsYWcgaWYgd2lkZ2V0cyBoYXZlIG1vcmUgdGhhbiBvbmUgdGFiIHN0b3BcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIklCTUFfRm9jdXNfTXVsdGlUYWJcIixcbiAgICAgICAgY29udGV4dDpcbiAgICAgICAgICAgIC8vIHdpZGdldFxuICAgICAgICAgICAgLy8gLSBjb21tYW5kIFxuICAgICAgICAgICAgXCJhcmlhOmJ1dHRvbixhcmlhOmxpbmssYXJpYTptZW51aXRlbVwiXG4gICAgICAgICAgICAvLyAtIGNvbXBvc2l0ZVxuICAgICAgICAgICAgLy8gKyBcIixncmlkXCJcbiAgICAgICAgICAgICsgXCIsYXJpYTpzcGluYnV0dG9uLGFyaWE6dGFibGlzdFwiXG4gICAgICAgICAgICAvLyAtLSBzZWxlY3RcbiAgICAgICAgICAgICsgXCIsYXJpYTpjb21ib2JveCxhcmlhOmxpc3Rib3gsYXJpYTptZW51LGFyaWE6cmFkaW9ncm91cCxhcmlhOnRyZWVcIlxuICAgICAgICAgICAgLy8gLSBpbnB1dFxuICAgICAgICAgICAgKyBcIixhcmlhOmNoZWNrYm94LGFyaWE6b3B0aW9uLGFyaWE6cmFkaW8sYXJpYTpzbGlkZXIsYXJpYTpzcGluYnV0dG9uLGFyaWE6dGV4dGJveFwiXG4gICAgICAgICAgICAvLyAtIGdyaWRjZWxsXG4gICAgICAgICAgICArIFwiLGFyaWE6Y29sdW1uaGVhZGVyLGFyaWE6cm93aGVhZGVyXCJcbiAgICAgICAgICAgIC8vIC0gcmFuZ2VcbiAgICAgICAgICAgIC8vICAgICAgICArIFwiLHByb2dyZXNzYmFyXCJcbiAgICAgICAgICAgIC8vICAgICAgICArIFwiLHNjcm9sbGJhclwiXG4gICAgICAgICAgICAvLyAgICAgICAgKyBcIixzcGluYnV0dG9uXCJcbiAgICAgICAgICAgICsgXCIsYXJpYTpzbGlkZXIsYXJpYTp0YWJcIlxuICAgICAgICAvLyAtIHJvdyxzZXBhcmF0b3JcbiAgICAgICAgLy8gb3RoZXJcbiAgICAgICAgLy8gKyBcIixhcnRpY2xlXCJcbiAgICAgICAgLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHJvbGUgPSBBUklBTWFwcGVyLm5vZGVUb1JvbGUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgKytjb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIG5vZGUgaGFzIGNoaWxkcmVuLCBsb29rIGZvciB0YWIgc3RvcHMgaW4gdGhlIGNoaWxkcmVuXG4gICAgICAgICAgICBpZiAoY291bnQgPCAyICYmIHJ1bGVDb250ZXh0LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvdW50IDwgMiAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG53Lm5vZGUubm9kZVR5cGUgPT0gMSAmJiAhbncuYkVuZFRhZyAmJiBSUFRVdGlsLmlzVGFiYmFibGUobncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gY291bnQgPCAyO1xuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3JvbGVdKTtcbiAgICAgICAgfVxuICAgIH1cbl1cbmV4cG9ydCB7IGExMXlSdWxlc0ZvY3VzIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0ZvbnQ6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGZvbnQgd2l0aCBjb2xvciBpcyB1c2VkIGluIGEgZm9ybVxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9Gb250X0NvbG9ySW5Gb3JtXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmZvcm1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IGZvbnRzID0gcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJmb250XCIpO1xuICAgICAgICAgICAgaWYgKGZvbnRzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9ICFmb250c1tpXS5oYXNBdHRyaWJ1dGUoXCJjb2xvclwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0ZvbnQgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCwgTm9kZVdhbGtlciB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzRm9ybTogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgYSBmb3JtIGRvZXMgbm90IGhhdmUgYSBzdWJtaXQgYnV0dG9uXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEgzMlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0Zvcm1fSGFzU3VibWl0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmZvcm1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gc3VibWl0IGJ1dHRvbnMgYXJlIHVzdWFsbHkgYXQgdGhlIGJvdHRvbSAtIHdhbGsgYmFja3dhcmRzXG4gICAgICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocnVsZUNvbnRleHQsIHRydWUpO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIG53LnByZXZOb2RlKCkgJiYgbncubm9kZSAhPSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW53LmJFbmRUYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IG53Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBudy5lbGVtKCkuZ2V0QXR0cmlidXRlKFwidHlwZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0eXBlID09PSBcInN1Ym1pdFwiIHx8IHR5cGUgPT09IFwiaW1hZ2VcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09IFwiYnV0dG9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBudy5lbGVtKCkuaGFzQXR0cmlidXRlKFwidHlwZVwiKSAmJiBudy5lbGVtKCkuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpID09PSBcInN1Ym1pdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChudy5ub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNSb2xlKG53Lm5vZGUsIFwiYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAgeyAvLyBXYXJuaW5nXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBvbmNoYW5nZSBpcyBub24tZW1wdHlcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0OTJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9Gb3JtX0NoYW5nZUVtcHR5XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnNlbGVjdFtvbmNoYW5nZV0sIGRvbTppbnB1dFtvbmNoYW5nZV1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJvbmNoYW5nZVwiKS50cmltKCkubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlcmUgaXMgYSB0YXJnZXQsIGFuZCB0ZXh0IGRvZXMgbm90IHNwZWNpZnkgYSBuZXcgd2luZG93LlxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIODMsIFJQVCBHNDkxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmZvcm1bdGFyZ2V0XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBwYXJhbVdpblRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcIm5ldyB3aW5kb3dcIl0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgdFN0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInRhcmdldFwiKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0U3RyID09PSBcIl9wYXJlbnRcIiB8fCB0U3RyID09PSBcIl9zZWxmXCIgfHwgdFN0ciA9PT0gXCJfdG9wXCIgfHwgUlBUVXRpbC5nZXRGcmFtZUJ5TmFtZShydWxlQ29udGV4dCx0U3RyKSAhPSBudWxsO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBOYW1lIGlzIG5vdCBwYXJ0IG9mIHRoaXMgZnJhbWVzZXQg4oCTIG11c3QgaGF2ZSBwb3RlbnRpYWwgdG8gY3JlYXRlIG5ldyB3aW5kb3c/XG4gICAgICAgICAgICAgICAgLy8gU2VlIGlmIGEgbmV3IHdpbmRvdyBpcyBtZW50aW9uZWRcbiAgICAgICAgICAgICAgICBsZXQgdGV4dFN0ciA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidGl0bGVcIikpXG4gICAgICAgICAgICAgICAgICAgIHRleHRTdHIgKz0gXCIgXCIgKyBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXBhc3NlZCAmJiBpIDwgdmFsaWRhdGVQYXJhbXMucGFyYW1XaW5UZXh0LnZhbHVlLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgICAgICAgICBpZiAodGV4dFN0ci5pbmRleE9mKHZhbGlkYXRlUGFyYW1zLnBhcmFtV2luVGV4dC52YWx1ZVtpXSkgIT0gLTEpIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNGb3JtIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEFSSUFNYXBwZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi5cIjtcbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0ZyYW1lOiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGUgZnJhbWUgZWxlbWVudCBpcyBtaXNzaW5nIGEgdGl0bGVcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDY0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfRnJhbWVfSGFzVGl0bGVcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZnJhbWUsIGRvbTppZnJhbWVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICAgICAgLypyZW1vdmVkIG9ubHkgdGhlIGNoZWNrIGZvciByb2xlPW5vbmUuIEFsdGhvdWdoIHJvbGU9cHJlc2VudGF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoZVxuICAgICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sLWFyaWEvI2RvY2NvbmZvcm1hbmNlICB0YWJsZSwgdGhlIGNoZWNrIGhhcyBiZWVuIGtlcHQgZHVlIHRvIHRoZVxuICAgICAgICAgICAgIGRlY2lzaW9ucyB0YWtlbiBpbiBEQVAgXCJDaGVjayBpZnJhbWVzIHdpdGggcm9sZT1cInByZXNlbnRhdGlvblwiIHNob3VsZCBjb25zaWRlciByb2xlPVwibm9uZVwiIGFsc28gKDk2Mzk1KSovXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcInByZXNlbnRhdGlvblwiKSB8fCAhUlBUVXRpbC5pc1RhYmJhYmxlKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChBUklBTWFwcGVyLmNvbXB1dGVOYW1lKHJ1bGVDb250ZXh0KS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGUgZnJhbWUgZWxlbWVudCBwb2ludHMgYXQgc29tZXRoaW5nIHRoYXQgaXNuJ3QgaHRtbFxuICAgICAgICAgKiBPcmlnaW46IFZhbGVyaWVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlZhbGVyaWVfRnJhbWVfU3JjSHRtbFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpmcmFtZSwgZG9tOmlmcmFtZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwic3JjXCIpICYmXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5pc0h0bWxFeHQoUlBUVXRpbC5nZXRGaWxlRXh0KHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInNyY1wiKSkpO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNGcmFtZSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNIZWFkaW5nOiBSdWxlW10gPSBbXG5cbiAgICB7IC8vIEVycm9yXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBoZWFkZXJzIHRoYXQgYXJlIGVtcHR5XG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDg5XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfSGVhZGVyX0hhc0NvbnRlbnRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aDEsIGRvbTpoMiwgZG9tOmgzLCBkb206aDQsIGRvbTpoNSwgZG9tOmg2XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgeyAvLyBXYXJuaW5nXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgYWxsIGhlYWRpbmcgZWxlbWVudHNcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IDQ4OVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0hlYWRlcl9UcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmgxLCBkb206aDIsIGRvbTpoMywgZG9tOmg0LCBkb206aDUsIGRvbTpoNlwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcIlJQVF9IZWFkZXJfSGFzQ29udGVudFwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLnRyaWdnZXJPbmNlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUlBUX0hlYWRlcl9UcmlnZ2VyXCIsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIG9uIGhlYWRlcnMgKDxoMT4sIDxoMj4sIDxoMz4sIDxoND4sPGg1PiwgPGg2PikgdGhhdCBoYXZlIG1vcmUgdGhhbiBOIHdvcmRzLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9IZWFkZXJzX0Zld1dvcmRzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmgxLCBkb206aDIsIGRvbTpoMywgZG9tOmg0LCBkb206aDUsIGRvbTpoNlwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcIlJQVF9IZWFkZXJfSGFzQ29udGVudFwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgaGVhZGluZ0xlbmd0aFRocmVzaDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMjAsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBoZWFkaW5nTGVuZ3RoVGhyZXNoID0gdmFsaWRhdGVQYXJhbXMuaGVhZGluZ0xlbmd0aFRocmVzaC52YWx1ZTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLndvcmRDb3VudChSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCkpIDw9IGhlYWRpbmdMZW5ndGhUaHJlc2g7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIG9uIDxwPiwgPGRpdj4sIG9yIGJldHdlZW4gPGJyPidzIHdob3NlIHRleHQgY29udGVudCBpcyBsZXNzIHRoYW4gTiB3b3Jkc1xuICAgICAgICAgKiBhbmQgaXMgYWxsIGVtcGhhc2l6ZWQuXG4gICAgICAgICAqIEVtcGhhc2l6ZWQgdGV4dCBpcyBjb250YWluZWQgaW4gYSA8Yj4sIDxlbT4sIDxpPiwgPHN0cm9uZz4sIDx1PiBvciBhIDxmb250PiB3aXRoIHNpemUgPiBcIjRcIlxuICAgICAgICAgKiBvciBhIHJlbGF0aXZlIGluY3JlYXNlZCBzaXplLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzMyMlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrX1Nob3VsZEJlSGVhZGluZ1wiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpwLCBkb206ZGl2LCBkb206YnJcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgbnVtV29yZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDEwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbnVtV29yZHMgPSB2YWxpZGF0ZVBhcmFtcy5udW1Xb3Jkcy52YWx1ZTtcbiAgICAgICAgICAgIGxldCB3b3Jkc1NlZW4gPSAwO1xuICAgICAgICAgICAgbGV0IHdvcmRTdHIgOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgbGV0IGVtcGhhc2l6ZWRUZXh0ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB3aGlsZSAoIXBhc3NlZCAmJlxuICAgICAgICAgICAgICAgIG53Lm5leHROb2RlKCkgJiZcbiAgICAgICAgICAgICAgICBudy5ub2RlICE9PSBydWxlQ29udGV4dCAmJlxuICAgICAgICAgICAgICAgIG53Lm5vZGUgIT09IERPTVV0aWwucGFyZW50Tm9kZShydWxlQ29udGV4dCkgJiZcbiAgICAgICAgICAgICAgICAhW1wiYnJcIiwgXCJkaXZcIiwgXCJwXCJdLmluY2x1ZGVzKG53Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpIC8vIERvbid0IHJlcG9ydCB0d2ljZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCBud05hbWUgPSBudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKChud05hbWUgPT0gXCJiXCIgfHwgbndOYW1lID09IFwiZW1cIiB8fCBud05hbWUgPT0gXCJpXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgbndOYW1lID09IFwic3Ryb25nXCIgfHwgbndOYW1lID09IFwidVwiIHx8IG53TmFtZSA9PSBcImZvbnRcIikgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihudy5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dFN0ciA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KG53Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgd2MgPSBSUFRVdGlsLndvcmRDb3VudChuZXh0U3RyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdjID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd29yZFN0ci5wdXNoKG5leHRTdHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1waGFzaXplZFRleHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgd29yZHNTZWVuICs9IHdjO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHdvcmRzU2VlbiA+IG51bVdvcmRzO1xuICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIHRoaXMgbm9kZSBiZWNhdXNlIGl0J3MgZW1waGFzaXplZFxuICAgICAgICAgICAgICAgICAgICBudy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG53Lm5vZGUubm9kZVR5cGUgPT0gMSAmJiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KG53Lm5vZGUsIFwiYWx0XCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG53TmFtZSA9PSBcImFwcGxldFwiIHx8IG53TmFtZSA9PSBcImVtYmVkXCIgfHwgbndOYW1lID09IFwiaW1nXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG53TmFtZSA9PT0gXCJpbnB1dFwiICYmIG53LmVsZW0oKS5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpICYmIG53LmVsZW0oKS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpID09IFwiaW1hZ2VcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCAobndOYW1lID09PSBcIiN0ZXh0XCIgJiYgbncubm9kZS5ub2RlVmFsdWUudHJpbSgpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBHaXZlIHRoZW0gdGhlIGJlbmVmaXQgb2YgdGhlIGRvdWJ0IGlmIHRoZXJlJ3MgYSBsaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCAobndOYW1lID09PSBcImFcIiAmJiBudy5lbGVtKCkuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSAmJiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KG53Lm5vZGUsIFwiaHJlZlwiKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdvcmRzU2VlbiA9PSAwKSBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7IFxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7IFxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3dvcmRTdHIuam9pbihcIiBcIildKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0hlYWRpbmcgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgRnJhZ21lbnRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvZnJhZ21lbnRcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0hpZXI6IFJ1bGVbXSA9IFt7XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGxpc3Qgd2lkZ2V0IHVzaW5nIGdyb3VwIHJvbGUgYW5kIGhhcyBjaGlsZHJlbiB0aGF0IGFyZSBub3QgbGlzdGl0ZW0gcm9sZVxuICAgICAqIE9yaWdpbjogIFdBSS1BUklBIDEuMVxuICAgICAqL1xuICAgIGlkOiBcIkhBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbVwiLFxuICAgIGNvbnRleHQ6IFwiYXJpYTpncm91cFwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwucGFyZW50RWxlbWVudChydWxlQ29udGV4dCk7XG4gICAgICAgIGlmICghUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocGFyZW50LCBcImxpc3RcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgIGxldCBjaGlsZHJlbiA9IHJ1bGVDb250ZXh0LmNoaWxkcmVuO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MoY2hpbGRyZW5baV0sIFwibGlzdGl0ZW1cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbn0sXG5cbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBpcyBub3QgYSBkZXNjZW5kYW50IGJ5IG5hdHVyZSwgYnkgYXJpYS1vd25zIG9yIGFyaWEtY29udHJvbHMuXG4gICAgICogT3JpZ2luOiAgV0FJLUFSSUEgMS4xXG4gICAgICogICAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMS8jYXJpYS1hY3RpdmVkZXNjZW5kYW50XG4gICAgICovXG4gICAgaWQ6IFwiSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tcIixcbiAgICBjb250ZXh0OiBcImRvbToqW2FyaWEtYWN0aXZlZGVzY2VuZGFudF1cIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIC8vIGNvbWJvYm94IGFjdGl2ZSBkZXNjZW5kYW50cyBoYW5kbGVkIGJ5ICdjb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudCdcbiAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImNvbWJvYm94XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkZXNjZW5kYW50X2lkID0gUlBUVXRpbC5nZXRBcmlhQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiKTtcbiAgICAgICAgLy8gUE9GMTogVGhlIGF0dHJpYnV0ZSBpcyBlbXB0eVxuICAgICAgICBpZiAoIWRlc2NlbmRhbnRfaWQgfHwgZGVzY2VuZGFudF9pZC50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkZXNjZW5kYW50ID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGRlc2NlbmRhbnRfaWQudHJpbSgpKTtcbiAgICAgICAgaWYgKCFkZXNjZW5kYW50KSB7XG4gICAgICAgICAgICAvLyBUaGUgcmVmZXJlbmNlZCBlbGVtZW50IGRvZXNuJ3QgZXhpc3QuIFdlIGxldCAxMDc3IHRvIHRyaWdnZXIgdGhlIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKGRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICAvLyBQT0YyOiBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgcmVmZXJlbmNlcyBhIGhpZGRlbiBub2RlXG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAxLiBUaGUgdmFsdWUgb2YgYXJpYS1hY3RpdmVkZXNjZW5kYW50IHJlZmVycyB0byBhbiBlbGVtZW50IHRoYXQgaXMgZWl0aGVyIGEgZGVzY2VuZGFudCBvZiBcbiAgICAgICAgLy8gdGhlIGVsZW1lbnQgd2l0aCBET00gZm9jdXNcbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmNvbnRhaW5zKGRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcG9mSWQgPSAyO1xuXG4gICAgICAgIC8vIG9yIGlzIGEgbG9naWNhbCBkZXNjZW5kYW50IGFzIGluZGljYXRlZCBieSB0aGUgYXJpYS1vd25zIGF0dHJpYnV0ZS5cbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtb3duc1wiKSkge1xuICAgICAgICAgICAgbGV0IG93bmVkX2lkcyA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIikudHJpbSgpKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG93bmVkX2lkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBvd25lZF9lbGUgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgb3duZWRfaWRzW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAob3duZWRfZWxlLmNvbnRhaW5zKGRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyAyLiBUaGUgZWxlbWVudCB3aXRoIERPTSBmb2N1cyBpcyBhIHRleHRib3ggd2l0aCBhcmlhLWNvbnRyb2xzIHJlZmVycmluZyB0byBhbiBlbGVtZW50IHRoYXQgXG4gICAgICAgIC8vICBzdXBwb3J0cyBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsIGFuZCB0aGUgdmFsdWUgb2YgYXJpYS1hY3RpdmVkZXNjZW5kYW50IHNwZWNpZmllZCBmb3IgdGhlIFxuICAgICAgICAvLyAgdGV4dGJveCByZWZlcnMgdG8gZWl0aGVyIGEgZGVzY2VuZGFudCBvZiB0aGUgZWxlbWVudCBjb250cm9sbGVkIGJ5IHRoZSB0ZXh0Ym94IG9yIGlzIGEgbG9naWNhbCBcbiAgICAgICAgLy8gIGRlc2NlbmRhbnQgb2YgdGhhdCBjb250cm9sbGVkIGVsZW1lbnQgYXMgaW5kaWNhdGVkIGJ5IHRoZSBhcmlhLW93bnMgYXR0cmlidXRlLlxuICAgICAgICAvL1xuICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwidGV4dGJveFwiKSAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWNvbnRyb2xzXCIpKSB7XG4gICAgICAgICAgICBwb2ZJZCA9IDM7XG4gICAgICAgICAgICBsZXQgY29udHJvbGxlZF9pZHMgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1jb250cm9sc1wiKS50cmltKCkpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHJvbGxlZF9pZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udHJvbGxlZF9lbGUgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgY29udHJvbGxlZF9pZHNbaV0pO1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sbGVkX2VsZS5jb250YWlucyhkZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sbGVkX2VsZS5oYXNBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG93bnNfaWRzID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGNvbnRyb2xsZWRfZWxlLmdldEF0dHJpYnV0ZShcImFyaWEtb3duc1wiKS50cmltKCkpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBvd25zX2lkcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG93bmVkX2VsZSA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBvd25zX2lkc1tqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3duZWRfZWxlLmNvbnRhaW5zKGRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUE9GMzogSSdtIG5vdCBhIGNvbWJvYm94LCBhbmQgdGhlIHJlZmVyZW5jZWQgYWN0aXZlLWRlc2NlbmRhbnQgaXMgbm90IGEgZGVzY2VuZGFudCBhbmQgbm90IG93bmVkIGJ5IHRoZSBlbGVtZW50IFxuICAgICAgICAvLyB0aGF0IHJlZmVyZW5jZWQgaXQuXG4gICAgICAgIGlmIChwb2ZJZCA9PSAzKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzNcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7ICAgICAgICBcbiAgICB9XG59XG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0hpZXIgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcywgUnVsZUNvbnRleHRIaWVyYXJjaHkgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcbmltcG9ydCB7IEFuY2VzdG9yVXRpbCB9IGZyb20gXCIuLi91dGlsL2FuY2VzdG9yXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgTGFuZ1V0aWwgfSBmcm9tIFwiLi4vdXRpbC9sYW5nXCI7XG5cbmxldCBhMTF5UnVsZXNIdG1sOiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGUgZG9jdW1lbnQgbGFuZ3VhZ2UgaXMgaW52YWxpZFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINTdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9IdG1sX0hhc0xhbmdcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aHRtbFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBjb250ZXh0SGllcmFyY2hpZXM/OiBSdWxlQ29udGV4dEhpZXJhcmNoeSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgLy8gVGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IGluc2lkZSBhIHByZXNlbnRhdGlvbmFsIGZyYW1lXG4gICAgICAgICAgICBpZiAoQW5jZXN0b3JVdGlsLmlzUHJlc2VudGF0aW9uRnJhbWUoY29udGV4dEhpZXJhcmNoaWVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBkb2N0eXBlU3RyaW5nID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5kb2N0eXBlID8gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5kb2N0eXBlLnB1YmxpY0lkIDogXCJcIjtcbiAgICAgICAgICAgIGlmICghZG9jdHlwZVN0cmluZykgZG9jdHlwZVN0cmluZyA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgbGFuZyA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImxhbmdcIik7XG4gICAgICAgICAgICBsZXQgbGFuZ1hNTCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpO1xuXG4gICAgICAgICAgICBpZiAoZG9jdHlwZVN0cmluZy5pbmNsdWRlcygnWEhUTUwnKSAmJiAhZG9jdHlwZVN0cmluZy5pbmNsdWRlcyhcIjEuMFwiKSkge1xuICAgICAgICAgICAgICAgIGlmICghbGFuZ1hNTCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCAhPSAxLjAgKG11c3QgaGF2ZSB4bWw6bGFuZ1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsW2xhbmdYTUxdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3R5cGVTdHJpbmcuaW5jbHVkZXMoJ1hIVE1MJykgJiYgZG9jdHlwZVN0cmluZy5pbmNsdWRlcyhcIjEuMFwiKSkge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBYSFRNTCAxLjBcbiAgICAgICAgICAgICAgICAvLyBJZiBuZWl0aGVyIGlzIHByb3ZpZGVkLCBpdCdzIGEgZmFpbHVyZVxuICAgICAgICAgICAgICAgIGlmICghbGFuZyAmJiAhbGFuZ1hNTCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCBhbmQgbm8gbGFuZ1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYW5nICYmIGxhbmdYTUwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmcgIT09IGxhbmdYTUwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghTGFuZ1V0aWwudmFsaWRQcmltYXJ5TGFuZyhsYW5nKSB8fCAhTGFuZ1V0aWwudmFsaWRQcmltYXJ5TGFuZyhsYW5nWE1MKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCBFbGVtX0xhbmdfVmFsaWQgaGFuZGxlIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghTGFuZ1V0aWwubWF0Y2hQcmltYXJ5TGFuZyhsYW5nLCBsYW5nWE1MKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhIVE1MIGFuZCBsYW5nIGFuZCB4bWw6bGFuZywgYnV0IHRoZXkgZG9uJ3QgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzRcIiwgW2xhbmcsIGxhbmdYTUxdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfNVwiLCBbbGFuZywgbGFuZ1hNTF0sIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhIVE1MIGFuZCBsYW5nIGFuZCB4bWw6bGFuZyBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsW2xhbmddKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFhIVE1MIGFuZCBvbmx5IGxhbmcgKG9rYXkgaWYgb25seSBkZWxpdmVyZWQgdmlhIHRleHQvaHRtbClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfNVwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCBhbmQgb25seSB4bWw6bGFuZyAob2theSBpZiBvbmx5IGRlbGl2ZXJlZCB2aWEgeG1sIG1pbWUgdHlwZSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfNlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghbGFuZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzNcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYW5nICYmIGxhbmdYTUwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSFRNTDUgcG9seWdsb3QgZG9jdW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIGlmIChsYW5nICE9PSBsYW5nWE1MKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLnZhbGlkUHJpbWFyeUxhbmcobGFuZykgfHwgIUxhbmdVdGlsLnZhbGlkUHJpbWFyeUxhbmcobGFuZ1hNTCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgRWxlbV9MYW5nX1ZhbGlkIGhhbmRsZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLm1hdGNoUHJpbWFyeUxhbmcobGFuZywgbGFuZ1hNTCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCBhbmQgbGFuZyBhbmQgeG1sOmxhbmcsIGJ1dCB0aGV5IGRvbid0IG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF80XCIsIFtsYW5nLCBsYW5nWE1MXSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzVcIiwgW2xhbmcsIGxhbmdYTUxdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCBhbmQgbGFuZyBhbmQgeG1sOmxhbmcgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiLFtsYW5nXSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiLFtsYW5nXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHNraXAgbmF2aWdhdGlvbiBpcyBtaXNzaW5nIChoZWFkZXJzLCBmcmFtZXMsIG9yIHNraXAgbGlua3MgY291bnQpXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDgxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfSHRtbF9Ta2lwTmF2XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmh0bWxcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBmcmFtZXMgPSBSUFRVdGlsLmdldERvY0VsZW1lbnRzQnlUYWcocnVsZUNvbnRleHQsIFwiZnJhbWVcIik7XG4gICAgICAgICAgICBsZXQgaGVhZGVycyA9IFJQVFV0aWwuZ2V0RG9jRWxlbWVudHNCeVRhZyhydWxlQ29udGV4dCwgXCJoMVwiKTtcblxuICAgICAgICAgICAgaWYgKChmcmFtZXMgIT0gbnVsbCAmJiBmcmFtZXMubGVuZ3RoID4gMCkgfHwgKGhlYWRlcnMgIT0gbnVsbCAmJiBoZWFkZXJzLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgZnJhbWVzIG9yIGhlYWRpbmdzIGFyZSB1c2VkLCBwYXNzXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gTG9vayBmb3Igc2tpcCBhbmNob3JzXG4gICAgICAgICAgICAgICAgbGV0IGFuY2hvcnMgPSBSUFRVdGlsLmdldERvY0VsZW1lbnRzQnlUYWcocnVsZUNvbnRleHQsIFwiYVwiKTtcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0cyA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGlkeCA9IDA7ICFwYXNzZWQgJiYgaWR4IDwgYW5jaG9ycy5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmNob3JzW2lkeF0uaGFzQXR0cmlidXRlKFwiaHJlZlwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhyZWYgPSBhbmNob3JzW2lkeF0uaHJlZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaHJlZiAhPT0gdHlwZW9mIFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi5iYXNlVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBocmVmLmJhc2VWYWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRtcExvY2F0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAoKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQgYXMgYW55KS5sb2NhdGlvbkZyb21EQVApICE9IFwidW5kZWZpbmVkXCIgJiYgKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQgYXMgYW55KS5sb2NhdGlvbkZyb21EQVAgIT0gbnVsbCkgeyAvLyBEQVAgc2V0cyBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcExvY2F0aW9uID0gKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQgYXMgYW55KS5sb2NhdGlvbkZyb21EQVA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBzZXJ2ZXIgc2NhbiBoYXMgdGhlIGxvY2F0aW9uIG9iamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcExvY2F0aW9uID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5sb2NhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb2NIcmVmID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXBMb2NhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY0hyZWYgPSB0bXBMb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4IHdlaXJkIGJ1Z3Mgd2l0aCBob3cgdmFyaW91cyBwYXJzZXJzIHJlcG9ydCBvbiBmaWxlOiB1cmwnczpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChocmVmLnN0YXJ0c1dpdGgoXCJmaWxlOi8vL1wiKSkgaHJlZiA9IFwiZmlsZTovXCIgKyBocmVmLnN1YnN0cmluZyhcImZpbGU6Ly8vXCIubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb2NIcmVmLnN0YXJ0c1dpdGgoXCJmaWxlOi8vL1wiKSkgZG9jSHJlZiA9IFwiZmlsZTovXCIgKyBkb2NIcmVmLnN1YnN0cmluZyhcImZpbGU6Ly8vXCIubGVuZ3RoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYuY2hhckF0KDApID09IFwiI1wiIHx8IGhyZWYuc3RhcnRzV2l0aChkb2NIcmVmICsgXCIjXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldCA9IFJQVFV0aWwuZ2V0RmlsZUFuY2hvcihocmVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIHRhcmdldCkgIT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHNbdGFyZ2V0XSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYW5jaG9yc1tpZHhdLmhhc0F0dHJpYnV0ZShcIm5hbWVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc3VtZSBmb3J3YXJkIGp1bXBpbmcgdGFyZ2V0c1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBhbmNob3JzW2lkeF0uZ2V0QXR0cmlidXRlKFwibmFtZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLmluZGV4T2YoXCIjXCIpICE9IC0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBSUFRVdGlsLmdldEZpbGVBbmNob3IobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBuYW1lIGluIHRhcmdldHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNIdG1sIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwsIE5vZGVXYWxrZXIgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0ltZzogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGFuIGltYWdlIGhhcyBubyBhbHQgYXR0cmlidXRlXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEgzN1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19IYXNBbHRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW1nXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBJZiBub3QgdmlzaWJsZSB0byB0aGUgc2NyZWVuIHJlYWRlciwgaWdub3JlXG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShydWxlQ29udGV4dCkgfHwgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJbWFnZXMgd2l0aCBkaWZmZXJlbnQgcm9sZXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgb3RoZXIgQVJJQSBydWxlc1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgcm9sZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIik7XG4gICAgICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwicHJlc2VudGF0aW9uXCIgfHwgcm9sZSA9PT0gXCJub25lXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSB0aGUgcm9sZVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYWx0XCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFsdCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKTtcbiAgICAgICAgICAgICAgICBpZiAoYWx0LnRyaW0oKS5sZW5ndGggPT09IDAgJiYgYWx0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBbHQsIGJ1dCBpdCdzIHdoaXRlc3BhY2UgKGFsdD1cIiBcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInRpdGxlXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgaWYgKHRpdGxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTYW1lIGFzIG5vIGFsdFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aXRsZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRpdGxlID0gXCIgXCJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIHdoZW4gYSBub24tbnVsbCBhbHQgYXR0cmlidXRlIGlzIGFwcGxpZWQgdG8gYW4gaW1hZ2UgYW5kIHJvbGU9XCJwcmVzZW50YXRpb25cIiBvciByb2xlPVwibm9uZVwiICBpcyBzZXQgb24gdGhlIGltYWdlLlxuICAgICAgICAgKiBPcmlnaW46IENJMTYyIENoZWNrcG9pbnQgMS4xYVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19QcmVzZW50YXRpb25JbWdIYXNOb25OdWxsQWx0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1thbHRdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcInByZXNlbnRhdGlvblwiKSB8fCBSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIFwibm9uZVwiKSkge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKS5sZW5ndGggPT0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZXJlIGFyZSByZWR1bmRhbmNpZXMgYmV0d2VlbiBsaW5rIHRleHQgYW5kIGltYWdlIGFsdCB0ZXh0LlxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBXQ0FHX0gyXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1thbHRdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgYU5vZGUgPSBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBcImFcIik7XG4gICAgICAgICAgICAvL0lmIG5vdCBpbiBhbiBhbmNob3IsIE91dCBvZiBTY29wZVxuICAgICAgICAgICAgaWYgKGFOb2RlID09IG51bGwpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBsZXQgYWx0VGV4dCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChhbHRUZXh0Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgYWx0IHRleHQgaXMgZW1wdHksIHRoZXJlJ3Mgbm8gdGV4dCB0byBiZSByZWR1bmRhbnQgLSBsZXQgV0NBRzIwX0FfSGFzVGV4dFxuICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgaW4gdGhhdCBjYXNlLlxuICAgICAgICAgICAgICAgIC8vIFNvIE91dCBvZiBTY29wZSBmb3IgdGhpcyBydWxlXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaW5uZXJUZXh0ID0gYU5vZGUuaW5uZXJUZXh0O1xuICAgICAgICAgICAgbGV0IGxpbmtUZXh0ID0gXCJcIjtcblxuICAgICAgICAgICAgaWYgKGlubmVyVGV4dCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGlua1RleHQgPSBpbm5lclRleHQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGlua1RleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChhbHRUZXh0ID09IGxpbmtUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRleHQgaW4gbGlua1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvL2FsdCBpcyBub24temVybywgYnV0IG5vIGxpbmsgdGV4dCAtIGVuc3VyZSBhZGphY2VudCBsaW5rIHRleHQgaXNuJ3QgcmVkdW5kYW50XG4gICAgICAgICAgICAgICAgbGV0IHdhbGsgPSBuZXcgTm9kZVdhbGtlcihhTm9kZSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiB3YWxrLnByZXZOb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBub2RlIGFuZCBub2RlTmFtZVxuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IHdhbGsubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKG5vZGVOYW1lID09IFwiI3RleHRcIiAmJiBub2RlLm5vZGVWYWx1ZS5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVOYW1lID09IFwiaW1nXCIgJiYgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShub2RlLCBcImFsdFwiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbXBseSB3aXRoIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBTZXR0aW5nIGlmIHRoZSBhIGVsZW1lbnQgc2hvdWxkIGJlIGNoZWNrZWQgb3Igbm90XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVOYW1lID09PSBcImFcIiAmJiAhUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXh0IGJlZm9yZSBpbWFnZSBsaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAoKG5vZGUgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCB8fCBub2RlLnRleHRDb250ZW50IHx8IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpICE9IGFsdFRleHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3YWxrID0gbmV3IE5vZGVXYWxrZXIoYU5vZGUsIHRydWUpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgd2Fsay5uZXh0Tm9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgbm9kZSBhbmQgbm9kZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSB3YWxrLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoKG5vZGVOYW1lID09IFwiI3RleHRcIiAmJiBub2RlLm5vZGVWYWx1ZS5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVOYW1lID09IFwiaW1nXCIgJiYgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShub2RlLCBcImFsdFwiKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbXBseSB3aXRoIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBTZXR0aW5nIGlmIHRoZSBhIGVsZW1lbnQgc2hvdWxkIGJlIGNoZWNrZWQgb3Igbm90XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vZGVOYW1lID09IFwiYVwiICYmICFSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4obm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IChub2RlIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQudHJpbSgpLnRvTG93ZXJDYXNlKCkgIT0gYWx0VGV4dDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0IGFmdGVyIGltYWdlIGxpbmtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGFuIGltYWdlIGhhcyBhbHQgdGV4dFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMzcsIFJQVCA1LjYgRzQ3M1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19BbHRUcmlnZ2VyTm9uRGVjb3JhdGl2ZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbWdbYWx0XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBidWxsZXRNYXg6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDMwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaG9yaXpNaW5XaWR0aDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogNDAwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaG9yaXpNYXhIZWlnaHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDMwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcInByZXNlbnRhdGlvblwiKSB8fCBSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIFwibm9uZVwiKSB8fCBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSB2YWxpZGF0ZVBhcmFtcztcbiAgICAgICAgICAgIGxldCBteUhlaWdodCA9IC0xO1xuICAgICAgICAgICAgbGV0IG15V2lkdGggPSAtMTtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJoZWlnaHRcIikpIHtcbiAgICAgICAgICAgICAgICBteUhlaWdodCA9IHBhcnNlSW50KHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImhlaWdodFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwid2lkdGhcIikpIHtcbiAgICAgICAgICAgICAgICBteVdpZHRoID0gcGFyc2VJbnQocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwid2lkdGhcIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15SGVpZ2h0ICE9IC0xICYmIG15V2lkdGggIT0gLTEgJiZcbiAgICAgICAgICAgICAgICAoKG15V2lkdGggPD0gcGFyYW1zLmJ1bGxldE1heC52YWx1ZSAmJiBteUhlaWdodCA8PSBwYXJhbXMuYnVsbGV0TWF4LnZhbHVlKSB8fFxuICAgICAgICAgICAgICAgICAgICAobXlXaWR0aCA+PSBwYXJhbXMuaG9yaXpNaW5XaWR0aC52YWx1ZSAmJiBteUhlaWdodCA8PSBwYXJhbXMuaG9yaXpNYXhIZWlnaHQudmFsdWUpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aXRsZSBpcyBub24tZW1wdHkgd2hlbiBhbHQgaXMgbnVsbFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINjdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbWdfVGl0bGVFbXB0eVdoZW5BbHROdWxsXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1thbHRdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHRpdGxlLCBidXQgYWx0IGlzIGVtcHR5XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0aXRsZVwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogRW5zdXJlIHRoYXQgaW1hZ2Ugd2l0aCBzZXJ2ZXIgc2lkZSBtYXBzIGFsc28gaGF2ZSBhXG4gICAgICAgICAqIGZ1bmN0aW9uaW5nIHVzZXIgc2lkZSBtYXAuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHMTFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9JbWdfVXNlbWFwVmFsaWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW1nW2lzbWFwXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ1c2VtYXBcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgdXNlbWFwID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidXNlbWFwXCIpO1xuICAgICAgICAgICAgICAgIHVzZW1hcCA9IHVzZW1hcC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBsZXQgaWR4ID0gdXNlbWFwLmluZGV4T2YoXCIjXCIpO1xuICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpXG4gICAgICAgICAgICAgICAgICAgIHVzZW1hcCA9IHVzZW1hcC5zdWJzdHIoaWR4ICsgMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodXNlbWFwLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hcHMgPSBSUFRVdGlsLmdldERvY0VsZW1lbnRzQnlUYWcocnVsZUNvbnRleHQsIFwibWFwXCIpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXBhc3NlZCAmJiBpIDwgbWFwcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gbWFwc1tpXS5oYXNBdHRyaWJ1dGUoXCJuYW1lXCIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwc1tpXS5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpLnRvTG93ZXJDYXNlKCkgPT0gdXNlbWFwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IElmIHRoZSBpbWFnZSBoYXMgYSBub24tZW1wdHkgdXNlbWFwLCBlbnN1cmUgdGhhdCBpdCBhbHNvIGhhcyBhbHQgdGV4dC5cbiAgICAgICAgICogT3JpZ2luOiBDSTE2MlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiSEFBQ19JbWdfVXNlbWFwQWx0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1t1c2VtYXBdLCBkb206aW1nW2lzbWFwXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImFsdFwiKSB8fFxuICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiaXNtYXBcIikgJiYgIVJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwidXNlbWFwXCIpKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhbiBpbWFnZSdzIGFsdCB0ZXh0IHVzZXMgY29tbW9uIG1pc3VzZXNcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NTNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9JbWdfQWx0Q29tbW9uTWlzdXNlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZywgZG9tOmFyZWEsIGRvbTppbnB1dFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBiYWRUZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXCJzaG9ydCBkZXNjcmlwdGlvblwiXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJbc3RyaW5nXVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAvLyBBbHQgdGV4dCBjaGVjayBhcmUgZWxzZXdoZXJlIChTZWUgNDEsIDI0MCwgNDU1KVxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFsdFwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBhbHRUZXh0ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWx0XCIpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoYWx0VGV4dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBiYWRUZXh0ID0gdmFsaWRhdGVQYXJhbXMuYmFkVGV4dC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IHBhc3NlZCAmJiBpIDwgYmFkVGV4dC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gYWx0VGV4dC5pbmRleE9mKGJhZFRleHRbaV0pID09IC0xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzcmMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoKG5vZGVOYW1lID09IFwiYXJlYVwiKSA/IFwiaHJlZlwiIDogXCJzcmNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGxvdyBpdCB0byBwYXNzIGlmIHRoZXJlJ3Mgbm8gc3JjIC0gY2FuJ3QgZGV0ZXJtaW5lIHRoZXNlLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyYyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFpbCBpZiB0aGUgYWx0IG1hdGNoZXMgdGhlIHNyYyBleGFjdGx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxzbyBmYWlsIGlmIHRoZSBhbHQgaGFzIGEgLiBpbiBpdCBhbmQgZWl0aGVyIHRoZSBzcmMgaXMgaW4gdGhlIGFsdCBvciB0aGUgYWx0IGlzIGluIHRoZSBzcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBzcmMudHJpbSgpICE9IGFsdFRleHQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsdFRleHQuaW5kZXhPZihcIi5cIikgPT0gLTEgfHwgKGFsdFRleHQuaW5kZXhPZihzcmMpID09IC0xICYmIHNyYy5pbmRleE9mKGFsdFRleHQpID09IC0xKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW4gaW1hZ2UgZG9lcyBub3QgaGF2ZSBhIGxvbmcgZGVzY3JpcHRpb25cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NTQgRXJyb3JzXG4gICAgICAgICAqIFRvZG86IGlzQmFkIFVSTCBDaGVja1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0ltZ19Mb25nRGVzY3JpcHRpb24yXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1tsb25nZGVzY11cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgbG9uZ2Rlc2MgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJsb25nZGVzY1wiKTtcbiAgICAgICAgICAgIC8vIGlmIChsb25nZGVzYyBpcyBiYWQgVVJMKSBwYXNzZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgbGV0IGV4dCA9IFJQVFV0aWwuZ2V0RmlsZUV4dChsb25nZGVzYyk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZXh0Lmxlbmd0aCAhPSAwICYmIFJQVFV0aWwuaXNIdG1sRXh0KGV4dClcbiAgICAgICAgICAgICAgICB8fCBsb25nZGVzYy5zdGFydHNXaXRoKFwiI1wiKVxuICAgICAgICAgICAgICAgIHx8IGxvbmdkZXNjLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpXG4gICAgICAgICAgICAgICAgfHwgbG9uZ2Rlc2Muc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpXG4gICAgICAgICAgICAgICAgfHwgbG9uZ2Rlc2Muc3RhcnRzV2l0aChcImRhdGE6XCIpO1xuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhbiBlbGVtZW50IGhhcyBhIGJhY2tncm91bmQgaW1hZ2UgYW5kIGhhcyB0ZXh0IG9yIGhhcyB0aXRsZVxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSAxLjEuMSBGMy4gRzExMzJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgICAgICBsZXQgc3R5bGUgPSBkb2MuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAoc3R5bGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBiYWNrZ3JvdW5kSW1ncyA9IHN0eWxlLmJhY2tncm91bmRJbWFnZTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAoYmFja2dyb3VuZEltZ3MgIT0gbnVsbCAmJiBiYWNrZ3JvdW5kSW1ncyAhPSBcIlwiICYmIGJhY2tncm91bmRJbWdzICE9ICdub25lJyAmJiBiYWNrZ3JvdW5kSW1ncyAhPSAnaW5oZXJpdCcpIHtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaW5uZXJIVE1MICE9IG51bGwgJiYgcnVsZUNvbnRleHQuaW5uZXJIVE1MLnRyaW0oKS5sZW5ndGggIT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSAhPSBudWxsICYmIHRpdGxlLmxlbmd0aCAhPSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlTWFudWFsKFwiTWFudWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgaW1hZ2Ugcm9sZSBkb2VzIG5vdCBoYXZlIGEgbWVhbmluZ2Z1bCBhbHRlcm5hdGUgdGV4dC5cbiAgICAgICAgICogT3JpZ2luOiAgSEFBQywgRzExMjhcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfQXJpYV9JbWdBbHRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmltZ1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGlmICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicm9sZVwiKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIG5vIHJvbGUsIHRoaXMgaXMgaW1wbGljaXQsIGFuZCBjb3ZlcmVkIGJ5IFdDQUcyMF9JbWdfSGFzQWx0XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiByZW1vdmVkIHRoZSByb2xlIGNoZWNrIHJvbGU9IHByZXNlbnRhdGlvbiBzaW5jZSBpZiBhbiBlbGVtZW50IGhhcyByb2xlPWltZywgdGhlbiB0aGVyZSBuZWVkcyB0byBiZSBhIGNoZWNrIGZvciBhbHQgYXR0cmlidXRlIHJlZ2FyZGxlc3Mgb2YgdGhlIHByZXNlY25lIG9mIHJvbGU9cHJlc2VudGF0aW9uXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcInByZXNlbnRhdGlvblwiKSB8fCBSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIFwibm9uZVwiKSl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgICAgIH0qL1xuXG4gICAgICAgICAgICAvKiBKQ0ggLSBQb2ludHMgb2YgZmFpbHVyZVxuICAgICAgICAgICAgICogICAgMC4gTWlzc2luZyBhbHQgYXR0ciB3aXRoIHZhbHVlXG4gICAgICAgICAgICAgKiAgICAxLiBNaXNzaW5nIGFyaWEtbGFiZWwgb3IgYXJpYS1sYWJlbGxlZGJ5XG4gICAgICAgICAgICAgKiAgICAyLiBNaXNzaW5nIHRpdGxlIGF0dHIgd2l0aCB2YWx1ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAvLyBTa2lwIGFuIGltYWdlIHdpdGggYSBzdHJ1Y3R1cmFsIHJvbGUgLSBpbWcgbXVzdCBiZSBpbiB0aGUgcm9sZSBsaXN0IGF0IGxlYXN0XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgPT09IFwidHJ1ZVwiKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gSWYgcm9sZSA9PT0gaW1nLCB5b3UgbXVzdCB1c2UgYW4gYXJpYSBsYWJlbFxuICAgICAgICAgICAgLy9jaGVjayBhdHRyaWJ1dGVzIGFyaWEtbGFiZWwgYW5kIGFyaWEtbGFiZWxsZWRieSBmb3Igb3RoZXIgdGFncyAoZS5nLiA8ZGl2PiwgPHNwYW4+LCBldGMpXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic3ZnXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3ZnVGl0bGUgPSBydWxlQ29udGV4dC5xdWVyeVNlbGVjdG9yKFwidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gc3ZnVGl0bGUgJiYgUlBUVXRpbC5oYXNJbm5lckNvbnRlbnQoc3ZnVGl0bGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIC8vY2hlY2sgdGl0bGUgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgZ3VpZGUgcGVvcGxlIHRvIHVzZSBhbHQgb3IgbGFiZWwgLSB0aGlzIGlzIGp1c3QgYSBzZWNvbmRhcnkgYXBwcm9hY2ggdG8gc2lsZW5jZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBTbywgd2Ugc2hvdWxkIGtlZXAgdGhlIFBPRiBmcm9tIGFib3ZlLlxuICAgICAgICAgICAgICAgIC8vIGlmICghcGFzc2VkKSBQT0YgPSBcIkZhaWxfM1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgaW1hZ2Ugcm9sZSBkb2VzIG5vdCBoYXZlIGEgbWVhbmluZ2Z1bCBhbHRlcm5hdGUgdGV4dC5cbiAgICAgICAgICogT3JpZ2luOiAgSEFBQywgRzExMjhcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfQXJpYV9TdmdBbHRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmdyYXBoaWNzLWRvY3VtZW50LGFyaWE6Z3JhcGhpY3Mtc3ltYm9sXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGlmICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicm9sZVwiKSB8fCAhcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS5pbmNsdWRlcyhcImdyYXBoaWNzLVwiKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8qIHJlbW92ZWQgdGhlIHJvbGUgY2hlY2sgcm9sZT0gcHJlc2VudGF0aW9uIHNpbmNlIGlmIGFuIGVsZW1lbnQgaGFzIHJvbGU9aW1nLCB0aGVuIHRoZXJlIG5lZWRzIHRvIGJlIGEgY2hlY2sgZm9yIGFsdCBhdHRyaWJ1dGUgcmVnYXJkbGVzcyBvZiB0aGUgcHJlc2VjbmUgb2Ygcm9sZT1wcmVzZW50YXRpb25cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIFwicHJlc2VudGF0aW9uXCIpIHx8IFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgXCJub25lXCIpKXtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICAgICAgfSovXG5cbiAgICAgICAgICAgIC8qIEpDSCAtIFBvaW50cyBvZiBmYWlsdXJlXG4gICAgICAgICAgICAgKiAgICAwLiBNaXNzaW5nIGFsdCBhdHRyIHdpdGggdmFsdWVcbiAgICAgICAgICAgICAqICAgIDEuIE1pc3NpbmcgYXJpYS1sYWJlbCBvciBhcmlhLWxhYmVsbGVkYnlcbiAgICAgICAgICAgICAqICAgIDIuIE1pc3NpbmcgdGl0bGUgYXR0ciB3aXRoIHZhbHVlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIC8vIFNraXAgYW4gaW1hZ2Ugd2l0aCBhIHN0cnVjdHVyYWwgcm9sZSAtIGltZyBtdXN0IGJlIGluIHRoZSByb2xlIGxpc3QgYXQgbGVhc3RcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSA9PT0gXCJ0cnVlXCIpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBJZiByb2xlID09PSBpbWcsIHlvdSBtdXN0IHVzZSBhbiBhcmlhIGxhYmVsXG4gICAgICAgICAgICAvL2NoZWNrIGF0dHJpYnV0ZXMgYXJpYS1sYWJlbCBhbmQgYXJpYS1sYWJlbGxlZGJ5IGZvciBvdGhlciB0YWdzIChlLmcuIDxkaXY+LCA8c3Bhbj4sIGV0YylcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCkubGVuZ3RoID4gMDtcblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzdmdcIikge1xuICAgICAgICAgICAgICAgIGxldCBzdmdUaXRsZSA9IHJ1bGVDb250ZXh0LnF1ZXJ5U2VsZWN0b3IoXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBzdmdUaXRsZSAmJiBSUFRVdGlsLmhhc0lubmVyQ29udGVudChzdmdUaXRsZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy9jaGVjayB0aXRsZSBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInRpdGxlXCIpO1xuICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBndWlkZSBwZW9wbGUgdG8gdXNlIGFsdCBvciBsYWJlbCAtIHRoaXMgaXMganVzdCBhIHNlY29uZGFyeSBhcHByb2FjaCB0byBzaWxlbmNlIHRoZSBydWxlLlxuICAgICAgICAgICAgICAgIC8vIFNvLCB3ZSBzaG91bGQga2VlcCB0aGUgUE9GIGZyb20gYWJvdmUuXG4gICAgICAgICAgICAgICAgLy8gaWYgKCFwYXNzZWQpIFBPRiA9IFwiRmFpbF8zXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICdyb2xlJywgJycsIFtdKTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiLCBbcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKV0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0ltZyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vZG9tL0RPTVV0aWxcIjtcbmltcG9ydCB7IERPTVdhbGtlciB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NV2Fsa2VyXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgUlBUVXRpbCwgTm9kZVdhbGtlciB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzSW5wdXQ6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGFuIGlucHV0IGlzbid0IGxhYmVsZWQgb3IgdGl0bGVkXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg0NCwgSDY1LCBIOTFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpidXR0b24sYXJpYTpjaGVja2JveCxhcmlhOmNvbWJvYm94LGFyaWE6bGlzdGJveCxhcmlhOm1lbnVpdGVtY2hlY2tib3hcIlxuICAgICAgICAgICAgK1wiLGFyaWE6bWVudWl0ZW1yYWRpbyxhcmlhOnJhZGlvLGFyaWE6c2VhcmNoYm94LGFyaWE6c2xpZGVyLGFyaWE6c3BpbmJ1dHRvblwiXG4gICAgICAgICAgICArXCIsYXJpYTpzd2l0Y2gsYXJpYTp0ZXh0Ym94LGFyaWE6cHJvZ3Jlc3NiYXIsZG9tOmlucHV0W3R5cGU9ZmlsZV0sZG9tOm91dHB1dCxkb206bWV0ZXIsZG9tOmlucHV0W3R5cGU9cGFzc3dvcmRdXCIsIFxuXG4gICAgICAgIC8vIHRoZSBkYXRhbGlzdCBlbGVtZW50IGRvIG5vdCByZXF1aXJlIGFueSBleHBsaWNpdCBvciBpbXBsaWNpdCBsYWJlbCwgbWlnaHQgbmVlZCB0byBleGNsdWRlIGl0IGZyb20gdGhlIHNjb3BlIG9mIHRoZSBydWxlc1xuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG5cbiAgICAgICAgICAgIC8qIHJlbW92ZWQgdGhlICBjaGVjayByb2xlPSBwcmVzZW50YXRpb24gc2luY2UgYWNjb3JkaW5nIHRvIGxhdGVzdCBuYXRpdmUgaG9zdCBzZW1hbnRpY3MgaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwtYXJpYS8jZG9jY29uZm9ybWFuY2UgIHRhYmxlLCAgdGhlc2UgdHdvIHJvbGVzIGFyZSBub3QgYXBwbGljYWJsZSB0byB0aGUgZWxlbWVudHMgYXJlIGluIHRoZSAgc2NvcGUgb2YgdGhpcyByb2xlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcInByZXNlbnRhdGlvblwiKSB8fCBSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIFwibm9uZVwiKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbnB1dCB0eXBlXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiaW5wdXRcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09IFwiYnV0dG9uXCIgfHwgUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwiYnV0dG9uXCIpKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IFwiYnV0dG9uZWxlbVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiaW5wdXRcIiAmJiB0eXBlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gXCJpbWFnZVwiKSB7XG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlZCBieSBXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbEltYWdlXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBQT0YgPSAtMTtcbiAgICAgICAgICAgIGxldCB0ZXh0VHlwZXMgPSBbXG4gICAgICAgICAgICAgICAgXCJ0ZXh0XCIsIFwiZmlsZVwiLCBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgXCJjaGVja2JveFwiLCBcInJhZGlvXCIsXG4gICAgICAgICAgICAgICAgXCJzZWFyY2hcIiwgXCJ0ZWxcIiwgXCJ1cmxcIiwgXCJlbWFpbFwiLCAgLy9IVE1MIDUuIE5vdGU6IHR5cGUgPSBcImhpZGRlblwiIGRvZXNuJ3QgcmVxdWlyZSB0ZXh0XG4gICAgICAgICAgICAgICAgXCJkYXRlXCIsIFwibnVtYmVyXCIsIFwicmFuZ2VcIiwgLy9IVE1MIDUuIHR5cGUgPSBcImltYWdlXCIgaXMgY2hlY2tlZCBpbiBnMTAuXG4gICAgICAgICAgICAgICAgXCJ0aW1lXCIsIFwiY29sb3JcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgbGV0IGJ1dHRvblR5cGVzID0gW1xuICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsIFwicmVzZXRcIiwgXCJzdWJtaXRcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgbGV0IGJ1dHRvblR5cGVzV2l0aERlZmF1bHRzID0gW1wicmVzZXRcIiwgXCJzdWJtaXRcIl07IC8vICdzdWJtaXQnIGFuZCAncmVzZXQnIGhhdmUgdmlzaWJsZSBkZWZhdWx0cy5cbiAgICAgICAgICAgIGlmICh0ZXh0VHlwZXMuaW5kZXhPZih0eXBlKSAhPT0gLTEpIHsgLy8gSWYgdHlwZSBpcyBpbiB0aGUgbGlzdFxuICAgICAgICAgICAgICAgIC8vIEdldCBvbmx5IHRoZSBub24taGlkZGVuIGxhYmVscyBmb3IgZWxlbWVudCwgaW4gdGhlIGNhc2UgdGhhdCBhbiBsYWJlbCBpcyBoaWRkZW4gdGhlbiBpdCBpcyBhIHZpb2xhdGlvblxuICAgICAgICAgICAgICAgIC8vIE5vdGU6IGxhYmVsW2Zvcl0gZG9lcyBub3Qgd29yayBmb3IgQVJJQS1kZWZpbmVkIGlucHV0c1xuICAgICAgICAgICAgICAgIGxldCBsYWJlbEVsZW0gPSBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpID8gbnVsbCA6IFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKHJ1bGVDb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBsZXQgaGFzTGFiZWxFbGVtQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChsYWJlbEVsZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKGxhYmVsRWxlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0xhYmVsRWxlbUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChsYWJlbEVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSB8fCBcIlwiKS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGFiZWxFbGVtQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFiZWxFbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsbGVkQnlFbGVtID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQobGFiZWxFbGVtLCBsYWJlbEVsZW0uZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWxsZWRCeUVsZW0gJiYgUlBUVXRpbC5oYXNJbm5lckNvbnRlbnQobGFiZWxsZWRCeUVsZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzTGFiZWxFbGVtQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gKCEhbGFiZWxFbGVtICYmIGhhc0xhYmVsRWxlbUNvbnRlbnQpIHx8XG4gICAgICAgICAgICAgICAgICAgICghbGFiZWxFbGVtICYmIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwidGl0bGVcIikgfHwgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJwbGFjZWhvbGRlclwiKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpLnRyaW0oKS5sZW5ndGggPiAwIHx8IFJQVFV0aWwuaGFzSW1wbGljaXRMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIFBPRiA9IDIgKyB0ZXh0VHlwZXMuaW5kZXhPZih0eXBlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uVHlwZXMuaW5kZXhPZih0eXBlKSAhPT0gLTEpIHsgLy8gSWYgdHlwZSBpcyBhIGJ1dHRvblxuICAgICAgICAgICAgICAgIGlmIChidXR0b25UeXBlc1dpdGhEZWZhdWx0cy5pbmRleE9mKHR5cGUpICE9PSAtMSAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidmFsdWVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gJ3N1Ym1pdCcgYW5kICdyZXNldCcgaGF2ZSB2aXNpYmxlIGRlZmF1bHRzIHNvIHBhc3MgaWYgdGhlcmUgaXMgbm8gJ3ZhbHVlJyBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInZhbHVlXCIpIHx8IFJQVFV0aWwuaGFzQXJpYUxhYmVsKHJ1bGVDb250ZXh0KSB8fCBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkgUE9GID0gMiArIHRleHRUeXBlcy5sZW5ndGggKyBidXR0b25UeXBlcy5pbmRleE9mKHR5cGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcImJ1dHRvbmVsZW1cIikge1xuICAgICAgICAgICAgICAgIC8vIElmIEkgYW0gYW4gaW1hZ2UgYW5kIEkgaGF2ZSBhbHQgdGV4dCAtIGFjY2Vzc2liaWxpdHktd2ViLWVuZ2luZSMyNjlcbiAgICAgICAgICAgICAgICBsZXQgYkFsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImltZ1wiICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFsdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYWx0ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWx0XCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWx0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJBbHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJBbHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihydWxlQ29udGV4dCkgfHwgUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpIHx8IGJBbHQgfHwgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0aXRsZVwiKTtcblxuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSBQT0YgPSAyICsgdGV4dFR5cGVzLmxlbmd0aCArIGJ1dHRvblR5cGVzLmxlbmd0aCArIDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJwdF9BcmlhX1ZhbGlkSWRSZWYgZGV0ZXJtaW5lcyBpZiB0aGUgYXJpYS1sYWJlbGxlZGJ5IGlkIHBvaW50cyB0byBhIHZhbGlkIGVsZW1lbnRcbiAgICAgICAgICAgIGlmICghcGFzc2VkICYmIChidXR0b25UeXBlcy5pbmRleE9mKHR5cGUpICE9PSAtMSkpIHtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiY2xhc3NcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgPT0gXCJkaWppdE9mZlNjcmVlblwiICYmIERPTVV0aWwucGFyZW50RWxlbWVudChydWxlQ29udGV4dCkuaGFzQXR0cmlidXRlKFwid2lkZ2V0aWRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgZGlqaXQgYnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxJZCA9IERPTVV0aWwucGFyZW50RWxlbWVudChydWxlQ29udGV4dCkuZ2V0QXR0cmlidXRlKFwid2lkZ2V0aWRcIikgKyBcIl9sYWJlbFwiO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgbGFiZWxJZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYWJlbCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihsYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIEkgZmFpbGVkIGFib3ZlIGFsc29cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSBQT0YgPSAyICsgdGV4dFR5cGVzLmxlbmd0aCArIGJ1dHRvblR5cGVzLmxlbmd0aCArIDQgKyBidXR0b25UeXBlcy5pbmRleE9mKHR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBub2RlTmFtZSA9PSBcIm9wdGdyb3VwXCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxhYmVsXCIpO1xuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSBQT0YgPSAyICsgdGV4dFR5cGVzLmxlbmd0aCArIGJ1dHRvblR5cGVzLmxlbmd0aCArIDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBub2RlTmFtZSA9PSBcIm9wdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgLy8gSXMgYSBub24tZW1wdHkgdmFsdWUgYXR0cmlidXRlIGFsc28gZW5vdWdoIGZvciBhbiBvcHRpb24gZWxlbWVudD9cbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxhYmVsXCIpIHx8IHJ1bGVDb250ZXh0LmlubmVySFRNTC50cmltKCkubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkgUE9GID0gMiArIHRleHRUeXBlcy5sZW5ndGggKyBidXR0b25UeXBlcy5sZW5ndGggKyAzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIiwgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS5zcGxpdChcIiBcIikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW25vZGVOYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGFuIGltYWdlIGlucHV0IGRvZXMgbm90IGhhdmUgYWx0LlxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIOTFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW5wdXRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvV0NBRzIxL1RlY2huaXF1ZXMvZmFpbHVyZXMvRjY1XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpIHx8IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKSAhPSBcImltYWdlXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImFsdFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0aXRsZVwiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18yXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbFwiKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGhlIGxhYmVsIGlzIHN1cHBvc2VkIHRvIGJlIGJlZm9yZSB0aGUgaW5wdXQsIGJ1dCBpcyBub3QuXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg0NFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmlucHV0LCBkb206dGV4dGFyZWEsIGRvbTpzZWxlY3RcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiaW5wdXRcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gXCJ0ZXh0XCIgJiYgdHlwZSAhPSBcImZpbGVcIiAmJiB0eXBlICE9IFwicGFzc3dvcmRcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCBvbmx5IHRoZSBub24taGlkZGVuIGxhYmVscyBmb3IgZWxlbWVudFxuICAgICAgICAgICAgbGV0IGxhYmVsRWxlbSA9IFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKHJ1bGVDb250ZXh0LCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKGxhYmVsRWxlbSA9PSBudWxsIHx8ICFSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihsYWJlbEVsZW0pKSB7XG4gICAgICAgICAgICAgICAgLy8gRHVlIHRvIGRlcGVuZGVuY3ksIGxhYmVsIG11c3QgYmUgZG9uZSB2aWEgdGl0bGUgLSB0aGlzIHJ1bGUgZG9lc24ndCBhcHBseVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBSUFRVdGlsLmNvbXBhcmVOb2RlT3JkZXIobGFiZWxFbGVtLCBydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gLTIpIHtcbiAgICAgICAgICAgICAgICAvLyBpbnB1dCBuZXN0ZWQgaW4gbGFiZWxcbiAgICAgICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IHdhbGtOb2RlID0gcnVsZUNvbnRleHQucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIHdhbGtOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9ICgod2Fsa05vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcIiN0ZXh0XCIgJiYgd2Fsa05vZGUubm9kZVZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHdhbGtOb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJzcGFuXCIgJiYgd2Fsa05vZGUudGV4dENvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDApKTtcbiAgICAgICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElucHV0IG5lc3RlZCBpbiBsYWJlbCBhbmQgdGV4dCBhZnRlciBpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbGFiZWwgaXMgYWZ0ZXIgaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEhhdmVuJ3QgcmV0dXJuZWQgeWV0LCB0aGVuIEkgcGFzc1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHRoZSBsYWJlbCBpcyBzdXBwb3NlZCB0byBiZSBhZnRlciB0aGUgaW5wdXQsIGJ1dCBpcyBub3QuXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg0NFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0xhYmVsQWZ0ZXJcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW5wdXRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCB0eXBlID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKVxuICAgICAgICAgICAgICAgIHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAodHlwZSAhPSBcImNoZWNrYm94XCIgJiYgdHlwZSAhPSBcInJhZGlvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IG9ubHkgdGhlIG5vbi1oaWRkZW4gbGFiZWxzIGZvciBlbGVtZW50XG4gICAgICAgICAgICBsZXQgbGFiZWxFbGVtID0gUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4ocnVsZUNvbnRleHQsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGxhYmVsRWxlbSA9PT0gbnVsbCB8fCAhUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4obGFiZWxFbGVtKSkge1xuICAgICAgICAgICAgICAgIC8vIER1ZSB0byBkZXBlbmRlbmN5LCBsYWJlbCBtdXN0IGJlIGRvbmUgdmlhIHRpdGxlIC0gdGhpcyBydWxlIGRvZXNuJ3QgYXBwbHlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IFJQVFV0aWwuY29tcGFyZU5vZGVPcmRlcihsYWJlbEVsZW0sIHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQ7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IC0yKSB7XG4gICAgICAgICAgICAgICAgLy8gaW5wdXQgbmVzdGVkIGluIGxhYmVsXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IHdhbGtOb2RlID0gbmV3IE5vZGVXYWxrZXIobGFiZWxFbGVtKTtcbiAgICAgICAgICAgICAgICB3YWxrTm9kZS5ub2RlID0gcnVsZUNvbnRleHQ7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgd2Fsa05vZGUubmV4dE5vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAoKHdhbGtOb2RlLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCIjdGV4dFwiICYmIHdhbGtOb2RlLm5vZGUubm9kZVZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHdhbGtOb2RlLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzcGFuXCIgJiYgd2Fsa05vZGUubm9kZS50ZXh0Q29udGVudC50cmltKCkubGVuZ3RoID4gMCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJbnB1dCBuZXN0ZWQgaW4gbGFiZWwgYW5kIHRleHQgYmVmb3JlIGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlzIGJlZm9yZSBpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBub24tcmFkaW8vY2hrIGlucHV0cyBhcmUgbm90IGluIGEgZmllbGRzZXRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDcxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfSW5GaWVsZFNldFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbnB1dCwgZG9tOnRleHRhcmVhLCBkb206c2VsZWN0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIGZvciBvdGhlciBpbnB1dCB0eXBlcyBvciBpZiB3ZSdyZSBpbiBhIGZpZWxkc2V0XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImlucHV0XCIgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFwidGV4dFwiICYmIHR5cGUgIT0gXCJmaWxlXCIgJiYgdHlwZSAhPSBcInBhc3N3b3JkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBcImZpZWxkc2V0XCIpICE9IG51bGwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuXG4gICAgICAgICAgICAvLyBObyBmaWVsZHNldCAtIHNlZSBpZiB0aGlzIGlucHV0IGlzIGFsbCBieSBpdHNlbGYgLSBubyBuZWVkIHRvIGdyb3VwIHNpbmdsZSBpbnB1dHNcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBbXCJmb3JtXCIsIFwiYm9keVwiXSk7XG4gICAgICAgICAgICBsZXQgY2hlY2tUeXBlcyA9IFtcImlucHV0XCIsIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIl07XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IHBhc3NlZCAmJiBpIDwgY2hlY2tUeXBlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGxldCBjb250cm9scyA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShjaGVja1R5cGVzW2ldKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgcGFzc2VkICYmIGogPCBjb250cm9scy5sZW5ndGg7ICsraikge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIHNob3VsZCBiZSBza2lwcGVkIG9yIG5vdCBiYXNlZCBvbiB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyBhbmQgaWYgdGhlIG5vZGUgaXNWaXNpYmxlIG9yXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihjb250cm9sc1tqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHRhcmVhcyBhbmQgc2VsZWN0cyB3aWxsIGJlIGNhbGxlZCB0eXBlPSd0ZXh0J1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGNvbnRyb2xzW2pdLmhhc0F0dHJpYnV0ZShcInR5cGVcIikgPyBjb250cm9sc1tqXS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCkgOiBcInRleHRcIjtcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBmYWlsIGlmIHRoaXMgaXMgYW5vdGhlciBjb250cm9sIGluIHRoZSBmb3JtIGFuZCBpdHMgdHlwZSBpcyBhbm90aGVyIHRleHQtbGlrZSBpbnB1dFxuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBjb250cm9sc1tqXSA9PSBydWxlQ29udGV4dCB8fCAodHlwZSAhPSBcInRleHRcIiAmJiB0eXBlICE9IFwicGFzc3dvcmRcIiAmJiB0eXBlICE9IFwiZmlsZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhIHJhZGlvL2NoZWNrYm94IHdpdGggc2FtZSBuYW1lIGlzIG5vdCBncm91cGVkXG4gICAgICAgICAqIChlLmcuLCBpbiBhIGZpZWxkc2V0LCB3aXRoIHJvbGUgPSBcImdyb3VwXCIsIGV0Yy4pXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg3MSwgSDkxXG4gICAgICAgICAqXG4gICAgICAgICAqIEZhaWx1cmVzOlxuICAgICAgICAgKiAwYS4gcmFkaW8gbm90IGluIGZpZWxkc2V0LCBncm91cCBvciByYWRpb2dyb3VwIC0gQU5EIEkgZmluZCBhbm90aGVyIHJhZGlvIG9yIGNoZWNrIHdpdGggdGhlIHNhbWUgJ25hbWUnIGF0dHJpYnV0ZS0gQU5EIEknbSBub3QgaW4gYSB0YWJsZVxuICAgICAgICAgKiAwYi4gY2hlY2tib3ggbm90IGluIGZpZWxkc2V0IG9yIGdyb3VwIC0gQU5EIEkgZmluZCBhbm90aGVyIHJhZGlvIG9yIGNoZWNrIHdpdGggdGhlIHNhbWUgJ25hbWUnIGF0dHJpYnV0ZSAtIEFORCBJJ20gbm90IGluIGEgdGFibGVcbiAgICAgICAgICogMS4gcmFkaW8gb3IgY2hlY2tib3ggbWlzc2luZyBhIG5hbWUgW0lHTk9SRT9dXG4gICAgICAgICAqIDIuIHJhZGlvIG9yIGNoZWNrYm94IGhhcyB0aGUgc2FtZSBcIm5hbWVcIiBhdHRyaWJ1dGUgYXMgYW5vdGhlciByYWRpbyBvciBjaGVja2JveCBpbiBhIHNlcGFyYXRlIGZpZWxkc2V0LCBncm91cCBvciByYWRpb2dyb3VwXG4gICAgICAgICAqIDMuIGFtIGluIHRhYmxlIGFuZCBzb21lIGNvbWJpbmF0aW9uIG9mIHRoZSBhYm92ZVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbnB1dFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGNvbnRleHRbXCJhcmlhXCJdLnJvbGUgPT09ICdub25lJyB8fCBjb250ZXh0W1wiYXJpYVwiXS5yb2xlID09PSAncHJlc2VudGF0aW9uJykgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGNvbnN0IGdldEdyb3VwID0gKGUgOiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJldFZhbCA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IoZSwgXCJmaWVsZHNldFwiKVxuICAgICAgICAgICAgICAgICAgICB8fCBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUoZSwgXCJyYWRpb2dyb3VwXCIpXG4gICAgICAgICAgICAgICAgICAgIHx8IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShlLCBcImdyb3VwXCIpXG4gICAgICAgICAgICAgICAgICAgIHx8IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShlLCBcImdyaWRcIilcbiAgICAgICAgICAgICAgICAgICAgfHwgUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKGUsIFwidGFibGVcIik7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXRWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gUlBUVXRpbC5nZXRBbmNlc3RvcihlLCBcInRhYmxlXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmV0VmFsICYmICFSUFRVdGlsLmlzRGF0YVRhYmxlKHJldFZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gT25seSByYWRpbyBidXR0b25zIGFuZCBjaGVja2JveGVzIGFyZSBpbiBzY29wZVxuICAgICAgICAgICAgbGV0IGN0eFR5cGUgPSBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpID8gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpIDogXCJ0ZXh0XCI7XG4gICAgICAgICAgICBpZiAoY3R4VHlwZSAhPT0gXCJjaGVja2JveFwiICYmIGN0eFR5cGUgIT09IFwicmFkaW9cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggZm9ybSB3ZSdyZSBpbiAoaWYgYW55KSB0byBkZXRlcm1pbmUgb3VyIHNjb3BlXG4gICAgICAgICAgICBsZXQgY3R4Rm9ybSA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJmb3JtXCIpXG4gICAgICAgICAgICAgICAgfHwgUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJodG1sXCIpXG4gICAgICAgICAgICAgICAgfHwgcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIEdldCBkYXRhIGFib3V0IGFsbCBvZiB0aGUgdmlzaWJsZSBjaGVja2JveGVzIGFuZCByYWRpb3MgaW4gdGhlIHNjb3BlIG9mIHRoaXMgZm9ybVxuICAgICAgICAgICAgLy8gYW5kIGNhY2hlIGl0IGZvciBhbGwgb2YgdGhlIG90aGVyIGlucHV0cyBpbiB0aGlzIHNjb3BlXG4gICAgICAgICAgICBsZXQgZm9ybUNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShjdHhGb3JtLCBcIldDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWZvcm1DYWNoZSkge1xuICAgICAgICAgICAgICAgIGZvcm1DYWNoZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3hCeU5hbWU6IHt9LFxuICAgICAgICAgICAgICAgICAgICByYWRpb3NCeU5hbWU6IHt9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lVG9Hcm91cDoge1xuXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG51bUNoZWNrYm94ZXM6IDAsXG4gICAgICAgICAgICAgICAgICAgIG51bVJhZGlvczogMFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBHZXQgYWxsIG9mIHRoZSBjaGVja2JveGVzIGluIHRoZSBmb3JtIG9yIGJvZHkgKGJ1dCBub3QgbmVzdGVkIGluIHNvbWV0aGluZyBlbHNlIGFuZCBub3QgaGlkZGVuKVxuICAgICAgICAgICAgICAgIC8vIEFuZCBnZXQgYSBtYXBwaW5nIG9mIHRoZXNlIGNoZWNrYm94ZXMgdG9cbiAgICAgICAgICAgICAgICBsZXQgY1dhbGtlciA9IG5ldyBET01XYWxrZXIoY3R4Rm9ybSwgZmFsc2UsIGN0eEZvcm0pO1xuICAgICAgICAgICAgICAgIGxldCBjaGVja2JveFEgPSBbXTtcbiAgICAgICAgICAgICAgICBsZXQgcmFkaW9zUSA9IFtdO1xuICAgICAgICAgICAgICAgIHdoaWxlIChjV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjV2Fsa2VyLmJFbmRUYWdcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGNXYWxrZXIubm9kZS5ub2RlVHlwZSA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgY1dhbGtlci5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUlBUVXRpbC5pc05vZGVWaXNpYmxlKGNXYWxrZXIubm9kZSkpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gKGNXYWxrZXIubm9kZSBhcyBFbGVtZW50KS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwiY2hlY2tib3hcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94US5wdXNoKGNXYWxrZXIubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFwicmFkaW9cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZGlvc1EucHVzaChjV2Fsa2VyLm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGxldCBjaGVja2JveFEgPSBjdHhGb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dFt0eXBlPWNoZWNrYm94XVwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4PGNoZWNrYm94US5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNiID0gY2hlY2tib3hRW2lkeF07XG4gICAgICAgICAgICAgICAgICAgIGlmICgoUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKGNiLCBcImZvcm1cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFwiaHRtbFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpID09PSBjdHhGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKGNiKSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGNiLmdldEF0dHJpYnV0ZShcIm5hbWVcIikgfHwgXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtQ2FjaGUuY2hlY2tib3hCeU5hbWVbbmFtZV0gPSBmb3JtQ2FjaGUuY2hlY2tib3hCeU5hbWVbbmFtZV0gfHwgW10pLnB1c2goY2IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNhY2hlLm5hbWVUb0dyb3VwW25hbWVdID0gZm9ybUNhY2hlLm5hbWVUb0dyb3VwW25hbWVdIHx8IGdldEdyb3VwKGNiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICsrZm9ybUNhY2hlLm51bUNoZWNrYm94ZXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gR2V0IGFsbCBvZiB0aGUgcmFkaW9zIGluIHRoZSBmb3JtIG9yIGJvZHkgKGJ1dCBub3QgbmVzdGVkIGluIHNvbWV0aGluZyBlbHNlIGFuZCBub3QgaGlkZGVuKVxuICAgICAgICAgICAgICAgIC8vIGxldCByYWRpb3NRID0gY3R4Rm9ybS5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbdHlwZT1yYWRpb11cIik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaWR4PTA7IGlkeDxyYWRpb3NRLmxlbmd0aDsgKytpZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IHJhZGlvc1FbaWR4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmFkQ3R4ID0gKFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShyLCBcImZvcm1cIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFwiaHRtbFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmFkQ3R4ID09PSBjdHhGb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHIpKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gci5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpIHx8IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybUNhY2hlLnJhZGlvc0J5TmFtZVtuYW1lXSA9IGZvcm1DYWNoZS5yYWRpb3NCeU5hbWVbbmFtZV0gfHwgW10pLnB1c2gocik7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ2FjaGUubmFtZVRvR3JvdXBbbmFtZV0gPSBmb3JtQ2FjaGUubmFtZVRvR3JvdXBbbmFtZV0gfHwgZ2V0R3JvdXAocik7XG4gICAgICAgICAgICAgICAgICAgICAgICArK2Zvcm1DYWNoZS5udW1SYWRpb3M7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShjdHhGb3JtLCBcIldDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRcIiwgZm9ybUNhY2hlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8vLy8vLy8vLy8vLyBDYWxjdWxhdGVkIGV2ZXJ5dGhpbmcsIG5vdyBjaGVjayB0aGUgdmFyaW91cyBjYXNlc1xuXG4gICAgICAgICAgICBjb25zdCBjdHhOYW1lID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwibmFtZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGN0eEdyb3VwID0gZ2V0R3JvdXAocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgY3R4VHlwZSA9IGN0eFR5cGUgPT09IFwicmFkaW9cIiA/IFwiUmFkaW9cIiA6IFwiQ2hlY2tib3hcIjtcblxuICAgICAgICAgICAgaWYgKCFjdHhOYW1lIHx8IGN0eE5hbWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBGaXJzdCBwcm9jZXNzIGNhc2VzIHdoZXJlIHRoZSBjb250cm9sIGlzIG5vdCBuYW1lZFxuICAgICAgICAgICAgICAgIGlmIChjdHhUeXBlID09PSBcIlJhZGlvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmFkaW9zIHdpdGhvdXQgbmFtZXMgZG9uJ3QgYWN0IGxpa2UgZ3JvdXBzLCBzbyBkb24ndCBlbmZvcmNlIGdyb3VwaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHhHcm91cCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19SYWRpb05vTmFtZVwiLCBbY3R4VHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19Hcm91cGVkXCIsIFtjdHhUeXBlXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBNdXN0IGJlIGFuIHVubmFtZWQgY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN0eEdyb3VwID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZvcm1DYWNoZS5jaGVja2JveEJ5TmFtZVtcIlwiXSB8fCBbXSkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsX1VubmFtZWRDaGVja2JveFwiLCBbY3R4VHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzX0xvbmVOb2dyb3VwXCIsIFtjdHhUeXBlXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzX0dyb3VwZWRcIiwgW2N0eFR5cGVdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQ29uc2lkZXJpbmcgYSBuYW1lZCBjaGVja2JveFxuICAgICAgICAgICAgICAgIGNvbnN0IG51bVJhZGlvc1dpdGhOYW1lID0gKGZvcm1DYWNoZS5yYWRpb3NCeU5hbWVbY3R4TmFtZV0gfHwgW10pLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1DaGVja2JveGVzV2l0aE5hbWUgPSAoZm9ybUNhY2hlLmNoZWNrYm94QnlOYW1lW2N0eE5hbWVdIHx8IFtdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgLy8gQ2FwaXRhbGl6ZSB0aGUgaW5wdXQgdHlwZSBmb3IgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICBpZiAobnVtUmFkaW9zV2l0aE5hbWUgPiAwICYmIG51bUNoZWNrYm94ZXNXaXRoTmFtZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIG5hbWluZyBtaXNtYXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsX0NvbnRyb2xOYW1lTWlzbWF0Y2hcIiwgW2N0eFR5cGUsIGN0eFR5cGUgPT09IFwiY2hlY2tib3hcIj9cInJhZGlvXCI6XCJjaGVja2JveFwiLCBjdHhOYW1lXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHhUeXBlID09PSBcIlJhZGlvXCIgJiYgKGZvcm1DYWNoZS5udW1SYWRpb3MgPT09IDEgfHwgbnVtUmFkaW9zV2l0aE5hbWUgPT09IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBjdHhUeXBlID09PSBcIkNoZWNrYm94XCIgJiYgZm9ybUNhY2hlLm51bUNoZWNrYm94ZXMgPT09IDEpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbG9uZSBjb250cm9sIChlaXRoZXIgb25seSBjb250cm9sIG9mIHRoaXMgdHlwZSBvbiB0aGUgcGFnZSwgb3IgYSByYWRpbyBidXR0b24gd2l0aG91dCBhbnkgb3RoZXJzIGJ5IHRoYXQgbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFzcyB0aGlzIGNvbnRyb2wgaW4gYWxsIGNhc2VzXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHhHcm91cCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19Mb25lTm9ncm91cFwiLCBbY3R4VHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19Hcm91cGVkXCIsIFtjdHhUeXBlXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN0eFR5cGUgPT09IFwiQ2hlY2tib3hcIiAmJiBmb3JtQ2FjaGUubnVtQ2hlY2tib3hlcyA+IDEgJiYgbnVtQ2hlY2tib3hlc1dpdGhOYW1lID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgb25seSBvbmUgY2hlY2tib3ggd2l0aCB0aGlzIG5hbWUsIGJ1dCB0aGVyZSBhcmUgb3RoZXIgY2hlY2tib3hlcyBpbiB0aGUgZm9ybS5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgbm90IGdyb3VwZWQsIGFzayB0aGVtIHRvIGV4YW1pbmUgaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN0eEdyb3VwID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF9Mb25lQ2hlY2tib3hcIiwgW2N0eFR5cGVdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfR3JvdXBlZFwiLCBbY3R4VHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hhcmUgYSBuYW1lIHdpdGggYW5vdGhlciBzaW1pbGFyIGNvbnRyb2wuIEFyZSB3ZSBncm91cGVkIHRvZ2V0aGVyP1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3R4R3JvdXAgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtQ2FjaGUubmFtZVRvR3JvdXBbY3R4TmFtZV0gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSdyZSBub3QgZ3JvdXBlZCwgYnV0IHNvbWUgY29udHJvbCB3aXRoIHRoZSBzYW1lIG5hbWUgaXMgaW4gYSBncm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfTm90R3JvdXBlZE90aGVyR3JvdXBlZFwiLCBbY3R4VHlwZSwgY3R4TmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb25lIG9mIHVzIGFyZSBncm91cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF9Ob3RHcm91cGVkT3RoZXJOb3RHcm91cGVkXCIsIFtjdHhUeXBlLCBjdHhOYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtQ2FjaGUubmFtZVRvR3JvdXBbY3R4TmFtZV0gIT09IGN0eEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSdyZSBub3QgaW4gdGhlIG1haW4gZ3JvdXAgd2l0aCB0aGUgb3RoZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsX05vdFNhbWVHcm91cFwiLCBbY3R4VHlwZSwgY3R4TmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UncmUgYWxsIGdyb3VwZWQgdXAhXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzX0dyb3VwZWRcIiwgW2N0eFR5cGVdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGlucHV0IGhhcyBhbiBvbmNoYW5nZSBldmVudCBoYW5kbGVyXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEcxM1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0hhc09uY2hhbmdlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmlucHV0LCBkb206dGV4dGFyZWEsIGRvbTpzZWxlY3RcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiaW5wdXRcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgIT0gXCJ0ZXh0XCIgJiYgdHlwZSAhPSBcImZpbGVcIiAmJiB0eXBlICE9IFwicGFzc3dvcmRcIiAmJiB0eXBlICE9IFwiY2hlY2tib3hcIiAmJiB0eXBlICE9IFwicmFkaW9cIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9uY2hhbmdlXCIpO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGlucHV0IGhhcyBhIEhUTUwgNSByZXF1aXJlZCBwcm9wZXJ0eTogSEFBQywgRzExMjRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfSW5wdXRfSGFzUmVxdWlyZWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW5wdXQsIGRvbTp0ZXh0YXJlYSwgZG9tOnNlbGVjdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicmVxdWlyZWRcIikpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHBsYWNlaG9sZGVyIGlzIHVzZWQgYXMgYSByZXBsYWNlbWVudCBvZiBsYWJlbFxuICAgICAgICAgKlxuICAgICAgICAgKiBPcmlnaW46ICBIVE1MIDUgLSBwZXIgUmljaGFyZCBTY2h3ZXJkdGZlZ2VyJ3MgcmVxdWlyZW1lbnRzLiBnMTE0NVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiSEFBQ19JbnB1dF9QbGFjZWhvbGRlclwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbnB1dFtwbGFjZWhvbGRlcl0sIGRvbTp0ZXh0YXJlYVtwbGFjZWhvbGRlcl1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJoaWRkZW5cIiB8fCB0eXBlID09IFwiYnV0dG9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImhpZGRlblwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBoaWRkZW4gPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJoaWRkZW5cIik7XG4gICAgICAgICAgICAgICAgaWYgKGhpZGRlbiA9PSBcIlwiIHx8IGhpZGRlbi50b0xvd2VyQ2FzZSgpID09IFwiaGlkZGVuXCIpIHsgLy8gd2hlbiBoaWRkZW4gaXMgZW1wdHkgaW4gdGhlIGVsZW1lbnQsIFwiXCIgaXMgcmV0dXJuZWQsIHNhbWUgYXMgaXQgaGFzIGEgdmFsdWUgb2YgXCJcIi5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImlkXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIikudHJpbSgpO1xuICAgICAgICAgICAgICAgIGxldCByZWZJZHMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikudHJpbSgpLnNwbGl0KC9cXHMrLyk7IC8vIHNlcGFyYXRlZCBieSBvbmUgb3IgbW9yZSB3aGl0ZSBzcGFjZXNcbiAgICAgICAgICAgICAgICBpZiAoIXJlZklkcy5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IENoZWNrcyB0aGF0IHRoZSBIVE1MIGF1dG9jb21wbGV0ZSBhdHRyaWJ1dGUgaGFzIGEgY29ycmVjdCB2YWx1ZS5cbiAgICAgICAgICogVGhlIHJ1bGUgYXBwbGllcyB0byBhbnkgSFRNTCBpbnB1dCwgc2VsZWN0IGFuZCB0ZXh0YXJlYSBlbGVtZW50IHdpdGggYSBub24tZW1wdHkgSFRNTCBhdXRvY29tcGxldGUgYXR0cmlidXRlIGV4Y2VwdCB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gICAgICAgICAqICAtIFRoZSBlbGVtZW50IGlzIG5vdCB2aXNpYmxlIG9uIHRoZSBwYWdlLCBub3QgaW5jbHVkZWQgaW4gdGhlIGFjY2Vzc2liaWxpdHkgdHJlZSwgYW5kIG5vdCBmb2N1c2FibGVcbiAgICAgICAgICogIC0gVGhlIGVsZW1lbnQgaXMgYW4gaW5wdXQgZWxlbWVudCB3aXRoIGEgdHlwZSBwcm9wZXJ0eSBvZiBoaWRkZW4sIGJ1dHRvbiwgc3VibWl0IG9yIHJlc2V0XG4gICAgICAgICAqICAtIFRoZSBlbGVtZW50IGhhcyBhIGRpc2FibGVkIG9yIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCIgYXR0cmlidXRlXG4gICAgICAgICAqICAtIFRoZSBlbGVtZW50IGhhcyB0YWJpbmRleD1cIi0xXCIgYW5kIGhhcyBhIHNlbWFudGljIHJvbGUgdGhhdCBpcyBub3QgYSB3aWRnZXQuIChEaXNhYmxlZCBmb3Igbm93KVxuXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjEgU3VjY2VzcyBDcml0ZXJpb24gMS4zLjUgKElkZW50aWZ5IElucHV0IFB1cnBvc2UpXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjFfSW5wdXRfQXV0b2NvbXBsZXRlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmlucHV0W2F1dG9jb21wbGV0ZV0sIGRvbTp0ZXh0YXJlYVthdXRvY29tcGxldGVdLCBkb206c2VsZWN0W2F1dG9jb21wbGV0ZV1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FjaGUgPSB7XG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNPbk9mZlwiOiBbXCJvblwiLCBcIm9mZlwiXSxcbiAgICAgICAgICAgICAgICBcInRva2VuT3B0aW9uYWxTZWN0aW9uXCI6IFwic2VjdGlvbi1cIixcbiAgICAgICAgICAgICAgICBcInRva2Vuc09wdGlvbmFsUHVycG9zZVwiOiBbXCJzaGlwcGluZ1wiLCBcImJpbGxpbmdcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDFfcGFzc3dvcmRcIjogW1wibmV3LXBhc3N3b3JkXCIsIFwiY3VycmVudC1wYXNzd29yZFwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMV9tdWx0aWxpbmVcIjogW1wic3RyZWV0LWFkZHJlc3NcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDFfbW9udGhcIjogW1wiY2MtZXhwXCJdLFxuICAgICAgICAgICAgICAgIFwidG9rZW5zTWFuZGF0b3J5R3JvdXAxX251bWVyaWNcIjogW1wiY2MtZXhwLW1vbnRoXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtZXhwLXllYXJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFuc2FjdGlvbi1hbW91bnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJiZGF5LWRheVwiLFxuICAgICAgICAgICAgICAgICAgICBcImJkYXktbW9udGhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJiZGF5LXllYXJcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDFfZGF0ZVwiOiBbXCJiZGF5XCJdLFxuICAgICAgICAgICAgICAgIFwidG9rZW5zTWFuZGF0b3J5R3JvdXAxX3VybFwiOiBbXCJ1cmxcIiwgXCJwaG90b1wiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMV90ZXh0XCI6IFtcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJob25vcmlmaWMtcHJlZml4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZ2l2ZW4tbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwtbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImZhbWlseS1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaG9ub3JpZmljLXN1ZmZpeFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5pY2tuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXNlcm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvcmdhbml6YXRpb24tdGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvcmdhbml6YXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxpbmUxXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1saW5lMlwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGluZTNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxldmVsNFwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGV2ZWwzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1sZXZlbDJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxldmVsMVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNvdW50cnlcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjb3VudHJ5LW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJwb3N0YWwtY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1naXZlbi1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtYWRkaXRpb25hbC1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtZmFtaWx5LW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1udW1iZXJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1jc2NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy10eXBlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhbnNhY3Rpb24tY3VycmVuY3lcIixcbiAgICAgICAgICAgICAgICAgICAgXCJsYW5ndWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInNleFwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMV9hbGxcIjogW1wibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImhvbm9yaWZpYy1wcmVmaXhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJnaXZlbi1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkaXRpb25hbC1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZmFtaWx5LW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJob25vcmlmaWMtc3VmZml4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmlja25hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1c2VybmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImN1cnJlbnQtcGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvcmdhbml6YXRpb24tdGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvcmdhbml6YXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgXCJzdHJlZXQtYWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGluZTFcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxpbmUyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1saW5lM1wiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGV2ZWw0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1sZXZlbDNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxldmVsMlwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGV2ZWwxXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY291bnRyeVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNvdW50cnktbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInBvc3RhbC1jb2RlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWdpdmVuLW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1hZGRpdGlvbmFsLW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1mYW1pbHktbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLW51bWJlclwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWV4cFwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWV4cC1tb250aFwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWV4cC15ZWFyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtY3NjXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtdHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRyYW5zYWN0aW9uLWN1cnJlbmN5XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhbnNhY3Rpb24tYW1vdW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwibGFuZ3VhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgXCJiZGF5XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmRheS1kYXlcIixcbiAgICAgICAgICAgICAgICAgICAgXCJiZGF5LW1vbnRoXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmRheS15ZWFyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic2V4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwicGhvdG9cIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNPcHRpb25hbEdyb3VwMlwiOiBbXCJob21lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwid29ya1wiLFxuICAgICAgICAgICAgICAgICAgICBcIm1vYmlsZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImZheFwiLFxuICAgICAgICAgICAgICAgICAgICBcInBhZ2VyXCJdLFxuXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDJfdGVsXCI6IFtcInRlbFwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMl9lbWFpbFwiOiBbXCJlbWFpbFwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMl91cmxcIjogW1wiaW1wcFwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMl90ZXh0XCI6IFtcInRlbC1jb3VudHJ5LWNvZGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtbmF0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtYXJlYS1jb2RlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWxvY2FsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWxvY2FsLXByZWZpeFwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1sb2NhbC1zdWZmaXhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtZXh0ZW5zaW9uXCJdLFxuICAgICAgICAgICAgICAgIFwidG9rZW5zTWFuZGF0b3J5R3JvdXAyX2FsbFwiOiBbXCJ0ZWxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtY291bnRyeS1jb2RlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLW5hdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWFyZWEtY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1sb2NhbFwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1sb2NhbC1wcmVmaXhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtbG9jYWwtc3VmZml4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWV4dGVuc2lvblwiLFxuICAgICAgICAgICAgICAgICAgICBcImVtYWlsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaW1wcFwiXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBmb3VuZE1hbmRhdG9yeVRva2VuID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmlzTm9kZVZpc2libGUocnVsZUNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5pc05vZGVEaXNhYmxlZChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHR5cGUgPSBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpID8gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKSA6IFwidGV4dFwiO1xuXG4gICAgICAgICAgICBsZXQgYXV0b2NvbXBsZXRlQXR0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgbGV0IHRva2VucyA9IGF1dG9jb21wbGV0ZUF0dHIuc3BsaXQoL1xccysvKTtcblxuICAgICAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDAgfHwgYXV0b2NvbXBsZXRlQXR0ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IFtdO1xuICAgICAgICAgICAgbGV0IHRva2Vuc01hbmRhdG9yeUdyb3VwMiA9IFtdO1xuXG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiB8fCBub2RlTmFtZSA9PT0gXCJzZWxlY3RcIikge1xuICAgICAgICAgICAgICAgIC8vIGFjY2VwdCBhbGwgdG9rZW5zXG4gICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAxID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAxX2FsbDtcbiAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDIgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDJfYWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSB2YXJpb3VzICdpbnB1dCcgdHlwZXNcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIGNoZWNrIGZvciBpbnB1dCB0eXBlPWhpZGRlbiBmb3Igbm93IGJhc2VkIG9uIHNjcnVtIGRpc2N1c3Npb25cbiAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImhpZGRlblwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXB0IGFsbCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9hbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDIgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDJfYWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInNlYXJjaFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAxID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAxX3RleHQuY29uY2F0KGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfdXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9udW1lcmljLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9tb250aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDIgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDJfYWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJwYXNzd29yZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAxID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAxX3Bhc3N3b3JkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ1cmxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV91cmw7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDIgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDJfdXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJlbWFpbFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAyID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAyX2VtYWlsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0ZWxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMiA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMl90ZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAxID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAxX251bWVyaWM7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm1vbnRoXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDEgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfbW9udGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRhdGVcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9kYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1bnN1cHBvcnRlZCB0eXBlIGZvciB0aGlzIHJ1bGUuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gc2hvdWxkIG5ldmVyIGdldCBoZXJlLlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEaXNhYmxlIGNoZWNrIGZvciBpbnB1dCB0eXBlPWhpZGRlbiBmb3Igbm93IGJhc2VkIG9uIHNjcnVtIGRpc2N1c3Npb25cbiAgICAgICAgICAgIGxldCBhdXRvZmlsbE1hbnRsZSA9IC8qIChub2RlTmFtZT09PVwiaW5wdXRcIiAmJiB0eXBlPT09XCJoaWRkZW5cIikgPyBcImFuY2hvclwiIDogKi8gXCJleHBlY3RhdGlvblwiO1xuXG4gICAgICAgICAgICBpZiAoYXV0b2ZpbGxNYW50bGUgPT09IFwiZXhwZWN0YXRpb25cIikge1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIG9ufG9mZiBmb3IgZXhwZWN0YXRpb24gbWFudGxlLlxuICAgICAgICAgICAgICAgIGlmICh0b2tlbnMuaW5jbHVkZXMoXCJvblwiKSB8fCB0b2tlbnMuaW5jbHVkZXMoXCJvZmZcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb258b2ZmIHNob3VsZCBiZSB0aGUgb25seSB0b2tlblxuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKDIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBjaGVjayBkZXRhaWwgYXV0b2ZpbGwgdG9rZW5zXG4gICAgICAgICAgICBsZXQgY3VyckluZGV4ID0gMDtcblxuICAgICAgICAgICAgLy8gY2hlY2sgb3B0aW9uYWwgJ3NlY3Rpb24tKicgdG9rZW5zXG4gICAgICAgICAgICBpZiAodG9rZW5zW2N1cnJJbmRleF0uc3RhcnRzV2l0aChjYWNoZS50b2tlbk9wdGlvbmFsU2VjdGlvbikgJiZcbiAgICAgICAgICAgICAgICB0b2tlbnNbY3VyckluZGV4XS5sZW5ndGggPiA4KSB7XG4gICAgICAgICAgICAgICAgY3VyckluZGV4Kys7IC8vIGNvbnN1bWUgdG9rZW5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gY2hlY2sgb3B0aW9uYWwgJ3NoaXBwaW5nfGJpbGxpbmcnIHRva2Vuc1xuICAgICAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPiBjdXJySW5kZXggJiZcbiAgICAgICAgICAgICAgICBjYWNoZS50b2tlbnNPcHRpb25hbFB1cnBvc2UuaW5jbHVkZXModG9rZW5zW2N1cnJJbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgY3VyckluZGV4Kys7IC8vIGNvbnN1bWUgIHRva2VuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIGVpdGhlciBtYW5kYXRvcnkgZ3JvdXAgMSBvciAyIHRva2Vuc1xuICAgICAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPiBjdXJySW5kZXgpIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBtYW5kYXRvcnkgZ3JvdXAgMVxuICAgICAgICAgICAgICAgIGlmICh0b2tlbnNNYW5kYXRvcnlHcm91cDEuaW5jbHVkZXModG9rZW5zW2N1cnJJbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kTWFuZGF0b3J5VG9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjdXJySW5kZXgrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBvcHRpb25hbCB0b2tlbnMgZm9yIGdyb3VwIDJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlLnRva2Vuc09wdGlvbmFsR3JvdXAyLmluY2x1ZGVzKHRva2Vuc1tjdXJySW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VyckluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgbWFuZGF0b3J5IGdyb3VwIDJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2Vuc01hbmRhdG9yeUdyb3VwMi5pbmNsdWRlcyh0b2tlbnNbY3VyckluZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWFuZGF0b3J5VG9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VyckluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9ubHkgcGFzcyBpZiB3ZSBoYXZlIHNlZW4gZWl0aGVyIG9mIHRoZSBtYW5kYXRvcnkgZ3JvdXBzIGFuZCBhbGwgdG9rZW5zIGhhdmUgYmVlbiBjb25zdW1lZFxuICAgICAgICAgICAgaWYgKGZvdW5kTWFuZGF0b3J5VG9rZW4gJiYgdG9rZW5zLmxlbmd0aCA9PT0gY3VyckluZGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgYW4gaW5wdXQgZG9lcyBub3QgaGF2ZSBhIHZpc2libGUgbGFiZWxcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBTdWNjZXNzIENyaXRlcmlvbiAzLjMuMlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1Zpc2libGVMYWJlbFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6YnV0dG9uLGFyaWE6Y2hlY2tib3gsYXJpYTpjb21ib2JveCxhcmlhOmxpc3Rib3gsYXJpYTptZW51aXRlbWNoZWNrYm94XCJcbiAgICAgICAgICAgICtcIixhcmlhOm1lbnVpdGVtcmFkaW8sYXJpYTpyYWRpbyxhcmlhOnNlYXJjaGJveCxhcmlhOnNsaWRlcixhcmlhOnNwaW5idXR0b25cIlxuICAgICAgICAgICAgK1wiLGFyaWE6c3dpdGNoLGFyaWE6dGV4dGJveCxhcmlhOnByb2dyZXNzYmFyLGRvbTppbnB1dFt0eXBlPWZpbGVdLGRvbTpvdXRwdXRcIixcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBbXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbFwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKHJ1bGVDb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgIFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHdoZW4gaW4gYSBjb21ib2JveCwgb25seSBsb29rIGF0IHRoZSBpbnB1dCB0ZXh0Ym94LlxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJjb21ib2JveFwiKSAmJlxuICAgICAgICAgICAgICAgICEoUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwidGV4dGJveFwiKSB8fCBSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJzZWFyY2hib3hcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgbm9kZU5hbWUgPT09IFwiaW5wdXRcIiB8fCAobm9kZU5hbWUgPT09IFwic2VsZWN0XCIgJiYgUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwiY29tYm9ib3hcIikpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYXZvaWQgZGlhZ25vc2luZyB0aGUgcG9wdXAgbGlzdCBvZiBhIGNvbWJvYm94LlxuICAgICAgICAgICAgbGV0IHJvbGVzVG9DaGVjayA9IFtcImxpc3Rib3hcIiwgXCJ0cmVlXCIsIFwiZ3JpZFwiLCBcImRpYWxvZ1wiXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm9sZXNUb0NoZWNrLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCByb2xlc1RvQ2hlY2tbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb21ib2JveGVzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbWJvYm94XCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGNvbWJvYm94ZXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21ib2JveCA9IGNvbWJvYm94ZXNba107XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXJpYV9vd25zID0gUlBUVXRpbC5nZXRFbGVtZW50QXR0cmlidXRlKGNvbWJvYm94LCBcImFyaWEtb3duc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmlhX293bnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3ducyA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhhcmlhX293bnMudHJpbSgpKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvd25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvd25lZCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBvd25zW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG93bmVkID09PSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgaW5wdXQgdHlwZVxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCB0eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJpbnB1dFwiICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PT0gXCJidXR0b25cIiB8fCBSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJidXR0b25cIikpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gXCJidXR0b25lbGVtXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJpbnB1dFwiICYmIHR5cGUgPT0gXCJcIikge1xuICAgICAgICAgICAgICAgIHR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHRleHRUeXBlcyA9IFtcInRleHRcIiwgXCJmaWxlXCIsIFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICBcImNoZWNrYm94XCIsIFwicmFkaW9cIixcbiAgICAgICAgICAgICAgICBcInNlYXJjaFwiLCBcInRlbFwiLCBcInVybFwiLCBcImVtYWlsXCIsXG4gICAgICAgICAgICAgICAgXCJkYXRlXCIsIFwibnVtYmVyXCIsIFwicmFuZ2VcIixcbiAgICAgICAgICAgICAgICBcInRpbWVcIiwgXCJjb2xvclwiLFxuICAgICAgICAgICAgICAgIFwibW9udGhcIiwgXCJ3ZWVrXCIsIFwiZGF0ZXRpbWUtbG9jYWxcIl07XG4gICAgICAgICAgICBsZXQgYnV0dG9uVHlwZXMgPSBbXCJidXR0b25cIiwgXCJyZXNldFwiLCBcInN1Ym1pdFwiXTtcbiAgICAgICAgICAgIGxldCBidXR0b25UeXBlc1dpdGhEZWZhdWx0cyA9IFtcInJlc2V0XCIsIFwic3VibWl0XCJdOyAvLyAnc3VibWl0JyBhbmQgJ3Jlc2V0JyBoYXZlIHZpc2libGUgZGVmYXVsdHMuXG4gICAgICAgICAgICBpZiAodGV4dFR5cGVzLmluZGV4T2YodHlwZSkgIT09IC0xKSB7IC8vIElmIHR5cGUgaXMgaW4gdGhlIGxpc3RcbiAgICAgICAgICAgICAgICAvLyBHZXQgb25seSB0aGUgbm9uLWhpZGRlbiBsYWJlbHMgZm9yIGVsZW1lbnQsIGluIHRoZSBjYXNlIHRoYXQgYW4gbGFiZWwgaXMgaGlkZGVuIHRoZW4gaXQgaXMgYSB2aW9sYXRpb25cbiAgICAgICAgICAgICAgICBsZXQgbGFiZWxFbGVtID0gUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4ocnVsZUNvbnRleHQsIHRydWUpO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IChsYWJlbEVsZW0gIT0gbnVsbCAmJiBSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihsYWJlbEVsZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmhhc0ltcGxpY2l0TGFiZWwocnVsZUNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09IFwiZmlsZVwiOyAvLyBpbnB1dCB0eXBlPWZpbGUgaGFzIGEgdmlzaWJsZSBkZWZhdWx0LlxuICAgICAgICAgICAgfSBlbHNlIGlmIChidXR0b25UeXBlcy5pbmRleE9mKHR5cGUpICE9PSAtMSB8fCB0eXBlID09IFwiYnV0dG9uZWxlbVwiKSB7XG4gICAgICAgICAgICAgICAgLy8gQnV0dG9ucyBhcmUgbm90IGluIHNjb3BlIGZvciB0aGlzIHN1Y2Nlc3MgY3JpdGVyaWEgKElCTWEvZXF1YWwtYWNjZXNzIzIwNClcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYSB2aXNpYmxlIGxhYmVsIHBvaW50ZWQgdG8gYnkgdGhlIGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCB0aGVMYWJlbCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKTtcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWxWYWx1ZXMgPSB0aGVMYWJlbC5zcGxpdCgvXFxzKy8pO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGFiZWxWYWx1ZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRCeUlkID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGxhYmVsVmFsdWVzW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRCeUlkICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShlbGVtZW50QnlJZCkgJiYgUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4oZWxlbWVudEJ5SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkICYmIG5vZGVOYW1lID09IFwib3B0Z3JvdXBcIikge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwibGFiZWxcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBub2RlTmFtZSA9PSBcIm9wdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsYWJlbFwiKSB8fCBydWxlQ29udGV4dC5pbm5lckhUTUwudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9uZSBsYXN0IGNoZWNrIGZvciByb2xlcyB0aGF0IHN1cHBvcnQgbmFtZSBmcm9tIGNvbnRlbnRcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gbGlzdCBmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI25hbWVmcm9tY29udGVudFxuICAgICAgICAgICAgICAgIGxldCByb2xlc1dpdGhOYW1lRnJvbUNvbnRlbnQgPSBbXCJidXR0b25cIiwgXCJjZWxsXCIsIFwiY2hlY2tib3hcIiwgXCJjb2x1bW5oZWFkZXJcIiwgXCJncmlkY2VsbFwiLCBcImhlYWRpbmdcIiwgXCJsaW5rXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibWVudWl0ZW1cIiwgXCJtZW51aXRlbWNoZWNrYm94XCIsIFwibWVudWl0ZW1yYWRpb1wiLCBcIm9wdGlvblwiLCBcInJhZGlvXCIsIFwicm93XCIsXG4gICAgICAgICAgICAgICAgICAgIFwicm93Z3JvdXBcIiwgXCJyb3doZWFkZXJcIiwgXCJzd2l0Y2hcIiwgXCJ0YWJcIiwgXCJ0b29sdGlwXCIsLypcInRyZWVcIiwqL1widHJlZWl0ZW1cIl07XG4gICAgICAgICAgICAgICAgLy9nZXQgYXR0cmlidXRlIHJvbGVzIGFzIHdlbGwgYXMgaW1wbGljaXQgcm9sZXMuXG4gICAgICAgICAgICAgICAgbGV0IHJvbGVzID0gUlBUVXRpbC5nZXRSb2xlcyhydWxlQ29udGV4dCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb2xlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocm9sZXNXaXRoTmFtZUZyb21Db250ZW50LmluZGV4T2Yocm9sZXNbaV0pICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIHJlZmVyZW5jZWQgYnkgYSBjb21ib2JveC4gSWYgc28sIHRoZSBsYWJlbCBiZWxvbmdzIHRvIHRoZSBjb21ib2JveFxuICAgICAgICAgICAgbGV0IGlkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIik7XG4gICAgICAgICAgICBpZiAoaWQgJiYgaWQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAqW2FyaWEtY29udHJvbHM9JyR7aWR9J11bcm9sZT0nY29tYm9ib3gnXWApKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzSW5wdXQgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzTGFiZWw6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBSYWlzZSBpZiBtb3JlIHRoYW4gb25lIDxsYWJlbD4gZm91bmQgd2l0aCB0aGUgc2FtZSBmb3IgdmFsdWUuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0xhYmVsX1VuaXF1ZUZvclwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpsYWJlbFtmb3JdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBKQ0ggLSBOTyBPVVQgT0YgU0NPUEUgaGlkZGVuIGluIGNvbnRleHRcbiAgICAgICAgICAgIGxldCBsYWJlbElkcyA9IFJQVFV0aWwuZ2V0Q2FjaGUoRnJhZ21lbnRVdGlsLmdldE93bmVyRnJhZ21lbnQocnVsZUNvbnRleHQpLCBcIlJQVF9MYWJlbF9TaW5nbGVcIiwge30pXG4gICAgICAgICAgICBsZXQgaWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJmb3JcIik7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gIShpZCBpbiBsYWJlbElkcyk7XG4gICAgICAgICAgICBsYWJlbElkc1tpZF0gPSB0cnVlO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgbGFiZWwgaGFzIG5vIGNvbnRlbnRcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJWYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206bGFiZWxcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzX1JlZ3VsYXJcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpIHx8IFwiXCIpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19BcmlhTGFiZWxcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBsYWJlbEVsZW0gPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKSk7XG4gICAgICAgICAgICAgICAgaWYgKGxhYmVsRWxlbSAmJiBSUFRVdGlsLmhhc0lubmVyQ29udGVudChsYWJlbEVsZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfTGFiZWxsZWRCeVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGxhYmVsIGZvciBwb2ludHMgdG8gYW4gaW52YWxpZCBpZFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBGMTdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9MYWJlbF9SZWZWYWxpZFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpsYWJlbFtmb3JdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgaWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJmb3JcIik7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGlkKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZXMgbnVsbCBhbmQgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgaWYgKCF0YXJnZXQuaGFzQXR0cmlidXRlKFwicm9sZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBGYWlsIGlmIHdlJ3JlIHBvaW50aW5nIGF0IHNvbWV0aGluZyB0aGF0IGlzIGxhYmVsbGVkIGJ5IGFub3RoZXIgbWVjaGFuaXNtXG4gICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBub2RlTmFtZSA9PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT0gXCJzZWxlY3RcIiB8fCBub2RlTmFtZSA9PSBcInRleHRhcmVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGVOYW1lID09IFwiYnV0dG9uXCIgfHwgbm9kZU5hbWUgPT0gXCJkYXRhbGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlTmFtZSA9PSBcIm9wdGdyb3VwXCIgfHwgbm9kZU5hbWUgPT0gXCJvcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZU5hbWUgPT0gXCJrZXlnZW5cIiB8fCBub2RlTmFtZSA9PSBcIm91dHB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlTmFtZSA9PSBcInByb2dyZXNzXCIgfHwgbm9kZU5hbWUgPT0gXCJtZXRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlTmFtZSA9PSBcImZpZWxkc2V0XCIgfHwgbm9kZU5hbWUgPT0gXCJsZWdlbmRcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiaW5wdXRcIiAmJiB0YXJnZXQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHlwZSA9PSBcInRleHRcIiB8fCB0eXBlID09IFwicGFzc3dvcmRcIiB8fCB0eXBlID09IFwiZmlsZVwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBcImNoZWNrYm94XCIgfHwgdHlwZSA9PSBcInJhZGlvXCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09IFwiaGlkZGVuXCIgfHwgdHlwZSA9PSBcInNlYXJjaFwiIHx8IHR5cGUgPT0gXCJ0ZWxcIiB8fCB0eXBlID09IFwidXJsXCIgfHwgdHlwZSA9PSBcImVtYWlsXCIgfHwgIC8vSFRNTCA1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBcImRhdGVcIiB8fCB0eXBlID09IFwibnVtYmVyXCIgfHwgdHlwZSA9PSBcInJhbmdlXCIgfHwgdHlwZSA9PSBcImltYWdlXCIgfHwgLy9IVE1MIDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09IFwidGltZVwiIHx8IHR5cGUgPT0gXCJjb2xvclwiIHx8ICAvLyBIVE1MIDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09IFwiZGF0ZXRpbWVcIiB8fCB0eXBlID09IFwibW9udGhcIiB8fCB0eXBlID09IFwid2Vla1wiOyAvL0hUTUw1LjFcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIEFkZCBvbmUgbW9yZSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHRhcmdldCBlbGVtZW50IGlzIE5PVCBoaWRkZW4sIGluIHRoZSBjYXNlIHRoZSB0YXJnZXQgaXMgaGlkZGVuXG4gICAgICAgICAgICAgICAgLy8gZmxhZyBhIHZpb2xhdGlvbiByZWdhcmRsZXNzIG9mIHdoYXQgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgaXMuXG4gICAgICAgICAgICAgICAgaWYgKHBhc3NlZCAmJiAhUlBUVXRpbC5pc05vZGVWaXNpYmxlKHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJldFRva2VuIDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0VG9rZW4ucHVzaChpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IFtyZXRUb2tlbl0pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgcmV0VG9rZW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGxhYmVsIFwiZm9yXCIgcG9pbnRzIHRvIGFuIGhpZGRlbiBlbGVtZW50LlxuICAgICAgICAgKiBOb3RlOiBSUFQgZG9lc24ndCBzdXBwb3J0IHF1ZXJ5aW5nIHN0eWxlIGluZm9ybWF0aW9uLCBcbiAgICAgICAgICogc28gdGhpcyBydWxlIG9ubHkgYWRkcmVzc2VzIHR5cGU9XCJoaWRkZW5cIiBlbGVtZW50cy5cbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgRjY4XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfTGFiZWxfVGFyZ2V0SW52aXNpYmxlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmxhYmVsW2Zvcl1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgaWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJmb3JcIik7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGlkKTtcbiAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldEVsZW1lbnRBdHRyaWJ1dGUodGFyZ2V0LCBcInR5cGVcIikgIT0gXCJoaWRkZW5cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IEZsYWcgYSB2aW9sYXRpb24gaWYgQWNjZXNzaWJsZSBuYW1lIGRvZXMgbm90IG1hdGNoIG9yIGNvbnRhaW4gdGhlIHZpc2libGUgbGFiZWwgdGV4dC5cbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMSBTdWNjZXNzIENyaXRlcmlvbiAyLjUuMzogTGFiZWwgaW4gTmFtZVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIxX0xhYmVsX0FjY2Vzc2libGVcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmJ1dHRvbixhcmlhOmNoZWNrYm94LGFyaWE6Z3JpZGNlbGwsYXJpYTpsaW5rLGFyaWE6bWVudWl0ZW0sYXJpYTptZW51aXRlbWNoZWNrYm94XCJcbiAgICAgICAgICAgICtcIixhcmlhOm1lbnVpdGVtcmFkaW8sYXJpYTpvcHRpb24sYXJpYTpyYWRpbyxhcmlhOnN3aXRjaCxhcmlhOnRhYixhcmlhOnRyZWVpdGVtXCJcbiAgICAgICAgICAgICtcIixkb206aW5wdXQsZG9tOnRleHRhcmVhLGRvbTpzZWxlY3QsZG9tOm91dHB1dCxkb206bWV0ZXJcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKHJ1bGVDb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgIFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgbGV0IGlzSW5wdXRCdXR0b24gPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBidXR0b25UeXBlcyA9IFtcImJ1dHRvblwiLCBcInJlc2V0XCIsIFwic3VibWl0XCIvKiwgXCJpbWFnZVwiKi9dO1xuICAgICAgICAgICAgbGV0IGlucHV0VHlwZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRUeXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChidXR0b25UeXBlcy5pbmRleE9mKGlucHV0VHlwZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5wdXRCdXR0b24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHRoZUxhYmVsQnkgPSBSUFRVdGlsLmdldEFyaWFBdHRyaWJ1dGUocnVsZUNvbnRleHQsIFwiYXJpYS1sYWJlbGxlZGJ5XCIpO1xuICAgICAgICAgICAgaWYgKHRoZUxhYmVsQnkgJiYgIWlzSW5wdXRCdXR0b24pIHtcbiAgICAgICAgICAgICAgICAvLyBza2lwIHRoZSBjaGVja3MgaWYgaXQgaGFzIGFuIGFyaWEtbGFiZWxsZWRieSBzaW5jZSBpdCB0YWtlcyBwcmVjZWRlbmNlLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgdGhlTGFiZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICh0aGVMYWJlbEJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbFZhbHVlcyA9IHRoZUxhYmVsQnkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsYWJlbFZhbHVlcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRCeUlkID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGxhYmVsVmFsdWVzW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50QnlJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZUxhYmVsID0gUlBUVXRpbC5nZXRJbm5lclRleHQoZWxlbWVudEJ5SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhlTGFiZWwgPSBSUFRVdGlsLmdldEFyaWFBdHRyaWJ1dGUocnVsZUNvbnRleHQsIFwiYXJpYS1sYWJlbFwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoZUxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCB0ZXh0ID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmIChpc0lucHV0QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgICAgIC8qIE5vdGU6IERpc2FibGUgdGhlIGFsdCBjaGVjayBpbiBpbWFnZXMgdW50aWwgd2UgZ2V0IGNvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRUeXBlPT09XCJpbWFnZVwiICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFsdFwiKSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgJ2FsdCcgYXR0cmlidXRlIGFzIHZpc2libGUgdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfWVsc2UgXG4gICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlICd2YWx1ZScgYXR0cmlidXRlIGFzIHZpc2libGUgdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInZhbHVlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dFR5cGUgPT09IFwic3VibWl0XCIvKnx8aW5wdXRUeXBlPT09XCJpbWFnZVwiKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJzdWJtaXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXRUeXBlID09PSBcInJlc2V0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJyZXNldFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gbG9vayBmb3IgYSA8bGFiZWw+IGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsRWxlbSA9IFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKHJ1bGVDb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsYWJlbEVsZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnROb2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwibGFiZWxcIiAvKiYmIFJQVFV0aWwuaXNGaXJzdEZvcm1FbGVtZW50KHBhcmVudE5vZGUsIHJ1bGVDb250ZXh0KSovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudENsb25lID0gcGFyZW50Tm9kZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjbHVkZSBhbGwgZm9ybSBlbGVtZW50cyBmcm9tIHRoZSBsYWJlbCBzaW5jZSB0aGV5IG1pZ2h0IGFsc28gaGF2ZSBpbm5lciBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxFbGVtID0gUlBUVXRpbC5yZW1vdmVBbGxGb3JtRWxlbWVudHNGcm9tTGFiZWwocGFyZW50Q2xvbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBsYWJlbEVsZW0gPyBsYWJlbEVsZW0gOiBydWxlQ29udGV4dDtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHNUb1NraXBDb250ZW50Q2hlY2sgPSBbXCJtZXRlclwiLCBcIm91dHB1dFwiLCBcInByb2dyZXNzXCIsIFwic2VsZWN0XCIsIFwidGV4dGFyZWFcIl07XG4gICAgICAgICAgICAgICAgICAgIGlmICghbGFiZWxFbGVtICYmIGVsZW1lbnRzVG9Ta2lwQ29udGVudENoZWNrLmluZGV4T2Yobm9kZU5hbWUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IFwiXCI7IC8vIHNraXAgY29udGVudCBjaGVjayBmb3Igc29tZSBlbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSB2aXNpYmxlIHRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBSUFRVdGlsLmdldElubmVyVGV4dChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8qIE5vdGU6IERpc2FibGUgdGhpcyBhbHQgY2hlY2sgaW4gaW1hZ2VzIGZvciBub3cgdW50aWwgd2UgZ2V0IGNvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciB0aGUgYWx0IGF0dHJpYnV0ZSBvZiBhbiBpbWFnZSB3aGljaCBpcyBjb25zaWRlcmVkIHZpc2libGUgdGV4dC5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGhhc0ltZ0FsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5maXJzdENoaWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudyA9IFJQVFV0aWwubmV3IE5vZGVXYWxrZXIoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWhhc0ltZ0FsdCAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gZWxlbWVudCAmJiBudy5ub2RlICE9IGVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNJbWdBbHQgPSAobncubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiaW1nXCIgJiYgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShudy5ub2RlLCBcImFsdFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0ltZ0FsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dCA/IHRleHQgKyBudy5ub2RlLmdldEF0dHJpYnV0ZShcImFsdFwiKSA6IG53Lm5vZGUuZ2V0QXR0cmlidXRlKFwiYWx0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBub25hbHBoYW51bWVyaWMgPSAvW15hLXpBLVowLTldL2c7XG5cbiAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKG5vbmFscGhhbnVtZXJpYywgXCIgXCIpOyAvLyBvbmx5IGNvbnNpZGVyIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRUZXh0ID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHRleHQpLnRvTG93ZXJDYXNlKCk7IC8vIExlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGRpZmZlcmVuY2UgaW4gY2FzZSBzZW5zaXRpdml0eSBzaG91bGQgYmUgaWdub3JlZC5cblxuICAgICAgICAgICAgICAgIHRoZUxhYmVsID0gdGhlTGFiZWwucmVwbGFjZShub25hbHBoYW51bWVyaWMsIFwiIFwiKTsgLy8gb25seSBjb25zaWRlciBhbHBoYW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkTGFiZWwgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcodGhlTGFiZWwpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZFRleHQubGVuZ3RoID4gMSkgeyAvLyBza2lwIG5vbi10ZXh0IGNvbnRlbnQuIGUuZy4gPGJ1dHRvbiBhcmlhLWxhYmVsPVwiY2xvc2VcIj5YPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IG5vcm1hbGl6ZWRMYWJlbC5pbmRleE9mKG5vcm1hbGl6ZWRUZXh0KTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBBdm9pZCBtYXRjaGluZyBwYXJ0aWFsIHdvcmRzLmUuZy4gdGV4dCBcIm5hbWVcIiBzaG91bGQgbm90IG1hdGNoICdzdXJuYW1lJyBvciAnbmFtZXMnXG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiA+PSAwICYmIG5vcm1hbGl6ZWRMYWJlbC5sZW5ndGggPiBub3JtYWxpemVkVGV4dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZXR0ZXJzID0gL15bMC05YS16QS1aXSskLztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobG9jYXRpb24gKyBub3JtYWxpemVkVGV4dC5sZW5ndGgpIDwgbm9ybWFsaXplZExhYmVsLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGVuZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aGVDaGFyID0gbm9ybWFsaXplZExhYmVsLmNoYXJBdChsb2NhdGlvbiArIG5vcm1hbGl6ZWRUZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoZUNoYXIubWF0Y2gobGV0dGVycykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3NlZCAmJiBsb2NhdGlvbiA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBiZWdpbm5pbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGhlQ2hhciA9IG5vcm1hbGl6ZWRMYWJlbC5jaGFyQXQobG9jYXRpb24gLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhlQ2hhci5tYXRjaChsZXR0ZXJzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uID09PSAtMSkgeyAvLyBjaGVjayB0aGF0IHZpc2libGUgdGV4dCBjb250ZW50IG9mIHRoZSB0YXJnZXQgaXMgY29udGFpbmVkIHdpdGhpbiBpdHMgYWNjZXNzaWJsZSBuYW1lLlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNMYWJlbCB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNMaXN0OiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIGlkOiBcIlJQVF9MaXN0X01pc3VzZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpkbCwgZG9tOnVsLCBkb206b2wsIGRvbTpkaXIsIGRvbTptZW51LCBkb206bGksIGRvbTpkZCwgZG9tOmR0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pIDogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkO1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgLy8gR2V0IGFsbCB0aGUgY2hpbGRyZW5zIG9mIHRoZSBydWxlQ29udGV4dFxuICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gcnVsZUNvbnRleHQuY2hpbGRyZW5cblxuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiZGxcIikge1xuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3QgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGxldCB3YWxrQ2hpbGRyZW4gPSBydWxlQ29udGV4dC5maXJzdENoaWxkIGFzIE5vZGU7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgcHJlc2VudGF0aW9uYWxGb3VuZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGNoaWxkcmVucyBzZXQgYXMgcGFzc2VkLCBzaW5jZSBkbCBlbGVtZW50cyBjYW4gaGF2ZVxuICAgICAgICAgICAgICAgIC8vIHplcm8gb3IgbW9yZSBvZjogb25lIG9yIG1vcmUgZHQgZWxlbWVudHMsIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGRkIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgaWYgKCFydWxlQ29udGV4dC5jaGlsZHJlbiB8fCBydWxlQ29udGV4dC5jaGlsZHJlbi5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgd2Fsa0NoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YWxrQ2hpbGRyZW4ubm9kZVR5cGUgPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHdhbGtDaGlsZHJlbi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hpbGUgd2Fsa2luZyB0aHJvdWdoIHRoZSBlbGVtZW50cyB1bmRlciBkbCwgaWYgd2UgZmluZCBhIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXNlbnRhdGlvbmFsIGVsZW1lbnQgd2UgbW92ZSB0byB0aGUgbmV4dCBlbGVtZW50IGFzIHByZXNlbnRhdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudHMgYXJlIGFsbG93ZWQgdW5kZXIgbGlzdCBlbGVtZW50cyBhcyB0aGV5IGFyZSBvbmx5IGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdHRpbmcgdGV4dCBub2Rlcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5pc1ByZXNlbnRhdGlvbmFsRWxlbWVudCh3YWxrQ2hpbGRyZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWxrQ2hpbGRyZW4gPSB3YWxrQ2hpbGRyZW4ubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgc2V0IHRvIHBhc3MgaWYgd2UgZmluZCBkZCBvciBkdCBlbGVtZW50LCBpbiB0aGUgY2FzZSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuIGVsZW1lbnQgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIHdlIHdpbGwgY2F0Y2ggaXQgaGVyZS4gaS5lLiBpbWcgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IG5vZGVOYW1lID09IFwiZGRcIiB8fCBub2RlTmFtZSA9PSBcImR0XCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGZpcnN0IGFuZCBsYXN0IG5vZGUgZGVwZW5kaW5nIG9uIHdoaWNoIGlzIGZvdW5kIGZpcnN0IGFuZCBsYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0ID09IFwiXCIpIGZpcnN0ID0gbm9kZU5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IG5vZGVOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa0NoaWxkcmVuID0gd2Fsa0NoaWxkcmVuLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgd2UgaGF2ZSBmb3VuZCBkdCBhbmQgZGQgZWxlbWVudHMgdW5kZXIgZGwgd2UgcGFzcyByaWdodCBhd2F5LlxuICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZXJlIGlzIG5vIGR0IG9yIGRkIGVsZW1lbnQsIGJ1dCBidW5jaCBvZiBwcmVzZW50YXRpb25hbCBlbGVtZW50cyB3ZSBtYXJrIHRoaXMgYXMgYVxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzLiBJbiB0aGUgY2FzZSB0aGF0IHRoZXJlIGFyZSBvdGhlciBlbGVtZW50cyBzdWNoIGFzIGltZyB3ZSB3aWxsIHN0aWxsIHRyaWdnZXIgYSB2aW9sYXRpb24uXG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IChwYXNzZWQgJiYgZmlyc3QgPT0gXCJkdFwiICYmIGxhc3QgPT0gXCJkZFwiKSB8fCAocGFzc2VkICYmIHByZXNlbnRhdGlvbmFsRm91bmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJsaVwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgW1widWxcIiwgXCJvbFwiLCBcImRpclwiLCBcIm1lbnVcIl0pICE9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09IFwiZGRcIiB8fCBub2RlTmFtZSA9PSBcImR0XCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBcImRsXCIpICE9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCB3YWxrQ2hpbGRyZW4gPSBydWxlQ29udGV4dC5maXJzdENoaWxkIGFzIE5vZGU7XG4gICAgICAgICAgICAgICAgLy8gWmVybyBvciBtb3JlIGxpIGVsZW1lbnRzIGFyZSBwZXJtaXR0ZWQgaW5zaWRlIG9mIDxvbD4sIDx1bD4gb3IgPG1lbnU+IGVsZW1lbnRzIG5vdyBhcyBwZXIgdGhlIGh0bWw1IHNwZWMuIFRoaXMgaGFuZGxlcyB0aGUgY2FzZVxuICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlcmUgYXJlIHplcm8gZWxlbWVudHMgdW5kZXIgdGhlIDxvbD4sIDx1bD4gb3IgPG1lbnU+LlxuICAgICAgICAgICAgICAgIGlmICgobm9kZU5hbWUgPT0gXCJ1bFwiIHx8IG5vZGVOYW1lID09IFwib2xcIiB8fCBub2RlTmFtZSA9PSBcIm1lbnVcIikgJiYgKCFydWxlQ29udGV4dC5jaGlsZHJlbiB8fCBydWxlQ29udGV4dC5jaGlsZHJlbi5sZW5ndGggPT0gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGlGb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJlc2VudGF0aW9uYWxGb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIHdhbGtDaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGlsZSB3YWxraW5nIHRocm91Z2ggdGhlIGxpc3QgZWxlbWVudHMsIGlmIHdlIGZpbmQgYSBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByZXNlbnRhdGlvbmFsIGVsZW1lbnQgd2Ugc2tpcCBjaGVja2luZyBhcyBwcmVzZW50YXRpb25hbFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudHMgYXJlIGFsbG93ZWQgdW5kZXIgbGlzdCBlbGVtZW50cyBhcyB0aGV5IGFyZSBvbmx5IGZvclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9ybWF0dGluZyB0ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNQcmVzZW50YXRpb25hbEVsZW1lbnQod2Fsa0NoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbGtDaGlsZHJlbiA9IHdhbGtDaGlsZHJlbi5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyBpZiB0aGUgbm9kZSB0eXBlIGlzIGFueXRoaW5nIGJ1dCAxLCBvciBpbiB0aGUgY2FzZSB0aGF0IGl0IGlzIGEgbGkgZWxlbWVudC4gRm9yIGFueSBvdGhlciBub2RlIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgd2lsbCBiZSBjYXVnaHQgaGVyZSB0aGF0IGVsZW1lbnQgaXMgbm90IGFsbG93ZWQgdW5kZXIgbGlzdCBub2RlLlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRnVydGhlcm1vcmUgaW4gdGhlIGNhc2UgdGhhdCB0aGVyZSBpcyBhIHRlbXBsYXRlIGVsZW1lbnQgd2l0aCB0aGUgcGFyZW50IGJlaW5nIHVsL29sIGRvbid0IGZsYWcgYSB2aW9sYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHdhbGtDaGlsZHJlbi5ub2RlVHlwZSAhPSAxIHx8IHdhbGtDaGlsZHJlbi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwibGlcIiB8fCAod2Fsa0NoaWxkcmVuLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJ0ZW1wbGF0ZVwiICYmIChub2RlTmFtZSA9PSBcInVsXCIgfHwgbm9kZU5hbWUgPT0gXCJvbFwiKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBsaSBmb3VuZCB0byB0cnVlIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgKG5vZGVUeXBlPTEpIGlzIGFuIGxpIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpRm91bmQgPSBsaUZvdW5kIHx8ICh3YWxrQ2hpbGRyZW4ubm9kZVR5cGUgPT0gMSAmJiB3YWxrQ2hpbGRyZW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImxpXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa0NoaWxkcmVuID0gd2Fsa0NoaWxkcmVuLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgaXQgaGFzIHBhc3NlZCBhbmQgYWxzbyBsaSBlbGVtZW50IGlzIGZvdW5kIHVuZGVyIGxpc3Qgbm9kZSwgd2UgcGFzcyByaWdodCBhd2F5LlxuICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZXJlIGlzIG5vIGxpIGVsZW1lbnQsIGJ1dCBidW5jaCBvZiBwcmVzZW50YXRpb25hbCBlbGVtZW50cyB3ZSBtYXJrIHRoaXMgYXMgYVxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzLiBJbiB0aGUgY2FzZSB0aGF0IHRoZXJlIGFyZSBvdGhlciBlbGVtZW50cyBzdWNoIGFzIGltZyB3ZSB3aWxsIHN0aWxsIHRyaWdnZXIgYSB2aW9sYXRpb24uXG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IChwYXNzZWQgJiYgbGlGb3VuZCkgfHwgKHBhc3NlZCAmJiBwcmVzZW50YXRpb25hbEZvdW5kKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiBcIlJQVF9MaXN0X1VzZU1hcmt1cFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCB3YWxrTm9kZSA9IHJ1bGVDb250ZXh0LmZpcnN0Q2hpbGQgYXMgTm9kZTtcbiAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgd2Fsa05vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBDb21wbHkgdG8gdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgd2lsbCBiZSBkb25lIGJ5IGRlZmF1bHQgYXMgdGhpcyBydWxlIHRyaWdnZXJzIG9uIGVhY2ggZWxlbWVudFxuICAgICAgICAgICAgICAgIC8vIGFuZCBmb3IgZWFjaCBlbGVtZW50IGl0IG9ubHkgY2hlY2tzIHRoYXQgc2luZ2xlIGVsZW1lbnRzIHRleHQgbm9kZXMgYW5kIG5vdGhpbmcgZWxzZS4gU28gYWxsIGlubmVyIGVsZW1lbnRzIHdpbGwgYmVcbiAgICAgICAgICAgICAgICAvLyBjb3ZlcmVkIG9uIHRoZWlyIG93bi4gQ3VycmVudGx5IGZvciB0aGlzIHJ1bGUgYnkgZGVmYXVsdCBDaGVjayBIaWRkZW4gQ29udGVudCB3aWxsIHdvcmssIGFzIHdlIGFyZSBkb2luZ1xuICAgICAgICAgICAgICAgIC8vIGEgbm9kZSB3YWxrIG9ubHkgb24gc2libGluZ3Mgc28gaXQgd291bGQgbm90IGdldCB0ZXh0IG5vZGVzIGZyb20gb3RoZXIgc2libGluZ3MgYXQgYWxsLlxuICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIGluIHRoZSBmdXR1cmUgc29tZXRoaW5nIGNobmdlcywganVzdCBuZWVkIHRvIGFkZCAmJiAhUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHdhbGtOb2RlKSB0byB0aGUgYmVsb3dcbiAgICAgICAgICAgICAgICAvLyBpZi5cbiAgICAgICAgICAgICAgICBpZiAod2Fsa05vZGUubm9kZU5hbWUgPT0gXCIjdGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRWYWwgPSB3YWxrTm9kZS5ub2RlVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmYWlsdXJlID0gL15bIFxcdFxcclxcbl0qWyggXSpbMS05XSpbXFwqXFwtKS5dWyBcXHRdW0EtWixhLXpdKy8udGVzdCh0eHRWYWwpO1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhZmFpbHVyZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGJsb2NrIGxldmVsIGVsZW1lbnQgYmVmb3JlIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGR1ZSB0byB0aGluZ3MgbGlrZSA8aT5Tb21lIHNlbnRlbmNlPC9pPi4gTmV3IHNlbnRlbmNlLlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIod2Fsa05vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgbncucHJldk5vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IG53Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoW1wiYmxvY2txdW90ZVwiLCBcImNlbnRlclwiLCBcImRpclwiLCBcImRpdlwiLCBcImZvcm1cIiwgXCJoMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImgyXCIsIFwiaDNcIiwgXCJoNFwiLCBcImg1XCIsIFwiaDZcIiwgXCJoclwiLCBcImJyXCIsIFwibWVudVwiLCBcInBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwcmVcIl0uaW5jbHVkZXMobm9kZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCIjdGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eHQgPSBudy5ub2RlLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHh0Lmxlbmd0aCA+IDAgJiYgIVtcIiBcIiwgXCJcXHRcIiwgXCJcXG5cIl0uaW5jbHVkZXModHh0LmNoYXJBdCh0eHQubGVuZ3RoIC0gMSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3YWxrTm9kZSA9IHdhbGtOb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IHRyaWdnZXIgaWYgd2UncmUgbm90IGluIHRoZSBib2R5IG9yIGlmIHdlJ3JlIGluIGEgc2NyaXB0XG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrQW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBbXCJib2R5XCIsIFwic2NyaXB0XCJdKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBjaGVja0FuY2VzdG9yID09IG51bGwgfHwgY2hlY2tBbmNlc3Rvci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwiYm9keVwiO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNMaXN0IH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc01hcnF1ZWU6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiB0aGVyZSBpcyBhIG1hcnF1ZWUgZWxlbWVudFxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9NYXJxdWVlX1RyaWdnZXJcIixcbiAgICAgICAgY29udGV4dDogXCJkb206bWFycXVlZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc01hcnF1ZWUgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNNZWRpYTogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFJhaXNlIGVycm9yIGlmIG51bWJlciBvZiBhbHQgY2hhcmFjdGVycyBpcyBncmVhdGVyIHRoYW4gTi5cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfTWVkaWFfQWx0QnJpZWZcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW1nW2FsdF0sIGRvbTphcHBsZXRbYWx0XSwgZG9tOmFyZWFbYWx0XSwgZG9tOmVtYmVkW2FsdF0sIGRvbTppbnB1dFt0eXBlXVthbHRdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIG1heEFsdDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMTUwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IGFsdExlbmd0aCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKS50cmltKCkubGVuZ3RoO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGFsdExlbmd0aCA8PSB2YWxpZGF0ZVBhcmFtcy5tYXhBbHQudmFsdWU7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgdmFyaW91cyBtZWRpYSB0eXBlc1xuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzI0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfTWVkaWFfQXVkaW9UcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmJnc291bmQsIGRvbTphW2hyZWZdLCBkb206YXJlYVtocmVmXSwgZG9tOmVtYmVkLCBkb206b2JqZWN0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHBhc3NlZDtcbiAgICAgICAgICAgIGxldCB0aGlzTm9kZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAodGhpc05vZGUgPT0gXCJiZ3NvdW5kXCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gIVJQVFV0aWwuaXNBdWRpb09iakVtYmVkTGluayhydWxlQ29udGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gbnVsbDsgLy8gT3V0IG9mIFNjb3BlXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVNYW51YWwoXCJNYW51YWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgcG9zc2libGUgdmlkZW9cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NTlcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIixcbiAgICAgICAgY29udGV4dDogXCJkb206YVtocmVmXSwgZG9tOmFyZWFbaHJlZl0sIGRvbTphcHBsZXQsIGRvbTplbWJlZCwgZG9tOm9iamVjdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiYXBwbGV0XCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gIVJQVFV0aWwuaXNWaWRlb09iakVtYmVkTGluayhydWxlQ29udGV4dCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlTWFudWFsKFwiTWFudWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIGF1ZGlvL3ZpZGVvIHdpdGggYW4gYWx0IGF0dHJpYnV0ZVxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzQ2MFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0F1ZGlvVmlkZW9BbHRGaWxlbmFtZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTphcmVhW2FsdF0sIGRvbTplbWJlZFthbHRdXCIsIC8vIERvbid0IGNoZWNrIGFyZWEgLSBpdCdzIGEgZHVwZSB3aXRoIGc0NTNcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgdXJpID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiYXJlYVwiKSB7XG4gICAgICAgICAgICAgICAgdXJpID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cmkgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJzcmNcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh1cmkgPT0gbnVsbCkgdXJpID0gXCJcIjtcbiAgICAgICAgICAgIGxldCBleHQgPSBSUFRVdGlsLmdldEZpbGVFeHQodXJpKTtcbiAgICAgICAgICAgIGxldCBpc0F1ZFZpZCA9IGV4dC5sZW5ndGggIT0gMCAmJiAoUlBUVXRpbC5pc0F1ZGlvRXh0KGV4dCkgfHwgUlBUVXRpbC5pc1ZpZGVvRXh0KGV4dCkpO1xuICAgICAgICAgICAgbGV0IGFsdFRleHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIik7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gIWlzQXVkVmlkIHx8IChhbHRUZXh0Lmxlbmd0aCA+IDAgJiYgYWx0VGV4dC5pbmRleE9mKGV4dCkgPT0gLTEpO1xuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgcG9zc2libGUgdmlkZW9cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc1MDFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb09iamVjdFRyaWdnZXJcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZW1iZWQsIGRvbTpvYmplY3RcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSAhUlBUVXRpbC5pc1ZpZGVvT2JqRW1iZWRMaW5rKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlTWFudWFsKFwiTWFudWFsXzFcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciB2YXJpb3VzIGltYWdlIGFuZCBjb2xvciB1c2FnZVxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzI0NVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0ltZ0NvbG9yVXNhZ2VcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZW1iZWQsIGRvbTpvYmplY3QsIGRvbTppbWcsIGRvbTphcHBsZXQsIGRvbTpzY3JpcHQsIGRvbTpzdHlsZSwgZG9tOmlucHV0LCBkb206bGluayxcIiArXG4gICAgICAgICAgICBcImRvbToqW3N0eWxlXSwgZG9tOmZvbnRbY29sb3JdLCBkb206dHJbYmdjb2xvcl0sIGRvbTp0aFtiZ2NvbG9yXSwgXCIgK1xuICAgICAgICAgICAgXCJkb206dGRbYmdjb2xvcl1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSdzIHN0eWxlIHVzZWQsIGl0IGZhaWxzIGFueXdheVxuICAgICAgICAgICAgaWYgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJzdHlsZVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiaW5wdXRcIikge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpICE9ICdpbWFnZSc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PSBcImxpbmtcIikge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicmVsXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyZWxcIikudG9Mb3dlckNhc2UoKSAhPSAnc3R5bGVzaGVldCc7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgdHJpZ2dlciBvbiBvbmUgbGluayB0byBwcm9tcHQgdGhlIG1hbnVhbCBjaGVjayAtIHRoYXQncyBlbm91Z2hcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC50cmlnZ2VyT25jZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9NZWRpYV9JbWdDb2xvclVzYWdlX0xpbmtzXCIsIHBhc3NlZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PSBcImVtYmVkXCIgfHwgbm9kZU5hbWUgPT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHlwZS5zdGFydHNXaXRoKFwidGV4dFwiKSB8fCB0eXBlLnN0YXJ0c1dpdGgoXCJhdWRpb1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJjb2RldHlwZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJjb2RldHlwZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHR5cGUuc3RhcnRzV2l0aChcInRleHRcIikgfHwgdHlwZS5zdGFydHNXaXRoKFwiYXVkaW9cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZSgobm9kZU5hbWUgPT0gXCJlbWJlZFwiKSA/IFwic3JjXCIgOiBcImRhdGFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZW5hbWUgPT0gbnVsbCkgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4dCA9IFJQVFV0aWwuZ2V0RmlsZUV4dChmaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBleHQubGVuZ3RoID4gMCAmJiBSUFRVdGlsLmlzQXVkaW9FeHQoZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJzY3JpcHRcIikge1xuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHRyaWdnZXIgb24gb25lIHNjcmlwdCB0byBwcm9tcHQgdGhlIG1hbnVhbCBjaGVjayAtIHRoYXQncyBlbm91Z2hcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC50cmlnZ2VyT25jZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9NZWRpYV9JbWdDb2xvclVzYWdlX1NjcmlwdHNcIiwgcGFzc2VkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciBsaW5rcyB0byBkb2N1bWVudHNcbiAgICAgICAgICogT3JpZ2luOiBDSTE2MlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmFbaHJlZl0sZG9tOmFyZWFbaHJlZl1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgaHJlZiA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4gICAgICAgICAgICBsZXQgZXh0ID0gUlBUVXRpbC5nZXRGaWxlRXh0KGhyZWYpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9ICFbXCIuZG9jeFwiLCBcIi5kb2NcIiwgXCIucGRmXCIsIFwiLm9kdFwiXS5pbmNsdWRlcyhleHQpO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVNYW51YWwoXCJNYW51YWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNNZWRpYSB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc01ldGE6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIG1ldGEgcmVkaXJlY3QgaXMgbm9uLXplcm9cbiAgICAgICAgICogT3JpZ2luOiBINzYsIEY0MSwgUlBUIDUuNiBHMjU0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9cIixcbiAgICAgICAgY29udGV4dDogXCJkb206bWV0YVtodHRwLWVxdWl2XVtjb250ZW50XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaHR0cC1lcXVpdlwiKS50b0xvd2VyQ2FzZSgpICE9PSAncmVmcmVzaCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAvLyBJbnZhbGlkIGNvbnRlbnQgZmllbGRcbiAgICAgICAgICAgIGlmICghY29udGVudC5tYXRjaCgvXlxcZCskLykgJiYgIWNvbnRlbnQubWF0Y2goL15cXGQrOy8pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZmFpbCA9IGNvbnRlbnQubWF0Y2goL15cXGQrOyArW14gXS8pICYmICFjb250ZW50LnN0YXJ0c1dpdGgoXCIwO1wiKTtcbiAgICAgICAgICAgIGlmIChmYWlsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIG1ldGEgcmVmcmVzaFxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzMzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfTWV0YV9SZWZyZXNoXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOm1ldGFbaHR0cC1lcXVpdl1bY29udGVudF1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJodHRwLWVxdWl2XCIpLnRvTG93ZXJDYXNlKCkgIT09ICdyZWZyZXNoJylcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAvLyBJbnZhbGlkIGNvbnRlbnQgZmllbGRcbiAgICAgICAgICAgIGlmICghY29udGVudC5tYXRjaCgvXlxcZCskLykgJiYgIWNvbnRlbnQubWF0Y2goL15cXGQrOy8pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZmFpbCA9ICFjb250ZW50Lm1hdGNoKC9eXFxkKzsgK1teIF0vKTtcbiAgICAgICAgICAgIHJldHVybiAhZmFpbCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3Igdmlld3BvcnRcbiAgICAgICAgICogT3JpZ2luOiBBQ1QgYjRmMGMzIGh0dHBzOi8vYWN0LXJ1bGVzLmdpdGh1Yi5pby9ydWxlcy9iNGYwYzNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIm1ldGFfdmlld3BvcnRfem9vbVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTptZXRhW25hbWVdW2NvbnRlbnRdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpLnRvTG93ZXJDYXNlKCkgIT09ICd2aWV3cG9ydCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgLy8gbmVpdGhlciBtYXhpbXVtLXNjYWxlIG5vciB1c2VyLXNjYWxhYmxlIChkZWZhdWx0IHllcylcbiAgICAgICAgICAgIGlmICghY29udGVudCB8fCBjb250ZW50LnRyaW0oKSA9PT0gJyd8fCAoIWNvbnRlbnQuaW5jbHVkZXMoJ21heGltdW0tc2NhbGUnKSAmJiAhY29udGVudC5pbmNsdWRlcygndXNlci1zY2FsYWJsZScpKSkgXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCB1c2VyX21zZyA9IG51bGw7XG4gICAgICAgICAgICBsZXQgbWF4X21zZyA9IG51bGw7IFxuICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBjb250ZW50LnNwbGl0KFwiLFwiKTsgICAgXG4gICAgICAgICAgICBsZXQgdXNlcl9zY2FsZV92YWx1ZSA9ICd5ZXMnO1xuICAgICAgICAgICAgbGV0IG1heGltdW1fc2NhbGVfdmFsdWUgPSAnMi4wJztcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCAgb2YgcHJvcHMpICB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGllY2VzID0gcHJvcC50cmltKCkuc3BsaXQoJz0nKTtcbiAgICAgICAgICAgICAgICBpZiAocGllY2VzLmxlbmd0aCA8IDIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wLmluY2x1ZGVzKCd1c2VyLXNjYWxhYmxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdXNlcl9tc2cgPSBwcm9wO1xuICAgICAgICAgICAgICAgICAgICB1c2VyX3NjYWxlX3ZhbHVlID0gcGllY2VzWzFdLnRyaW0oKTsgXG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyX3NjYWxlX3ZhbHVlLnN0YXJ0c1dpdGgoXCInXCIpIHx8IHVzZXJfc2NhbGVfdmFsdWUuc3RhcnRzV2l0aCgnXCInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9zY2FsZV92YWx1ZSA9IHVzZXJfc2NhbGVfdmFsdWUuc3Vic3RyaW5nKDEsIHVzZXJfc2NhbGVfdmFsdWUubGVuZ3RoLTEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wLmluY2x1ZGVzKCdtYXhpbXVtLXNjYWxlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4X21zZyA9IHByb3A7XG4gICAgICAgICAgICAgICAgICAgIG1heGltdW1fc2NhbGVfdmFsdWUgPSBwaWVjZXNbMV0udHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF4aW11bV9zY2FsZV92YWx1ZS5zdGFydHNXaXRoKFwiJ1wiKSB8fCBtYXhpbXVtX3NjYWxlX3ZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1fc2NhbGVfdmFsdWUgPSBtYXhpbXVtX3NjYWxlX3ZhbHVlLnN1YnN0cmluZygxLCBtYXhpbXVtX3NjYWxlX3ZhbHVlLmxlbmd0aC0xKS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IE51bWJlcih1c2VyX3NjYWxlX3ZhbHVlKTtcbiAgICAgICAgICAgIGlmICghaXNOYU4odmFsdWUpKSB7IFxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+PTEgfHwgdmFsdWUgPD0gLTEpIHVzZXJfc2NhbGVfdmFsdWUgPSAneWVzJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IG1heGltdW1fc2NhbGUgPSAyLjA7IFxuICAgICAgICAgICAgdmFsdWUgPSBOdW1iZXIobWF4aW11bV9zY2FsZV92YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKHZhbHVlKSkgeyBcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwKSBtYXhpbXVtX3NjYWxlID0gMi4wO1xuICAgICAgICAgICAgICAgIGVsc2UgbWF4aW11bV9zY2FsZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4aW11bV9zY2FsZV92YWx1ZSA9PT0gJ3llcycpIG1heGltdW1fc2NhbGUgPSAxLjA7XG4gICAgICAgICAgICAgICAgZWxzZSBtYXhpbXVtX3NjYWxlID0gMC4xO1xuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIC8vIHVzZXItc2NhbGFibGUgaXMgbm90IHNldCB0byAneWVzJywgaWdub3JlIG1heGltdW1fc2NhbGVcbiAgICAgICAgICAgIGlmICh1c2VyX3NjYWxlX3ZhbHVlICE9PSAneWVzJyApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFt1c2VyX21zZ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdXNlci1zY2FsYWJsZSBpcyAneWVzJywgYnV0IG1heGltdW1fc2NhbGUgaXMgdG9vIHNtYWxsXG4gICAgICAgICAgICBpZiAobWF4aW11bV9zY2FsZSA8IDIuMCApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFttYXhfbXNnXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzTWV0YSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBBUklBTWFwcGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uXCI7XG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNPYmplY3Q6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGFuIG9iamVjdCBlbGVtZW50IGRvZXMgbm90IGhhdmUgaW5uZXIgdGV4dFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMjcsIEg1M1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX09iamVjdF9IYXNUZXh0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOm9iamVjdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuXG4gICAgICAgICAgICAvLyBEZXRlY3QgaWYgdGhpcyBvYmplY3QgaXMgb2YgdHlwZSB0ZXh0LCBieSBjaGVja2luZyB0aGUgb2JqZWN0IHR5cGUgaW4gdGhlIGNhc2UgaXQgaXMgdGV4dCB0aGVuIGRvIG5vdCB0cmlnZ2VyIHRoaXMgcnVsZVxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikgJiYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikpLmluZGV4T2YoXCJ0ZXh0XCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJvbGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpO1xuICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwicHJlc2VudGF0aW9uXCIgfHwgcm9sZSA9PT0gXCJub25lXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUGVyIEFDVCwgaWdub3JlIGVtYmVkZGVkIEhUTUwgZmlsZXNcbiAgICAgICAgICAgIGxldCBkYXRhID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiZGF0YVwiKTtcbiAgICAgICAgICAgIGxldCBleHQgPSBkYXRhICYmIHR5cGVvZiBkYXRhID09PSB0eXBlb2YgXCJcIiA/IGRhdGEuc3Vic3RyaW5nKGRhdGEubGFzdEluZGV4T2YoXCIuXCIpKSA6IFwiXCI7XG4gICAgICAgICAgICBpZiAoZXh0ID09PSBcIi5odG1sXCIgfHwgZXh0ID09PSBcIi5odG1cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpIHx8IEFSSUFNYXBwZXIuY29tcHV0ZU5hbWUocnVsZUNvbnRleHQpLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc09iamVjdCB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc1NjcmlwdDogUnVsZVtdID0gW1xuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIHdoZW4gb25jbGljayBldmVudHMgYXJlIHVzZWQgb24gZWxlbWVudHMgb3RoZXIgdGhhbiBsaW5rcywgYW5kIHJlZmVyZW5jZVxuICAgICAgICAgKiBhbiBIVE1MIHBhZ2UuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDcwIEVycm9yXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW29uY2xpY2tdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIGZhaWxTdWJzdHJpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcIi5hc3BcIiwgXCIuYXNweFwiLCBcIi5jZm1cIiwgXCIuY2ZtbFwiLCBcIi5jZ2lcIiwgXCIuaHRtXCIsIFwiLmh0bWxcIiwgXCIuc2h0bVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIuc2h0bWxcIiwgXCIucGhwXCIsIFwiLnBsXCIsIFwiLnB5XCIsIFwiLnNodG1cIiwgXCIuc2h0bWxcIiwgXCIueGh0bWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYXRpb24uaHJlZlwiXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJbc3RyaW5nXVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGFyaWEtcm9sZSBzcGVjaWZpZWQsIGRvbid0IHRyaWdnZXIgdGhpcy5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInJvbGVcIik7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGFuIGEgb3IgYXJlYSwgZG9uJ3QgdHJpZ2dlciBpZiB0aGVyZSdzIGFuIGhyZWYuXG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcGFzc2VkID0gcGFzc2VkIHx8ICgobm9kZU5hbWUgPT0gXCJhXCIgfHwgbm9kZU5hbWUgPT0gXCJhcmVhXCIpICYmIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiaHJlZlwiKSk7XG5cbiAgICAgICAgICAgIC8vIElmIHRoZSBndWFyZHMgZmFpbGVkLCBjaGVjayB0byBzZWUgaWYgdGhleSdyZSBsb29raW5nIGF0IGxpbmtzXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIGxldCBmYWlsU3Vic3RyaW5nID0gdmFsaWRhdGVQYXJhbXMuZmFpbFN1YnN0cmluZy52YWx1ZTs7XG4gICAgICAgICAgICAgICAgbGV0IG9uY2xpY2sgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJvbmNsaWNrXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCBmYWlsU3Vic3RyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IG9uY2xpY2suaW5kZXhPZihmYWlsU3Vic3RyaW5nW2ldKSA9PSAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIHdoZW4gb25jbGljayBldmVudHMgYXJlIHVzZWQuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDcwIFdhcm5pbmdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbb25jbGlja11cIixcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBbXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMVwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIERvbid0IHRyaWdnZXIgdGhpcyBmb3IgU1ZHIGVsZW1lbnQgZm9yIG5vdyB1bnRpbCBhIGRldGVybWluYXRpb24gaXMgbWFkZSAoYnkgUmljaClcbiAgICAgICAgICAgIC8vIHRvIHN1cHBvcnQgU1ZHIGF0IGEgcG9pbnQgd2hlbiB0aGUgU1ZHIGExMXkgc3BlYyBpcyByZWFkeS5cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBcInN2Z1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gYXJpYS1yb2xlIHNwZWNpZmllZCwgZG9uJ3QgdHJpZ2dlciB0aGlzLlxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwicm9sZVwiKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG5cbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gbm9kZU5hbWUgPT0gXCJhXCIgfHwgbm9kZU5hbWUgPT0gXCJhcmVhXCIgfHwgbm9kZU5hbWUgPT0gXCJpbnB1dFwiO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlIHNjcmlwdCBibHVycyBvbiBmb2N1c1xuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIEY1NVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbb25mb2N1c11cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJvbmZvY3VzXCIpLmluZGV4T2YoXCIuYmx1cihcIikgPT0gLTE7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc1NjcmlwdCB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNTZWxlY3Q6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBzZWxlY3QgaGFzIGphdmFzY3JpcHQgZm9yIG9uY2hhbmdlIG9yIG9uZm9jdXNcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDg0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfU2VsZWN0X05vQ2hhbmdlQWN0aW9uXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnNlbGVjdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9ICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmNoYW5nZVwiKSAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25mb2N1c1wiKTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBzZWxlY3QgaGFzIG1vcmUgdGhhbiBYIG9wdGlvbnMgYW5kIG5vIG9wdGdyb3Vwc1xuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIODVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9TZWxlY3RfSGFzT3B0R3JvdXBcIixcbiAgICAgICAgY29udGV4dDogXCJkb206c2VsZWN0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIHBhcmFtTnVtT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMTAsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZXMgd2hlcmUgb3B0Z3JvdXAgaXMgaGlkZGVuLCB3aGljaCBzaG91bGQgdHJpZ2dlciBhIHZpb2xhdGlvbnNcbiAgICAgICAgICAgIC8vIGJ1dCBpbiB0aGUgY2FzZSB0aGF0IENoZWNrIGhpZGRlbiBvcHRpb24gaXMgc2V0IHRoZW4gc2hvdWxkIG5vdCB0cmlnZ2VyIGEgdmlvbGF0aW9uLlxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuZ2V0Q2hpbGRCeVRhZ0hpZGRlbihydWxlQ29udGV4dCwgXCJvcHRncm91cFwiLCBmYWxzZSwgdHJ1ZSkubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICAgIFJQVFV0aWwuZ2V0Q2hpbGRCeVRhZ0hpZGRlbihydWxlQ29udGV4dCwgXCJvcHRpb25cIiwgZmFsc2UsIHRydWUpLmxlbmd0aCA8PVxuICAgICAgICAgICAgICAgIHZhbGlkYXRlUGFyYW1zLnBhcmFtTnVtT3B0aW9ucy52YWx1ZTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzU2VsZWN0IH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwsIE5vZGVXYWxrZXIgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc1N0eWxlOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgb24gYWxsIHBhZ2VzIGNvbnRhaW5pbmcgQ1NTICh0cmlnZ2VyIG9uY2UpXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX1RyaWdnZXIyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnN0eWxlLCBkb206bGluaywgZG9tOipbc3R5bGVdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSBcImxpbmtcIiAmJlxuICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicmVsXCIpIHx8IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJlbFwiKS50b0xvd2VyQ2FzZSgpICE9IFwic3R5bGVzaGVldFwiKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgIT0gXCJzdHlsZVwiICYmIG5vZGVOYW1lICE9IFwibGlua1wiICYmXG4gICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwic3R5bGVcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwic3R5bGVcIikudHJpbSgpLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGxldCB0cmlnZ2VyZWQgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUlBUX1N0eWxlX1RyaWdnZXIyXCIsIGZhbHNlKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cmlnZ2VyZWQ7XG4gICAgICAgICAgICAvLyAgICAgICAgUGFja2FnZXMuamF2YS5sYW5nLlN5c3RlbS5vdXQucHJpbnRsbih0cmlnZ2VyZWQpO1xuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9TdHlsZV9UcmlnZ2VyMlwiLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZU1hbnVhbChcIk1hbnVhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIHVzZSBvZiBDU1MgYmFja2dyb3VuZCBpbWFnZXNcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NTZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VcIixcbiAgICAgICAgY29udGV4dDogXCJkb206c3R5bGUsIGRvbToqW3N0eWxlXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwibGlua1wiICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlbFwiKSAmJlxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJlbFwiKS50b0xvd2VyQ2FzZSgpID09IFwic3R5bGVzaGVldFwiKSB7XG4gICAgICAgICAgICAgICAgLy8gRXh0ZXJuYWwgc3R5bGVzaGVldCAtIHRyaWdnZXJcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLnRyaWdnZXJPbmNlKHJ1bGVDb250ZXh0LCBcIlJQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VcIiwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCAmJiBub2RlTmFtZSA9PSBcInN0eWxlXCIgfHwgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwic3R5bGVcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3R5bGVUZXh0O1xuICAgICAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcInN0eWxlXCIpXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlVGV4dCA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlVGV4dCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgICAgICAgICAgICAgIGxldCBiZ01hdGNoZXMgPSBzdHlsZVRleHQubWF0Y2goL2JhY2tncm91bmQ6W147XSovZyk7XG4gICAgICAgICAgICAgICAgaWYgKGJnTWF0Y2hlcyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBwYXNzZWQgJiYgaSA8IGJnTWF0Y2hlcy5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGJnTWF0Y2hlc1tpXS5pbmRleE9mKFwidXJsKFwiKSA9PSAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciB3aGVuIGNvbG9yIGlzIHVzZWQsIGJ1dCBoYXMgbm8gc2VtYW50aWMgbWVhbmluZy5cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NjYgRXJyb3JcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9TdHlsZV9Db2xvclNlbWFudGljczFcIixcbiAgICAgICAgY29udGV4dDogXCJkb206c3R5bGUsIGRvbToqW3N0eWxlXSwgZG9tOmZvbnRbY29sb3JdLCBkb206bGlua1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCBzdHlsZVRleHQgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIHN0eWxlVGV4dCA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KHJ1bGVDb250ZXh0KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGltcG9ydFxuICAgICAgICAgICAgICAgIGZvciAobGV0IHNJbmRleCA9IDA7IHNJbmRleCA8IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoOyBzSW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2hlZXQgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzW3NJbmRleF0gYXMgQ1NTU3R5bGVTaGVldDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNoZWV0ICYmIHNoZWV0Lm93bmVyTm9kZSA9PSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGVSdWxlcyA9IHNoZWV0LmNzc1J1bGVzID8gc2hlZXQuY3NzUnVsZXMgOiBzaGVldC5ydWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzdHlsZVJ1bGVJbmRleCA9IDA7IHN0eWxlUnVsZUluZGV4IDwgc3R5bGVSdWxlcy5sZW5ndGg7IHN0eWxlUnVsZUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlUnVsZSA9IHN0eWxlUnVsZXNbc3R5bGVSdWxlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGVJbXBvcnRSdWxlOiBDU1NJbXBvcnRSdWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3R5bGVSdWxlLnR5cGUgJiYgc3R5bGVSdWxlLnR5cGUgPT09IENTU1J1bGUuSU1QT1JUX1JVTEUgJiYgKHN0eWxlSW1wb3J0UnVsZSA9IHN0eWxlUnVsZSBhcyBDU1NJbXBvcnRSdWxlKS5zdHlsZVNoZWV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3J0UnVsZXMgPSBzdHlsZUltcG9ydFJ1bGUuc3R5bGVTaGVldC5jc3NSdWxlcyA/IHN0eWxlSW1wb3J0UnVsZS5zdHlsZVNoZWV0LmNzc1J1bGVzIDogc3R5bGVJbXBvcnRSdWxlLnN0eWxlU2hlZXQucnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBySW5kZXggPSAwOyBySW5kZXggPCBpbXBvcnRSdWxlcy5sZW5ndGg7IHJJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlSdWxlID0gaW1wb3J0UnVsZXNbckluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVRleHQgKz0gaVJ1bGUuY3NzVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaWxlbmNlIGNzcyBhY2Nlc3MgaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJzdHlsZVwiKSkge1xuICAgICAgICAgICAgICAgIHN0eWxlVGV4dCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChub2RlTmFtZSA9PSBcImxpbmtcIiAmJiAvL2NoZWNrIGV4dGVybmFsIHN0eWxlc1xuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlbFwiKSAmJlxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJlbFwiKS50b0xvd2VyQ2FzZSgpID09IFwic3R5bGVzaGVldFwiICYmXG4gICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSAmJlxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImhyZWZcIikudHJpbSgpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHNJbmRleCA9IDA7IHNJbmRleCA8IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoOyBzSW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2hlZXQgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzW3NJbmRleF0gYXMgQ1NTU3R5bGVTaGVldDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNoZWV0ICYmIHNoZWV0Lm93bmVyTm9kZSA9PT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGVzID0gc2hlZXQuY3NzUnVsZXMgPyBzaGVldC5jc3NSdWxlcyA6IHNoZWV0LnJ1bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJJbmRleCA9IDA7IHJJbmRleCA8IHJ1bGVzLmxlbmd0aDsgckluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVUZXh0ICs9IHJ1bGVzW3JJbmRleF0uY3NzVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2lsZW5jZSBjc3MgYWNjZXNzIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIERlZmVjdCAxMDIyOiBGaW5kIHVzZXMgb2YgJ2NvbG9yJyBhbmQgJypiYWNrZ3JvdW5kKicgb25seVxuICAgICAgICAgICAgbGV0IGlzQmdVc2VkID0gc3R5bGVUZXh0Lm1hdGNoKC9cXGJiYWNrZ3JvdW5kXFxiL2kpO1xuXG4gICAgICAgICAgICBsZXQgdGhlQ29sb3JTdHlsZVRvQ2hlY2sgPSBzdHlsZVRleHQucmVwbGFjZSgvLWNvbG9yL2csIFwiXCIpO1xuICAgICAgICAgICAgbGV0IGlzQ29sb3JVc2VkID0gdGhlQ29sb3JTdHlsZVRvQ2hlY2subWF0Y2goL1xcYmNvbG9yXFxiL2kpO1xuXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiY29sb3JcIikgfHwgaXNDb2xvclVzZWQgfHwgaXNCZ1VzZWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZ29vZFRhZ05hbWVzID0ge1xuICAgICAgICAgICAgICAgICAgICBcImVtXCI6IFwiXCIsIFwic3Ryb25nXCI6IFwiXCIsIFwiY2l0ZVwiOiBcIlwiLCBcImRmblwiOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICBcImNvZGVcIjogXCJcIiwgXCJzYW1wXCI6IFwiXCIsIFwia2JkXCI6IFwiXCIsIFwidmFyXCI6IFwiXCIsIFwiYWJiclwiOiBcIlwiLCBcImFjcm9ueW1cIjogXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBDb2xvciB1c2VkIO+/vSBhcmUgdGhlcmUgc2VtYW50aWNzIGludm9sdmVkP1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IG5vZGVOYW1lIGluIGdvb2RUYWdOYW1lcyB8fFxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBnb29kVGFnTmFtZXMpICE9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgcnVsZUNvbnRleHQuaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiYgbncubmV4dE5vZGUoKSAmJiBudy5ub2RlICE9IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgaW4gZ29vZFRhZ05hbWVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVHJpZ2dlciBvbmx5IG9uY2VcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRyaWdnZXJlZCA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJSUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxXCIsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cmlnZ2VyZWQ7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9TdHlsZV9Db2xvclNlbWFudGljczFcIiwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIHdoZW4gY29sb3IgaXMgdXNlZCwgYnV0IGhhcyBubyBzZW1hbnRpYyBtZWFuaW5nLlxuICAgICAgICAgKiBPcmlnaW46IFZhcmlvdXNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9TdHlsZV9FeHRlcm5hbFN0eWxlU2hlZXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206bGlua1tyZWxdLCBkb206c3R5bGVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCkuaW5kZXhPZihcIkBpbXBvcnQgdXJsXCIpID09IC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PSBcImxpbmtcIikge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9ICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZWxcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLnRvTG93ZXJDYXNlKCkgIT0gXCJzdHlsZXNoZWV0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFzc2VkID8gUnVsZVBhc3MoXCJQYXNzXzBcIikgOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIG9uIENTUyB0aGF0IGFmZmVjdHMgdGhlIGZvY3VzIGJveFxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzUwNiBFcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX0hpbmRlckZvY3VzMVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpzdHlsZSwgZG9tOipbc3R5bGVdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIHNraXBOb2Rlczoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW1widGFibGVcIl0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiW3N0cmluZ11cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVnZXgxOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAvKF58fSkoW157XSope1tefV0qKG91dGxpbmV8Ym9yZGVyKVsgXFx0XSpcXDovZ2ksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwicmVnZXhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVnZXgyOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAvKFthLXpdKylbIFxcdF0qKCx8JCkvZ2ksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwicmVnZXhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgc2tpcE5vZGVzID0gdmFsaWRhdGVQYXJhbXMuc2tpcE5vZGVzLnZhbHVlO1xuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIE5vdGU6IGxpbmsgdG8gYmUgaGFuZGxlZCBieSBSUFRfU3R5bGVfRXh0ZXJuYWxTdHlsZVNoZWV0XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGxldCB0ZXh0VmFsdWUgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgbGV0IHIgPSB2YWxpZGF0ZVBhcmFtcy5yZWdleDEudmFsdWU7XG4gICAgICAgICAgICAgICAgci5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIGxldCBtOyBsZXQgbTI7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiAobSA9IHIuZXhlYyh0ZXh0VmFsdWUpKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWxlY3RvciA9IG1bMl07XG4gICAgICAgICAgICAgICAgICAgIGxldCByMiA9IHZhbGlkYXRlUGFyYW1zLnJlZ2V4Mi52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcjIubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiAobTIgPSByMi5leGVjKHNlbGVjdG9yKSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gc2tpcE5vZGVzLmluY2x1ZGVzKG0yWzFdLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpIHx8XG4gICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIikudG9Mb3dlckNhc2UoKSA9PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGV4dFZhbHVlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKCdzdHlsZScpO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHNraXBOb2Rlcy5pbmNsdWRlcyhub2RlTmFtZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgISgvKG91dGxpbmV8Ym9yZGVyKVsgXFx0XSpcXDovLnRlc3QodGV4dFZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiA6YmVmb3JlIGFuZCA6YWZ0ZXIgYXJlIHVzZWQgaW4gQ1NTIChJbnRlcm5hbCBhbmQgRXh0ZXJuYWwpIHdpdGggY29udGVudFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIEY4N1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX1N0eWxlX0JlZm9yZUFmdGVyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnN0eWxlLCBkb206bGlua1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAvL2NoZWNrIEludGVybmFsIHN0eWxlcyAgICAgICAgXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3NzID0gUlBUVXRpbC5DU1MocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBwYXNzZWQgJiYgaSA8IGNzcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBHdWFyZCBhZ2FpbnN0IGJhZCBDU1NcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNzc1tpXS5zZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gKGNzc1tpXS5zZWxlY3Rvci5pbmRleE9mKFwiOmJlZm9yZVwiKSA9PSAtMSAmJiBjc3NbaV0uc2VsZWN0b3IuaW5kZXhPZihcIjphZnRlclwiKSA9PSAtMSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKFwiY29udGVudFwiIGluIGNzc1tpXS52YWx1ZXMpIHx8IGNzc1tpXS52YWx1ZXNbXCJjb250ZW50XCJdLnRyaW0oKS5sZW5ndGggPT0gMCB8fCBjc3NbaV0udmFsdWVzW1wiY29udGVudFwiXS50cmltKCkgPT0gXCJcXFwiXFxcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgY3NzW2ldLnZhbHVlc1tcImNvbnRlbnRcIl0udHJpbSgpID09IFwiXFwnXFwnXCIgfHwgY3NzW2ldLnZhbHVlc1tcImNvbnRlbnRcIl0udHJpbSgpID09IFwibm9uZVwiIHx8IGNzc1tpXS52YWx1ZXNbXCJjb250ZW50XCJdLnRyaW0oKSA9PSBcImF0dHIoeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGNzc1tpXS52YWx1ZXNbXCJjb250ZW50XCJdLnRyaW0oKSA9PSBcImF0dHIoeSlcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIHNwZWNpYWwgcnVsZXMgaW4gdGhlIHN0eWxlc2hlZXRzXG4gICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzSW5kZXggPSAwOyBzSW5kZXggPCBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgc0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaGVldCA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHNbc0luZGV4XSBhcyBDU1NTdHlsZVNoZWV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoZWV0Lm93bmVyTm9kZSA9PT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGVSdWxlcyA9IHNoZWV0LmNzc1J1bGVzID8gc2hlZXQuY3NzUnVsZXMgOiBzaGVldC5ydWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN0eWxlUnVsZUluZGV4ID0gMDsgcGFzc2VkICYmIHN0eWxlUnVsZUluZGV4IDwgc3R5bGVSdWxlcy5sZW5ndGg7IHN0eWxlUnVsZUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGVSdWxlID0gc3R5bGVSdWxlc1tzdHlsZVJ1bGVJbmRleF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBAbWVkaWEgcnVsZXMgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2hlY2sgJ2lmIChzdHlsZVJ1bGUgaW5zdGFuY2VvZiBDU1NNZWRpYVJ1bGUpJyBkb2Vzbid0IHdvcmsgd2hlbiBydW4gaW4gS2FybWEoYnV0IHdvcmtzIGluIERBUCkgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc28gbGV0J3MgYWNjZXNzIHRoZSB0eXBlIGRpcmVjdGx5IGFzIGEgd29ya2Fyb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZU1lZGlhUnVsZTogQ1NTTWVkaWFSdWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZUltcG9ydFJ1bGU6IENTU0ltcG9ydFJ1bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUnVsZS50eXBlICYmIHN0eWxlUnVsZS50eXBlID09PSBDU1NSdWxlLk1FRElBX1JVTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlTWVkaWFSdWxlID0gc3R5bGVSdWxlIGFzIENTU01lZGlhUnVsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lZGlhUnVsZXMgPSBzdHlsZU1lZGlhUnVsZS5jc3NSdWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lZGlhUnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJJbmRleCA9IDA7IHBhc3NlZCAmJiBySW5kZXggPCBtZWRpYVJ1bGVzLmxlbmd0aDsgckluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbVJ1bGUgPSBtZWRpYVJ1bGVzW3JJbmRleF0gYXMgYW55OyAvLyBzZWxlY3RvclRleHQgbm90IHJlY29nbml6ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVJ1bGUuc2VsZWN0b3JUZXh0ICE9PSBudWxsICYmIG1SdWxlLnNlbGVjdG9yVGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlID0gbVJ1bGUuc2VsZWN0b3JUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlLmluZGV4T2YoXCI6YmVmb3JlXCIpICE9PSAtMSB8fCBydWxlLmluZGV4T2YoXCI6YWZ0ZXJcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IG1SdWxlLnN0eWxlWydjb250ZW50J107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudC50cmltKCkgIT09IFwiXFxcIlxcXCJcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJcXCdcXCdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJub25lXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiYXR0cih4KVwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeSlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpbXBvcnQgcnVsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdHlsZVJ1bGUudHlwZSAmJiBzdHlsZVJ1bGUudHlwZSA9PT0gQ1NTUnVsZS5JTVBPUlRfUlVMRSAmJiAoc3R5bGVJbXBvcnRSdWxlID0gc3R5bGVSdWxlIGFzIENTU0ltcG9ydFJ1bGUpLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGVzID0gc3R5bGVJbXBvcnRSdWxlLnN0eWxlU2hlZXQuY3NzUnVsZXMgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVJbXBvcnRSdWxlLnN0eWxlU2hlZXQuY3NzUnVsZXMgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVJbXBvcnRSdWxlLnN0eWxlU2hlZXQucnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgckluZGV4ID0gMDsgcGFzc2VkICYmIHJJbmRleCA8IHJ1bGVzLmxlbmd0aDsgckluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3J0ZWRSdWxlID0gcnVsZXNbckluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBAbWVkaWEgcnVsZXMgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkUnVsZS50eXBlICYmIGltcG9ydGVkUnVsZS50eXBlID09PSBDU1NSdWxlLk1FRElBX1JVTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1lZGlhUnVsZXMgPSAoaW1wb3J0ZWRSdWxlIGFzIENTU01lZGlhUnVsZSkuY3NzUnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZWRpYVJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtSW5kZXggPSAwOyBtSW5kZXggPCBtZWRpYVJ1bGVzLmxlbmd0aDsgbUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbVJ1bGUgPSBtZWRpYVJ1bGVzW21JbmRleF0gYXMgYW55OyAvLyBzZWxlY3RvclRleHQgbm90IHJlY29nbml6ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVJ1bGUuc2VsZWN0b3JUZXh0ICE9PSBudWxsICYmIG1SdWxlLnNlbGVjdG9yVGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlID0gbVJ1bGUuc2VsZWN0b3JUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlLmluZGV4T2YoXCI6YmVmb3JlXCIpICE9PSAtMSB8fCBydWxlLmluZGV4T2YoXCI6YWZ0ZXJcIikgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IG1SdWxlLnN0eWxlWydjb250ZW50J107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudC50cmltKCkgIT09IFwiXFxcIlxcXCJcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJcXCdcXCdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJub25lXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiYXR0cih4KVwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeSlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKGltcG9ydGVkUnVsZSBhcyBhbnkpLnNlbGVjdG9yVGV4dCAhPT0gbnVsbCAmJiAoaW1wb3J0ZWRSdWxlIGFzIGFueSkuc2VsZWN0b3JUZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGUgPSAoaW1wb3J0ZWRSdWxlIGFzIGFueSkuc2VsZWN0b3JUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc3VwcG9ydCBib3RoIHNpbmdsZSBjb2xvbiAoOikgYW5kIGRvdWJsZSBjb2xvbiAoOjopIHBzZXVkbyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5pbmRleE9mKFwiOmJlZm9yZVwiKSAhPT0gLTEgfHwgcnVsZS5pbmRleE9mKFwiOmFmdGVyXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSAoaW1wb3J0ZWRSdWxlIGFzIGFueSkuc3R5bGVbJ2NvbnRlbnQnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50LnRyaW0oKSAhPT0gXCJcXFwiXFxcIlwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcIlxcJ1xcJ1wiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcIm5vbmVcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJhdHRyKHgpXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiYXR0cih5KVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGNzcyBhY2Nlc3MgaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvL2NoZWNrIGV4dGVybmFsIHN0eWxlcyBcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwibGlua1wiICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlbFwiKSAmJlxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJlbFwiKS50b0xvd2VyQ2FzZSgpID09IFwic3R5bGVzaGVldFwiICYmXG4gICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLnRyaW0oKS5sZW5ndGggIT09IDApIHtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IHNJbmRleCA9IDA7IHNJbmRleCA8IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoOyBzSW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2hlZXQgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzW3NJbmRleF0gYXMgQ1NTU3R5bGVTaGVldDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNoZWV0ICYmIHNoZWV0Lm93bmVyTm9kZSA9PT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGVzID0gc2hlZXQuY3NzUnVsZXMgPyBzaGVldC5jc3NSdWxlcyA6IHNoZWV0LnJ1bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBySW5kZXggPSAwOyBwYXNzZWQgJiYgckluZGV4IDwgcnVsZXMubGVuZ3RoOyBySW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGVGcm9tTGluayA9IHJ1bGVzW3JJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBAbWVkaWEgcnVsZXMgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZUZyb21MaW5rLnR5cGUgJiYgcnVsZUZyb21MaW5rLnR5cGUgPT09IENTU1J1bGUuTUVESUFfUlVMRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZWRpYVJ1bGVzID0gKHJ1bGVGcm9tTGluayBhcyBDU1NNZWRpYVJ1bGUpLmNzc1J1bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZWRpYVJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IG1JbmRleCA9IDA7IHBhc3NlZCAmJiBtSW5kZXggPCBtZWRpYVJ1bGVzLmxlbmd0aDsgbUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtUnVsZSA9IG1lZGlhUnVsZXNbbUluZGV4XSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVJ1bGUuc2VsZWN0b3JUZXh0ICE9PSBudWxsICYmIG1SdWxlLnNlbGVjdG9yVGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGVTZWxUeHQgPSBtUnVsZS5zZWxlY3RvclRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZVNlbFR4dC5pbmRleE9mKFwiOmJlZm9yZVwiKSAhPT0gLTEgfHwgcnVsZVNlbFR4dC5pbmRleE9mKFwiOmFmdGVyXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IG1SdWxlLnN0eWxlWydjb250ZW50J107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQudHJpbSgpICE9PSBcIlxcXCJcXFwiXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJcXCdcXCdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcIm5vbmVcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeClcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeSlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKHJ1bGVzW3JJbmRleF0gYXMgYW55KS5zZWxlY3RvclRleHQgIT09IG51bGwgJiYgKHJ1bGVzW3JJbmRleF0gYXMgYW55KS5zZWxlY3RvclRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlID0gKHJ1bGVzW3JJbmRleF0gYXMgYW55KS5zZWxlY3RvclRleHQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvcnQgYm90aCBzaW5nbGUgY29sb24gKDopIGFuZCBkb3VibGUgY29sb24gKDo6KSBwc2V1ZG8gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5pbmRleE9mKFwiOmJlZm9yZVwiKSAhPT0gLTEgfHwgcnVsZS5pbmRleE9mKFwiOmFmdGVyXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IChydWxlc1tySW5kZXhdIGFzIGFueSkuc3R5bGVbJ2NvbnRlbnQnXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudC50cmltKCkgIT09IFwiXFxcIlxcXCJcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcIlxcJ1xcJ1wiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwibm9uZVwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiYXR0cih4KVwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiYXR0cih5KVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGNzcyBhY2Nlc3MgaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIHdoZW4gdmlld3BvcnQgdW5pdHMgYXJlIHVzZWQgZm9yIGZvbnQgc2l6ZS5cbiAgICAgICAgICogT3JpZ2luOiBWYXJpb3VzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjFfU3R5bGVfVmlld3BvcnRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206bGluaywgZG9tOnN0eWxlLCBkb206KltzdHlsZV1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHRoZVBhdHRlcm4gPSAvXFxkKyh2d3x2aHx2bWlufHZtYXgpL2dpO1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzSW5kZXggPSAwOyBzSW5kZXggPCBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgc0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWV0ID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tzSW5kZXhdIGFzIENTU1N0eWxlU2hlZXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNoZWV0Lm93bmVyTm9kZSA9PT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlUnVsZXMgPSBzaGVldC5jc3NSdWxlcyA/IHNoZWV0LmNzc1J1bGVzIDogc2hlZXQucnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3R5bGVSdWxlSW5kZXggPSAwOyBwYXNzZWQgJiYgc3R5bGVSdWxlSW5kZXggPCBzdHlsZVJ1bGVzLmxlbmd0aDsgc3R5bGVSdWxlSW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1bGUgPSBzdHlsZVJ1bGVzW3N0eWxlUnVsZUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlLnR5cGUgJiYgcnVsZS50eXBlID09PSBDU1NSdWxlLlNUWUxFX1JVTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGVSdWxlID0gcnVsZSBhcyBDU1NTdHlsZVJ1bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUnVsZS5zdHlsZVsnZm9udFNpemUnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm9udFNpemUgPSBzdHlsZVJ1bGUuc3R5bGVbJ2ZvbnRTaXplJ10udHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmb250U2l6ZS5tYXRjaCh0aGVQYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbnRTaXplLmxlbmd0aCAmJiBmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpbXBvcnQgcnVsZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUudHlwZSAmJiBydWxlLnR5cGUgPT09IENTU1J1bGUuSU1QT1JUX1JVTEUgJiYgKHJ1bGUgYXMgQ1NTSW1wb3J0UnVsZSkuc3R5bGVTaGVldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbXBvcnRSdWxlID0gcnVsZSBhcyBDU1NJbXBvcnRSdWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IGltcG9ydFJ1bGUuc3R5bGVTaGVldC5jc3NSdWxlcyA/IGltcG9ydFJ1bGUuc3R5bGVTaGVldC5jc3NSdWxlcyA6IGltcG9ydFJ1bGUuc3R5bGVTaGVldC5ydWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgckluZGV4ID0gMDsgcGFzc2VkICYmIHJJbmRleCA8IHJ1bGVzLmxlbmd0aDsgckluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbXBvcnRlZFJ1bGUgPSBydWxlc1tySW5kZXhdIGFzIGFueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkUnVsZS50eXBlICYmIGltcG9ydGVkUnVsZS50eXBlID09PSBDU1NSdWxlLlNUWUxFX1JVTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRSdWxlLnN0eWxlWydmb250U2l6ZSddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb250U2l6ZSA9IGltcG9ydGVkUnVsZS5zdHlsZVsnZm9udFNpemUnXS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZvbnRTaXplLm1hdGNoKHRoZVBhdHRlcm4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9udFNpemUubGVuZ3RoICYmIGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgY3NzIGFjY2VzcyBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJsaW5rXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzSW5kZXggPSAwOyBzSW5kZXggPCBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgc0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWV0ID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tzSW5kZXhdIGFzIENTU1N0eWxlU2hlZXQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGVldCAmJiBzaGVldC5vd25lck5vZGUgPT09IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IHNoZWV0LmNzc1J1bGVzID8gc2hlZXQuY3NzUnVsZXMgOiBzaGVldC5ydWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgckluZGV4ID0gMDsgcGFzc2VkICYmIHJJbmRleCA8IHJ1bGVzLmxlbmd0aDsgckluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlRnJvbUxpbmsgPSBydWxlc1tySW5kZXhdIGFzIGFueTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIHJ1bGVzIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVGcm9tTGluay50eXBlICYmIHJ1bGVGcm9tTGluay50eXBlID09PSBDU1NSdWxlLlNUWUxFX1JVTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZUZyb21MaW5rLnN0eWxlWydmb250U2l6ZSddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb250U2l6ZSA9IHJ1bGVGcm9tTGluay5zdHlsZVsnZm9udFNpemUnXS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZvbnRTaXplLm1hdGNoKHRoZVBhdHRlcm4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9udFNpemUubGVuZ3RoICYmIGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgY3NzIGFjY2VzcyBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHN0eWxlVmFsdWUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICAgICAgaWYgKHN0eWxlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlUGF0dGVybiA9IC9mb250LXNpemU6XFxzKlxcZCsodnd8dmh8dm1pbnx2bWF4KS9naTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvdW5kID0gc3R5bGVWYWx1ZS5tYXRjaChzdHlsZVBhdHRlcm4pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFzc2VkID8gUnVsZVBhc3MoXCJQYXNzXzBcIikgOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc1N0eWxlIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc1RleHQ6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciBwb3NzaWJsZSB1c2VzIG9mIHNlbnNvcnkgdGV4dFxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzUwMlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX1RleHRfU2Vuc29yeVJlZmVyZW5jZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpib2R5LCBkb206Ym9keSBkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBzZW5zb3J5VGV4dDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW1widG9wLWxlZnRcIiwgXCJ0b3AtcmlnaHRcIiwgXCJib3R0b20tcmlnaHRcIiwgXCJib3R0b20tbGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJyb3VuZFwiLCBcInNxdWFyZVwiLCBcInNoYXBlXCIsIFwicmVjdGFuZ2xlXCIsIFwidHJpYW5nbGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmlnaHRcIiwgXCJsZWZ0XCIsIFwiYWJvdmVcIiwgXCJiZWxvd1wiLCBcInRvcFwiLCBcImJvdHRvbVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ1cHBlclwiLCBcImxvd2VyXCIsIFwiY29ybmVyXCIsIFwiYmVzaWRlXCJdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIltzdHJpbmddXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMuaW5jbHVkZXMocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRXh0cmFjdCB0aGUgbm9kZU5hbWUgb2YgdGhlIGNvbnRleHQgbm9kZVxuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhpcyBpcyBhIHN0eWxlIG9yIGxpbmsgZWxlbWVudCwgc2tpcCB0cmlnZ2VyaW5nIHJ1bGUgYXMgd2UgZG8gbm90IHdhbnQgdG8gc2NhblxuICAgICAgICAgICAgLy8gQ1NTIGZvciBzZW5zb3J5IHdvcmRzLCBhcyB0aGVyZSBjYW4gYmUgQ1NTIGtleXMgd2hpY2ggY29udGFpbiB0aGVzZXMgc2Vuc29yeSB0ZXh0IHRoYXQgaXMgbWF0Y2hpbmcuXG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT09IFwic3R5bGVcIiB8fCBub2RlTmFtZSA9PT0gXCJsaW5rXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB2aW9sYXRlZHRleHRBcnJheSA9IG51bGw7XG4gICAgICAgICAgICBsZXQgdmlvbGF0ZWR0ZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIGxldCBzZW5zb3J5UmVnZXggPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUlBUX1RleHRfU2Vuc29yeVJlZmVyZW5jZVwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmIChzZW5zb3J5UmVnZXggPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxldCBzZW5zb3J5VGV4dCA9IHZhbGlkYXRlUGFyYW1zLnNlbnNvcnlUZXh0LnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCByZWdleFN0ciA9IFwiKFwiICsgc2Vuc29yeVRleHRbMF07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDE7IGogPCBzZW5zb3J5VGV4dC5sZW5ndGg7ICsrailcbiAgICAgICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gXCJ8XCIgKyBzZW5zb3J5VGV4dFtqXTtcbiAgICAgICAgICAgICAgICByZWdleFN0ciArPSBcIilcXFxcV1wiO1xuICAgICAgICAgICAgICAgIHNlbnNvcnlSZWdleCA9IG5ldyBSZWdFeHAocmVnZXhTdHIsIFwiZ2lcIik7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VcIiwgc2Vuc29yeVJlZ2V4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHdhbGtOb2RlID0gcnVsZUNvbnRleHQuZmlyc3RDaGlsZCBhcyBOb2RlO1xuICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiB3YWxrTm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIENvbXBseSB0byB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB3aWxsIGJlIGRvbmUgYnkgZGVmYXVsdCBhcyB0aGlzIHJ1bGUgdHJpZ2dlcnMgb24gZWFjaCBlbGVtZW50XG4gICAgICAgICAgICAgICAgLy8gYW5kIGZvciBlYWNoIGVsZW1lbnQgaXQgb25seSBjaGVja3MgdGhhdCBzaW5nbGUgZWxlbWVudHMgdGV4dCBub2RlcyBhbmQgbm90aGluZyBlbHNlLiBTbyBhbGwgaW5uZXIgZWxlbWVudHMgd2lsbCBiZVxuICAgICAgICAgICAgICAgIC8vIGNvdmVyZWQgb24gdGhlaXIgb3duLiBDdXJyZW50bHkgZm9yIHRoaXMgcnVsZSBieSBkZWZhdWx0IENoZWNrIEhpZGRlbiBDb250ZW50IHdpbGwgd29yaywgYXMgd2UgYXJlIGRvaW5nXG4gICAgICAgICAgICAgICAgLy8gYSBub2RlIHdhbGsgb25seSBvbiBzaWJsaW5ncyBzbyBpdCB3b3VsZCBub3QgZ2V0IHRleHQgbm9kZXMgZnJvbSBvdGhlciBzaWJsaW5ncyBhdCBhbGwuXG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgaW4gdGhlIGZ1dHVyZSBzb21ldGhpbmcgY2huZ2VzLCBqdXN0IG5lZWQgdG8gYWRkICYmICFSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4od2Fsa05vZGUpIHRvIHRoZSBiZWxvd1xuICAgICAgICAgICAgICAgIC8vIGlmLlxuICAgICAgICAgICAgICAgIGlmICh3YWxrTm9kZS5ub2RlTmFtZSA9PSBcIiN0ZXh0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHR4dFZhbCA9IHdhbGtOb2RlLm5vZGVWYWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eHRWYWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlvbGF0ZWR0ZXh0QXJyYXkgPSB0eHRWYWwubWF0Y2goc2Vuc29yeVJlZ2V4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aW9sYXRlZHRleHRBcnJheSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhhc2ggPSB7fSwgcmVzdWx0ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4ZW1wdFdvcmRzID0gW1wicmlnaHQtY2xpY2tcIiwgXCJsZWZ0LWNsaWNrXCIsIFwicmlnaHQtY2xpY2tpbmdcIiwgXCJyaWdodC1jbGlja3NcIiwgXCJsZWZ0LWNsaWNraW5nXCIsIFwibGVmdC1jbGlja3NcIl07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBzcGxpdCgvW1xcblxcciBdKy8pIHdpbGwgc3ByZWFkIHRoZSBzdHJpbmcgaW50byBncm91cCBvZiB3b3JkcyB1c2luZyBzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgYXMgc2VwYXJhdG9ycy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY291bnRzID0gdHh0VmFsLnNwbGl0KC9bXFxuXFxyIF0rLykucmVkdWNlKGZ1bmN0aW9uIChtYXAsIHdvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbnNvcnlUZXh0QXJyID0gdmFsaWRhdGVQYXJhbXMuc2Vuc29yeVRleHQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3b3JkV29UcmFpbGluZ1B1bmMgPSB3b3JkLnJlcGxhY2UoL1suPyE6OygpJ1wiLGBcXF1dKyQvLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxjV29yZFdvUHVuYyA9IHdvcmQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLj8hOjsoKSdcIixgXFxdXS9nLCBcIlwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjb3VudGVyID0gMDsgY291bnRlciA8IHNlbnNvcnlUZXh0QXJyLmxlbmd0aDsgY291bnRlcisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYSA9IGxjV29yZFdvUHVuYy5pbmRleE9mKHNlbnNvcnlUZXh0QXJyW2NvdW50ZXJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiID0gZXhlbXB0V29yZHMuaW5kZXhPZihsY1dvcmRXb1B1bmMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbnNvcnlXb3JkTGVuID0gc2Vuc29yeVRleHRBcnJbY291bnRlcl0ubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9IGxjV29yZFdvUHVuYy5jaGFyQXQoc2Vuc29yeVdvcmRMZW4gKyBhKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdvcmQgZG9lcyBub3QgY29udGFpbnMgc3Vic3RyaW5nIG9mIHNlbnNvcnlUZXh0QXJyW2NvdW50ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9jZWVkIHRvIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9uIGZvciBuZXh0IHNlbnNvcnlUZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPCAwKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1B1bmNmb2xsb3dpbmcgPSAoKGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9PSAnXFwtJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXC4nKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcPycpIHx8IChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcIScpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9PSAnXFw6JykgfHwgKGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9PSAnXFw7JykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXCgnKSB8fCAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXCknKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcJycpIHx8IChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcXCInKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcLCcpIHx8IChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJy5cXGAnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcXFwnKSB8fCAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXF0nKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc1B1bmNQcmVjZWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID0gbGNXb3JkV29QdW5jLmNoYXJBdChhIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNQdW5jUHJlY2VkaW5nID0gKChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXC0nKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFwuJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcPycpIHx8IChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXCEnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFw6JykgfHwgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcOycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXCgnKSB8fCAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFwpJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcJycpIHx8IChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXFwiJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcLCcpIHx8IChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICcuXFxgJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcXFwnKSB8fCAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFxdJykpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoKGxjV29yZFdvUHVuYy5sZW5ndGggPT0gc2Vuc29yeVdvcmRMZW4pIHx8IChpc1B1bmNmb2xsb3dpbmcgPT0gdHJ1ZSkgfHwgKGlzUHVuY1ByZWNlZGluZyA9PSB0cnVlKSkgJiYgKGIgPCAwKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzaC5oYXNPd25Qcm9wZXJ0eSh3b3JkV29UcmFpbGluZ1B1bmMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hbd29yZFdvVHJhaWxpbmdQdW5jXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHdvcmRXb1RyYWlsaW5nUHVuYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSBzZW5zb3J5VGV4dEFyci5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwW3dvcmRXb1RyYWlsaW5nUHVuY10gPSAobWFwW3dvcmRXb1RyYWlsaW5nUHVuY10gfHwgMCkgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGVkdGV4dCA9IHJlc3VsdC5qb2luKFwiLCBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIGlmIHdlJ3JlIG5vdCBpbiB0aGUgYm9keSBvciBpZiB3ZSdyZSBpbiBhIHNjcmlwdFxuICAgICAgICAgICAgICAgIGxldCBjaGVja0FuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgW1wiYm9keVwiLCBcInNjcmlwdFwiXSk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gKGNoZWNrQW5jZXN0b3IgPT0gbnVsbCB8fCBjaGVja0FuY2VzdG9yLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gXCJib2R5XCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFzc2VkID8gUnVsZVBhc3MoXCJQYXNzXzBcIikgOiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3Zpb2xhdGVkdGV4dF0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgZGV0ZWN0ZWQgZW1vdGljb25zXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyBIODZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9UZXh0X0Vtb3RpY29uc1wiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIGVtb3RpY29uczoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW1wiOi0pXCIsIFwiOilcIiwgXCI6bylcIiwgXCI6XVwiLCBcIjozXCIsIFwiOmMpXCIsIFwiOj5cIiwgXCI9XVwiLCBcIjgpXCIsIFwiPSlcIiwgXCI6RFwiLCBcIkM6XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjotRFwiLCBcIjpEXCIsIFwiOERcIiwgXCJYRFwiLCBcIj1EXCIsIFwiPTNcIiwgXCI8PTNcIiwgXCI8PThcIiwgXCItLSEtLVwiLCBcIjotKFwiLCBcIjooXCIsIFwiOmNcIiwgXCI6PFwiLCBcIjpbXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkQ6XCIsIFwiRDhcIiwgXCJEO1wiLCBcIkQ9XCIsIFwiRFhcIiwgXCJ2LnZcIiwgXCI6LTlcIiwgXCI7LSlcIiwgXCI7KVwiLCBcIiopXCIsIFwiO11cIiwgXCI7RFwiLCBcIjotUFwiLCBcIjpQXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjotcFwiLCBcIjpwXCIsIFwiPXBcIiwgXCI6LcOeXCIsIFwiOsOeXCIsIFwiOi1iXCIsIFwiOmJcIiwgXCI6LU9cIiwgXCI6T1wiLCBcIk9fT1wiLCBcIm9fb1wiLCBcIjhPXCIsIFwiT3dPXCIsIFwiTy1PXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIjBfb1wiLCBcIk9fb1wiLCBcIk8zT1wiLCBcIm8wb8KgO29fbztcIiwgXCJvLi4ub1wiLCBcIjB3MFwiLCBcIjotL1wiLCBcIjovXCIsIFwiOlxcXFxcIiwgXCI9L1wiLCBcIj1cXFxcXCIsIFwiOlNcIiwgXCI6fFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJkOi0pXCIsIFwicUItKVwiLCBcIjopflwiLCBcIjotKT4uLi4uXCIsIFwiOi1YXCIsIFwiOlhcIiwgXCI6LSNcIiwgXCI6I1wiLCBcIk86LSlcIiwgXCIwOjNcIiwgXCJPOilcIiwgXCI6JyhcIiwgXCI7KihcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVF9UXCIsIFwiVFRfVFRcIiwgXCJULlRcIiwgXCI6LSpcIiwgXCI6KlwiLCBcIl5vKVwiLCBcIj46KVwiLCBcIj47KVwiLCBcIj46LSlcIiwgXCJCKVwiLCBcIkItKVwiLCBcIjgpXCIsIFwiOC0pXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIl4+Lj5eXCIsIFwiXjwuPF5cIiwgXCJePl8+XlwiLCBcIl48XzxeXCIsIFwiRDo8XCIsIFwiPjooXCIsIFwiRC06PFwiLCBcIj46LShcIiwgXCI6LUBbMV1cIiwgXCI7KFwiLCBcImBfwrRcIiwgXCJEPFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI8M1wiLCBcIjwzMzNcIiwgXCI9Xl9ePVwiLCBcIj0+Lj49XCIsIFwiPTxfPD1cIiwgXCI9Pi48PVwiLCBcIlxcXFwsLC9cIiwgXCJcXFxcbS9cIiwgXCJcXFxcbS9cXFxcPi48L1xcXFxtL1wiLCBcIlxcXFxvL1wiLCBcIlxcXFxvIG8vXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm8vXFxcXG9cIiwgXCI6JlwiLCBcIjp1XCJcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJbc3RyaW5nXVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBlbW90aWNvbnMgPSB2YWxpZGF0ZVBhcmFtcy5lbW90aWNvbnMudmFsdWU7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCB0ZXN0VGV4dCA9IFwiXCI7XG5cbiAgICAgICAgICAgIGxldCB3YWxrTm9kZSA6IE5vZGUgPSBydWxlQ29udGV4dC5maXJzdENoaWxkO1xuICAgICAgICAgICAgd2hpbGUgKHdhbGtOb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gQ29tcGx5IHRvIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHdpbGwgYmUgZG9uZSBieSBkZWZhdWx0IGFzIHRoaXMgcnVsZSB0cmlnZ2VycyBvbiBlYWNoIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAvLyBhbmQgZm9yIGVhY2ggZWxlbWVudCBpdCBvbmx5IGNoZWNrcyB0aGF0IHNpbmdsZSBlbGVtZW50cyB0ZXh0IG5vZGVzIGFuZCBub3RoaW5nIGVsc2UuIFNvIGFsbCBpbm5lciBlbGVtZW50cyB3aWxsIGJlXG4gICAgICAgICAgICAgICAgLy8gY292ZXJlZCBvbiB0aGVpciBvd24uIEN1cnJlbnRseSBmb3IgdGhpcyBydWxlIGJ5IGRlZmF1bHQgQ2hlY2sgSGlkZGVuIENvbnRlbnQgd2lsbCB3b3JrLCBhcyB3ZSBhcmUgZG9pbmdcbiAgICAgICAgICAgICAgICAvLyBhIG5vZGUgd2FsayBvbmx5IG9uIHNpYmxpbmdzIHNvIGl0IHdvdWxkIG5vdCBnZXQgdGV4dCBub2RlcyBmcm9tIG90aGVyIHNpYmxpbmdzIGF0IGFsbC5cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSBpbiB0aGUgZnV0dXJlIHNvbWV0aGluZyBjaG5nZXMsIGp1c3QgbmVlZCB0byBhZGQgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih3YWxrTm9kZSkgdG8gdGhlIGJlbG93XG4gICAgICAgICAgICAgICAgLy8gaWYuXG4gICAgICAgICAgICAgICAgaWYgKHdhbGtOb2RlLm5vZGVOYW1lID09IFwiI3RleHRcIikge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0VGV4dCArPSBcIiBcIiArIHdhbGtOb2RlLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRlc3RUZXh0LnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IHBhc3NlZCAmJiBqIDwgZW1vdGljb25zLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbW90SWR4ID0gdGVzdFRleHQuaW5kZXhPZihlbW90aWNvbnNbal0pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZUxuZ3RoID0gZW1vdGljb25zW2pdLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiBlbW90SWR4ICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQYXNzZXMgaWY6IHRoZSBlbW90aWNvbiBpcyBub3QgcHJlY2VkZWQgYnkgd2hpdGVzcGFjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHRoZSBlbW90aWNvbiBpcyBub3QgZm9sbG93ZWQgYnkgd2hpdGVzcGFjZSB1bmxlc3MgaXQncyBwdW5jdHVhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIGl0J3MgaW4gYSBwcmUsIGNvZGUsIG9yIHNjcmlwdFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW1vdElkeCA+IDAgJiYgIS9cXHMvLnRlc3QodGVzdFRleHQuc3Vic3RyaW5nKGVtb3RJZHggLSAxLCBlbW90SWR4KSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtb3RJZHggPCB0ZXN0VGV4dC5sZW5ndGggLSBlTG5ndGggJiYgIS9cXHMvLnRlc3QodGVzdFRleHQuc3Vic3RyaW5nKGVtb3RJZHggKyBlTG5ndGgsIGVtb3RJZHggKyBlTG5ndGggKyAxKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIS9bLiwhJ1wiP10vLnRlc3QodGVzdFRleHQuc3Vic3RyaW5nKGVtb3RJZHggKyBlTG5ndGgsIGVtb3RJZHggKyBlTG5ndGggKyAxKSkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGxvdyB1c2FnZSBvZiAoOiBzdHVmZiA6KSBzaW5jZSB0aGlzIGlzIGEgY29tbWVudCBpbiBzb21lIGxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gcGFzc2VkIHx8ICgoZW1vdGljb25zW2pdID09IFwiOilcIiB8fCBlbW90aWNvbnNbal0gPT0gXCIoOlwiKSAmJiAvXFwoXFw6LipcXDpcXCkvLnRlc3QodGVzdFRleHQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHBhc3NlZCB8fCAoKGVtb3RpY29uc1tqXSA9PSBcIjspXCIgfHwgZW1vdGljb25zW2pdID09IFwiKDtcIikgJiYgL1xcKFxcOy4qXFw7XFwpLy50ZXN0KHRlc3RUZXh0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbW90SWR4ID0gdGVzdFRleHQuaW5kZXhPZihlbW90aWNvbnNbal0sIGVtb3RJZHggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIGlmIHdlJ3JlIG5vdCBpbiB0aGUgYm9keSBvciBpZiB3ZSdyZSBpbiBhIHNjcmlwdCwgcHJlLCBjb2RlXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrQW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBbXCJwcmVcIiwgXCJjb2RlXCIsIFwic2NyaXB0XCIsIFwiYm9keVwiXSk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gY2hlY2tBbmNlc3RvciA9PSBudWxsIHx8IGNoZWNrQW5jZXN0b3Iubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcImJvZHlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciB3b3JkcyB0aGF0IGFyZSBzcGFjZWQgb3V0IChlLmcuLCBJIEIgTSkuICBDU1Mgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBmb3IgdGhpc1xuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIEYzMiwgQzhcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9UZXh0X0xldHRlclNwYWNpbmdcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KSA6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgd2Fsa05vZGUgPSBydWxlQ29udGV4dC5maXJzdENoaWxkIGFzIE5vZGU7XG4gICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIHdhbGtOb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gQ29tcGx5IHRvIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHdpbGwgYmUgZG9uZSBieSBkZWZhdWx0IGFzIHRoaXMgcnVsZSB0cmlnZ2VycyBvbiBlYWNoIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAvLyBhbmQgZm9yIGVhY2ggZWxlbWVudCBpdCBvbmx5IGNoZWNrcyB0aGF0IHNpbmdsZSBlbGVtZW50cyB0ZXh0IG5vZGVzIGFuZCBub3RoaW5nIGVsc2UuIFNvIGFsbCBpbm5lciBlbGVtZW50cyB3aWxsIGJlXG4gICAgICAgICAgICAgICAgLy8gY292ZXJlZCBvbiB0aGVpciBvd24uIEN1cnJlbnRseSBmb3IgdGhpcyBydWxlIGJ5IGRlZmF1bHQgQ2hlY2sgSGlkZGVuIENvbnRlbnQgd2lsbCB3b3JrLCBhcyB3ZSBhcmUgZG9pbmdcbiAgICAgICAgICAgICAgICAvLyBhIG5vZGUgd2FsayBvbmx5IG9uIHNpYmxpbmdzIHNvIGl0IHdvdWxkIG5vdCBnZXQgdGV4dCBub2RlcyBmcm9tIG90aGVyIHNpYmxpbmdzIGF0IGFsbC5cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSBpbiB0aGUgZnV0dXJlIHNvbWV0aGluZyBjaG5nZXMsIGp1c3QgbmVlZCB0byBhZGQgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih3YWxrTm9kZSkgdG8gdGhlIGJlbG93XG4gICAgICAgICAgICAgICAgLy8gaWYuXG4gICAgICAgICAgICAgICAgaWYgKHdhbGtOb2RlLm5vZGVOYW1lID09IFwiI3RleHRcIikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0VmFsID0gd2Fsa05vZGUubm9kZVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhKC8oXnxcXHMpW2EtekEtWl0gW2EtekEtWl0gW2EtekEtWl0oJHxcXHMpLy50ZXN0KHR4dFZhbCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3YWxrTm9kZSA9IHdhbGtOb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIC8vIERvbid0IHRyaWdnZXIgaWYgd2UncmUgbm90IGluIHRoZSBib2R5IG9yIGlmIHdlJ3JlIGluIGEgc2NyaXB0XG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrQW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBbXCJib2R5XCIsIFwic2NyaXB0XCIsIFwiY29kZVwiXSk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gY2hlY2tBbmNlc3RvciA9PSBudWxsIHx8IGNoZWNrQW5jZXN0b3Iubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcImJvZHlcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciBwb3NzaWJsZSBBU0NJSSBhcnQgaW4gYSA8cHJlPlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzQ1OFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX1ByZV9BU0NJSUFydFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpwcmUsIGRvbTpsaXN0aW5nLCBkb206eG1wLCBkb206cGxhaW50ZXh0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIEZpeCBmb3IgSURXQiB3cml0ZXJzLiBEb24ndCB0cmlnZ2VyIGlmIGNvbnRlbnQgaXMgaW4gYSBjb2RlIGVsZW1lbnQuICBUaGUgY29kZSBlbGVtZW50IGlzIHNlYXJjaGVkIGZvclxuICAgICAgICAgICAgLy8gaW4gdmFyaW91cyBwbGFjZXMgYmVjYXVzZSBvZiB0aGUgd2VpcmQgd2F5IHZhcmlvdXMgYnJvd3NlcnMgcmVuZGVyIDxjb2RlPjxwcmU+PC9wcmU+PC9jb2RlLiAgRmlyZWZveCxcbiAgICAgICAgICAgIC8vIEh0bWxVbml0IGFuZCBDaHJvbWUgYWxsIHJlbmRlciBkaWZmZXJlbnRseS4gIEZpcmVmb3g6IDxjb2RlPjwvY29kZT48cHJlPjwvcHJlPiAgSHRtbFVuaXQ6IDwvY29kZT48cHJlPjxjb2RlPjwvY29kZT48L3ByZT5cbiAgICAgICAgICAgIC8vIFNlZSB1bml0IHRlc3QgQ29kZUVsZW1lbnRBYm92ZVByZUVsZW1lbnQuaHRtbC4gIERvbid0IGtub3cgaG93IFJQVCByZW5kZXJzLCBzbyBjb3ZlciBhbGwgdGhlIGJhc2VzLlxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJwcmVcIikge1xuICAgICAgICAgICAgICAgIGlmICgocnVsZUNvbnRleHQucHJldmlvdXNTaWJsaW5nICYmIHJ1bGVDb250ZXh0LnByZXZpb3VzU2libGluZy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiY29kZVwiKSB8fFxuICAgICAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImNvZGVcIikubGVuZ3RoID4gMCB8fFxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBcImNvZGVcIikpIHtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCB0eHRWYWx1ZSA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBub25BbHBoYU51bWVyaWNOb3JTcGFjZUNvdW50ID0gMDtcbiAgICAgICAgICAgIGxldCBhbHBoTnVtU2FtZUNoYXJhY3RlckNvdW50ID0gMDtcbiAgICAgICAgICAgIGxldCBsYXN0Q2hhcmFjdGVyID0gXCJcIjtcblxuICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSB0ZXh0IGNvbnRlbnRcbiAgICAgICAgICAgIGZvciAobGV0IGlkeCA9IDA7IHBhc3NlZCAmJiAoaWR4IDwgdHh0VmFsdWUubGVuZ3RoKTsgKytpZHgpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2hTdHIgPSB0eHRWYWx1ZS5zdWJzdHIoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpdCBpcyBhbHBoYW51bWVyaWMgb3IgcHVuY3R1YXRpb25cbiAgICAgICAgICAgICAgICBpZiAoL1tcXHchQCMkJSZcXCooKS4sP1xcW1xcXXt9PD49XCI6XFwvXFxcXC1dLy50ZXN0KGNoU3RyKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBEZXRlY3Qgc2FtZSBjaGFyYWN0ZXIgc2VxdWVuY2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RDaGFyYWN0ZXIgPT0gY2hTdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFscGhOdW1TYW1lQ2hhcmFjdGVyQ291bnQgPSBhbHBoTnVtU2FtZUNoYXJhY3RlckNvdW50ICsgMTs7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbHBoTnVtU2FtZUNoYXJhY3RlckNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoL1xccy8udGVzdChjaFN0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxwaE51bVNhbWVDaGFyYWN0ZXJDb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9uQWxwaGFOdW1lcmljTm9yU3BhY2VDb3VudCA9IG5vbkFscGhhTnVtZXJpY05vclNwYWNlQ291bnQgKyAxO1xuICAgICAgICAgICAgICAgICAgICBhbHBoTnVtU2FtZUNoYXJhY3RlckNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFzdENoYXJhY3RlciA9IGNoU3RyO1xuXG4gICAgICAgICAgICAgICAgLy8gTWFrZSB0aGUgZGVjaXNpb25cbiAgICAgICAgICAgICAgICBpZiAobm9uQWxwaGFOdW1lcmljTm9yU3BhY2VDb3VudCA+PSA1IHx8IGFscGhOdW1TYW1lQ2hhcmFjdGVyQ291bnQgPj0gNCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzVGV4dCB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MsIFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5pbXBvcnQgeyBBbmNlc3RvclV0aWwgfSBmcm9tIFwiLi4vdXRpbC9hbmNlc3RvclwiO1xuXG5sZXQgYTExeVJ1bGVzVGl0bGU6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYSB0aXRsZVxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMjVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9Eb2NfSGFzVGl0bGVcIixcbiAgICAgICAgLy8gTm90ZTogY29udGV4dCBpcyBIVE1MLCBiZWNhdXNlIGEgZG9jdW1lbnQgd2l0aCBubyBoZWFkIGF0IGFsbCBpcyBhbHNvIG1pc3NpbmcgYSB0aXRsZS5cbiAgICAgICAgLy8gSFRNTFVuaXQgc2VlbXMgdG8gYWRkIGEgaGVhZCBpbiBhbnl3YXksIGJ1dCB3ZSBjYW5ub3QgcmVseSBvbiB0aGF0LlxuICAgICAgICBjb250ZXh0OiBcImRvbTpodG1sXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30sIGNvbnRleHRIaWVyYXJjaGllcz86IFJ1bGVDb250ZXh0SGllcmFyY2h5KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICAvLyBUaGlzIHJ1bGUgZG9lcyBub3QgYXBwbHkgaW5zaWRlIGEgcHJlc2VudGF0aW9uYWwgZnJhbWVcbiAgICAgICAgICAgIGlmIChBbmNlc3RvclV0aWwuaXNGcmFtZShjb250ZXh0SGllcmFyY2hpZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBOb2RlO1xuICAgICAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGhlYWQgZWxlbWVudFxuICAgICAgICAgICAgbGV0IGZpbmRIZWFkID0gcnVsZUNvbnRleHQuZmlyc3RDaGlsZCBhcyBOb2RlO1xuICAgICAgICAgICAgbGV0IGZpbmRUaXRsZSA9IG51bGw7XG4gICAgICAgICAgICB3aGlsZSAoZmluZEhlYWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChmaW5kSGVhZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiaGVhZFwiKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBmaW5kSGVhZCA9IGZpbmRIZWFkLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBvc3NpYmxlVGl0bGVzID0gKHJ1bGVDb250ZXh0IGFzIEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGlkeD0wOyBpZHg8cG9zc2libGVUaXRsZXMubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgICAgIGlmICghUlBUVXRpbC5nZXRBbmNlc3Rvcihwb3NzaWJsZVRpdGxlc1tpZHhdLCBbXCJzdmdcIl0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbmRUaXRsZSA9IHBvc3NpYmxlVGl0bGVzW2lkeF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaW5kSGVhZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICghZmluZFRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChmaW5kVGl0bGUgPT09IG51bGwpIHsgLy8gZG9uJ3QgaGF2ZSB0aXRsZSBzZWNvbmQgUG9GXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiB3ZSBnZXQgaGVyZSB3ZSBoYXZlIDxoZWFkPiBhbmQgPHRpdGxlPlxuXG4gICAgICAgICAgICBpZiAoZmluZFRpdGxlICE9IG51bGwgJiYgUlBUVXRpbC5nZXRJbm5lclRleHQoZmluZFRpdGxlKS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIDx0aXRsZT4gaGFzIG5vIGlubmVySFRNTCB0aGlyZCBQb0ZcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHRpdGxlIGNvbnRhaW5zIGJhZCB2YWx1ZXNcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0ODRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9UaXRsZV9WYWxpZFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpoZWFkIGRvbTp0aXRsZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgICAgICBsZXQgdGl0bGVTdHIgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCkudHJpbSgpO1xuXG4gICAgICAgICAgICAvLyBhbGxvdyAuY29tLCAubmV0IGFuZCAub3JnXG4gICAgICAgICAgICBsZXQgdGl0bGVTdHJMb3dlcmNhc2UgPSB0aXRsZVN0ci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHRpdGxlU3RyTG93ZXJjYXNlLmluY2x1ZGVzKFwiLmNvbVwiKSB8fCB0aXRsZVN0ckxvd2VyY2FzZS5pbmNsdWRlcyhcIi5uZXRcIikgfHwgdGl0bGVTdHJMb3dlcmNhc2UuaW5jbHVkZXMoXCIub3JnXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsW3RpdGxlU3RyXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aXRsZVN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGNvdmVyZWQgYnkgV0NBRzIwX0RvY19IYXNUaXRsZVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsOy8vUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBwYXNzZWQgPSAhL15cXFMqXFwuW2EtekEtWl17MSw0fSg/IS4pfF5odHRwcz86XFwvXFwvXFxTKi9pLnRlc3QodGl0bGVTdHIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMlwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIixbdGl0bGVTdHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc1RpdGxlIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc1ZpZGVvOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdmlkZW8gaXMgbWlzc2luZyBUcmFjayB3aXRoIGFuIGF0dHJpYnV0ZSBraW5kPVwiY2FwdGlvblwiXG4gICAgICAgICAqIE9yaWdpbjogQ0kxNjItSFRNTCA1LCBHMTExN1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnZpZGVvXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEhUTUxWaWRlb0VsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIC8vIGlnbm9yZSBkZWNvcmF0aXZlIHZpZGVvIGlmIHVzZXIgdXNlcyBhcmlhLWhpZGRlblxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgdHJhY2tzID0gcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0cmFja1wiKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmFja3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBwYXNzZWQgfHwgdHJhY2tzW2ldLmdldEF0dHJpYnV0ZShcImtpbmRcIikgPT09ICdjYXB0aW9ucyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjaGVja3MgZm9yIGFkZGl0aW9uIG9mIGR5bmFtaWMgdHJhY2tzXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQudGV4dFRyYWNrcyAmJiBydWxlQ29udGV4dC50ZXh0VHJhY2tzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBydWxlQ29udGV4dC50ZXh0VHJhY2tzLmxlbmd0aDsgaSsrKSAge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBwYXNzZWQgfHwgcnVsZUNvbnRleHQudGV4dFRyYWNrc1tpXS5raW5kICA9PT0gICdjYXB0aW9ucyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBIVE1MNSA8YXVkaW8+IG9yIDx2aWRlbz4gZWxlbWVudHMgYXJlIHVzZWRcbiAgICAgICAgICogT3JpZ2luOiBDSTE2Mi1IVE1MIDUsIEcxMTE5XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0F1ZGlvX1ZpZGVvX1RyaWdnZXJcIixcbiAgICAgICAgY29udGV4dDogXCJkb206YXVkaW8sIGRvbTp2aWRlb1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImF1ZGlvXCIgfHwgbm9kZU5hbWUgPT09IFwidmlkZW9cIikge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZU1hbnVhbChcIk1hbnVhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfVxuXTtcbmV4cG9ydCB7IGExMXlSdWxlc1ZpZGVvIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcywgUnVsZUNvbnRleHRIaWVyYXJjaHkgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vZG9tL0RPTVV0aWxcIjtcbmltcG9ydCB7IEZyYWdtZW50VXRpbCB9IGZyb20gXCIuLi91dGlsL2ZyYWdtZW50XCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNUYWJsZTogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgY2FwdGlvbiBhbmQgc3VtbWFyeSBzYXkgdGhlIHNhbWUgdGhpbmdcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDM5LCBINzNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9UYWJsZV9DYXBTdW1tUmVkdW5kYW50XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnRhYmxlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcG9mSWQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBzdW1TdHI7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwic3VtbWFyeVwiKSkge1xuICAgICAgICAgICAgICAgIHBvZklkID0gMDtcbiAgICAgICAgICAgICAgICBzdW1TdHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJzdW1tYXJ5XCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpKSB7XG4gICAgICAgICAgICAgICAgcG9mSWQgPSAxO1xuICAgICAgICAgICAgICAgIGxldCBzdW1tYXJ5Tm9kZUlkcyA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtZGVzY3JpYmVkYnlcIikuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgIGxldCBzdW1tYXJ5Tm9kZUNvbmNhdCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHN1bW1hcnlOb2RlSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdW1tYXJ5Tm9kZUlkID0gc3VtbWFyeU5vZGVJZHNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdW1tYXJ5Tm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VtbWFyeU5vZGUgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgc3VtbWFyeU5vZGVJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VtbWFyeU5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5Tm9kZUNvbmNhdCArPSBcIiBcIiArIFJQVFV0aWwuZ2V0SW5uZXJUZXh0KHN1bW1hcnlOb2RlKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdW1TdHIgPSBzdW1tYXJ5Tm9kZUNvbmNhdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc3VtU3RyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBjYXBFbGVtcyA9IHJ1bGVDb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiY2FwdGlvblwiKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FwRWxlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VtU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNhcFN0ciA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KGNhcEVsZW1zWzBdKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdW1TdHIuaW5jbHVkZXMoY2FwU3RyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBFbnN1cmUgdGhhdCB0YWJsZSBjYXB0aW9ucyBoYXZlIGNvbnRlbnRcbiAgICAgICAgICogT3JpZ2luOiBWYWxlcmllXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJWYWxlcmllX0NhcHRpb25fSGFzQ29udGVudFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpjYXB0aW9uXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IEVuc3VyZSB0aGF0IHRhYmxlIGNhcHRpb25zIGFyZSBpbiB0YWJsZXNcbiAgICAgICAgICogT3JpZ2luOiBWYWxlcmllXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJWYWxlcmllX0NhcHRpb25fSW5UYWJsZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpjYXB0aW9uXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJ0YWJsZVwiKSAhPSBudWxsO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogUmVxdWlyZSB0aGF0IHRoZXJlIGJlIGF0IGxlYXN0IG9uZSBoZWFkZXIgcm93IG9yIGhlYWRlciBjb2x1bW4gZm9yIGEgZGF0YSB0YWJsZS5cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEcxMTNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9UYWJsZV9EYXRhSGVhZGluZ3NBcmlhXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnRhYmxlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEhUTUxUYWJsZUVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbGF5b3V0IHRhYmxlIG9yIHRoZXJlIGFyZSBubyByb3dzLCB0aGUgcnVsZSBkb2VzIG5vdCBhcHBseS5cbiAgICAgICAgICAgIGxldCByb3dzID0gcnVsZUNvbnRleHQucm93cztcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5pc0RhdGFUYWJsZShydWxlQ29udGV4dCkgfHwgcm93cyA9PSBudWxsIHx8IHJvd3MubGVuZ3RoID09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmlzVGFibGVIZWFkZXJJbkZpcnN0Um93T3JDb2x1bW4ocnVsZUNvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogRXZlcnkgaGVhZGluZyBtdXN0IHBvaW50IHRvIHNvbWUgY2VsbCwgYW5kIGV2ZXJ5IGNlbGwgbXVzdCByZWZlcmVuY2VcbiAgICAgICAgICogc29tZSBoZWFkaW5nXG4gICAgICAgICAqIE9yaWdpbjogVmFsZXJpZVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIixcbiAgICAgICAgY29udGV4dDogXCJkb206dGQsIGRvbTp0aFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhcmVudFRhYmxlID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJ0YWJsZVwiKTtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBsYXlvdXQgdGFibGUgb3IgYSBzaW1wbGUgdGFibGUgdGhlIHJ1bGUgZG9lcyBub3QgYXBwbHkuXG4gICAgICAgICAgICBpZiAocGFyZW50VGFibGUgPT0gbnVsbCB8fCAhUlBUVXRpbC5pc0NvbXBsZXhEYXRhVGFibGUocGFyZW50VGFibGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGlzIHRhYmxlIGhhc24ndCBiZWVuIHByZXByb2Nlc3NlZCwgcHJvY2VzcyBpdC5cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0LCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsIG51bGwpID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gQnVpbGQgYSBncmlkIHRoYXQncyBhY3R1YWxseSB1c2FibGUgKHJvd3NwYW4gYW5kIGNvbHNwYW4gZWxlbWVudHMgYXJlIGR1cGxpY2F0ZWQpXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBidWlsZHMgYSByZWFsIDJkIHRhYmxlIGFycmF5LlxuICAgICAgICAgICAgICAgIGxldCBncmlkID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJlbnRUYWJsZS5yb3dzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgPSBwYXJlbnRUYWJsZS5yb3dzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWdyaWRbaV0pIGdyaWRbaV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCByb3cuY2VsbHMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjZWxsID0gcm93LmNlbGxzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShjZWxsLCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsIGkgKyBcIjpcIiArIGopO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoXCJjb2xzcGFuXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghd2lkdGgpIHdpZHRoID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSBwYXJzZUludChjZWxsLmdldEF0dHJpYnV0ZShcInJvd3NwYW5cIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWlnaHQpIGhlaWdodCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ1ggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGdyaWRbaV1bZ1hdKSBnWCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBoZWlnaHQ7ICsraykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3JpZFtpICsga10pIGdyaWRbaSArIGtdID0gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBsID0gMDsgbCA8IHdpZHRoOyArK2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZFtpICsga11bZ1ggKyBsXSA9IGNlbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIHRoZSB0YWJsZSBncmlkIGFuZCByZWNvcmQgaGVhZGVycyB0aGF0IHBvaW50IHRvIGNlbGxzIGFuZFxuICAgICAgICAgICAgICAgIC8vIGNlbGxzIHRoYXQgYXJlIHBvaW50ZWQgdG8gYnkgaGVhZGVyc1xuICAgICAgICAgICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICAgICAgICAgIGxldCBsb29rdXAgPSB7fVxuICAgICAgICAgICAgICAgIGxldCBzY29wZWRDb2xzID0ge307XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncmlkLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByb3dTY29wZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBncmlkW2ldLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JpZENlbGwgPSBncmlkW2ldW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyaWROb2RlTmFtZSA9IGdyaWRDZWxsLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JpZE5vZGVOYW1lID09IFwidGhcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncmlkQ2VsbC5nZXRBdHRyaWJ1dGUoXCJzY29wZVwiKSA9PSBcInJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1Njb3BlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gYXhpcyBhdHRyaWJ1dGUsIGl0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGUgaXMgbm90IGVub3VnaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGdyaWRDZWxsLCBcImF4aXNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBbUlBUVXRpbC5nZXRDYWNoZShncmlkQ2VsbCwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLCBudWxsKV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JpZENlbGwuZ2V0QXR0cmlidXRlKFwic2NvcGVcIikgPT0gXCJjb2xcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZWRDb2xzW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBheGlzIGF0dHJpYnV0ZSwgaXQgbXVzdCBiZSByZWZlcnJlZCB0byBieSBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzY29wZSBpcyBub3QgZW5vdWdoLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZ3JpZENlbGwsIFwiYXhpc1wiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFtSUFRVdGlsLmdldENhY2hlKGdyaWRDZWxsLCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsIG51bGwpXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhlYWRlcnMgY2FuIHJlZmVyIHRvIG90aGVyIGhlYWRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShncmlkQ2VsbCwgXCJoZWFkZXJzXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZHJzID0gZ3JpZENlbGwuZ2V0QXR0cmlidXRlKFwiaGVhZGVyc1wiKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgaGRycy5sZW5ndGg7ICsraykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRFbGVtID0gZG9jLmdldEVsZW1lbnRCeUlkKGhkcnNba10udHJpbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkRWxlbSAmJiBSUFRVdGlsLmdldEFuY2VzdG9yKGhlYWRFbGVtLCBcInRhYmxlXCIpID09IHBhcmVudFRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwW1JQVFV0aWwuZ2V0Q2FjaGUoaGVhZEVsZW0sIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbnVsbCldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ3JpZE5vZGVOYW1lID09IFwidGRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3dTY29wZWQgfHwgc2NvcGVkQ29sc1tqXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBbUlBUVXRpbC5nZXRDYWNoZShncmlkQ2VsbCwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLCBudWxsKV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShncmlkQ2VsbCwgXCJoZWFkZXJzXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZHJzID0gZ3JpZENlbGwuZ2V0QXR0cmlidXRlKFwiaGVhZGVyc1wiKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgaGRycy5sZW5ndGg7ICsraykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRFbGVtID0gZG9jLmdldEVsZW1lbnRCeUlkKGhkcnNba10udHJpbSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkRWxlbSAmJiBSUFRVdGlsLmdldEFuY2VzdG9yKGhlYWRFbGVtLCBcInRhYmxlXCIpID09IHBhcmVudFRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwW1JQVFV0aWwuZ2V0Q2FjaGUoZ3JpZENlbGwsIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbnVsbCldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBbUlBUVXRpbC5nZXRDYWNoZShoZWFkRWxlbSwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLCBudWxsKV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocGFyZW50VGFibGUsIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbG9va3VwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJjSW5mbyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbnVsbCk7XG4gICAgICAgICAgICBsZXQgdEluZm8gPSAgUlBUVXRpbC5nZXRDYWNoZShwYXJlbnRUYWJsZSwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLCBudWxsKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSByY0luZm8gIT09IG51bGwgJiYgdEluZm8gIT09IG51bGwgJiYgcmNJbmZvIGluIHRJbmZvO1xuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiByY0luZm8gPT09IFwiMDowXCIgJiZcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCkudHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgdGVzdCBpZiBpdCdzIHRoZSB1cHBlci1sZWZ0IGNlbGwgYW5kIGl0J3MgZW1wdHlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgdGhlIHRhYmxlIGhhcyBubyB0aCdzLCBpdCBtYXkganVzdCBiZSB0aGF0IHRoaXMgd2FzIHN1cHBvc2VkIHRvIGJlIGEgbGF5b3V0XG4gICAgICAgICAgICAvLyB0YWJsZSwgd2hpY2ggaW50cm9kdWNlcyBhIGxvdCBvZiBub2lzZS4gIEluIHRoYXQgY2FzZSwgb25seSB0cmlnZ2VyIHRoaXMgZXJyb3JcbiAgICAgICAgICAgIC8vIG9uY2UgcGVyIHRhYmxlLlxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgcGFyZW50VGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aFwiKS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldENhY2hlKHBhcmVudFRhYmxlLCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzX1RyaWdPbmNlXCIsIGZhbHNlKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocGFyZW50VGFibGUsIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNfVHJpZ09uY2VcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGUgdmFsdWVzIGluIHNjb3BlIGF0dHJpYnV0ZSBhcmUgaW52YWxpZFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINjNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9UYWJsZV9TY29wZV9WYWxpZFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTp0ZFtzY29wZV0sIGRvbTp0aFtzY29wZV1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PT0gJ3RkJylcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIik7XG5cbiAgICAgICAgICAgIC8vb25seSBjb250aW51ZSBmb3IgJ3RoJ1xuICAgICAgICAgICAgbGV0IHNjb3BlVmFsID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwic2NvcGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gL14ocm93fGNvbHxyb3dncm91cHxjb2xncm91cCkkLy50ZXN0KHNjb3BlVmFsKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgb24gYWxsIHRhYmxlcyB0aGF0IGFyZSBkZXRlcm1pbmVkIHRvIGJlIGxheW91dCB0YWJsZXMuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX1RhYmxlX0xheW91dFRyaWdnZXJcIixcbiAgICAgICAgY29udGV4dDogXCJkb206dGFibGVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gIVJQVFV0aWwuaXNMYXlvdXRUYWJsZShydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiByb2xlPT1cInByZXNlbnRhdGlvblwiIG9yIHJvbGU9PVwibm9uZVwiIGFuZCBoYXMgdGFibGUgc3RydWN0dXJlXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEgzOSwgSDQzLCBINzMsIFJQVCA1LjYgNDcxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfU3RydWN0dXJlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnRhYmxlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgLy8gSkNIIC0gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc0RhdGFUYWJsZShydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSW5HcmlkKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGxldCBlcnJvck5vZGVzID0gW107XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJzdW1tYXJ5XCIpKVxuICAgICAgICAgICAgICAgIGVycm9yTm9kZXMucHVzaChydWxlQ29udGV4dCk7XG5cbiAgICAgICAgICAgIGxldCBjYXB0aW9uRWxlbXMgPSBydWxlQ29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImNhcHRpb25cIik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhcHRpb25FbGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldEFuY2VzdG9yKGNhcHRpb25FbGVtc1tpXSwgXCJ0YWJsZVwiKSA9PSBydWxlQ29udGV4dCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIHNob3VsZCBiZSBza2lwcGVkIG9yIG5vdCBiYXNlZCBvbiB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyBhbmQgaWYgdGhlIG5vZGUgaXNWaXNpYmxlIG9yXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihjYXB0aW9uRWxlbXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgZXJyb3JOb2Rlc1xuICAgICAgICAgICAgICAgICAgICBlcnJvck5vZGVzLnB1c2goY2FwdGlvbkVsZW1zW2ldKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgbm90IGFjdHVhbGx5IG1ha2luZyB1c2Ugb2YgdGhlc2VzIGVycm9yTm9kZXMgZXZlbiB0aG91Z2ggdGhleSBhcmUgcGFzc2VkIGFsb25nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWRhdGlvblJlc3VsdCwgd2UgZG8gbm90IG5lZWQgdG8ga2VlcCBsb29waW5nIG92ZXIgYW5kIGdldHRpbmcgZXZlcnkgc2luZ2xlIHZpb2xhdGluZyBub2RlIHVuZGVyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBydWxlIGNvbnRleHQuIFRoaXMgY2FuIGJlIGEgZnV0dXJlIGVuaGFuY2VubWVudCB3aGVyZSB3ZSBhY3R1YWxseSBtYWtlIHVzZSBvZiB0aGUgZXJyb3Igbm9kZXMgdGhhdFxuICAgICAgICAgICAgICAgICAgICAvLyBhcmUgcGFzc2VkIGFsb25nLiBBZGRpbmcgdGhpcyBicmVhayB0byBzcGVlZCB1cCBwZXJmb3JtYW5jZSBhdCB0aGlzIHBvaW50LlxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gVGhlcmUgaXMgbm8gcG9pbnQgdG8ga2VlcCBhZGRpbmcgdGhlIGVycm9yIG5vZGVzLCBzdG9wIGFmdGVyIGZpbmRpbmcgdGhlIGZpcnN0IG9uZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHRoTm9kZXMgPSBydWxlQ29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aE5vZGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuZ2V0QW5jZXN0b3IodGhOb2Rlc1tpXSwgXCJ0YWJsZVwiKSA9PSBydWxlQ29udGV4dCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIHNob3VsZCBiZSBza2lwcGVkIG9yIG5vdCBiYXNlZCBvbiB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyBhbmQgaWYgdGhlIG5vZGUgaXNWaXNpYmxlIG9yXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih0aE5vZGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIGVycm9yTm9kZXNcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JOb2Rlcy5wdXNoKHRoTm9kZXNbaV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSBub3QgYWN0dWFsbHkgbWFraW5nIHVzZSBvZiB0aGVzZXMgZXJyb3JOb2RlcyBldmVuIHRob3VnaCB0aGV5IGFyZSBwYXNzZWQgYWxvbmcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAvLyBWYWxpZGF0aW9uUmVzdWx0LCB3ZSBkbyBub3QgbmVlZCB0byBrZWVwIGxvb3Bpbmcgb3ZlciBhbmQgZ2V0dGluZyBldmVyeSBzaW5nbGUgdmlvbGF0aW5nIG5vZGUgdW5kZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJ1bGUgY29udGV4dC4gVGhpcyBjYW4gYmUgYSBmdXR1cmUgZW5oYW5jZW5tZW50IHdoZXJlIHdlIGFjdHVhbGx5IG1ha2UgdXNlIG9mIHRoZSBlcnJvciBub2RlcyB0aGF0XG4gICAgICAgICAgICAgICAgICAgIC8vIGFyZSBwYXNzZWQgYWxvbmcuIEFkZGluZyB0aGlzIGJyZWFrIHRvIHNwZWVkIHVwIHBlcmZvcm1hbmNlIGF0IHRoaXMgcG9pbnQuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBUaGVyZSBpcyBubyBwb2ludCB0byBrZWVwIGFkZGluZyB0aGUgZXJyb3Igbm9kZXMsIHN0b3AgYWZ0ZXIgZmluZGluZyB0aGUgZmlyc3Qgb25lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRkTm9kZXMgPSBydWxlQ29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRkXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZE5vZGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCh0ZE5vZGVzW2ldLmhhc0F0dHJpYnV0ZShcInNjb3BlXCIpIHx8IHRkTm9kZXNbaV0uaGFzQXR0cmlidXRlKFwiaGVhZGVyc1wiKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRBbmNlc3Rvcih0ZE5vZGVzW2ldLCBcInRhYmxlXCIpID09IHJ1bGVDb250ZXh0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIHNraXBwZWQgb3Igbm90IGJhc2VkIG9uIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIGFuZCBpZiB0aGUgbm9kZSBpc1Zpc2libGUgb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gbm90LlxuICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHRkTm9kZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgZXJyb3JOb2Rlc1xuICAgICAgICAgICAgICAgICAgICBlcnJvck5vZGVzLnB1c2godGROb2Rlc1tpXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIG5vdCBhY3R1YWxseSBtYWtpbmcgdXNlIG9mIHRoZXNlcyBlcnJvck5vZGVzIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHBhc3NlZCBhbG9uZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRpb25SZXN1bHQsIHdlIGRvIG5vdCBuZWVkIHRvIGtlZXAgbG9vcGluZyBvdmVyIGFuZCBnZXR0aW5nIGV2ZXJ5IHNpbmdsZSB2aW9sYXRpbmcgbm9kZSB1bmRlclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcnVsZSBjb250ZXh0LiBUaGlzIGNhbiBiZSBhIGZ1dHVyZSBlbmhhbmNlbm1lbnQgd2hlcmUgd2UgYWN0dWFsbHkgbWFrZSB1c2Ugb2YgdGhlIGVycm9yIG5vZGVzIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgLy8gYXJlIHBhc3NlZCBhbG9uZy4gQWRkaW5nIHRoaXMgYnJlYWsgdG8gc3BlZWQgdXAgcGVyZm9ybWFuY2UgYXQgdGhpcyBwb2ludC5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoZXJlIGlzIG5vIHBvaW50IHRvIGtlZXAgYWRkaW5nIHRoZSBlcnJvciBub2Rlcywgc3RvcCBhZnRlciBmaW5kaW5nIHRoZSBmaXJzdCBvbmVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUgbm9kZSBuYW1lIGZvciB0aGUgcnVsZSBjb250ZXh0IGVsZW1lbnQgaW4gdGhpcyBjYXNlIGl0IHdpbGwgYWx3YXlzIGJlIHRhYmxlXG4gICAgICAgICAgICBsZXQgY3VycmVudEVsZW1lbnRUb2tlbiA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIENvbnN0cnVjdCBhIG5ldyBhcnJheSB3aGljaCB3aWxsIGNvbnRhbiBvbmx5IHRoZSBlbGVtZW50IHRhZyBmb3IgdGhlIHZpb2xhdGlvbiBlbGVtZW50c1xuICAgICAgICAgICAgbGV0IHN0cnVjdHVyYWxFbGVtZW50VG9rZW5zID0gbmV3IEFycmF5KCk7XG5cbiAgICAgICAgICAgIC8vIENvbnN0cnVjdCBhIHNlZW4gaGFzaCB0aGF0IHdpbGwga2VlcCB0cmFzayBvZiBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgd2VyZSBhbHJlYWR5IGFkZGVkIHRvIHRoZSB0b2tlbiBhcnJheSwgdG8gbWFrZSBzdXJlXG4gICAgICAgICAgICAvLyB3ZSBkbyBub3QgZHVwbGljYXRlIGFueSBvZiB0aGUgZWxlbWVudHMuIER1cGxpY2F0ZSBlbGVtZW50IHRhZ3MgaW4gdGhlIHRva2VuIG1lc3NhZ2UgbG9va3MgYmFkIGFuZCBjb25mdXNpbmcuXG4gICAgICAgICAgICBsZXQgc2VlbiA9IHt9O1xuXG4gICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSB2aW9sYXRpbmcgc3RydWN0dXJhbCBlbGVtZW50cyBhbmQgZXh0cmFjdCB0aGUgZWxlbWVudCB0YWcgdG8gYmUgdXNlZCBhcyBhIHRva2VuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVycm9yTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIG5vZGUgbmFtZSAodGFnIG5hbWUpIGZvciB0aGUgdmlvbGF0aW5nIHN0cnVjdHVyYWwgZWxlbWVudFxuICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IGVycm9yTm9kZXNbaV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgICAgIC8vIE9ubHkgbmVlZCB0byBhZGQgdGhlIHZpb2xhdGluZyBlbGVtZW50IG9uY2VcbiAgICAgICAgICAgICAgICBpZiAoIXNlZW4uaGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSBhZGRpbmcgdGhlIHRva2VuIGFzIGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzIHdlIG5lZWQgdG8gaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzdW1tYXJ5IGF0dHJpYnV0ZSBvbiB0aGUgcnVsZUNvbnRleHQgKHRhYmxlKS4gV2Ugb25seSBhZGQgc3VtbWFyeSBvbmNlLCBzYW1lIGFzXG4gICAgICAgICAgICAgICAgICAgIC8vIGZvciBlbGVtZW50cyB0byBhdm9pZCBkdXBsaWNhdGlvbiBpbiB0aGUgbWVzc2FnZS4gKFN1bW1hcnkgc2hvdWxkIG5vdCBkdXBsaWNhdGUsIGJ1dCBqdXN0IGluIGNhc2UpXG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcInRhYmxlXCIgJiYgIXNlZW4uaGFzT3duUHJvcGVydHlbXCJzdW1tYXJ5XCJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXJrIHRoaXMgYXMgYSBuZXcgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVuW1wic3VtbWFyeVwiXSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBuZXcgdmlvbGF0aW5nIGVsZW1lbnQgYWRkIGl0IHRvIHRoZSBzdHJ1Y3R1cmFsIGVsZW1lbnQgdG9rZW5zIGFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmFsRWxlbWVudFRva2Vucy5wdXNoKFwic3VtbWFyeVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1hcmsgdGhpcyBhcyBhIG5ldyBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVuW25vZGVOYW1lXSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBuZXcgdmlvbGF0aW5nIGVsZW1lbnQgYWRkIGl0IHRvIHRoZSBzdHJ1Y3R1cmFsIGVsZW1lbnQgdG9rZW5zIGFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmFsRWxlbWVudFRva2Vucy5wdXNoKG5vZGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB0YWtlIHRoZSBhcnJheSBvZiBzdHJ1Y3R1cmFsIGVsZW1lbnRzIGFuZCBqb2luIHRoZW0gd2l0aCBhIGNvbW1hIGFuZCBhIHNwYWNlIHRvIG1ha2UgZ3JhbW1hdGljYWwgY29ycmVjdCBpblxuICAgICAgICAgICAgLy8gdGhlIG1lc3NhZ2UuXG4gICAgICAgICAgICBsZXQgc3RydWN0dXJhbEVsZW1lbnRUb2tlbnNTdHIgPSBzdHJ1Y3R1cmFsRWxlbWVudFRva2Vucy5qb2luKFwiLCBcIik7XG5cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KGVycm9yTm9kZXMubGVuZ3RoID09IDAsIGVycm9yTm9kZXMsICcnLCAnJywgW2N1cnJlbnRFbGVtZW50VG9rZW4sIHN0cnVjdHVyYWxFbGVtZW50VG9rZW5zXSk7XG4gICAgICAgICAgICBpZiAoZXJyb3JOb2Rlcy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtjdXJyZW50RWxlbWVudFRva2VuLCBzdHJ1Y3R1cmFsRWxlbWVudFRva2Vuc1N0cl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0lCTWEvZXF1YWwtYWNjZXNzL2lzc3Vlcy8zNzJcbiAgICAgICAgICovXG4gICAgICAgICBpZDogXCJ0YWJsZV9hcmlhX2Rlc2NlbmRhbnRzXCIsXG4gICAgICAgICBjb250ZXh0OiBcImFyaWE6dGFibGUgZG9tOnRyW3JvbGVdLCBhcmlhOnRhYmxlIGRvbTp0aFtyb2xlXSwgYXJpYTp0YWJsZSBkb206dGRbcm9sZV1cIlxuICAgICAgICAgICAgKyBcIiwgYXJpYTpncmlkIGRvbTp0cltyb2xlXSwgYXJpYTpncmlkIGRvbTp0aFtyb2xlXSwgYXJpYTpncmlkIGRvbTp0ZFtyb2xlXVwiXG4gICAgICAgICAgICArIFwiLCBhcmlhOnRyZWVncmlkIGRvbTp0cltyb2xlXSwgYXJpYTp0cmVlZ3JpZCBkb206dGhbcm9sZV0sIGFyaWE6dHJlZWdyaWQgZG9tOnRkW3JvbGVdXCIsXG4gICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBoaWVyYXJjaGllcz86IFJ1bGVDb250ZXh0SGllcmFyY2h5KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICAgbGV0IHBhcmVudFJvbGUgPSBoaWVyYXJjaGllc1tcImFyaWFcIl0uZmlsdGVyKGhpZXIgPT4gW1widGFibGVcIiwgXCJncmlkXCIsIFwidHJlZWdyaWRcIl0uaW5jbHVkZXMoaGllci5yb2xlKSk7XG4gICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiZXhwbGljaXRfcm9sZVwiLCBbY29udGV4dFtcImRvbVwiXS5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIHBhcmVudFJvbGVbMF0ucm9sZV0pO1xuICAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9JQk1hL2VxdWFsLWFjY2Vzcy90cmVlL3N5YW4tMzEzOFxuICAgICAgICAgKi9cbiAgICAgICAgIGlkOiBcInRhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkXCIsXG4gICAgICAgICBjb250ZXh0OiBcImRvbTp0ZFtoZWFkZXJzXSwgZG9tOnRoW2hlYWRlcnNdXCIsXG4gICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBoaWVyYXJjaGllcz86IFJ1bGVDb250ZXh0SGllcmFyY2h5KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhcmVudFRhYmxlID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJ0YWJsZVwiKTtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBsYXlvdXQgdGFibGUgb3IgYSBzaW1wbGUgdGFibGUgdGhlIHJ1bGUgZG9lcyBub3QgYXBwbHkuXG4gICAgICAgICAgICBpZiAocGFyZW50VGFibGUgPT0gbnVsbCB8fCAhUlBUVXRpbC5pc05vZGVWaXNpYmxlKHBhcmVudFRhYmxlKSAgfHwgIVJQVFV0aWwuaXNEYXRhVGFibGUocGFyZW50VGFibGUpKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJoZWFkZXJzXCIpO1xuICAgICAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgaWRzID0gdmFsdWUuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgbGV0IGludmFsaWRIZWFkZXJWYWx1ZXMgPSBbXTtcbiAgICAgICAgICAgIGxldCBzYW1lTm9kZUhlYWRlclZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgbGV0IHNhbWVUYWJsZUhlYWRlclZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgbGV0IGludmFsaWRFbGVtSGVhZGVyVmFsdWVzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBpZHMubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlkID0gaWRzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChpZC50cmltKCkgPT09ICcnKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gZG9jLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWVsZW0pXG4gICAgICAgICAgICAgICAgICAgIGludmFsaWRIZWFkZXJWYWx1ZXMucHVzaChpZCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoRE9NVXRpbC5zYW1lTm9kZShlbGVtLCBydWxlQ29udGV4dCkpXG4gICAgICAgICAgICAgICAgICAgIHNhbWVOb2RlSGVhZGVyVmFsdWVzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFET01VdGlsLmlzSW5TYW1lVGFibGUoZWxlbSwgcnVsZUNvbnRleHQpKVxuICAgICAgICAgICAgICAgICAgICBzYW1lVGFibGVIZWFkZXJWYWx1ZXMucHVzaChpZCk7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtTmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1OYW1lICE9PSAndGgnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByb2xlcyA9IFJQVFV0aWwuZ2V0Um9sZXMoZWxlbSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJvbGVzLmluY2x1ZGVzKCdjb2x1bW5oZWFkZXInKSAmJiAhcm9sZXMuaW5jbHVkZXMoJ3Jvd2hlYWRlcicpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRFbGVtSGVhZGVyVmFsdWVzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVzdWx0cyA9IFtdO1xuICAgICAgICAgICAgaWYgKGludmFsaWRIZWFkZXJWYWx1ZXMubGVuZ3RoICE9IDApXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtpbnZhbGlkSGVhZGVyVmFsdWVzLnRvU3RyaW5nKCldKSk7XG4gICAgICAgICAgICBpZiAoc2FtZU5vZGVIZWFkZXJWYWx1ZXMubGVuZ3RoICE9IDApXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKFJ1bGVGYWlsKFwiRmFpbF8yXCIsIFtzYW1lTm9kZUhlYWRlclZhbHVlcy50b1N0cmluZygpXSkpO1xuICAgICAgICAgICAgaWYgKHNhbWVUYWJsZUhlYWRlclZhbHVlcy5sZW5ndGggIT0gMClcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goUnVsZUZhaWwoXCJGYWlsXzNcIiwgW3NhbWVUYWJsZUhlYWRlclZhbHVlcy50b1N0cmluZygpXSkpO1xuICAgICAgICAgICAgaWYgKGludmFsaWRFbGVtSGVhZGVyVmFsdWVzLmxlbmd0aCAhPSAwKVxuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChSdWxlRmFpbChcIkZhaWxfNFwiLCBbaW52YWxpZEVsZW1IZWFkZXJWYWx1ZXMudG9TdHJpbmcoKV0pKTtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNUYWJsZSB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGVzZXQgfSBmcm9tIFwiLi4vLi4vQ2hlY2tlclwiO1xuaW1wb3J0IHsgZVJ1bGVQb2xpY3ksIGVSdWxlQ2F0ZWdvcnksIGVUb29sa2l0TGV2ZWwsIGVSdWxlc2V0VHlwZSB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuXG5sZXQgYTExeVJ1bGVzZXRzOiBSdWxlc2V0W10gPSBbXG57XG4gICAgaWQ6IFwiRVhURU5TSU9OU1wiLFxuICAgIG5hbWU6IFwiRXh0ZW5zaW9uIFJ1bGVzXCIsXG4gICAgY2F0ZWdvcnk6IGVSdWxlQ2F0ZWdvcnkuQUNDRVNTSUJJTElUWSxcbiAgICBkZXNjcmlwdGlvbjogXCJSdWxlcyBmb3IgZW5hYmxpbmcgdGhlIGJyb3dzZXIgZXh0ZW5zaW9uc1wiLFxuICAgIHR5cGU6IGVSdWxlc2V0VHlwZS5FWFRFTlNJT04sXG4gICAgY2hlY2twb2ludHM6IFt7XG4gICAgICAgIFwibnVtXCI6IFwiMVwiLFxuICAgICAgICBuYW1lOiBcIkV4dGVuc2lvbiBDUCAxXCIsXG4gICAgICAgIHdjYWdMZXZlbDogXCJBXCIsXG4gICAgICAgIHN1bW1hcnk6IFwiUnVsZXMgZm9yIEV4dGVuc2lvblwiLFxuICAgICAgICBydWxlczogW3tcbiAgICAgICAgICAgIGlkOiBcImRldGVjdG9yX3RhYmJhYmxlXCIsXG4gICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuSU5GT1JNQVRJT04sXG4gICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICB9XVxuICAgIH1dXG59LFxue1xuICAgIGlkOiBcIklCTV9BY2Nlc3NpYmlsaXR5XCIsXG4gICAgbmFtZTogXCJJQk0gQWNjZXNzaWJpbGl0eVwiLFxuICAgIGNhdGVnb3J5OiBlUnVsZUNhdGVnb3J5LkFDQ0VTU0lCSUxJVFksXG4gICAgZGVzY3JpcHRpb246IFwiUnVsZXMgZm9yIFdDQUcgMi4xIEFBIHBsdXMgYWRkaXRpb25hbCBJQk0gY2hlY2tsaXN0IHN1cHBsZW1lbnRhbCByZXF1aXJlbWVudHMuXCIsXG4gICAgXCJjaGVja3BvaW50c1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk5vbi10ZXh0IENvbnRlbnRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQWxsIG5vbi10ZXh0IGNvbnRlbnQgdGhhdCBpcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgaGFzIGEgdGV4dCBhbHRlcm5hdGl2ZSB0aGF0IHNlcnZlcyB0aGUgZXF1aXZhbGVudCBwdXJwb3NlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbEltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0ltZ19Vc2VtYXBWYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9PYmplY3RfSGFzVGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BcHBsZXRfSGFzQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQXJlYV9IYXNBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSW1nX0FsdENvbW1vbk1pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9JbWdfTG9uZ0Rlc2NyaXB0aW9uMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfSGFzQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1ByZV9BU0NJSUFydFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9BdWRpb1ZpZGVvQWx0RmlsZW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfVGl0bGVFbXB0eVdoZW5BbHROdWxsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19JbWdfVXNlbWFwQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RleHRfRW1vdGljb25zXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19QcmVzZW50YXRpb25JbWdIYXNOb25OdWxsQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19GaWd1cmVfbGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9BbHRCcmllZlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9FbWJlZF9IYXNOb0VtYmVkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRW1iZWRfSGFzQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX1RyaWdnZXIyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19CYWNrZ3JvdW5kSW1nX0hhc1RleHRPclRpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX05vZW1iZWRfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQ2FudmFzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMi4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpby1vbmx5IGFuZCBWaWRlby1vbmx5IChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIHByZXJlY29yZGVkIGF1ZGlvLW9ubHkgb3IgdmlkZW8tb25seSBtZWRpYSwgYW4gYWx0ZXJuYXRpdmUgcHJvdmlkZXMgZXF1aXZhbGVudCBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0F1ZGlvVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FwdGlvbnMgKFByZXJlY29yZGVkKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDYXB0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBwcmVyZWNvcmRlZCBhdWRpbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkF1ZGlvIERlc2NyaXB0aW9uIG9yIE1lZGlhIEFsdGVybmF0aXZlIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQW4gYWx0ZXJuYXRpdmUgZm9yIHRpbWUtYmFzZWQgbWVkaWEgb3IgYXVkaW8gZGVzY3JpcHRpb24gb2YgdGhlIHByZXJlY29yZGVkIHZpZGVvIGNvbnRlbnQgaXMgcHJvdmlkZWQgZm9yIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FwdGlvbnMgKExpdmUpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDYXB0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBsaXZlIGF1ZGlvIGNvbnRlbnQgaW4gc3luY2hyb25pemVkIG1lZGlhLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX1ZpZGVvX0hhc05vVHJhY2tcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8gRGVzY3JpcHRpb24gKFByZXJlY29yZGVkKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQXVkaW8gZGVzY3JpcHRpb24gaXMgcHJvdmlkZWQgZm9yIGFsbCBwcmVyZWNvcmRlZCB2aWRlbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiSW5mbyBhbmQgUmVsYXRpb25zaGlwc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJbmZvcm1hdGlvbiwgc3RydWN0dXJlLCBhbmQgcmVsYXRpb25zaGlwcyBjb252ZXllZCB0aHJvdWdoIHByZXNlbnRhdGlvbiBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkIG9yIGFyZSBhdmFpbGFibGUgaW4gdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwibGFuZG1hcmtfbmFtZV91bmlxdWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInRhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LCBcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IZWFkZXJzX0Zld1dvcmRzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrcXVvdGVfSGFzQ2l0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTGFiZWxfVW5pcXVlRm9yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0xpc3RfVXNlTWFya3VwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfQ2FwdGlvbl9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9DYXB0aW9uX0luVGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RhYmxlX0RhdGFIZWFkaW5nc0FyaWFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfTGFiZWxfUmVmVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU3R5bGVfQmVmb3JlQWZ0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9MaXN0X01pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0luRmllbGRTZXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UYWJsZV9MYXlvdXRUcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX1N0cnVjdHVyZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk1lYW5pbmdmdWwgU2VxdWVuY2VcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2hlbiB0aGUgc2VxdWVuY2UgaW4gd2hpY2ggY29udGVudCBpcyBwcmVzZW50ZWQgYWZmZWN0cyBpdHMgbWVhbmluZywgYSBjb3JyZWN0IHJlYWRpbmcgc2VxdWVuY2UgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9FbGVtX0RpclZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiU2Vuc29yeSBDaGFyYWN0ZXJpc3RpY3NcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIGZvciB1bmRlcnN0YW5kaW5nIGFuZCBvcGVyYXRpbmcgY29udGVudCBkbyBub3QgcmVseSBzb2xlbHkgb24gc2Vuc29yeSBjaGFyYWN0ZXJpc3RpY3Mgb2YgY29tcG9uZW50cyBzdWNoIGFzIHNoYXBlLCBzaXplLCB2aXN1YWwgbG9jYXRpb24sIG9yaWVudGF0aW9uLCBvciBzb3VuZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RleHRfU2Vuc29yeVJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMy40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJPcmllbnRhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29udGVudCBkb2VzIG5vdCByZXN0cmljdCBpdHMgdmlldyBhbmQgb3BlcmF0aW9uIHRvIGEgc2luZ2xlIGRpc3BsYXkgb3JpZW50YXRpb24sIHN1Y2ggYXMgcG9ydHJhaXQgb3IgbGFuZHNjYXBlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMy41XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJJZGVudGlmeSBJbnB1dCBQdXJwb3NlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgcHVycG9zZSBvZiBlYWNoIGlucHV0IGZpZWxkIHRoYXQgY29sbGVjdHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVzZXIgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCB3aGVuIHRoZSBmaWVsZCBzZXJ2ZXMgYSBjb21tb24gcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlVzZSBvZiBDb2xvclwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb2xvciBpcyBub3QgdXNlZCBhcyB0aGUgb25seSB2aXN1YWwgbWVhbnMgb2YgY29udmV5aW5nIGluZm9ybWF0aW9uLCBpbmRpY2F0aW5nIGFuIGFjdGlvbiwgcHJvbXB0aW5nIGEgcmVzcG9uc2UsIG9yIGRpc3Rpbmd1aXNoaW5nIGEgdmlzdWFsIGVsZW1lbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9Gb250X0NvbG9ySW5Gb3JtXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpbyBDb250cm9sXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGFueSBhdWRpbyBwbGF5cyBhdXRvbWF0aWNhbGx5IGZvciBtb3JlIHRoYW4gMyBzZWNvbmRzLCBlaXRoZXIgYSBtZWNoYW5pc20gaXMgYXZhaWxhYmxlIHRvIHBhdXNlIG9yIHN0b3AgdGhlIGF1ZGlvLCBvciBhIG1lY2hhbmlzbSBpcyBhdmFpbGFibGUgdG8gY29udHJvbCBhdWRpbyB2b2x1bWUgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBvdmVyYWxsIHN5c3RlbSB2b2x1bWUgbGV2ZWwuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbWJlZF9BdXRvU3RhcnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29udHJhc3QgKE1pbmltdW0pXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgdmlzdWFsIHByZXNlbnRhdGlvbiBvZiB0ZXh0IGFuZCBpbWFnZXMgb2YgdGV4dCBoYXMgYSBjb250cmFzdCByYXRpbyBvZiBhdCBsZWFzdCA0LjU6MSwgd2l0aCBhIDM6MSByYXRpbyBmb3IgbGFyZ2Utc2NhbGUgdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlJlc2l6ZSBUZXh0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUZXh0IGNhbiBiZSByZXNpemVkIHdpdGhvdXQgYXNzaXN0aXZlIHRlY2hub2xvZ3kgdXAgdG8gMjAwIHBlcmNlbnQgd2l0aG91dCBsb3NzIG9mIGNvbnRlbnQgb3IgZnVuY3Rpb25hbGl0eS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIxX1N0eWxlX1ZpZXdwb3J0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJtZXRhX3ZpZXdwb3J0X3pvb21cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkltYWdlcyBvZiBUZXh0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiB0aGUgdGVjaG5vbG9naWVzIGJlaW5nIHVzZWQgY2FuIGFjaGlldmUgdGhlIHZpc3VhbCBwcmVzZW50YXRpb24sIHRleHQgaXMgdXNlZCB0byBjb252ZXkgaW5mb3JtYXRpb24gcmF0aGVyIHRoYW4gaW1hZ2VzIG9mIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjEwXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJSZWZsb3dcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNvbnRlbnQgY2FuIHJlZmxvdyB3aXRob3V0IGxvc3Mgb2YgaW5mb3JtYXRpb24gb3IgZnVuY3Rpb25hbGl0eSwgYW5kIHdpdGhvdXQgcmVxdWlyaW5nIHNjcm9sbGluZyBpbiB0d28gZGltZW5zaW9ucy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwibWV0YV92aWV3cG9ydF96b29tXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTm9uLXRleHQgQ29udHJhc3RcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBwYXJ0cyBvZiBncmFwaGljYWwgb2JqZWN0cyByZXF1aXJlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZW50LCBhbmQgdGhlIHZpc3VhbCBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpZGVudGlmeSBVSSBjb21wb25lbnRzIGFuZCBzdGF0ZXMsIGhhdmUgYSBjb250cmFzdCByYXRpbyBvZiBhdCBsZWFzdCAzOjEgYWdhaW5zdCBhZGphY2VudCBjb2xvcnMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjEyXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJUZXh0IFNwYWNpbmdcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIk5vIGxvc3Mgb2YgY29udGVudCBvciBmdW5jdGlvbmFsaXR5IG9jY3VycyB3aGVuIHVzZXJzIGNoYW5nZSBsZXR0ZXIsIHdvcmQgYW5kIHBhcmFncmFwaCBzcGFjaW5nLCBhcyB3ZWxsIGFzIGxpbmUgaGVpZ2h0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29udGVudCBvbiBIb3ZlciBvciBGb2N1c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2hlcmUgaG92ZXIgb3IgZm9jdXMgYWN0aW9ucyBjYXVzZSBhZGRpdGlvbmFsIGNvbnRlbnQgdG8gYmVjb21lIHZpc2libGUgYW5kIGhpZGRlbiwgdGhlIGFkZGl0aW9uYWwgY29udGVudCBpcyBkaXNtaXNzYWJsZSwgaG92ZXJhYmxlIGFuZCBwZXJzaXN0ZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJLZXlib2FyZFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgY29udGVudCBpcyBvcGVyYWJsZSB0aHJvdWdoIGEga2V5Ym9hcmQgaW50ZXJmYWNlIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpZmljIHRpbWluZ3MgZm9yIGluZGl2aWR1YWwga2V5c3Ryb2tlcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VsZW1fRXZlbnRNb3VzZUFuZEtleVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX01pc3NpbmdGb2N1c2FibGVDaGlsZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX01pc3NpbmdLZXlib2FyZEhhbmRsZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0F1ZGlvX1ZpZGVvX1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJObyBLZXlib2FyZCBUcmFwXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGtleWJvYXJkIGZvY3VzIGNhbiBiZSBtb3ZlZCB0byBhIGNvbXBvbmVudCB1c2luZyBhIGtleWJvYXJkIGludGVyZmFjZSwgdGhlbiBmb2N1cyBjYW4gYmUgbW92ZWQgYXdheSBmcm9tIHRoYXQgY29tcG9uZW50IHVzaW5nIG9ubHkgYSBrZXlib2FyZCBpbnRlcmZhY2UsIGFuZCwgaWYgaXQgcmVxdWlyZXMgbW9yZSB0aGFuIHVubW9kaWZpZWQgYXJyb3cgb3IgdGFiIGtleXMgb3Igb3RoZXIgc3RhbmRhcmQgZXhpdCBtZXRob2RzLCB0aGUgdXNlciBpcyBhZHZpc2VkIG9mIHRoZSBtZXRob2QgZm9yIG1vdmluZyBmb2N1cyBhd2F5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX01lZGlhX0RvY3VtZW50VHJpZ2dlcjJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMS40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDaGFyYWN0ZXIgS2V5IFNob3J0Y3V0c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhIGtleWJvYXJkIHNob3J0Y3V0IGlzIGltcGxlbWVudGVkIHVzaW5nIG9ubHkgbGV0dGVyLCBwdW5jdHVhdGlvbiwgbnVtYmVyIG9yIHN5bWJvbCBjaGFyYWN0ZXJzLCB0aGVuIHRoZSBzaG9ydGN1dCBjYW4gYmUgdHVybmVkIG9mZiwgcmVtYXBwZWQgb3IgYWN0aXZhdGVkIG9ubHkgb24gZm9jdXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4yLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlRpbWluZyBBZGp1c3RhYmxlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBlYWNoIHRpbWUgbGltaXQgdGhhdCBpcyBzZXQgYnkgdGhlIGNvbnRlbnQsIHRoZSB1c2VyIGNhbiB0dXJuIG9mZiwgYWRqdXN0LCBvciBleHRlbmQgdGhlIGxpbWl0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWV0YV9SZWZyZXNoXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMi4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJQYXVzZSwgU3RvcCwgSGlkZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgbW92aW5nLCBibGlua2luZywgc2Nyb2xsaW5nLCBvciBhdXRvLXVwZGF0aW5nIGluZm9ybWF0aW9uLCB0aGUgdXNlciBjYW4gcGF1c2UsIHN0b3AsIGhpZGUgb3IgYWRqdXN0IHRoZSBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01hcnF1ZWVfVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0JsaW5rX0Fsd2F5c1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxpbmtfQ1NTVHJpZ2dlcjFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVGhyZWUgRmxhc2hlcyBvciBCZWxvdyBUaHJlc2hvbGRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29udGVudCBkb2VzIG5vdCBjb250YWluIGFueXRoaW5nIHRoYXQgZmxhc2hlcyBtb3JlIHRoYW4gdGhyZWUgdGltZXMgaW4gYW55IG9uZSBzZWNvbmQgcGVyaW9kLCBvciB0aGUgZmxhc2ggaXMgYmVsb3cgdGhlIGdlbmVyYWwgZmxhc2ggYW5kIHJlZCBmbGFzaCB0aHJlc2hvbGRzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJCeXBhc3MgQmxvY2tzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkEgbWVjaGFuaXNtIGlzIGF2YWlsYWJsZSB0byBieXBhc3MgYmxvY2tzIG9mIGNvbnRlbnQgdGhhdCBhcmUgcmVwZWF0ZWQgb24gbXVsdGlwbGUgV2ViIHBhZ2VzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRnJhbWVfSGFzVGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IdG1sX1NraXBOYXZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfRnJhbWVfU3JjSHRtbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXBwbGljYXRpb25MYW5kbWFya3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0FwcGxpY2F0aW9uTGFuZG1hcmtMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0JvZHlfRmlyc3RBQ29udGFpbnNTa2lwVGV4dF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9SZWdpb25MYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVNYWluc1Zpc2libGVMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVDb21wbGVtZW50YXJ5TGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUUgXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXJ0aWNsZVJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUdyb3VwUm9sZXNfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9JblNpYmxpbmdTZXRfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVNYWluc1JlcXVpcmVMYWJlbF9JbXBsaWNpdF8yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUGFnZSBUaXRsZWRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2ViIHBhZ2VzLCBub24td2ViIGRvY3VtZW50cywgYW5kIHNvZnR3YXJlIGhhdmUgdGl0bGVzIHRoYXQgZGVzY3JpYmUgdG9waWMgb3IgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0RvY19IYXNUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UaXRsZV9WYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGb2N1cyBPcmRlclwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBjb250ZW50IGNhbiBiZSBuYXZpZ2F0ZWQgc2VxdWVudGlhbGx5IGFuZCB0aGUgbmF2aWdhdGlvbiBzZXF1ZW5jZXMgYWZmZWN0IG1lYW5pbmcgb3Igb3BlcmF0aW9uLCBmb2N1c2FibGUgY29tcG9uZW50cyByZWNlaXZlIGZvY3VzIGluIGFuIG9yZGVyIHRoYXQgcHJlc2VydmVzIG1lYW5pbmcgYW5kIG9wZXJhYmlsaXR5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJJQk1BX0ZvY3VzX1RhYmJhYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Gb2N1c19NdWx0aVRhYlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMaW5rIFB1cnBvc2UgKEluIENvbnRleHQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBwdXJwb3NlIG9mIGVhY2ggbGluayBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBsaW5rIHRleHQgYWxvbmUgb3IgZnJvbSB0aGUgbGluayB0ZXh0IHRvZ2V0aGVyIHdpdGggaXRzIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCBsaW5rIGNvbnRlbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BX0hhc1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTXVsdGlwbGUgV2F5c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTW9yZSB0aGFuIG9uZSB3YXkgaXMgYXZhaWxhYmxlIHRvIGxvY2F0ZSBhIFdlYiBwYWdlIHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMsIGV4Y2VwdCB3aGVyZSB0aGUgV2ViIFBhZ2UgaXMgdGhlIHJlc3VsdCBvZiwgb3IgYSBzdGVwIGluLCBhIHByb2Nlc3MuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjZcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkhlYWRpbmdzIGFuZCBMYWJlbHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkhlYWRpbmdzIGFuZCBsYWJlbHMgZGVzY3JpYmUgdG9waWMgb3IgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0hlYWRlcl9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkZvY3VzIFZpc2libGVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFueSBrZXlib2FyZCBvcGVyYWJsZSB1c2VyIGludGVyZmFjZSBoYXMgYSBtb2RlIG9mIG9wZXJhdGlvbiB3aGVyZSB0aGUga2V5Ym9hcmQgZm9jdXMgaW5kaWNhdG9yIGlzIHZpc2libGUuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9IaW5kZXJGb2N1czFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2NyaXB0X0ZvY3VzQmx1cnNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjUuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUG9pbnRlciBHZXN0dXJlc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbGwgZnVuY3Rpb25hbGl0eSB0aGF0IHVzZXMgbXVsdGlwb2ludCBvciBwYXRoLWJhc2VkIGdlc3R1cmVzIGZvciBvcGVyYXRpb24gY2FuIGJlIG9wZXJhdGVkIHdpdGggYSBzaW5nbGUgcG9pbnRlciB3aXRob3V0IGEgcGF0aC1iYXNlZCBnZXN0dXJlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJQb2ludGVyIENhbmNlbGxhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgZnVuY3Rpb25hbGl0eSB0aGF0IGNhbiBiZSBvcGVyYXRlZCB1c2luZyBhIHNpbmdsZSBwb2ludGVyLCBjb21wbGV0aW9uIG9mIHRoZSBmdW5jdGlvbiBpcyBvbiB0aGUgdXAtZXZlbnQgd2l0aCBhbiBhYmlsaXR5IHRvIGFib3J0LCB1bmRvIG9yIHJldmVyc2UgdGhlIG91dGNvbWUuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi41LjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhYmVsIGluIE5hbWVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudHMgd2l0aCBsYWJlbHMgdGhhdCBpbmNsdWRlIHRleHQgb3IgaW1hZ2VzIG9mIHRleHQsIHRoZSBhY2Nlc3NpYmxlIG5hbWUgY29udGFpbnMgdGhlIHRleHQgdGhhdCBpcyBwcmVzZW50ZWQgdmlzdWFsbHkuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMV9MYWJlbF9BY2Nlc3NpYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi41LjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk1vdGlvbiBBY3R1YXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRnVuY3Rpb25hbGl0eSB0aGF0IGNhbiBiZSBvcGVyYXRlZCBieSBtb3Rpb24gY2FuIGFsc28gYmUgb3BlcmF0ZWQgYnkgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50cywgYW5kIHRoZSBtb3Rpb24gdHJpZ2dlciBjYW4gYmUgZGlzYWJsZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhbmd1YWdlIG9mIFBhZ2VcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIGRlZmF1bHQgaHVtYW4gbGFuZ3VhZ2Ugb2YgV2ViIHBhZ2VzLCBub24tV2ViIGRvY3VtZW50cywgb3Igc29mdHdhcmUgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0h0bWxfSGFzTGFuZ1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYW5ndWFnZSBvZiBQYXJ0c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIGh1bWFuIGxhbmd1YWdlIG9mIGVhY2ggcGFzc2FnZSBvciBwaHJhc2UgaW4gdGhlIGNvbnRlbnQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0VsZW1fTGFuZ19WYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk9uIEZvY3VzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldoZW4gYW55IGNvbXBvbmVudCByZWNlaXZlcyBmb2N1cywgaXQgZG9lcyBub3QgaW5pdGlhdGUgYSBjaGFuZ2Ugb2YgY29udGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk9uIElucHV0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNoYW5naW5nIHRoZSBzZXR0aW5nIG9mIGFueSB1c2VyIGludGVyZmFjZSBjb21wb25lbnQgZG9lcyBub3QgYXV0b21hdGljYWxseSBjYXVzZSBhIGNoYW5nZSBvZiBjb250ZXh0IHVubGVzcyB0aGUgdXNlciBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBiZWhhdmlvciBiZWZvcmUgdXNpbmcgdGhlIGNvbXBvbmVudC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRm9ybV9IYXNTdWJtaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Gb3JtX1RhcmdldEFuZFRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9IYXNPbmNoYW5nZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Zvcm1fQ2hhbmdlRW1wdHlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNvbnNpc3RlbnQgTmF2aWdhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTmF2aWdhdGlvbmFsIG1lY2hhbmlzbXMgdGhhdCBhcmUgcmVwZWF0ZWQgb24gbXVsdGlwbGUgV2ViIHBhZ2VzIHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMgb2NjdXIgaW4gdGhlIHNhbWUgcmVsYXRpdmUgb3JkZXIgZWFjaCB0aW1lIHRoZXkgYXJlIHJlcGVhdGVkLCB1bmxlc3MgYSBjaGFuZ2UgaXMgaW5pdGlhdGVkIGJ5IHRoZSB1c2VyLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDb25zaXN0ZW50IElkZW50aWZpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb21wb25lbnRzIHRoYXQgaGF2ZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMgYXJlIGlkZW50aWZpZWQgY29uc2lzdGVudGx5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFcnJvciBJZGVudGlmaWNhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhbiBpbnB1dCBlcnJvciBpcyBhdXRvbWF0aWNhbGx5IGRldGVjdGVkLCB0aGUgaXRlbSB0aGF0IGlzIGluIGVycm9yIGlzIGlkZW50aWZpZWQgYW5kIHRoZSBlcnJvciBpcyBkZXNjcmliZWQgdG8gdGhlIHVzZXIgaW4gdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX0Vycm9yTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYWJlbHMgb3IgSW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkxhYmVscyBvciBpbnN0cnVjdGlvbnMgYXJlIHByb3ZpZGVkIHdoZW4gY29udGVudCByZXF1aXJlcyB1c2VyIGlucHV0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfTGFiZWxCZWZvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfTGFiZWxBZnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQWNjZXNza2V5X05lZWRMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX09yX0hUTUw1X0F0dHJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0lucHV0X1BsYWNlaG9sZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1Zpc2libGVMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRXJyb3IgU3VnZ2VzdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgYW4gaW5wdXQgZXJyb3IgaXMgYXV0b21hdGljYWxseSBkZXRlY3RlZCBhbmQgc3VnZ2VzdGlvbnMgZm9yIGNvcnJlY3Rpb24gYXJlIGtub3duLCB0aGVuIHRoZSBzdWdnZXN0aW9ucyBhcmUgcHJvdmlkZWQgdG8gdGhlIHVzZXIsIHVubGVzcyBpdCB3b3VsZCBqZW9wYXJkaXplIHRoZSBzZWN1cml0eSBvciBwdXJwb3NlIG9mIHRoZSBjb250ZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFcnJvciBQcmV2ZW50aW9uIChMZWdhbCwgRmluYW5jaWFsLCBEYXRhKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGNvbnRlbnQgdGhhdCBjYXVzZSBsZWdhbCBjb21taXRtZW50cyBvciBmaW5hbmNpYWwgdHJhbnNhY3Rpb25zIGZvciB0aGUgdXNlciB0byBvY2N1ciwgdGhhdCBtb2RpZnkgb3IgZGVsZXRlIHVzZXItY29udHJvbGxhYmxlIGRhdGEgaW4gZGF0YSBzdG9yYWdlIHN5c3RlbXMsIG9yIHRoYXQgc3VibWl0IHVzZXIgdGVzdCByZXNwb25zZXMsIHRoZSB1c2VyIGNhbiByZXZlcnNlLCBjb3JyZWN0LCBvciBjb25maXJtIHRoZSBhY3Rpb24uXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiNC4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBhcnNpbmdcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW4gY29udGVudCBpbXBsZW1lbnRlZCB1c2luZyBtYXJrdXAgbGFuZ3VhZ2VzLCBlbGVtZW50cyBoYXZlIGNvbXBsZXRlIHN0YXJ0IGFuZCBlbmQgdGFncywgZWxlbWVudHMgYXJlIG5lc3RlZCBhY2NvcmRpbmcgdG8gdGhlaXIgc3BlY2lmaWNhdGlvbnMsIGVsZW1lbnRzIGRvIG5vdCBjb250YWluIGR1cGxpY2F0ZSBhdHRyaWJ1dGVzLCBhbmQgYW55IElEcyBhcmUgdW5pcXVlLCBleGNlcHQgd2hlcmUgdGhlIHNwZWNpZmljYXRpb25zIGFsbG93IHRoZXNlIGZlYXR1cmVzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRWxlbV9VbmlxdWVJZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCI0LjEuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTmFtZSwgUm9sZSwgVmFsdWVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGFsbCB1c2VyIGludGVyZmFjZSBjb21wb25lbnRzIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZm9ybSBlbGVtZW50cywgbGlua3MgYW5kIGNvbXBvbmVudHMgZ2VuZXJhdGVkIGJ5IHNjcmlwdHMpLCB0aGUgbmFtZSBhbmQgcm9sZSBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkOyBzdGF0ZXMsIHByb3BlcnRpZXMsIGFuZCB2YWx1ZXMgdGhhdCBjYW4gYmUgc2V0IGJ5IHRoZSB1c2VyIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IHNldDsgYW5kIG5vdGlmaWNhdGlvbiBvZiBjaGFuZ2VzIHRvIHRoZXNlIGl0ZW1zIGlzIGF2YWlsYWJsZSB0byB1c2VyIGFnZW50cywgaW5jbHVkaW5nIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRSb2xlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwidGFibGVfYXJpYV9kZXNjZW5kYW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkSWRSZWZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZFByb3BlcnRpZXNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX0ltZ0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9TdmdBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0NhbnZhc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhcmlhX3NlbWFudGljc19yb2xlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9zZW1hbnRpY3NfYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbl9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkUGFyZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfRXZlbnRIYW5kbGVyTWlzc2luZ1JvbGVfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9XaWRnZXRMYWJlbHNfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0xpc3RfR3JvdXBfTGlzdEl0ZW1cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FjdGl2ZURlc2NlbmRhbnRDaGVja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfdmVyc2lvblwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2hhc3BvcHVwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfZm9jdXNhYmxlX2VsZW1lbnRzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9hdXRvY29tcGxldGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhcmlhX2hpZGRlbl9mb2N1c19taXN1c2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF1cbn0sXG57XG4gICAgaWQ6IFwiV0NBR18yXzFcIixcbiAgICBuYW1lOiBcIldDQUcgMi4xIChBLCBBQSlcIixcbiAgICBjYXRlZ29yeTogZVJ1bGVDYXRlZ29yeS5BQ0NFU1NJQklMSVRZLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJ1bGVzIGZvciBXQ0FHIDIuMSBBQS4gVGhpcyBpcyB0aGUgY3VycmVudCBXM0MgcmVjb21tZW5kYXRpb24uIENvbnRlbnQgdGhhdCBjb25mb3JtcyB0byBXQ0FHIDIuMSBhbHNvIGNvbmZvcm1zIHRvIFdDQUcgMi4wLlwiLFxuICAgIFwiY2hlY2twb2ludHNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJOb24tdGV4dCBDb250ZW50XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFsbCBub24tdGV4dCBjb250ZW50IHRoYXQgaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGhhcyBhIHRleHQgYWx0ZXJuYXRpdmUgdGhhdCBzZXJ2ZXMgdGhlIGVxdWl2YWxlbnQgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9JbWdfVXNlbWFwVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfT2JqZWN0X0hhc1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQXBwbGV0X0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FyZWFfSGFzQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0ltZ19BbHRDb21tb25NaXN1c2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSW1nX0xvbmdEZXNjcmlwdGlvbjJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9QcmVfQVNDSUlBcnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX0JhY2tncm91bmRJbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfTGlua1RleHROb3RSZWR1bmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfSW1nX1VzZW1hcEFsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UZXh0X0Vtb3RpY29uc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfRmlndXJlX2xhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfQWx0QnJpZWZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9FbWJlZF9IYXNOb0VtYmVkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VtYmVkX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9UcmlnZ2VyMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19CYWNrZ3JvdW5kSW1nX0hhc1RleHRPclRpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX05vZW1iZWRfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQ2FudmFzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMi4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpby1vbmx5IGFuZCBWaWRlby1vbmx5IChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIHByZXJlY29yZGVkIGF1ZGlvLW9ubHkgb3IgdmlkZW8tb25seSBtZWRpYSwgYW4gYWx0ZXJuYXRpdmUgcHJvdmlkZXMgZXF1aXZhbGVudCBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0F1ZGlvVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FwdGlvbnMgKFByZXJlY29yZGVkKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDYXB0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBwcmVyZWNvcmRlZCBhdWRpbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkF1ZGlvIERlc2NyaXB0aW9uIG9yIE1lZGlhIEFsdGVybmF0aXZlIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQW4gYWx0ZXJuYXRpdmUgZm9yIHRpbWUtYmFzZWQgbWVkaWEgb3IgYXVkaW8gZGVzY3JpcHRpb24gb2YgdGhlIHByZXJlY29yZGVkIHZpZGVvIGNvbnRlbnQgaXMgcHJvdmlkZWQgZm9yIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FwdGlvbnMgKExpdmUpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDYXB0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBsaXZlIGF1ZGlvIGNvbnRlbnQgaW4gc3luY2hyb25pemVkIG1lZGlhLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX1ZpZGVvX0hhc05vVHJhY2tcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8gRGVzY3JpcHRpb24gKFByZXJlY29yZGVkKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQXVkaW8gZGVzY3JpcHRpb24gaXMgcHJvdmlkZWQgZm9yIGFsbCBwcmVyZWNvcmRlZCB2aWRlbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiSW5mbyBhbmQgUmVsYXRpb25zaGlwc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJbmZvcm1hdGlvbiwgc3RydWN0dXJlLCBhbmQgcmVsYXRpb25zaGlwcyBjb252ZXllZCB0aHJvdWdoIHByZXNlbnRhdGlvbiBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkIG9yIGFyZSBhdmFpbGFibGUgaW4gdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwibGFuZG1hcmtfbmFtZV91bmlxdWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwidGFibGVfaGVhZGVyc19yZWZfdmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0hlYWRlcnNfRmV3V29yZHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxvY2txdW90ZV9IYXNDaXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxvY2txdW90ZV9XcmFwc1RleHRRdW90ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrX1Nob3VsZEJlSGVhZGluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9MYWJlbF9VbmlxdWVGb3JcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTGlzdF9Vc2VNYXJrdXBcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwxXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UYWJsZV9DYXBTdW1tUmVkdW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9DYXB0aW9uX0hhc0NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX0NhcHRpb25fSW5UYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9MYWJlbF9SZWZWYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TdHlsZV9CZWZvcmVBZnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0xpc3RfTWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TZWxlY3RfSGFzT3B0R3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfSW5GaWVsZFNldFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RhYmxlX0xheW91dFRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfU3RydWN0dXJlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk1lYW5pbmdmdWwgU2VxdWVuY2VcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2hlbiB0aGUgc2VxdWVuY2UgaW4gd2hpY2ggY29udGVudCBpcyBwcmVzZW50ZWQgYWZmZWN0cyBpdHMgbWVhbmluZywgYSBjb3JyZWN0IHJlYWRpbmcgc2VxdWVuY2UgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9FbGVtX0RpclZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiU2Vuc29yeSBDaGFyYWN0ZXJpc3RpY3NcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIGZvciB1bmRlcnN0YW5kaW5nIGFuZCBvcGVyYXRpbmcgY29udGVudCBkbyBub3QgcmVseSBzb2xlbHkgb24gc2Vuc29yeSBjaGFyYWN0ZXJpc3RpY3Mgb2YgY29tcG9uZW50cyBzdWNoIGFzIHNoYXBlLCBzaXplLCB2aXN1YWwgbG9jYXRpb24sIG9yaWVudGF0aW9uLCBvciBzb3VuZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RleHRfU2Vuc29yeVJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMy40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJPcmllbnRhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb250ZW50IGRvZXMgbm90IHJlc3RyaWN0IGl0cyB2aWV3IGFuZCBvcGVyYXRpb24gdG8gYSBzaW5nbGUgZGlzcGxheSBvcmllbnRhdGlvbiwgc3VjaCBhcyBwb3J0cmFpdCBvciBsYW5kc2NhcGUuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIklkZW50aWZ5IElucHV0IFB1cnBvc2VcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBwdXJwb3NlIG9mIGVhY2ggaW5wdXQgZmllbGQgdGhhdCBjb2xsZWN0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlciBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkIHdoZW4gdGhlIGZpZWxkIHNlcnZlcyBhIGNvbW1vbiBwdXJwb3NlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjFfSW5wdXRfQXV0b2NvbXBsZXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVXNlIG9mIENvbG9yXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNvbG9yIGlzIG5vdCB1c2VkIGFzIHRoZSBvbmx5IHZpc3VhbCBtZWFucyBvZiBjb252ZXlpbmcgaW5mb3JtYXRpb24sIGluZGljYXRpbmcgYW4gYWN0aW9uLCBwcm9tcHRpbmcgYSByZXNwb25zZSwgb3IgZGlzdGluZ3Vpc2hpbmcgYSB2aXN1YWwgZWxlbWVudC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0ZvbnRfQ29sb3JJbkZvcm1cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkF1ZGlvIENvbnRyb2xcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgYW55IGF1ZGlvIHBsYXlzIGF1dG9tYXRpY2FsbHkgZm9yIG1vcmUgdGhhbiAzIHNlY29uZHMsIGVpdGhlciBhIG1lY2hhbmlzbSBpcyBhdmFpbGFibGUgdG8gcGF1c2Ugb3Igc3RvcCB0aGUgYXVkaW8sIG9yIGEgbWVjaGFuaXNtIGlzIGF2YWlsYWJsZSB0byBjb250cm9sIGF1ZGlvIHZvbHVtZSBpbmRlcGVuZGVudGx5IGZyb20gdGhlIG92ZXJhbGwgc3lzdGVtIHZvbHVtZSBsZXZlbC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VtYmVkX0F1dG9TdGFydFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDb250cmFzdCAoTWluaW11bSlcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSB2aXN1YWwgcHJlc2VudGF0aW9uIG9mIHRleHQgYW5kIGltYWdlcyBvZiB0ZXh0IGhhcyBhIGNvbnRyYXN0IHJhdGlvIG9mIGF0IGxlYXN0IDQuNToxLCB3aXRoIGEgMzoxIHJhdGlvIGZvciBsYXJnZS1zY2FsZSB0ZXh0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFfUFZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUmVzaXplIFRleHRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRleHQgY2FuIGJlIHJlc2l6ZWQgd2l0aG91dCBhc3Npc3RpdmUgdGVjaG5vbG9neSB1cCB0byAyMDAgcGVyY2VudCB3aXRob3V0IGxvc3Mgb2YgY29udGVudCBvciBmdW5jdGlvbmFsaXR5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjFfU3R5bGVfVmlld3BvcnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC41XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJJbWFnZXMgb2YgVGV4dFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgdGhlIHRlY2hub2xvZ2llcyBiZWluZyB1c2VkIGNhbiBhY2hpZXZlIHRoZSB2aXN1YWwgcHJlc2VudGF0aW9uLCB0ZXh0IGlzIHVzZWQgdG8gY29udmV5IGluZm9ybWF0aW9uIHJhdGhlciB0aGFuIGltYWdlcyBvZiB0ZXh0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xMFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUmVmbG93XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb250ZW50IGNhbiByZWZsb3cgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uIG9yIGZ1bmN0aW9uYWxpdHksIGFuZCB3aXRob3V0IHJlcXVpcmluZyBzY3JvbGxpbmcgaW4gdHdvIGRpbWVuc2lvbnMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjExXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJOb24tdGV4dCBDb250cmFzdFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIHBhcnRzIG9mIGdyYXBoaWNhbCBvYmplY3RzIHJlcXVpcmVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRlbnQsIGFuZCB0aGUgdmlzdWFsIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGlkZW50aWZ5IFVJIGNvbXBvbmVudHMgYW5kIHN0YXRlcywgaGF2ZSBhIGNvbnRyYXN0IHJhdGlvIG9mIGF0IGxlYXN0IDM6MSBhZ2FpbnN0IGFkamFjZW50IGNvbG9ycy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuMTJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlRleHQgU3BhY2luZ1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTm8gbG9zcyBvZiBjb250ZW50IG9yIGZ1bmN0aW9uYWxpdHkgb2NjdXJzIHdoZW4gdXNlcnMgY2hhbmdlIGxldHRlciwgd29yZCBhbmQgcGFyYWdyYXBoIHNwYWNpbmcsIGFzIHdlbGwgYXMgbGluZSBoZWlnaHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjEzXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDb250ZW50IG9uIEhvdmVyIG9yIEZvY3VzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJXaGVyZSBob3ZlciBvciBmb2N1cyBhY3Rpb25zIGNhdXNlIGFkZGl0aW9uYWwgY29udGVudCB0byBiZWNvbWUgdmlzaWJsZSBhbmQgaGlkZGVuLCB0aGUgYWRkaXRpb25hbCBjb250ZW50IGlzIGRpc21pc3NhYmxlLCBob3ZlcmFibGUgYW5kIHBlcnNpc3RlbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIktleWJvYXJkXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBjb250ZW50IGlzIG9wZXJhYmxlIHRocm91Z2ggYSBrZXlib2FyZCBpbnRlcmZhY2Ugd2l0aG91dCByZXF1aXJpbmcgc3BlY2lmaWMgdGltaW5ncyBmb3IgaW5kaXZpZHVhbCBrZXlzdHJva2VzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9JbnZhbGlkVGFiaW5kZXhGb3JBY3RpdmVkZXNjZW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTWlzc2luZ0ZvY3VzYWJsZUNoaWxkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTWlzc2luZ0tleWJvYXJkSGFuZGxlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXVkaW9fVmlkZW9fVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXBwbGljYXRpb25fUm9sZV9UZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4xLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk5vIEtleWJvYXJkIFRyYXBcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYga2V5Ym9hcmQgZm9jdXMgY2FuIGJlIG1vdmVkIHRvIGEgY29tcG9uZW50IHVzaW5nIGEga2V5Ym9hcmQgaW50ZXJmYWNlLCB0aGVuIGZvY3VzIGNhbiBiZSBtb3ZlZCBhd2F5IGZyb20gdGhhdCBjb21wb25lbnQgdXNpbmcgb25seSBhIGtleWJvYXJkIGludGVyZmFjZSwgYW5kLCBpZiBpdCByZXF1aXJlcyBtb3JlIHRoYW4gdW5tb2RpZmllZCBhcnJvdyBvciB0YWIga2V5cyBvciBvdGhlciBzdGFuZGFyZCBleGl0IG1ldGhvZHMsIHRoZSB1c2VyIGlzIGFkdmlzZWQgb2YgdGhlIG1ldGhvZCBmb3IgbW92aW5nIGZvY3VzIGF3YXkuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfTWVkaWFfRG9jdW1lbnRUcmlnZ2VyMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4xLjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNoYXJhY3RlciBLZXkgU2hvcnRjdXRzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGEga2V5Ym9hcmQgc2hvcnRjdXQgaXMgaW1wbGVtZW50ZWQgdXNpbmcgb25seSBsZXR0ZXIsIHB1bmN0dWF0aW9uLCBudW1iZXIgb3Igc3ltYm9sIGNoYXJhY3RlcnMsIHRoZW4gdGhlIHNob3J0Y3V0IGNhbiBiZSB0dXJuZWQgb2ZmLCByZW1hcHBlZCBvciBhY3RpdmF0ZWQgb25seSBvbiBmb2N1cy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjIuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVGltaW5nIEFkanVzdGFibGVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGVhY2ggdGltZSBsaW1pdCB0aGF0IGlzIHNldCBieSB0aGUgY29udGVudCwgdGhlIHVzZXIgY2FuIHR1cm4gb2ZmLCBhZGp1c3QsIG9yIGV4dGVuZCB0aGUgbGltaXQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZXRhX1JlZnJlc2hcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9NZXRhX1JlZGlyZWN0WmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBhdXNlLCBTdG9wLCBIaWRlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBtb3ZpbmcsIGJsaW5raW5nLCBzY3JvbGxpbmcsIG9yIGF1dG8tdXBkYXRpbmcgaW5mb3JtYXRpb24sIHRoZSB1c2VyIGNhbiBwYXVzZSwgc3RvcCwgaGlkZSBvciBhZGp1c3QgdGhlIGluZm9ybWF0aW9uLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWFycXVlZV9UcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQmxpbmtfQWx3YXlzVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9CbGlua19DU1NUcmlnZ2VyMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMy4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJUaHJlZSBGbGFzaGVzIG9yIEJlbG93IFRocmVzaG9sZFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb250ZW50IGRvZXMgbm90IGNvbnRhaW4gYW55dGhpbmcgdGhhdCBmbGFzaGVzIG1vcmUgdGhhbiB0aHJlZSB0aW1lcyBpbiBhbnkgb25lIHNlY29uZCBwZXJpb2QsIG9yIHRoZSBmbGFzaCBpcyBiZWxvdyB0aGUgZ2VuZXJhbCBmbGFzaCBhbmQgcmVkIGZsYXNoIHRocmVzaG9sZHMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkJ5cGFzcyBCbG9ja3NcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQSBtZWNoYW5pc20gaXMgYXZhaWxhYmxlIHRvIGJ5cGFzcyBibG9ja3Mgb2YgY29udGVudCB0aGF0IGFyZSByZXBlYXRlZCBvbiBtdWx0aXBsZSBXZWIgcGFnZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9GcmFtZV9IYXNUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0h0bWxfU2tpcE5hdlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9GcmFtZV9TcmNIdG1sXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVBcHBsaWNhdGlvbkxhbmRtYXJrc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Cb2R5X0ZpcnN0QVNraXBzX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQm9keV9GaXJzdEFDb250YWluc1NraXBUZXh0X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVnaW9uTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXJ0aWNsZVJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUdyb3VwUm9sZXNfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9JblNpYmxpbmdTZXRfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVNYWluc1JlcXVpcmVMYWJlbF9JbXBsaWNpdF8yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUGFnZSBUaXRsZWRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2ViIHBhZ2VzLCBub24td2ViIGRvY3VtZW50cywgYW5kIHNvZnR3YXJlIGhhdmUgdGl0bGVzIHRoYXQgZGVzY3JpYmUgdG9waWMgb3IgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0RvY19IYXNUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UaXRsZV9WYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGb2N1cyBPcmRlclwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBjb250ZW50IGNhbiBiZSBuYXZpZ2F0ZWQgc2VxdWVudGlhbGx5IGFuZCB0aGUgbmF2aWdhdGlvbiBzZXF1ZW5jZXMgYWZmZWN0IG1lYW5pbmcgb3Igb3BlcmF0aW9uLCBmb2N1c2FibGUgY29tcG9uZW50cyByZWNlaXZlIGZvY3VzIGluIGFuIG9yZGVyIHRoYXQgcHJlc2VydmVzIG1lYW5pbmcgYW5kIG9wZXJhYmlsaXR5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJJQk1BX0ZvY3VzX1RhYmJhYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Gb2N1c19NdWx0aVRhYlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMaW5rIFB1cnBvc2UgKEluIENvbnRleHQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBwdXJwb3NlIG9mIGVhY2ggbGluayBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBsaW5rIHRleHQgYWxvbmUgb3IgZnJvbSB0aGUgbGluayB0ZXh0IHRvZ2V0aGVyIHdpdGggaXRzIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCBsaW5rIGNvbnRlbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BX0hhc1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTXVsdGlwbGUgV2F5c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTW9yZSB0aGFuIG9uZSB3YXkgaXMgYXZhaWxhYmxlIHRvIGxvY2F0ZSBhIFdlYiBwYWdlIHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMsIGV4Y2VwdCB3aGVyZSB0aGUgV2ViIFBhZ2UgaXMgdGhlIHJlc3VsdCBvZiwgb3IgYSBzdGVwIGluLCBhIHByb2Nlc3MuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjZcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkhlYWRpbmdzIGFuZCBMYWJlbHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkhlYWRpbmdzIGFuZCBsYWJlbHMgZGVzY3JpYmUgdG9waWMgb3IgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0hlYWRlcl9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkZvY3VzIFZpc2libGVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFueSBrZXlib2FyZCBvcGVyYWJsZSB1c2VyIGludGVyZmFjZSBoYXMgYSBtb2RlIG9mIG9wZXJhdGlvbiB3aGVyZSB0aGUga2V5Ym9hcmQgZm9jdXMgaW5kaWNhdG9yIGlzIHZpc2libGUuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9IaW5kZXJGb2N1czFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2NyaXB0X0ZvY3VzQmx1cnNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjUuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUG9pbnRlciBHZXN0dXJlc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbGwgZnVuY3Rpb25hbGl0eSB0aGF0IHVzZXMgbXVsdGlwb2ludCBvciBwYXRoLWJhc2VkIGdlc3R1cmVzIGZvciBvcGVyYXRpb24gY2FuIGJlIG9wZXJhdGVkIHdpdGggYSBzaW5nbGUgcG9pbnRlciB3aXRob3V0IGEgcGF0aC1iYXNlZCBnZXN0dXJlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJQb2ludGVyIENhbmNlbGxhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgZnVuY3Rpb25hbGl0eSB0aGF0IGNhbiBiZSBvcGVyYXRlZCB1c2luZyBhIHNpbmdsZSBwb2ludGVyLCBjb21wbGV0aW9uIG9mIHRoZSBmdW5jdGlvbiBpcyBvbiB0aGUgdXAtZXZlbnQgd2l0aCBhbiBhYmlsaXR5IHRvIGFib3J0LCB1bmRvIG9yIHJldmVyc2UgdGhlIG91dGNvbWUuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi41LjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhYmVsIGluIE5hbWVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudHMgd2l0aCBsYWJlbHMgdGhhdCBpbmNsdWRlIHRleHQgb3IgaW1hZ2VzIG9mIHRleHQsIHRoZSBhY2Nlc3NpYmxlIG5hbWUgY29udGFpbnMgdGhlIHRleHQgdGhhdCBpcyBwcmVzZW50ZWQgdmlzdWFsbHkuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMV9MYWJlbF9BY2Nlc3NpYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi41LjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk1vdGlvbiBBY3R1YXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRnVuY3Rpb25hbGl0eSB0aGF0IGNhbiBiZSBvcGVyYXRlZCBieSBtb3Rpb24gY2FuIGFsc28gYmUgb3BlcmF0ZWQgYnkgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50cywgYW5kIHRoZSBtb3Rpb24gdHJpZ2dlciBjYW4gYmUgZGlzYWJsZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhbmd1YWdlIG9mIFBhZ2VcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIGRlZmF1bHQgaHVtYW4gbGFuZ3VhZ2Ugb2YgV2ViIHBhZ2VzLCBub24tV2ViIGRvY3VtZW50cywgb3Igc29mdHdhcmUgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0h0bWxfSGFzTGFuZ1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYW5ndWFnZSBvZiBQYXJ0c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIGh1bWFuIGxhbmd1YWdlIG9mIGVhY2ggcGFzc2FnZSBvciBwaHJhc2UgaW4gdGhlIGNvbnRlbnQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0VsZW1fTGFuZ19WYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk9uIEZvY3VzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldoZW4gYW55IGNvbXBvbmVudCByZWNlaXZlcyBmb2N1cywgaXQgZG9lcyBub3QgaW5pdGlhdGUgYSBjaGFuZ2Ugb2YgY29udGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk9uIElucHV0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNoYW5naW5nIHRoZSBzZXR0aW5nIG9mIGFueSB1c2VyIGludGVyZmFjZSBjb21wb25lbnQgZG9lcyBub3QgYXV0b21hdGljYWxseSBjYXVzZSBhIGNoYW5nZSBvZiBjb250ZXh0IHVubGVzcyB0aGUgdXNlciBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBiZWhhdmlvciBiZWZvcmUgdXNpbmcgdGhlIGNvbXBvbmVudC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRm9ybV9IYXNTdWJtaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Gb3JtX1RhcmdldEFuZFRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9IYXNPbmNoYW5nZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Zvcm1fQ2hhbmdlRW1wdHlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNvbnNpc3RlbnQgTmF2aWdhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTmF2aWdhdGlvbmFsIG1lY2hhbmlzbXMgdGhhdCBhcmUgcmVwZWF0ZWQgb24gbXVsdGlwbGUgV2ViIHBhZ2VzIHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMgb2NjdXIgaW4gdGhlIHNhbWUgcmVsYXRpdmUgb3JkZXIgZWFjaCB0aW1lIHRoZXkgYXJlIHJlcGVhdGVkLCB1bmxlc3MgYSBjaGFuZ2UgaXMgaW5pdGlhdGVkIGJ5IHRoZSB1c2VyLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDb25zaXN0ZW50IElkZW50aWZpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb21wb25lbnRzIHRoYXQgaGF2ZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMgYXJlIGlkZW50aWZpZWQgY29uc2lzdGVudGx5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFcnJvciBJZGVudGlmaWNhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhbiBpbnB1dCBlcnJvciBpcyBhdXRvbWF0aWNhbGx5IGRldGVjdGVkLCB0aGUgaXRlbSB0aGF0IGlzIGluIGVycm9yIGlzIGlkZW50aWZpZWQgYW5kIHRoZSBlcnJvciBpcyBkZXNjcmliZWQgdG8gdGhlIHVzZXIgaW4gdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX0Vycm9yTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYWJlbHMgb3IgSW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkxhYmVscyBvciBpbnN0cnVjdGlvbnMgYXJlIHByb3ZpZGVkIHdoZW4gY29udGVudCByZXF1aXJlcyB1c2VyIGlucHV0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfTGFiZWxCZWZvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfTGFiZWxBZnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQWNjZXNza2V5X05lZWRMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX09yX0hUTUw1X0F0dHJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0lucHV0X1BsYWNlaG9sZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1Zpc2libGVMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFcnJvciBTdWdnZXN0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhbiBpbnB1dCBlcnJvciBpcyBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIGFuZCBzdWdnZXN0aW9ucyBmb3IgY29ycmVjdGlvbiBhcmUga25vd24sIHRoZW4gdGhlIHN1Z2dlc3Rpb25zIGFyZSBwcm92aWRlZCB0byB0aGUgdXNlciwgdW5sZXNzIGl0IHdvdWxkIGplb3BhcmRpemUgdGhlIHNlY3VyaXR5IG9yIHB1cnBvc2Ugb2YgdGhlIGNvbnRlbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4zLjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkVycm9yIFByZXZlbnRpb24gKExlZ2FsLCBGaW5hbmNpYWwsIERhdGEpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgY29udGVudCB0aGF0IGNhdXNlIGxlZ2FsIGNvbW1pdG1lbnRzIG9yIGZpbmFuY2lhbCB0cmFuc2FjdGlvbnMgZm9yIHRoZSB1c2VyIHRvIG9jY3VyLCB0aGF0IG1vZGlmeSBvciBkZWxldGUgdXNlci1jb250cm9sbGFibGUgZGF0YSBpbiBkYXRhIHN0b3JhZ2Ugc3lzdGVtcywgb3IgdGhhdCBzdWJtaXQgdXNlciB0ZXN0IHJlc3BvbnNlcywgdGhlIHVzZXIgY2FuIHJldmVyc2UsIGNvcnJlY3QsIG9yIGNvbmZpcm0gdGhlIGFjdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCI0LjEuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUGFyc2luZ1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJbiBjb250ZW50IGltcGxlbWVudGVkIHVzaW5nIG1hcmt1cCBsYW5ndWFnZXMsIGVsZW1lbnRzIGhhdmUgY29tcGxldGUgc3RhcnQgYW5kIGVuZCB0YWdzLCBlbGVtZW50cyBhcmUgbmVzdGVkIGFjY29yZGluZyB0byB0aGVpciBzcGVjaWZpY2F0aW9ucywgZWxlbWVudHMgZG8gbm90IGNvbnRhaW4gZHVwbGljYXRlIGF0dHJpYnV0ZXMsIGFuZCBhbnkgSURzIGFyZSB1bmlxdWUsIGV4Y2VwdCB3aGVyZSB0aGUgc3BlY2lmaWNhdGlvbnMgYWxsb3cgdGhlc2UgZmVhdHVyZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbGVtX1VuaXF1ZUlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRWxlbV9VbmlxdWVBY2Nlc3NLZXlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjQuMS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJOYW1lLCBSb2xlLCBWYWx1ZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgYWxsIHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudHMgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBmb3JtIGVsZW1lbnRzLCBsaW5rcyBhbmQgY29tcG9uZW50cyBnZW5lcmF0ZWQgYnkgc2NyaXB0cyksIHRoZSBuYW1lIGFuZCByb2xlIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQ7IHN0YXRlcywgcHJvcGVydGllcywgYW5kIHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdGhlIHVzZXIgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgc2V0OyBhbmQgbm90aWZpY2F0aW9uIG9mIGNoYW5nZXMgdG8gdGhlc2UgaXRlbXMgaXMgYXZhaWxhYmxlIHRvIHVzZXIgYWdlbnRzLCBpbmNsdWRpbmcgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZFJvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJ0YWJsZV9hcmlhX2Rlc2NlbmRhbnRzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVZhbHVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRJZFJlZlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkUHJvcGVydGllc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0VtcHR5UHJvcGVydHlWYWx1ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FyaWFfSW1nQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX1N2Z0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQ2FudmFzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfc2VtYW50aWNzX3JvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhcmlhX3NlbWFudGljc19hdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRQYXJlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9FdmVudEhhbmRsZXJNaXNzaW5nUm9sZV9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVUb29sYmFyVW5pcXVlTGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF92ZXJzaW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfaGFzcG9wdXBcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9mb2N1c2FibGVfZWxlbWVudHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2F1dG9jb21wbGV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gICAgXVxufSxcbntcbiAgICBpZDogXCJXQ0FHXzJfMFwiLFxuICAgIG5hbWU6IFwiV0NBRyAyLjAgKEEsIEFBKVwiLFxuICAgIGNhdGVnb3J5OiBlUnVsZUNhdGVnb3J5LkFDQ0VTU0lCSUxJVFksXG4gICAgZGVzY3JpcHRpb246IFwiUnVsZXMgZm9yIFdDQUcgMi4wIEFBLiBSZWZlcmVuY2VkIGJ5IFVTIFNlY3Rpb24gNTA4LCBidXQgbm90IHRoZSBsYXRlc3QgVzNDIHJlY29tbWVuZGF0aW9uLlwiLFxuICAgIFwiY2hlY2twb2ludHNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJOb24tdGV4dCBDb250ZW50XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFsbCBub24tdGV4dCBjb250ZW50IHRoYXQgaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGhhcyBhIHRleHQgYWx0ZXJuYXRpdmUgdGhhdCBzZXJ2ZXMgdGhlIGVxdWl2YWxlbnQgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9JbWdfVXNlbWFwVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfT2JqZWN0X0hhc1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQXBwbGV0X0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FyZWFfSGFzQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0ltZ19BbHRDb21tb25NaXN1c2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSW1nX0xvbmdEZXNjcmlwdGlvbjJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9QcmVfQVNDSUlBcnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX0JhY2tncm91bmRJbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfTGlua1RleHROb3RSZWR1bmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfSW1nX1VzZW1hcEFsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UZXh0X0Vtb3RpY29uc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfRmlndXJlX2xhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfQWx0QnJpZWZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9FbWJlZF9IYXNOb0VtYmVkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VtYmVkX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9UcmlnZ2VyMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19CYWNrZ3JvdW5kSW1nX0hhc1RleHRPclRpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX05vZW1iZWRfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQ2FudmFzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMi4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpby1vbmx5IGFuZCBWaWRlby1vbmx5IChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIHByZXJlY29yZGVkIGF1ZGlvLW9ubHkgb3IgdmlkZW8tb25seSBtZWRpYSwgYW4gYWx0ZXJuYXRpdmUgcHJvdmlkZXMgZXF1aXZhbGVudCBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0F1ZGlvVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FwdGlvbnMgKFByZXJlY29yZGVkKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDYXB0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBwcmVyZWNvcmRlZCBhdWRpbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkF1ZGlvIERlc2NyaXB0aW9uIG9yIE1lZGlhIEFsdGVybmF0aXZlIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQW4gYWx0ZXJuYXRpdmUgZm9yIHRpbWUtYmFzZWQgbWVkaWEgb3IgYXVkaW8gZGVzY3JpcHRpb24gb2YgdGhlIHByZXJlY29yZGVkIHZpZGVvIGNvbnRlbnQgaXMgcHJvdmlkZWQgZm9yIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2FwdGlvbnMgKExpdmUpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDYXB0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBsaXZlIGF1ZGlvIGNvbnRlbnQgaW4gc3luY2hyb25pemVkIG1lZGlhLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX1ZpZGVvX0hhc05vVHJhY2tcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8gRGVzY3JpcHRpb24gKFByZXJlY29yZGVkKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQXVkaW8gZGVzY3JpcHRpb24gaXMgcHJvdmlkZWQgZm9yIGFsbCBwcmVyZWNvcmRlZCB2aWRlbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiSW5mbyBhbmQgUmVsYXRpb25zaGlwc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJbmZvcm1hdGlvbiwgc3RydWN0dXJlLCBhbmQgcmVsYXRpb25zaGlwcyBjb252ZXllZCB0aHJvdWdoIHByZXNlbnRhdGlvbiBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkIG9yIGFyZSBhdmFpbGFibGUgaW4gdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwibGFuZG1hcmtfbmFtZV91bmlxdWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwidGFibGVfaGVhZGVyc19yZWZfdmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sIFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0hlYWRlcnNfRmV3V29yZHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxvY2txdW90ZV9IYXNDaXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxvY2txdW90ZV9XcmFwc1RleHRRdW90ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrX1Nob3VsZEJlSGVhZGluZ1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9MYWJlbF9VbmlxdWVGb3JcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTGlzdF9Vc2VNYXJrdXBcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwxXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ZpZWxkc2V0X0hhc0xlZ2VuZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UYWJsZV9DYXBTdW1tUmVkdW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9DYXB0aW9uX0hhc0NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX0NhcHRpb25fSW5UYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9MYWJlbF9SZWZWYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TdHlsZV9CZWZvcmVBZnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0xpc3RfTWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TZWxlY3RfSGFzT3B0R3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfSW5GaWVsZFNldFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RhYmxlX0xheW91dFRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfU3RydWN0dXJlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTWVhbmluZ2Z1bCBTZXF1ZW5jZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJXaGVuIHRoZSBzZXF1ZW5jZSBpbiB3aGljaCBjb250ZW50IGlzIHByZXNlbnRlZCBhZmZlY3RzIGl0cyBtZWFuaW5nLCBhIGNvcnJlY3QgcmVhZGluZyBzZXF1ZW5jZSBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX0VsZW1fRGlyVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UZXh0X0xldHRlclNwYWNpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMy4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJTZW5zb3J5IENoYXJhY3RlcmlzdGljc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJbnN0cnVjdGlvbnMgcHJvdmlkZWQgZm9yIHVuZGVyc3RhbmRpbmcgYW5kIG9wZXJhdGluZyBjb250ZW50IGRvIG5vdCByZWx5IHNvbGVseSBvbiBzZW5zb3J5IGNoYXJhY3RlcmlzdGljcyBvZiBjb21wb25lbnRzIHN1Y2ggYXMgc2hhcGUsIHNpemUsIHZpc3VhbCBsb2NhdGlvbiwgb3JpZW50YXRpb24sIG9yIHNvdW5kLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfVGV4dF9TZW5zb3J5UmVmZXJlbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlVzZSBvZiBDb2xvclwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb2xvciBpcyBub3QgdXNlZCBhcyB0aGUgb25seSB2aXN1YWwgbWVhbnMgb2YgY29udmV5aW5nIGluZm9ybWF0aW9uLCBpbmRpY2F0aW5nIGFuIGFjdGlvbiwgcHJvbXB0aW5nIGEgcmVzcG9uc2UsIG9yIGRpc3Rpbmd1aXNoaW5nIGEgdmlzdWFsIGVsZW1lbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9Gb250X0NvbG9ySW5Gb3JtXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpbyBDb250cm9sXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGFueSBhdWRpbyBwbGF5cyBhdXRvbWF0aWNhbGx5IGZvciBtb3JlIHRoYW4gMyBzZWNvbmRzLCBlaXRoZXIgYSBtZWNoYW5pc20gaXMgYXZhaWxhYmxlIHRvIHBhdXNlIG9yIHN0b3AgdGhlIGF1ZGlvLCBvciBhIG1lY2hhbmlzbSBpcyBhdmFpbGFibGUgdG8gY29udHJvbCBhdWRpbyB2b2x1bWUgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBvdmVyYWxsIHN5c3RlbSB2b2x1bWUgbGV2ZWwuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbWJlZF9BdXRvU3RhcnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29udHJhc3QgKE1pbmltdW0pXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgdmlzdWFsIHByZXNlbnRhdGlvbiBvZiB0ZXh0IGFuZCBpbWFnZXMgb2YgdGV4dCBoYXMgYSBjb250cmFzdCByYXRpbyBvZiBhdCBsZWFzdCA0LjU6MSwgd2l0aCBhIDM6MSByYXRpbyBmb3IgbGFyZ2Utc2NhbGUgdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlJlc2l6ZSBUZXh0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUZXh0IGNhbiBiZSByZXNpemVkIHdpdGhvdXQgYXNzaXN0aXZlIHRlY2hub2xvZ3kgdXAgdG8gMjAwIHBlcmNlbnQgd2l0aG91dCBsb3NzIG9mIGNvbnRlbnQgb3IgZnVuY3Rpb25hbGl0eS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIxX1N0eWxlX1ZpZXdwb3J0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiSW1hZ2VzIG9mIFRleHRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIHRoZSB0ZWNobm9sb2dpZXMgYmVpbmcgdXNlZCBjYW4gYWNoaWV2ZSB0aGUgdmlzdWFsIHByZXNlbnRhdGlvbiwgdGV4dCBpcyB1c2VkIHRvIGNvbnZleSBpbmZvcm1hdGlvbiByYXRoZXIgdGhhbiBpbWFnZXMgb2YgdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjEuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiS2V5Ym9hcmRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGNvbnRlbnQgaXMgb3BlcmFibGUgdGhyb3VnaCBhIGtleWJvYXJkIGludGVyZmFjZSB3aXRob3V0IHJlcXVpcmluZyBzcGVjaWZpYyB0aW1pbmdzIGZvciBpbmRpdmlkdWFsIGtleXN0cm9rZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbGVtX0V2ZW50TW91c2VBbmRLZXlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0ludmFsaWRUYWJpbmRleEZvckFjdGl2ZWRlc2NlbmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NaXNzaW5nRm9jdXNhYmxlQ2hpbGRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NaXNzaW5nS2V5Ym9hcmRIYW5kbGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BdWRpb19WaWRlb19UcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcHBsaWNhdGlvbl9Sb2xlX1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjEuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTm8gS2V5Ym9hcmQgVHJhcFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBrZXlib2FyZCBmb2N1cyBjYW4gYmUgbW92ZWQgdG8gYSBjb21wb25lbnQgdXNpbmcgYSBrZXlib2FyZCBpbnRlcmZhY2UsIHRoZW4gZm9jdXMgY2FuIGJlIG1vdmVkIGF3YXkgZnJvbSB0aGF0IGNvbXBvbmVudCB1c2luZyBvbmx5IGEga2V5Ym9hcmQgaW50ZXJmYWNlLCBhbmQsIGlmIGl0IHJlcXVpcmVzIG1vcmUgdGhhbiB1bm1vZGlmaWVkIGFycm93IG9yIHRhYiBrZXlzIG9yIG90aGVyIHN0YW5kYXJkIGV4aXQgbWV0aG9kcywgdGhlIHVzZXIgaXMgYWR2aXNlZCBvZiB0aGUgbWV0aG9kIGZvciBtb3ZpbmcgZm9jdXMgYXdheS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjIuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVGltaW5nIEFkanVzdGFibGVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGVhY2ggdGltZSBsaW1pdCB0aGF0IGlzIHNldCBieSB0aGUgY29udGVudCwgdGhlIHVzZXIgY2FuIHR1cm4gb2ZmLCBhZGp1c3QsIG9yIGV4dGVuZCB0aGUgbGltaXQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZXRhX1JlZnJlc2hcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9NZXRhX1JlZGlyZWN0WmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBhdXNlLCBTdG9wLCBIaWRlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBtb3ZpbmcsIGJsaW5raW5nLCBzY3JvbGxpbmcsIG9yIGF1dG8tdXBkYXRpbmcgaW5mb3JtYXRpb24sIHRoZSB1c2VyIGNhbiBwYXVzZSwgc3RvcCwgaGlkZSBvciBhZGp1c3QgdGhlIGluZm9ybWF0aW9uLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWFycXVlZV9UcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQmxpbmtfQWx3YXlzVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9CbGlua19DU1NUcmlnZ2VyMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMy4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJUaHJlZSBGbGFzaGVzIG9yIEJlbG93IFRocmVzaG9sZFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb250ZW50IGRvZXMgbm90IGNvbnRhaW4gYW55dGhpbmcgdGhhdCBmbGFzaGVzIG1vcmUgdGhhbiB0aHJlZSB0aW1lcyBpbiBhbnkgb25lIHNlY29uZCBwZXJpb2QsIG9yIHRoZSBmbGFzaCBpcyBiZWxvdyB0aGUgZ2VuZXJhbCBmbGFzaCBhbmQgcmVkIGZsYXNoIHRocmVzaG9sZHMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkJ5cGFzcyBCbG9ja3NcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQSBtZWNoYW5pc20gaXMgYXZhaWxhYmxlIHRvIGJ5cGFzcyBibG9ja3Mgb2YgY29udGVudCB0aGF0IGFyZSByZXBlYXRlZCBvbiBtdWx0aXBsZSBXZWIgcGFnZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9GcmFtZV9IYXNUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0h0bWxfU2tpcE5hdlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9GcmFtZV9TcmNIdG1sXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVBcHBsaWNhdGlvbkxhbmRtYXJrc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Cb2R5X0ZpcnN0QVNraXBzX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQm9keV9GaXJzdEFDb250YWluc1NraXBUZXh0X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVnaW9uTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXJ0aWNsZVJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUdyb3VwUm9sZXNfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9JblNpYmxpbmdTZXRfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVNYWluc1JlcXVpcmVMYWJlbF9JbXBsaWNpdF8yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUGFnZSBUaXRsZWRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2ViIHBhZ2VzLCBub24td2ViIGRvY3VtZW50cywgYW5kIHNvZnR3YXJlIGhhdmUgdGl0bGVzIHRoYXQgZGVzY3JpYmUgdG9waWMgb3IgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0RvY19IYXNUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UaXRsZV9WYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGb2N1cyBPcmRlclwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBjb250ZW50IGNhbiBiZSBuYXZpZ2F0ZWQgc2VxdWVudGlhbGx5IGFuZCB0aGUgbmF2aWdhdGlvbiBzZXF1ZW5jZXMgYWZmZWN0IG1lYW5pbmcgb3Igb3BlcmF0aW9uLCBmb2N1c2FibGUgY29tcG9uZW50cyByZWNlaXZlIGZvY3VzIGluIGFuIG9yZGVyIHRoYXQgcHJlc2VydmVzIG1lYW5pbmcgYW5kIG9wZXJhYmlsaXR5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJJQk1BX0ZvY3VzX1RhYmJhYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Gb2N1c19NdWx0aVRhYlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMaW5rIFB1cnBvc2UgKEluIENvbnRleHQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBwdXJwb3NlIG9mIGVhY2ggbGluayBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBsaW5rIHRleHQgYWxvbmUgb3IgZnJvbSB0aGUgbGluayB0ZXh0IHRvZ2V0aGVyIHdpdGggaXRzIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCBsaW5rIGNvbnRlbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BX0hhc1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTXVsdGlwbGUgV2F5c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTW9yZSB0aGFuIG9uZSB3YXkgaXMgYXZhaWxhYmxlIHRvIGxvY2F0ZSBhIFdlYiBwYWdlIHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMsIGV4Y2VwdCB3aGVyZSB0aGUgV2ViIFBhZ2UgaXMgdGhlIHJlc3VsdCBvZiwgb3IgYSBzdGVwIGluLCBhIHByb2Nlc3MuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjZcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkhlYWRpbmdzIGFuZCBMYWJlbHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkhlYWRpbmdzIGFuZCBsYWJlbHMgZGVzY3JpYmUgdG9waWMgb3IgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0hlYWRlcl9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkZvY3VzIFZpc2libGVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFueSBrZXlib2FyZCBvcGVyYWJsZSB1c2VyIGludGVyZmFjZSBoYXMgYSBtb2RlIG9mIG9wZXJhdGlvbiB3aGVyZSB0aGUga2V5Ym9hcmQgZm9jdXMgaW5kaWNhdG9yIGlzIHZpc2libGUuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9IaW5kZXJGb2N1czFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2NyaXB0X0ZvY3VzQmx1cnNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjEuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGFuZ3VhZ2Ugb2YgUGFnZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgZGVmYXVsdCBodW1hbiBsYW5ndWFnZSBvZiBXZWIgcGFnZXMsIG5vbi1XZWIgZG9jdW1lbnRzLCBvciBzb2Z0d2FyZSBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSHRtbF9IYXNMYW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4xLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhbmd1YWdlIG9mIFBhcnRzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgaHVtYW4gbGFuZ3VhZ2Ugb2YgZWFjaCBwYXNzYWdlIG9yIHBocmFzZSBpbiB0aGUgY29udGVudCBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjIuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiT24gRm9jdXNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2hlbiBhbnkgY29tcG9uZW50IHJlY2VpdmVzIGZvY3VzLCBpdCBkb2VzIG5vdCBpbml0aWF0ZSBhIGNoYW5nZSBvZiBjb250ZXh0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2VsZWN0X05vQ2hhbmdlQWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2NyaXB0X0ZvY3VzQmx1cnNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjIuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiT24gSW5wdXRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ2hhbmdpbmcgdGhlIHNldHRpbmcgb2YgYW55IHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudCBkb2VzIG5vdCBhdXRvbWF0aWNhbGx5IGNhdXNlIGEgY2hhbmdlIG9mIGNvbnRleHQgdW5sZXNzIHRoZSB1c2VyIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIGJlaGF2aW9yIGJlZm9yZSB1c2luZyB0aGUgY29tcG9uZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQV9UYXJnZXRBbmRUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Gb3JtX0hhc1N1Ym1pdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0Zvcm1fVGFyZ2V0QW5kVGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0hhc09uY2hhbmdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRm9ybV9DaGFuZ2VFbXB0eVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjIuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29uc2lzdGVudCBOYXZpZ2F0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJOYXZpZ2F0aW9uYWwgbWVjaGFuaXNtcyB0aGF0IGFyZSByZXBlYXRlZCBvbiBtdWx0aXBsZSBXZWIgcGFnZXMgd2l0aGluIGEgc2V0IG9mIFdlYiBwYWdlcyBvY2N1ciBpbiB0aGUgc2FtZSByZWxhdGl2ZSBvcmRlciBlYWNoIHRpbWUgdGhleSBhcmUgcmVwZWF0ZWQsIHVubGVzcyBhIGNoYW5nZSBpcyBpbml0aWF0ZWQgYnkgdGhlIHVzZXIuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNvbnNpc3RlbnQgSWRlbnRpZmljYXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNvbXBvbmVudHMgdGhhdCBoYXZlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgd2l0aGluIGEgc2V0IG9mIFdlYiBwYWdlcyBhcmUgaWRlbnRpZmllZCBjb25zaXN0ZW50bHkuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4zLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkVycm9yIElkZW50aWZpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGFuIGlucHV0IGVycm9yIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQsIHRoZSBpdGVtIHRoYXQgaXMgaW4gZXJyb3IgaXMgaWRlbnRpZmllZCBhbmQgdGhlIGVycm9yIGlzIGRlc2NyaWJlZCB0byB0aGUgdXNlciBpbiB0ZXh0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FyaWFfRXJyb3JNZXNzYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4zLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhYmVscyBvciBJbnN0cnVjdGlvbnNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTGFiZWxzIG9yIGluc3RydWN0aW9ucyBhcmUgcHJvdmlkZWQgd2hlbiBjb250ZW50IHJlcXVpcmVzIHVzZXIgaW5wdXQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9MYWJlbEJlZm9yZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9MYWJlbEFmdGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BY2Nlc3NrZXlfTmVlZExhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FyaWFfT3JfSFRNTDVfQXR0clwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfSW5wdXRfUGxhY2Vob2xkZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfVmlzaWJsZUxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4zLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkVycm9yIFN1Z2dlc3Rpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGFuIGlucHV0IGVycm9yIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYW5kIHN1Z2dlc3Rpb25zIGZvciBjb3JyZWN0aW9uIGFyZSBrbm93biwgdGhlbiB0aGUgc3VnZ2VzdGlvbnMgYXJlIHByb3ZpZGVkIHRvIHRoZSB1c2VyLCB1bmxlc3MgaXQgd291bGQgamVvcGFyZGl6ZSB0aGUgc2VjdXJpdHkgb3IgcHVycG9zZSBvZiB0aGUgY29udGVudC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRXJyb3IgUHJldmVudGlvbiAoTGVnYWwsIEZpbmFuY2lhbCwgRGF0YSlcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBjb250ZW50IHRoYXQgY2F1c2UgbGVnYWwgY29tbWl0bWVudHMgb3IgZmluYW5jaWFsIHRyYW5zYWN0aW9ucyBmb3IgdGhlIHVzZXIgdG8gb2NjdXIsIHRoYXQgbW9kaWZ5IG9yIGRlbGV0ZSB1c2VyLWNvbnRyb2xsYWJsZSBkYXRhIGluIGRhdGEgc3RvcmFnZSBzeXN0ZW1zLCBvciB0aGF0IHN1Ym1pdCB1c2VyIHRlc3QgcmVzcG9uc2VzLCB0aGUgdXNlciBjYW4gcmV2ZXJzZSwgY29ycmVjdCwgb3IgY29uZmlybSB0aGUgYWN0aW9uLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjQuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJQYXJzaW5nXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkluIGNvbnRlbnQgaW1wbGVtZW50ZWQgdXNpbmcgbWFya3VwIGxhbmd1YWdlcywgZWxlbWVudHMgaGF2ZSBjb21wbGV0ZSBzdGFydCBhbmQgZW5kIHRhZ3MsIGVsZW1lbnRzIGFyZSBuZXN0ZWQgYWNjb3JkaW5nIHRvIHRoZWlyIHNwZWNpZmljYXRpb25zLCBlbGVtZW50cyBkbyBub3QgY29udGFpbiBkdXBsaWNhdGUgYXR0cmlidXRlcywgYW5kIGFueSBJRHMgYXJlIHVuaXF1ZSwgZXhjZXB0IHdoZXJlIHRoZSBzcGVjaWZpY2F0aW9ucyBhbGxvdyB0aGVzZSBmZWF0dXJlcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VsZW1fVW5pcXVlSWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9FbGVtX1VuaXF1ZUFjY2Vzc0tleVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiNC4xLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk5hbWUsIFJvbGUsIFZhbHVlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBhbGwgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50cyAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGZvcm0gZWxlbWVudHMsIGxpbmtzIGFuZCBjb21wb25lbnRzIGdlbmVyYXRlZCBieSBzY3JpcHRzKSwgdGhlIG5hbWUgYW5kIHJvbGUgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZDsgc3RhdGVzLCBwcm9wZXJ0aWVzLCBhbmQgdmFsdWVzIHRoYXQgY2FuIGJlIHNldCBieSB0aGUgdXNlciBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBzZXQ7IGFuZCBub3RpZmljYXRpb24gb2YgY2hhbmdlcyB0byB0aGVzZSBpdGVtcyBpcyBhdmFpbGFibGUgdG8gdXNlciBhZ2VudHMsIGluY2x1ZGluZyBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfTGFiZWxfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInRhYmxlX2FyaWFfZGVzY2VuZGFudHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5VmFsdWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZElkUmVmXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRQcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfRW1wdHlQcm9wZXJ0eVZhbHVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9JbWdBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FyaWFfU3ZnQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19DYW52YXNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9zZW1hbnRpY3Nfcm9sZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfc2VtYW50aWNzX2F0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkQ2hpbGRyZW5fTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZFBhcmVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0V2ZW50SGFuZGxlck1pc3NpbmdSb2xlX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfV2lkZ2V0TGFiZWxzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19MaXN0X0dyb3VwX0xpc3RJdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X3ZlcnNpb25cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9wb3B1cF9yZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9oYXNwb3B1cFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfYXV0b2NvbXBsZXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICBdXG59XG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc2V0cyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5cbmV4cG9ydCBjbGFzcyBBbmNlc3RvclV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgaXNQcmVzZW50YXRpb25GcmFtZShjb250ZXh0SGllcmFyY2h5OiBSdWxlQ29udGV4dEhpZXJhcmNoeSkgOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGNvbnRleHRIaWVyYXJjaHkgJiYgY29udGV4dEhpZXJhcmNoeS5kb20pIHtcbiAgICAgICAgICAgIC8vIFNraXAgY3VycmVudCBub2RlIGJlY2F1c2Ugd2Ugd2FudCBhbmNlc3RyeVxuICAgICAgICAgICAgZm9yIChsZXQgaWR4PWNvbnRleHRIaWVyYXJjaHkuZG9tLmxlbmd0aC0yOyBpZHggPj0gMDsgLS1pZHgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gKGNvbnRleHRIaWVyYXJjaHkuZG9tW2lkeF0ubm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW0ubm9kZVR5cGUgPT09IDEgXG4gICAgICAgICAgICAgICAgICAgICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpZnJhbWVcIlxuICAgICAgICAgICAgICAgICAgICAmJiAoZWxlbS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpID09PSBcInByZXNlbnRhdGlvblwiIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgPT09IFwidHJ1ZVwiKSkgXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNGcmFtZShjb250ZXh0SGllcmFyY2h5OiBSdWxlQ29udGV4dEhpZXJhcmNoeSkgOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGNvbnRleHRIaWVyYXJjaHkgJiYgY29udGV4dEhpZXJhcmNoeS5kb20pIHtcbiAgICAgICAgICAgIC8vIFNraXAgY3VycmVudCBub2RlIGJlY2F1c2Ugd2Ugd2FudCBhbmNlc3RyeVxuICAgICAgICAgICAgZm9yIChsZXQgaWR4PWNvbnRleHRIaWVyYXJjaHkuZG9tLmxlbmd0aC0yOyBpZHggPj0gMDsgLS1pZHgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtID0gKGNvbnRleHRIaWVyYXJjaHkuZG9tW2lkeF0ubm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW0ubm9kZVR5cGUgPT09IDEgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlmcmFtZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZUNvbnRleHRIaWVyYXJjaHkgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcblxuZXhwb3J0IGNsYXNzIEZyYWdtZW50VXRpbCB7XG4gICAgcHVibGljIHN0YXRpYyBnZXRPd25lckZyYWdtZW50KG5vZGU6IE5vZGUpIDogRG9jdW1lbnQgfCBEb2N1bWVudEZyYWdtZW50IHtcbiAgICAgICAgbGV0IG4gOiBOb2RlID0gbm9kZTtcbiAgICAgICAgd2hpbGUobi5wYXJlbnROb2RlICYmIChuID0gbi5wYXJlbnROb2RlKSl7XG4gICAgICAgICAgICBpZiAobi5ub2RlVHlwZSA9PT0gMTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbiBhcyBEb2N1bWVudEZyYWdtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRCeUlkKG5vZGU6IE5vZGUsIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3duZXJGcmFnbWVudChub2RlKS5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBbmNlc3RvcihoaWVyYXJjaGllczogUnVsZUNvbnRleHRIaWVyYXJjaHksIGVsZW1OYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IG1hdGNoZXMgPSBoaWVyYXJjaGllc1tcImRvbVwiXS5maWx0ZXIoaW5mbyA9PiBpbmZvLnJvbGUgPT09IGVsZW1OYW1lKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXMubGVuZ3RoID4gMCAmJiBtYXRjaGVzWzBdLm5vZGUgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFuY2VzdG9yV2l0aFJvbGUoaGllcmFyY2hpZXM6IFJ1bGVDb250ZXh0SGllcmFyY2h5LCByb2xlOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IG1hdGNoZXMgPSBoaWVyYXJjaGllc1tcImFyaWFcIl0uZmlsdGVyKGluZm8gPT4gaW5mby5yb2xlID09PSByb2xlKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXMubGVuZ3RoID4gMCAmJiBtYXRjaGVzWzBdLm5vZGUgfHwgbnVsbDtcbiAgICB9XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIxLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vLyBGcm9tIGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2xhbmd1YWdlLXN1YnRhZy1yZWdpc3RyeS9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnlcbmNvbnN0IHZhbGlkUHJpbWFyeUxhbmdzID0gWyAvLyBcInFhYS4ucXR6XCIsXG5bIFwiYWFcIixcImFiXCIsXCJhZVwiLFwiYWZcIixcImFrXCIsXCJhbVwiLFwiYW5cIixcImFyXCIsXCJhc1wiLFwiYXZcIixcImF5XCIsXCJhelwiLFwiYWFhXCIsXCJhYWJcIixcImFhY1wiLFwiYWFkXCIsXCJhYWVcIixcImFhZlwiLFwiYWFnXCIsXCJhYWhcIixcImFhaVwiLFwiYWFrXCIsXCJhYWxcIixcImFhbVwiLFwiYWFuXCIsXCJhYW9cIixcImFhcFwiLFwiYWFxXCIsXCJhYXNcIixcImFhdFwiLFwiYWF1XCIsXCJhYXZcIixcImFhd1wiLFwiYWF4XCIsXCJhYXpcIixcImFiYVwiLFwiYWJiXCIsXCJhYmNcIixcImFiZFwiLFwiYWJlXCIsXCJhYmZcIixcImFiZ1wiLFwiYWJoXCIsXCJhYmlcIixcImFialwiLFwiYWJsXCIsXCJhYm1cIixcImFiblwiLFwiYWJvXCIsXCJhYnBcIixcImFicVwiLFwiYWJyXCIsXCJhYnNcIixcImFidFwiLFwiYWJ1XCIsXCJhYnZcIixcImFid1wiLFwiYWJ4XCIsXCJhYnlcIixcImFielwiLFwiYWNhXCIsXCJhY2JcIixcImFjZFwiLFwiYWNlXCIsXCJhY2ZcIixcImFjaFwiLFwiYWNpXCIsXCJhY2tcIixcImFjbFwiLFwiYWNtXCIsXCJhY25cIixcImFjcFwiLFwiYWNxXCIsXCJhY3JcIixcImFjc1wiLFwiYWN0XCIsXCJhY3VcIixcImFjdlwiLFwiYWN3XCIsXCJhY3hcIixcImFjeVwiLFwiYWN6XCIsXCJhZGFcIixcImFkYlwiLFwiYWRkXCIsXCJhZGVcIixcImFkZlwiLFwiYWRnXCIsXCJhZGhcIixcImFkaVwiLFwiYWRqXCIsXCJhZGxcIixcImFkblwiLFwiYWRvXCIsXCJhZHBcIixcImFkcVwiLFwiYWRyXCIsXCJhZHNcIixcImFkdFwiLFwiYWR1XCIsXCJhZHdcIixcImFkeFwiLFwiYWR5XCIsXCJhZHpcIixcImFlYVwiLFwiYWViXCIsXCJhZWNcIixcImFlZFwiLFwiYWVlXCIsXCJhZWtcIixcImFlbFwiLFwiYWVtXCIsXCJhZW5cIixcImFlcVwiLFwiYWVyXCIsXCJhZXNcIixcImFldVwiLFwiYWV3XCIsXCJhZXlcIixcImFlelwiLFwiYWZhXCIsXCJhZmJcIixcImFmZFwiLFwiYWZlXCIsXCJhZmdcIixcImFmaFwiLFwiYWZpXCIsXCJhZmtcIixcImFmblwiLFwiYWZvXCIsXCJhZnBcIixcImFmc1wiLFwiYWZ0XCIsXCJhZnVcIixcImFmelwiLFwiYWdhXCIsXCJhZ2JcIixcImFnY1wiLFwiYWdkXCIsXCJhZ2VcIixcImFnZlwiLFwiYWdnXCIsXCJhZ2hcIixcImFnaVwiLFwiYWdqXCIsXCJhZ2tcIixcImFnbFwiLFwiYWdtXCIsXCJhZ25cIixcImFnb1wiLFwiYWdwXCIsXCJhZ3FcIixcImFnclwiLFwiYWdzXCIsXCJhZ3RcIixcImFndVwiLFwiYWd2XCIsXCJhZ3dcIixcImFneFwiLFwiYWd5XCIsXCJhZ3pcIixcImFoYVwiLFwiYWhiXCIsXCJhaGdcIixcImFoaFwiLFwiYWhpXCIsXCJhaGtcIixcImFobFwiLFwiYWhtXCIsXCJhaG5cIixcImFob1wiLFwiYWhwXCIsXCJhaHJcIixcImFoc1wiLFwiYWh0XCIsXCJhaWFcIixcImFpYlwiLFwiYWljXCIsXCJhaWRcIixcImFpZVwiLFwiYWlmXCIsXCJhaWdcIixcImFpaFwiLFwiYWlpXCIsXCJhaWpcIixcImFpa1wiLFwiYWlsXCIsXCJhaW1cIixcImFpblwiLFwiYWlvXCIsXCJhaXBcIixcImFpcVwiLFwiYWlyXCIsXCJhaXNcIixcImFpdFwiLFwiYWl3XCIsXCJhaXhcIixcImFpeVwiLFwiYWphXCIsXCJhamdcIixcImFqaVwiLFwiYWpuXCIsXCJhanBcIixcImFqdFwiLFwiYWp1XCIsXCJhandcIixcImFqelwiLFwiYWtiXCIsXCJha2NcIixcImFrZFwiLFwiYWtlXCIsXCJha2ZcIixcImFrZ1wiLFwiYWtoXCIsXCJha2lcIixcImFralwiLFwiYWtrXCIsXCJha2xcIixcImFrbVwiLFwiYWtvXCIsXCJha3BcIixcImFrcVwiLFwiYWtyXCIsXCJha3NcIixcImFrdFwiLFwiYWt1XCIsXCJha3ZcIixcImFrd1wiLFwiYWt4XCIsXCJha3lcIixcImFrelwiLFwiYWxhXCIsXCJhbGNcIixcImFsZFwiLFwiYWxlXCIsXCJhbGZcIixcImFsZ1wiLFwiYWxoXCIsXCJhbGlcIixcImFsalwiLFwiYWxrXCIsXCJhbGxcIixcImFsbVwiLFwiYWxuXCIsXCJhbG9cIixcImFscFwiLFwiYWxxXCIsXCJhbHJcIixcImFsc1wiLFwiYWx0XCIsXCJhbHVcIixcImFsdlwiLFwiYWx3XCIsXCJhbHhcIixcImFseVwiLFwiYWx6XCIsXCJhbWFcIixcImFtYlwiLFwiYW1jXCIsXCJhbWVcIixcImFtZlwiLFwiYW1nXCIsXCJhbWlcIixcImFtalwiLFwiYW1rXCIsXCJhbWxcIixcImFtbVwiLFwiYW1uXCIsXCJhbW9cIixcImFtcFwiLFwiYW1xXCIsXCJhbXJcIixcImFtc1wiLFwiYW10XCIsXCJhbXVcIixcImFtdlwiLFwiYW13XCIsXCJhbXhcIixcImFteVwiLFwiYW16XCIsXCJhbmFcIixcImFuYlwiLFwiYW5jXCIsXCJhbmRcIixcImFuZVwiLFwiYW5mXCIsXCJhbmdcIixcImFuaFwiLFwiYW5pXCIsXCJhbmpcIixcImFua1wiLFwiYW5sXCIsXCJhbm1cIixcImFublwiLFwiYW5vXCIsXCJhbnBcIixcImFucVwiLFwiYW5yXCIsXCJhbnNcIixcImFudFwiLFwiYW51XCIsXCJhbnZcIixcImFud1wiLFwiYW54XCIsXCJhbnlcIixcImFuelwiLFwiYW9hXCIsXCJhb2JcIixcImFvY1wiLFwiYW9kXCIsXCJhb2VcIixcImFvZlwiLFwiYW9nXCIsXCJhb2hcIixcImFvaVwiLFwiYW9qXCIsXCJhb2tcIixcImFvbFwiLFwiYW9tXCIsXCJhb25cIixcImFvclwiLFwiYW9zXCIsXCJhb3RcIixcImFvdVwiLFwiYW94XCIsXCJhb3pcIixcImFwYVwiLFwiYXBiXCIsXCJhcGNcIixcImFwZFwiLFwiYXBlXCIsXCJhcGZcIixcImFwZ1wiLFwiYXBoXCIsXCJhcGlcIixcImFwalwiLFwiYXBrXCIsXCJhcGxcIixcImFwbVwiLFwiYXBuXCIsXCJhcG9cIixcImFwcFwiLFwiYXBxXCIsXCJhcHJcIixcImFwc1wiLFwiYXB0XCIsXCJhcHVcIixcImFwdlwiLFwiYXB3XCIsXCJhcHhcIixcImFweVwiLFwiYXB6XCIsXCJhcWFcIixcImFxY1wiLFwiYXFkXCIsXCJhcWdcIixcImFxa1wiLFwiYXFsXCIsXCJhcW1cIixcImFxblwiLFwiYXFwXCIsXCJhcXJcIixcImFxdFwiLFwiYXF6XCIsXCJhcmJcIixcImFyY1wiLFwiYXJkXCIsXCJhcmVcIixcImFyaFwiLFwiYXJpXCIsXCJhcmpcIixcImFya1wiLFwiYXJsXCIsXCJhcm5cIixcImFyb1wiLFwiYXJwXCIsXCJhcnFcIixcImFyclwiLFwiYXJzXCIsXCJhcnRcIixcImFydVwiLFwiYXJ2XCIsXCJhcndcIixcImFyeFwiLFwiYXJ5XCIsXCJhcnpcIixcImFzYVwiLFwiYXNiXCIsXCJhc2NcIixcImFzZFwiLFwiYXNlXCIsXCJhc2ZcIixcImFzZ1wiLFwiYXNoXCIsXCJhc2lcIixcImFzalwiLFwiYXNrXCIsXCJhc2xcIixcImFzblwiLFwiYXNvXCIsXCJhc3BcIixcImFzcVwiLFwiYXNyXCIsXCJhc3NcIixcImFzdFwiLFwiYXN1XCIsXCJhc3ZcIixcImFzd1wiLFwiYXN4XCIsXCJhc3lcIixcImFzelwiLFwiYXRhXCIsXCJhdGJcIixcImF0Y1wiLFwiYXRkXCIsXCJhdGVcIixcImF0Z1wiLFwiYXRoXCIsXCJhdGlcIixcImF0alwiLFwiYXRrXCIsXCJhdGxcIixcImF0bVwiLFwiYXRuXCIsXCJhdG9cIixcImF0cFwiLFwiYXRxXCIsXCJhdHJcIixcImF0c1wiLFwiYXR0XCIsXCJhdHVcIixcImF0dlwiLFwiYXR3XCIsXCJhdHhcIixcImF0eVwiLFwiYXR6XCIsXCJhdWFcIixcImF1YlwiLFwiYXVjXCIsXCJhdWRcIixcImF1ZVwiLFwiYXVmXCIsXCJhdWdcIixcImF1aFwiLFwiYXVpXCIsXCJhdWpcIixcImF1a1wiLFwiYXVsXCIsXCJhdW1cIixcImF1blwiLFwiYXVvXCIsXCJhdXBcIixcImF1cVwiLFwiYXVyXCIsXCJhdXNcIixcImF1dFwiLFwiYXV1XCIsXCJhdXdcIixcImF1eFwiLFwiYXV5XCIsXCJhdXpcIixcImF2YlwiLFwiYXZkXCIsXCJhdmlcIixcImF2a1wiLFwiYXZsXCIsXCJhdm1cIixcImF2blwiLFwiYXZvXCIsXCJhdnNcIixcImF2dFwiLFwiYXZ1XCIsXCJhdnZcIixcImF3YVwiLFwiYXdiXCIsXCJhd2NcIixcImF3ZFwiLFwiYXdlXCIsXCJhd2dcIixcImF3aFwiLFwiYXdpXCIsXCJhd2tcIixcImF3bVwiLFwiYXduXCIsXCJhd29cIixcImF3clwiLFwiYXdzXCIsXCJhd3RcIixcImF3dVwiLFwiYXd2XCIsXCJhd3dcIixcImF3eFwiLFwiYXd5XCIsXCJheGJcIixcImF4ZVwiLFwiYXhnXCIsXCJheGtcIixcImF4bFwiLFwiYXhtXCIsXCJheHhcIixcImF5YVwiLFwiYXliXCIsXCJheWNcIixcImF5ZFwiLFwiYXllXCIsXCJheWdcIixcImF5aFwiLFwiYXlpXCIsXCJheWtcIixcImF5bFwiLFwiYXluXCIsXCJheW9cIixcImF5cFwiLFwiYXlxXCIsXCJheXJcIixcImF5c1wiLFwiYXl0XCIsXCJheXVcIixcImF5eFwiLFwiYXl5XCIsXCJheXpcIixcImF6YVwiLFwiYXpiXCIsXCJhemNcIixcImF6ZFwiLFwiYXpnXCIsXCJhempcIixcImF6bVwiLFwiYXpuXCIsXCJhem9cIixcImF6dFwiLFwiYXp6XCJdXG4sWyBcImJhXCIsXCJiZVwiLFwiYmdcIixcImJoXCIsXCJiaVwiLFwiYm1cIixcImJuXCIsXCJib1wiLFwiYnJcIixcImJzXCIsXCJiYWFcIixcImJhYlwiLFwiYmFjXCIsXCJiYWRcIixcImJhZVwiLFwiYmFmXCIsXCJiYWdcIixcImJhaFwiLFwiYmFpXCIsXCJiYWpcIixcImJhbFwiLFwiYmFuXCIsXCJiYW9cIixcImJhcFwiLFwiYmFyXCIsXCJiYXNcIixcImJhdFwiLFwiYmF1XCIsXCJiYXZcIixcImJhd1wiLFwiYmF4XCIsXCJiYXlcIixcImJhelwiLFwiYmJhXCIsXCJiYmJcIixcImJiY1wiLFwiYmJkXCIsXCJiYmVcIixcImJiZlwiLFwiYmJnXCIsXCJiYmhcIixcImJiaVwiLFwiYmJqXCIsXCJiYmtcIixcImJibFwiLFwiYmJtXCIsXCJiYm5cIixcImJib1wiLFwiYmJwXCIsXCJiYnFcIixcImJiclwiLFwiYmJzXCIsXCJiYnRcIixcImJidVwiLFwiYmJ2XCIsXCJiYndcIixcImJieFwiLFwiYmJ5XCIsXCJiYnpcIixcImJjYVwiLFwiYmNiXCIsXCJiY2NcIixcImJjZFwiLFwiYmNlXCIsXCJiY2ZcIixcImJjZ1wiLFwiYmNoXCIsXCJiY2lcIixcImJjalwiLFwiYmNrXCIsXCJiY2xcIixcImJjbVwiLFwiYmNuXCIsXCJiY29cIixcImJjcFwiLFwiYmNxXCIsXCJiY3JcIixcImJjc1wiLFwiYmN0XCIsXCJiY3VcIixcImJjdlwiLFwiYmN3XCIsXCJiY3lcIixcImJjelwiLFwiYmRhXCIsXCJiZGJcIixcImJkY1wiLFwiYmRkXCIsXCJiZGVcIixcImJkZlwiLFwiYmRnXCIsXCJiZGhcIixcImJkaVwiLFwiYmRqXCIsXCJiZGtcIixcImJkbFwiLFwiYmRtXCIsXCJiZG5cIixcImJkb1wiLFwiYmRwXCIsXCJiZHFcIixcImJkclwiLFwiYmRzXCIsXCJiZHRcIixcImJkdVwiLFwiYmR2XCIsXCJiZHdcIixcImJkeFwiLFwiYmR5XCIsXCJiZHpcIixcImJlYVwiLFwiYmViXCIsXCJiZWNcIixcImJlZFwiLFwiYmVlXCIsXCJiZWZcIixcImJlZ1wiLFwiYmVoXCIsXCJiZWlcIixcImJlalwiLFwiYmVrXCIsXCJiZW1cIixcImJlb1wiLFwiYmVwXCIsXCJiZXFcIixcImJlclwiLFwiYmVzXCIsXCJiZXRcIixcImJldVwiLFwiYmV2XCIsXCJiZXdcIixcImJleFwiLFwiYmV5XCIsXCJiZXpcIixcImJmYVwiLFwiYmZiXCIsXCJiZmNcIixcImJmZFwiLFwiYmZlXCIsXCJiZmZcIixcImJmZ1wiLFwiYmZoXCIsXCJiZmlcIixcImJmalwiLFwiYmZrXCIsXCJiZmxcIixcImJmbVwiLFwiYmZuXCIsXCJiZm9cIixcImJmcFwiLFwiYmZxXCIsXCJiZnJcIixcImJmc1wiLFwiYmZ0XCIsXCJiZnVcIixcImJmd1wiLFwiYmZ4XCIsXCJiZnlcIixcImJmelwiLFwiYmdhXCIsXCJiZ2JcIixcImJnY1wiLFwiYmdkXCIsXCJiZ2VcIixcImJnZlwiLFwiYmdnXCIsXCJiZ2lcIixcImJnalwiLFwiYmdrXCIsXCJiZ2xcIixcImJnbVwiLFwiYmduXCIsXCJiZ29cIixcImJncFwiLFwiYmdxXCIsXCJiZ3JcIixcImJnc1wiLFwiYmd0XCIsXCJiZ3VcIixcImJndlwiLFwiYmd3XCIsXCJiZ3hcIixcImJneVwiLFwiYmd6XCIsXCJiaGFcIixcImJoYlwiLFwiYmhjXCIsXCJiaGRcIixcImJoZVwiLFwiYmhmXCIsXCJiaGdcIixcImJoaFwiLFwiYmhpXCIsXCJiaGpcIixcImJoa1wiLFwiYmhsXCIsXCJiaG1cIixcImJoblwiLFwiYmhvXCIsXCJiaHBcIixcImJocVwiLFwiYmhyXCIsXCJiaHNcIixcImJodFwiLFwiYmh1XCIsXCJiaHZcIixcImJod1wiLFwiYmh4XCIsXCJiaHlcIixcImJoelwiLFwiYmlhXCIsXCJiaWJcIixcImJpY1wiLFwiYmlkXCIsXCJiaWVcIixcImJpZlwiLFwiYmlnXCIsXCJiaWpcIixcImJpa1wiLFwiYmlsXCIsXCJiaW1cIixcImJpblwiLFwiYmlvXCIsXCJiaXBcIixcImJpcVwiLFwiYmlyXCIsXCJiaXRcIixcImJpdVwiLFwiYml2XCIsXCJiaXdcIixcImJpeFwiLFwiYml5XCIsXCJiaXpcIixcImJqYVwiLFwiYmpiXCIsXCJiamNcIixcImJqZFwiLFwiYmplXCIsXCJiamZcIixcImJqZ1wiLFwiYmpoXCIsXCJiamlcIixcImJqalwiLFwiYmprXCIsXCJiamxcIixcImJqbVwiLFwiYmpuXCIsXCJiam9cIixcImJqcFwiLFwiYmpxXCIsXCJianJcIixcImJqc1wiLFwiYmp0XCIsXCJianVcIixcImJqdlwiLFwiYmp3XCIsXCJianhcIixcImJqeVwiLFwiYmp6XCIsXCJia2FcIixcImJrYlwiLFwiYmtjXCIsXCJia2RcIixcImJrZlwiLFwiYmtnXCIsXCJia2hcIixcImJraVwiLFwiYmtqXCIsXCJia2tcIixcImJrbFwiLFwiYmttXCIsXCJia25cIixcImJrb1wiLFwiYmtwXCIsXCJia3FcIixcImJrclwiLFwiYmtzXCIsXCJia3RcIixcImJrdVwiLFwiYmt2XCIsXCJia3dcIixcImJreFwiLFwiYmt5XCIsXCJia3pcIixcImJsYVwiLFwiYmxiXCIsXCJibGNcIixcImJsZFwiLFwiYmxlXCIsXCJibGZcIixcImJsZ1wiLFwiYmxoXCIsXCJibGlcIixcImJsalwiLFwiYmxrXCIsXCJibGxcIixcImJsbVwiLFwiYmxuXCIsXCJibG9cIixcImJscFwiLFwiYmxxXCIsXCJibHJcIixcImJsc1wiLFwiYmx0XCIsXCJibHZcIixcImJsd1wiLFwiYmx4XCIsXCJibHlcIixcImJselwiLFwiYm1hXCIsXCJibWJcIixcImJtY1wiLFwiYm1kXCIsXCJibWVcIixcImJtZlwiLFwiYm1nXCIsXCJibWhcIixcImJtaVwiLFwiYm1qXCIsXCJibWtcIixcImJtbFwiLFwiYm1tXCIsXCJibW5cIixcImJtb1wiLFwiYm1wXCIsXCJibXFcIixcImJtclwiLFwiYm1zXCIsXCJibXRcIixcImJtdVwiLFwiYm12XCIsXCJibXdcIixcImJteFwiLFwiYm15XCIsXCJibXpcIixcImJuYVwiLFwiYm5iXCIsXCJibmNcIixcImJuZFwiLFwiYm5lXCIsXCJibmZcIixcImJuZ1wiLFwiYm5pXCIsXCJibmpcIixcImJua1wiLFwiYm5sXCIsXCJibm1cIixcImJublwiLFwiYm5vXCIsXCJibnBcIixcImJucVwiLFwiYm5yXCIsXCJibnNcIixcImJudFwiLFwiYm51XCIsXCJibnZcIixcImJud1wiLFwiYm54XCIsXCJibnlcIixcImJuelwiLFwiYm9hXCIsXCJib2JcIixcImJvZVwiLFwiYm9mXCIsXCJib2dcIixcImJvaFwiLFwiYm9pXCIsXCJib2pcIixcImJva1wiLFwiYm9sXCIsXCJib21cIixcImJvblwiLFwiYm9vXCIsXCJib3BcIixcImJvcVwiLFwiYm9yXCIsXCJib3RcIixcImJvdVwiLFwiYm92XCIsXCJib3dcIixcImJveFwiLFwiYm95XCIsXCJib3pcIixcImJwYVwiLFwiYnBiXCIsXCJicGRcIixcImJwZVwiLFwiYnBnXCIsXCJicGhcIixcImJwaVwiLFwiYnBqXCIsXCJicGtcIixcImJwbFwiLFwiYnBtXCIsXCJicG5cIixcImJwb1wiLFwiYnBwXCIsXCJicHFcIixcImJwclwiLFwiYnBzXCIsXCJicHRcIixcImJwdVwiLFwiYnB2XCIsXCJicHdcIixcImJweFwiLFwiYnB5XCIsXCJicHpcIixcImJxYVwiLFwiYnFiXCIsXCJicWNcIixcImJxZFwiLFwiYnFmXCIsXCJicWdcIixcImJxaFwiLFwiYnFpXCIsXCJicWpcIixcImJxa1wiLFwiYnFsXCIsXCJicW1cIixcImJxblwiLFwiYnFvXCIsXCJicXBcIixcImJxcVwiLFwiYnFyXCIsXCJicXNcIixcImJxdFwiLFwiYnF1XCIsXCJicXZcIixcImJxd1wiLFwiYnF4XCIsXCJicXlcIixcImJxelwiLFwiYnJhXCIsXCJicmJcIixcImJyY1wiLFwiYnJkXCIsXCJicmZcIixcImJyZ1wiLFwiYnJoXCIsXCJicmlcIixcImJyalwiLFwiYnJrXCIsXCJicmxcIixcImJybVwiLFwiYnJuXCIsXCJicm9cIixcImJycFwiLFwiYnJxXCIsXCJicnJcIixcImJyc1wiLFwiYnJ0XCIsXCJicnVcIixcImJydlwiLFwiYnJ3XCIsXCJicnhcIixcImJyeVwiLFwiYnJ6XCIsXCJic2FcIixcImJzYlwiLFwiYnNjXCIsXCJic2VcIixcImJzZlwiLFwiYnNnXCIsXCJic2hcIixcImJzaVwiLFwiYnNqXCIsXCJic2tcIixcImJzbFwiLFwiYnNtXCIsXCJic25cIixcImJzb1wiLFwiYnNwXCIsXCJic3FcIixcImJzclwiLFwiYnNzXCIsXCJic3RcIixcImJzdVwiLFwiYnN2XCIsXCJic3dcIixcImJzeFwiLFwiYnN5XCIsXCJidGFcIixcImJ0YlwiLFwiYnRjXCIsXCJidGRcIixcImJ0ZVwiLFwiYnRmXCIsXCJidGdcIixcImJ0aFwiLFwiYnRpXCIsXCJidGpcIixcImJ0a1wiLFwiYnRsXCIsXCJidG1cIixcImJ0blwiLFwiYnRvXCIsXCJidHBcIixcImJ0cVwiLFwiYnRyXCIsXCJidHNcIixcImJ0dFwiLFwiYnR1XCIsXCJidHZcIixcImJ0d1wiLFwiYnR4XCIsXCJidHlcIixcImJ0elwiLFwiYnVhXCIsXCJidWJcIixcImJ1Y1wiLFwiYnVkXCIsXCJidWVcIixcImJ1ZlwiLFwiYnVnXCIsXCJidWhcIixcImJ1aVwiLFwiYnVqXCIsXCJidWtcIixcImJ1bVwiLFwiYnVuXCIsXCJidW9cIixcImJ1cFwiLFwiYnVxXCIsXCJidXNcIixcImJ1dFwiLFwiYnV1XCIsXCJidXZcIixcImJ1d1wiLFwiYnV4XCIsXCJidXlcIixcImJ1elwiLFwiYnZhXCIsXCJidmJcIixcImJ2Y1wiLFwiYnZkXCIsXCJidmVcIixcImJ2ZlwiLFwiYnZnXCIsXCJidmhcIixcImJ2aVwiLFwiYnZqXCIsXCJidmtcIixcImJ2bFwiLFwiYnZtXCIsXCJidm5cIixcImJ2b1wiLFwiYnZwXCIsXCJidnFcIixcImJ2clwiLFwiYnZ0XCIsXCJidnVcIixcImJ2dlwiLFwiYnZ3XCIsXCJidnhcIixcImJ2eVwiLFwiYnZ6XCIsXCJid2FcIixcImJ3YlwiLFwiYndjXCIsXCJid2RcIixcImJ3ZVwiLFwiYndmXCIsXCJid2dcIixcImJ3aFwiLFwiYndpXCIsXCJid2pcIixcImJ3a1wiLFwiYndsXCIsXCJid21cIixcImJ3blwiLFwiYndvXCIsXCJid3BcIixcImJ3cVwiLFwiYndyXCIsXCJid3NcIixcImJ3dFwiLFwiYnd1XCIsXCJid3dcIixcImJ3eFwiLFwiYnd5XCIsXCJid3pcIixcImJ4YVwiLFwiYnhiXCIsXCJieGNcIixcImJ4ZFwiLFwiYnhlXCIsXCJieGZcIixcImJ4Z1wiLFwiYnhoXCIsXCJieGlcIixcImJ4alwiLFwiYnhrXCIsXCJieGxcIixcImJ4bVwiLFwiYnhuXCIsXCJieG9cIixcImJ4cFwiLFwiYnhxXCIsXCJieHJcIixcImJ4c1wiLFwiYnh1XCIsXCJieHZcIixcImJ4d1wiLFwiYnh4XCIsXCJieHpcIixcImJ5YVwiLFwiYnliXCIsXCJieWNcIixcImJ5ZFwiLFwiYnllXCIsXCJieWZcIixcImJ5Z1wiLFwiYnloXCIsXCJieWlcIixcImJ5alwiLFwiYnlrXCIsXCJieWxcIixcImJ5bVwiLFwiYnluXCIsXCJieW9cIixcImJ5cFwiLFwiYnlxXCIsXCJieXJcIixcImJ5c1wiLFwiYnl0XCIsXCJieXZcIixcImJ5d1wiLFwiYnl4XCIsXCJieXlcIixcImJ5elwiLFwiYnphXCIsXCJiemJcIixcImJ6Y1wiLFwiYnpkXCIsXCJiemVcIixcImJ6ZlwiLFwiYnpnXCIsXCJiemhcIixcImJ6aVwiLFwiYnpqXCIsXCJiemtcIixcImJ6bFwiLFwiYnptXCIsXCJiem5cIixcImJ6b1wiLFwiYnpwXCIsXCJienFcIixcImJ6clwiLFwiYnpzXCIsXCJienRcIixcImJ6dVwiLFwiYnp2XCIsXCJiendcIixcImJ6eFwiLFwiYnp5XCIsXCJienpcIl1cbixbIFwiY2FcIixcImNlXCIsXCJjaFwiLFwiY29cIixcImNyXCIsXCJjc1wiLFwiY3VcIixcImN2XCIsXCJjeVwiLFwiY2FhXCIsXCJjYWJcIixcImNhY1wiLFwiY2FkXCIsXCJjYWVcIixcImNhZlwiLFwiY2FnXCIsXCJjYWhcIixcImNhaVwiLFwiY2FqXCIsXCJjYWtcIixcImNhbFwiLFwiY2FtXCIsXCJjYW5cIixcImNhb1wiLFwiY2FwXCIsXCJjYXFcIixcImNhclwiLFwiY2FzXCIsXCJjYXVcIixcImNhdlwiLFwiY2F3XCIsXCJjYXhcIixcImNheVwiLFwiY2F6XCIsXCJjYmFcIixcImNiYlwiLFwiY2JjXCIsXCJjYmRcIixcImNiZVwiLFwiY2JnXCIsXCJjYmhcIixcImNiaVwiLFwiY2JqXCIsXCJjYmtcIixcImNibFwiLFwiY2JuXCIsXCJjYm9cIixcImNicVwiLFwiY2JyXCIsXCJjYnNcIixcImNidFwiLFwiY2J1XCIsXCJjYnZcIixcImNid1wiLFwiY2J5XCIsXCJjY2FcIixcImNjY1wiLFwiY2NkXCIsXCJjY2VcIixcImNjZ1wiLFwiY2NoXCIsXCJjY2pcIixcImNjbFwiLFwiY2NtXCIsXCJjY25cIixcImNjb1wiLFwiY2NwXCIsXCJjY3FcIixcImNjclwiLFwiY2NzXCIsXCJjZGFcIixcImNkY1wiLFwiY2RkXCIsXCJjZGVcIixcImNkZlwiLFwiY2RnXCIsXCJjZGhcIixcImNkaVwiLFwiY2RqXCIsXCJjZG1cIixcImNkblwiLFwiY2RvXCIsXCJjZHJcIixcImNkc1wiLFwiY2R5XCIsXCJjZHpcIixcImNlYVwiLFwiY2ViXCIsXCJjZWdcIixcImNla1wiLFwiY2VsXCIsXCJjZW5cIixcImNldFwiLFwiY2V5XCIsXCJjZmFcIixcImNmZFwiLFwiY2ZnXCIsXCJjZm1cIixcImNnYVwiLFwiY2djXCIsXCJjZ2dcIixcImNna1wiLFwiY2hiXCIsXCJjaGNcIixcImNoZFwiLFwiY2hmXCIsXCJjaGdcIixcImNoaFwiLFwiY2hqXCIsXCJjaGtcIixcImNobFwiLFwiY2htXCIsXCJjaG5cIixcImNob1wiLFwiY2hwXCIsXCJjaHFcIixcImNoclwiLFwiY2h0XCIsXCJjaHdcIixcImNoeFwiLFwiY2h5XCIsXCJjaHpcIixcImNpYVwiLFwiY2liXCIsXCJjaWNcIixcImNpZFwiLFwiY2llXCIsXCJjaWhcIixcImNpa1wiLFwiY2ltXCIsXCJjaW5cIixcImNpcFwiLFwiY2lyXCIsXCJjaXdcIixcImNpeVwiLFwiY2phXCIsXCJjamVcIixcImNqaFwiLFwiY2ppXCIsXCJjamtcIixcImNqbVwiLFwiY2puXCIsXCJjam9cIixcImNqcFwiLFwiY2pyXCIsXCJjanNcIixcImNqdlwiLFwiY2p5XCIsXCJja2FcIixcImNrYlwiLFwiY2toXCIsXCJja2xcIixcImNrbVwiLFwiY2tuXCIsXCJja29cIixcImNrcVwiLFwiY2tyXCIsXCJja3NcIixcImNrdFwiLFwiY2t1XCIsXCJja3ZcIixcImNreFwiLFwiY2t5XCIsXCJja3pcIixcImNsYVwiLFwiY2xjXCIsXCJjbGRcIixcImNsZVwiLFwiY2xoXCIsXCJjbGlcIixcImNsalwiLFwiY2xrXCIsXCJjbGxcIixcImNsbVwiLFwiY2xvXCIsXCJjbHRcIixcImNsdVwiLFwiY2x3XCIsXCJjbHlcIixcImNtYVwiLFwiY21jXCIsXCJjbWVcIixcImNtZ1wiLFwiY21pXCIsXCJjbWtcIixcImNtbFwiLFwiY21tXCIsXCJjbW5cIixcImNtb1wiLFwiY21yXCIsXCJjbXNcIixcImNtdFwiLFwiY25hXCIsXCJjbmJcIixcImNuY1wiLFwiY25nXCIsXCJjbmhcIixcImNuaVwiLFwiY25rXCIsXCJjbmxcIixcImNub1wiLFwiY25wXCIsXCJjbnJcIixcImNuc1wiLFwiY250XCIsXCJjbnVcIixcImNud1wiLFwiY254XCIsXCJjb2FcIixcImNvYlwiLFwiY29jXCIsXCJjb2RcIixcImNvZVwiLFwiY29mXCIsXCJjb2dcIixcImNvaFwiLFwiY29qXCIsXCJjb2tcIixcImNvbFwiLFwiY29tXCIsXCJjb25cIixcImNvb1wiLFwiY29wXCIsXCJjb3FcIixcImNvdFwiLFwiY291XCIsXCJjb3ZcIixcImNvd1wiLFwiY294XCIsXCJjb3lcIixcImNvelwiLFwiY3BhXCIsXCJjcGJcIixcImNwY1wiLFwiY3BlXCIsXCJjcGZcIixcImNwZ1wiLFwiY3BpXCIsXCJjcG5cIixcImNwb1wiLFwiY3BwXCIsXCJjcHNcIixcImNwdVwiLFwiY3B4XCIsXCJjcHlcIixcImNxZFwiLFwiY3F1XCIsXCJjcmFcIixcImNyYlwiLFwiY3JjXCIsXCJjcmRcIixcImNyZlwiLFwiY3JnXCIsXCJjcmhcIixcImNyaVwiLFwiY3JqXCIsXCJjcmtcIixcImNybFwiLFwiY3JtXCIsXCJjcm5cIixcImNyb1wiLFwiY3JwXCIsXCJjcnFcIixcImNyclwiLFwiY3JzXCIsXCJjcnRcIixcImNydlwiLFwiY3J3XCIsXCJjcnhcIixcImNyeVwiLFwiY3J6XCIsXCJjc2FcIixcImNzYlwiLFwiY3NjXCIsXCJjc2RcIixcImNzZVwiLFwiY3NmXCIsXCJjc2dcIixcImNzaFwiLFwiY3NpXCIsXCJjc2pcIixcImNza1wiLFwiY3NsXCIsXCJjc21cIixcImNzblwiLFwiY3NvXCIsXCJjc3BcIixcImNzcVwiLFwiY3NyXCIsXCJjc3NcIixcImNzdFwiLFwiY3N1XCIsXCJjc3ZcIixcImNzd1wiLFwiY3N4XCIsXCJjc3lcIixcImNzelwiLFwiY3RhXCIsXCJjdGNcIixcImN0ZFwiLFwiY3RlXCIsXCJjdGdcIixcImN0aFwiLFwiY3RsXCIsXCJjdG1cIixcImN0blwiLFwiY3RvXCIsXCJjdHBcIixcImN0c1wiLFwiY3R0XCIsXCJjdHVcIixcImN0eVwiLFwiY3R6XCIsXCJjdWFcIixcImN1YlwiLFwiY3VjXCIsXCJjdWdcIixcImN1aFwiLFwiY3VpXCIsXCJjdWpcIixcImN1a1wiLFwiY3VsXCIsXCJjdW1cIixcImN1b1wiLFwiY3VwXCIsXCJjdXFcIixcImN1clwiLFwiY3VzXCIsXCJjdXRcIixcImN1dVwiLFwiY3V2XCIsXCJjdXdcIixcImN1eFwiLFwiY3V5XCIsXCJjdmdcIixcImN2blwiLFwiY3dhXCIsXCJjd2JcIixcImN3ZFwiLFwiY3dlXCIsXCJjd2dcIixcImN3dFwiLFwiY3lhXCIsXCJjeWJcIixcImN5b1wiLFwiY3poXCIsXCJjemtcIixcImN6blwiLFwiY3pvXCIsXCJjenRcIl1cbixbIFwiZGFcIixcImRlXCIsXCJkdlwiLFwiZHpcIixcImRhYVwiLFwiZGFjXCIsXCJkYWRcIixcImRhZVwiLFwiZGFmXCIsXCJkYWdcIixcImRhaFwiLFwiZGFpXCIsXCJkYWpcIixcImRha1wiLFwiZGFsXCIsXCJkYW1cIixcImRhb1wiLFwiZGFwXCIsXCJkYXFcIixcImRhclwiLFwiZGFzXCIsXCJkYXVcIixcImRhdlwiLFwiZGF3XCIsXCJkYXhcIixcImRheVwiLFwiZGF6XCIsXCJkYmFcIixcImRiYlwiLFwiZGJkXCIsXCJkYmVcIixcImRiZlwiLFwiZGJnXCIsXCJkYmlcIixcImRialwiLFwiZGJsXCIsXCJkYm1cIixcImRiblwiLFwiZGJvXCIsXCJkYnBcIixcImRicVwiLFwiZGJyXCIsXCJkYnRcIixcImRidVwiLFwiZGJ2XCIsXCJkYndcIixcImRieVwiLFwiZGNjXCIsXCJkY3JcIixcImRkYVwiLFwiZGRkXCIsXCJkZGVcIixcImRkZ1wiLFwiZGRpXCIsXCJkZGpcIixcImRkblwiLFwiZGRvXCIsXCJkZHJcIixcImRkc1wiLFwiZGR3XCIsXCJkZWNcIixcImRlZFwiLFwiZGVlXCIsXCJkZWZcIixcImRlZ1wiLFwiZGVoXCIsXCJkZWlcIixcImRla1wiLFwiZGVsXCIsXCJkZW1cIixcImRlblwiLFwiZGVwXCIsXCJkZXFcIixcImRlclwiLFwiZGVzXCIsXCJkZXZcIixcImRlelwiLFwiZGdhXCIsXCJkZ2JcIixcImRnY1wiLFwiZGdkXCIsXCJkZ2VcIixcImRnZ1wiLFwiZGdoXCIsXCJkZ2lcIixcImRna1wiLFwiZGdsXCIsXCJkZ25cIixcImRnb1wiLFwiZGdyXCIsXCJkZ3NcIixcImRndFwiLFwiZGd1XCIsXCJkZ3dcIixcImRneFwiLFwiZGd6XCIsXCJkaGFcIixcImRoZFwiLFwiZGhnXCIsXCJkaGlcIixcImRobFwiLFwiZGhtXCIsXCJkaG5cIixcImRob1wiLFwiZGhyXCIsXCJkaHNcIixcImRodVwiLFwiZGh2XCIsXCJkaHdcIixcImRoeFwiLFwiZGlhXCIsXCJkaWJcIixcImRpY1wiLFwiZGlkXCIsXCJkaWZcIixcImRpZ1wiLFwiZGloXCIsXCJkaWlcIixcImRpalwiLFwiZGlrXCIsXCJkaWxcIixcImRpbVwiLFwiZGluXCIsXCJkaW9cIixcImRpcFwiLFwiZGlxXCIsXCJkaXJcIixcImRpc1wiLFwiZGl0XCIsXCJkaXVcIixcImRpd1wiLFwiZGl4XCIsXCJkaXlcIixcImRpelwiLFwiZGphXCIsXCJkamJcIixcImRqY1wiLFwiZGpkXCIsXCJkamVcIixcImRqZlwiLFwiZGppXCIsXCJkampcIixcImRqa1wiLFwiZGpsXCIsXCJkam1cIixcImRqblwiLFwiZGpvXCIsXCJkanJcIixcImRqdVwiLFwiZGp3XCIsXCJka2FcIixcImRrZ1wiLFwiZGtrXCIsXCJka2xcIixcImRrclwiLFwiZGtzXCIsXCJka3hcIixcImRsZ1wiLFwiZGxrXCIsXCJkbG1cIixcImRsblwiLFwiZG1hXCIsXCJkbWJcIixcImRtY1wiLFwiZG1kXCIsXCJkbWVcIixcImRtZlwiLFwiZG1nXCIsXCJkbWtcIixcImRtbFwiLFwiZG1tXCIsXCJkbW5cIixcImRtb1wiLFwiZG1yXCIsXCJkbXNcIixcImRtdVwiLFwiZG12XCIsXCJkbXdcIixcImRteFwiLFwiZG15XCIsXCJkbmFcIixcImRuZFwiLFwiZG5lXCIsXCJkbmdcIixcImRuaVwiLFwiZG5qXCIsXCJkbmtcIixcImRublwiLFwiZG5vXCIsXCJkbnJcIixcImRudFwiLFwiZG51XCIsXCJkbnZcIixcImRud1wiLFwiZG55XCIsXCJkb2FcIixcImRvYlwiLFwiZG9jXCIsXCJkb2VcIixcImRvZlwiLFwiZG9oXCIsXCJkb2lcIixcImRva1wiLFwiZG9sXCIsXCJkb25cIixcImRvb1wiLFwiZG9wXCIsXCJkb3FcIixcImRvclwiLFwiZG9zXCIsXCJkb3RcIixcImRvdlwiLFwiZG93XCIsXCJkb3hcIixcImRveVwiLFwiZG96XCIsXCJkcHBcIixcImRyYVwiLFwiZHJiXCIsXCJkcmNcIixcImRyZFwiLFwiZHJlXCIsXCJkcmdcIixcImRyaFwiLFwiZHJpXCIsXCJkcmxcIixcImRyblwiLFwiZHJvXCIsXCJkcnFcIixcImRyclwiLFwiZHJzXCIsXCJkcnRcIixcImRydVwiLFwiZHJ3XCIsXCJkcnlcIixcImRzYlwiLFwiZHNlXCIsXCJkc2hcIixcImRzaVwiLFwiZHNsXCIsXCJkc25cIixcImRzb1wiLFwiZHNxXCIsXCJkdGFcIixcImR0YlwiLFwiZHRkXCIsXCJkdGhcIixcImR0aVwiLFwiZHRrXCIsXCJkdG1cIixcImR0blwiLFwiZHRvXCIsXCJkdHBcIixcImR0clwiLFwiZHRzXCIsXCJkdHRcIixcImR0dVwiLFwiZHR5XCIsXCJkdWFcIixcImR1YlwiLFwiZHVjXCIsXCJkdWRcIixcImR1ZVwiLFwiZHVmXCIsXCJkdWdcIixcImR1aFwiLFwiZHVpXCIsXCJkdWpcIixcImR1a1wiLFwiZHVsXCIsXCJkdW1cIixcImR1blwiLFwiZHVvXCIsXCJkdXBcIixcImR1cVwiLFwiZHVyXCIsXCJkdXNcIixcImR1dVwiLFwiZHV2XCIsXCJkdXdcIixcImR1eFwiLFwiZHV5XCIsXCJkdXpcIixcImR2YVwiLFwiZHdhXCIsXCJkd2tcIixcImR3bFwiLFwiZHdyXCIsXCJkd3NcIixcImR3dVwiLFwiZHd3XCIsXCJkd3lcIixcImR3elwiLFwiZHlhXCIsXCJkeWJcIixcImR5ZFwiLFwiZHlnXCIsXCJkeWlcIixcImR5bVwiLFwiZHluXCIsXCJkeW9cIixcImR5dVwiLFwiZHl5XCIsXCJkemFcIixcImR6ZFwiLFwiZHplXCIsXCJkemdcIixcImR6bFwiLFwiZHpuXCJdXG4sWyBcImVlXCIsXCJlbFwiLFwiZW5cIixcImVvXCIsXCJlc1wiLFwiZXRcIixcImV1XCIsXCJlYWFcIixcImViY1wiLFwiZWJnXCIsXCJlYmtcIixcImVib1wiLFwiZWJyXCIsXCJlYnVcIixcImVjclwiLFwiZWNzXCIsXCJlY3lcIixcImVlZVwiLFwiZWZhXCIsXCJlZmVcIixcImVmaVwiLFwiZWdhXCIsXCJlZ2xcIixcImVnb1wiLFwiZWd4XCIsXCJlZ3lcIixcImVoc1wiLFwiZWh1XCIsXCJlaXBcIixcImVpdFwiLFwiZWl2XCIsXCJlamFcIixcImVrYVwiLFwiZWtjXCIsXCJla2VcIixcImVrZ1wiLFwiZWtpXCIsXCJla2tcIixcImVrbFwiLFwiZWttXCIsXCJla29cIixcImVrcFwiLFwiZWtyXCIsXCJla3lcIixcImVsZVwiLFwiZWxoXCIsXCJlbGlcIixcImVsa1wiLFwiZWxtXCIsXCJlbG9cIixcImVscFwiLFwiZWx1XCIsXCJlbHhcIixcImVtYVwiLFwiZW1iXCIsXCJlbWVcIixcImVtZ1wiLFwiZW1pXCIsXCJlbWtcIixcImVtbVwiLFwiZW1uXCIsXCJlbW9cIixcImVtcFwiLFwiZW1xXCIsXCJlbXNcIixcImVtdVwiLFwiZW13XCIsXCJlbXhcIixcImVteVwiLFwiZW16XCIsXCJlbmFcIixcImVuYlwiLFwiZW5jXCIsXCJlbmRcIixcImVuZlwiLFwiZW5oXCIsXCJlbmxcIixcImVubVwiLFwiZW5uXCIsXCJlbm9cIixcImVucVwiLFwiZW5yXCIsXCJlbnVcIixcImVudlwiLFwiZW53XCIsXCJlbnhcIixcImVvdFwiLFwiZXBpXCIsXCJlcmFcIixcImVyZ1wiLFwiZXJoXCIsXCJlcmlcIixcImVya1wiLFwiZXJvXCIsXCJlcnJcIixcImVyc1wiLFwiZXJ0XCIsXCJlcndcIixcImVzZVwiLFwiZXNnXCIsXCJlc2hcIixcImVzaVwiLFwiZXNrXCIsXCJlc2xcIixcImVzbVwiLFwiZXNuXCIsXCJlc29cIixcImVzcVwiLFwiZXNzXCIsXCJlc3VcIixcImVzeFwiLFwiZXN5XCIsXCJldGJcIixcImV0Y1wiLFwiZXRoXCIsXCJldG5cIixcImV0b1wiLFwiZXRyXCIsXCJldHNcIixcImV0dFwiLFwiZXR1XCIsXCJldHhcIixcImV0elwiLFwiZXVxXCIsXCJldmVcIixcImV2aFwiLFwiZXZuXCIsXCJld29cIixcImV4dFwiLFwiZXlhXCIsXCJleW9cIixcImV6YVwiLFwiZXplXCJdXG4sWyBcImZhXCIsXCJmZlwiLFwiZmlcIixcImZqXCIsXCJmb1wiLFwiZnJcIixcImZ5XCIsXCJmYWFcIixcImZhYlwiLFwiZmFkXCIsXCJmYWZcIixcImZhZ1wiLFwiZmFoXCIsXCJmYWlcIixcImZhalwiLFwiZmFrXCIsXCJmYWxcIixcImZhbVwiLFwiZmFuXCIsXCJmYXBcIixcImZhclwiLFwiZmF0XCIsXCJmYXVcIixcImZheFwiLFwiZmF5XCIsXCJmYXpcIixcImZibFwiLFwiZmNzXCIsXCJmZXJcIixcImZmaVwiLFwiZmZtXCIsXCJmZ3JcIixcImZpYVwiLFwiZmllXCIsXCJmaWZcIixcImZpbFwiLFwiZmlwXCIsXCJmaXJcIixcImZpdFwiLFwiZml1XCIsXCJmaXdcIixcImZra1wiLFwiZmt2XCIsXCJmbGFcIixcImZsaFwiLFwiZmxpXCIsXCJmbGxcIixcImZsblwiLFwiZmxyXCIsXCJmbHlcIixcImZtcFwiLFwiZm11XCIsXCJmbmJcIixcImZuZ1wiLFwiZm5pXCIsXCJmb2RcIixcImZvaVwiLFwiZm9tXCIsXCJmb25cIixcImZvclwiLFwiZm9zXCIsXCJmb3hcIixcImZwZVwiLFwiZnFzXCIsXCJmcmNcIixcImZyZFwiLFwiZnJrXCIsXCJmcm1cIixcImZyb1wiLFwiZnJwXCIsXCJmcnFcIixcImZyclwiLFwiZnJzXCIsXCJmcnRcIixcImZzZVwiLFwiZnNsXCIsXCJmc3NcIixcImZ1YlwiLFwiZnVjXCIsXCJmdWRcIixcImZ1ZVwiLFwiZnVmXCIsXCJmdWhcIixcImZ1aVwiLFwiZnVqXCIsXCJmdW1cIixcImZ1blwiLFwiZnVxXCIsXCJmdXJcIixcImZ1dFwiLFwiZnV1XCIsXCJmdXZcIixcImZ1eVwiLFwiZnZyXCIsXCJmd2FcIixcImZ3ZVwiXVxuLFsgXCJnYVwiLFwiZ2RcIixcImdsXCIsXCJnblwiLFwiZ3VcIixcImd2XCIsXCJnYWFcIixcImdhYlwiLFwiZ2FjXCIsXCJnYWRcIixcImdhZVwiLFwiZ2FmXCIsXCJnYWdcIixcImdhaFwiLFwiZ2FpXCIsXCJnYWpcIixcImdha1wiLFwiZ2FsXCIsXCJnYW1cIixcImdhblwiLFwiZ2FvXCIsXCJnYXBcIixcImdhcVwiLFwiZ2FyXCIsXCJnYXNcIixcImdhdFwiLFwiZ2F1XCIsXCJnYXZcIixcImdhd1wiLFwiZ2F4XCIsXCJnYXlcIixcImdhelwiLFwiZ2JhXCIsXCJnYmJcIixcImdiY1wiLFwiZ2JkXCIsXCJnYmVcIixcImdiZlwiLFwiZ2JnXCIsXCJnYmhcIixcImdiaVwiLFwiZ2JqXCIsXCJnYmtcIixcImdibFwiLFwiZ2JtXCIsXCJnYm5cIixcImdib1wiLFwiZ2JwXCIsXCJnYnFcIixcImdiclwiLFwiZ2JzXCIsXCJnYnVcIixcImdidlwiLFwiZ2J3XCIsXCJnYnhcIixcImdieVwiLFwiZ2J6XCIsXCJnY2NcIixcImdjZFwiLFwiZ2NlXCIsXCJnY2ZcIixcImdjbFwiLFwiZ2NuXCIsXCJnY3JcIixcImdjdFwiLFwiZ2RhXCIsXCJnZGJcIixcImdkY1wiLFwiZ2RkXCIsXCJnZGVcIixcImdkZlwiLFwiZ2RnXCIsXCJnZGhcIixcImdkaVwiLFwiZ2RqXCIsXCJnZGtcIixcImdkbFwiLFwiZ2RtXCIsXCJnZG5cIixcImdkb1wiLFwiZ2RxXCIsXCJnZHJcIixcImdkc1wiLFwiZ2R0XCIsXCJnZHVcIixcImdkeFwiLFwiZ2VhXCIsXCJnZWJcIixcImdlY1wiLFwiZ2VkXCIsXCJnZWZcIixcImdlZ1wiLFwiZ2VoXCIsXCJnZWlcIixcImdlalwiLFwiZ2VrXCIsXCJnZWxcIixcImdlbVwiLFwiZ2VxXCIsXCJnZXNcIixcImdldlwiLFwiZ2V3XCIsXCJnZXhcIixcImdleVwiLFwiZ2V6XCIsXCJnZmtcIixcImdmdFwiLFwiZ2Z4XCIsXCJnZ2FcIixcImdnYlwiLFwiZ2dkXCIsXCJnZ2VcIixcImdnZ1wiLFwiZ2drXCIsXCJnZ2xcIixcImdnblwiLFwiZ2dvXCIsXCJnZ3JcIixcImdndFwiLFwiZ2d1XCIsXCJnZ3dcIixcImdoYVwiLFwiZ2hjXCIsXCJnaGVcIixcImdoaFwiLFwiZ2hrXCIsXCJnaGxcIixcImdoblwiLFwiZ2hvXCIsXCJnaHJcIixcImdoc1wiLFwiZ2h0XCIsXCJnaWFcIixcImdpYlwiLFwiZ2ljXCIsXCJnaWRcIixcImdpZVwiLFwiZ2lnXCIsXCJnaWhcIixcImdpaVwiLFwiZ2lsXCIsXCJnaW1cIixcImdpblwiLFwiZ2lvXCIsXCJnaXBcIixcImdpcVwiLFwiZ2lyXCIsXCJnaXNcIixcImdpdFwiLFwiZ2l1XCIsXCJnaXdcIixcImdpeFwiLFwiZ2l5XCIsXCJnaXpcIixcImdqaVwiLFwiZ2prXCIsXCJnam1cIixcImdqblwiLFwiZ2pyXCIsXCJnanVcIixcImdrYVwiLFwiZ2tkXCIsXCJna2VcIixcImdrblwiLFwiZ2tvXCIsXCJna3BcIixcImdrdVwiLFwiZ2xiXCIsXCJnbGNcIixcImdsZFwiLFwiZ2xoXCIsXCJnbGlcIixcImdsalwiLFwiZ2xrXCIsXCJnbGxcIixcImdsb1wiLFwiZ2xyXCIsXCJnbHVcIixcImdsd1wiLFwiZ2x5XCIsXCJnbWFcIixcImdtYlwiLFwiZ21kXCIsXCJnbWVcIixcImdtZ1wiLFwiZ21oXCIsXCJnbWxcIixcImdtbVwiLFwiZ21uXCIsXCJnbXFcIixcImdtclwiLFwiZ211XCIsXCJnbXZcIixcImdtd1wiLFwiZ214XCIsXCJnbXlcIixcImdtelwiLFwiZ25hXCIsXCJnbmJcIixcImduY1wiLFwiZ25kXCIsXCJnbmVcIixcImduZ1wiLFwiZ25oXCIsXCJnbmlcIixcImdualwiLFwiZ25rXCIsXCJnbmxcIixcImdubVwiLFwiZ25uXCIsXCJnbm9cIixcImducVwiLFwiZ25yXCIsXCJnbnRcIixcImdudVwiLFwiZ253XCIsXCJnbnpcIixcImdvYVwiLFwiZ29iXCIsXCJnb2NcIixcImdvZFwiLFwiZ29lXCIsXCJnb2ZcIixcImdvZ1wiLFwiZ29oXCIsXCJnb2lcIixcImdvalwiLFwiZ29rXCIsXCJnb2xcIixcImdvbVwiLFwiZ29uXCIsXCJnb29cIixcImdvcFwiLFwiZ29xXCIsXCJnb3JcIixcImdvc1wiLFwiZ290XCIsXCJnb3VcIixcImdvd1wiLFwiZ294XCIsXCJnb3lcIixcImdvelwiLFwiZ3BhXCIsXCJncGVcIixcImdwblwiLFwiZ3FhXCIsXCJncWlcIixcImdxblwiLFwiZ3FyXCIsXCJncXVcIixcImdyYVwiLFwiZ3JiXCIsXCJncmNcIixcImdyZFwiLFwiZ3JnXCIsXCJncmhcIixcImdyaVwiLFwiZ3JqXCIsXCJncmtcIixcImdybVwiLFwiZ3JvXCIsXCJncnFcIixcImdyclwiLFwiZ3JzXCIsXCJncnRcIixcImdydVwiLFwiZ3J2XCIsXCJncndcIixcImdyeFwiLFwiZ3J5XCIsXCJncnpcIixcImdzZVwiLFwiZ3NnXCIsXCJnc2xcIixcImdzbVwiLFwiZ3NuXCIsXCJnc29cIixcImdzcFwiLFwiZ3NzXCIsXCJnc3dcIixcImd0YVwiLFwiZ3RpXCIsXCJndHVcIixcImd1YVwiLFwiZ3ViXCIsXCJndWNcIixcImd1ZFwiLFwiZ3VlXCIsXCJndWZcIixcImd1Z1wiLFwiZ3VoXCIsXCJndWlcIixcImd1a1wiLFwiZ3VsXCIsXCJndW1cIixcImd1blwiLFwiZ3VvXCIsXCJndXBcIixcImd1cVwiLFwiZ3VyXCIsXCJndXNcIixcImd1dFwiLFwiZ3V1XCIsXCJndXZcIixcImd1d1wiLFwiZ3V4XCIsXCJndXpcIixcImd2YVwiLFwiZ3ZjXCIsXCJndmVcIixcImd2ZlwiLFwiZ3ZqXCIsXCJndmxcIixcImd2bVwiLFwiZ3ZuXCIsXCJndm9cIixcImd2cFwiLFwiZ3ZyXCIsXCJndnNcIixcImd2eVwiLFwiZ3dhXCIsXCJnd2JcIixcImd3Y1wiLFwiZ3dkXCIsXCJnd2VcIixcImd3ZlwiLFwiZ3dnXCIsXCJnd2lcIixcImd3alwiLFwiZ3dtXCIsXCJnd25cIixcImd3clwiLFwiZ3d0XCIsXCJnd3VcIixcImd3d1wiLFwiZ3d4XCIsXCJneHhcIixcImd5YVwiLFwiZ3liXCIsXCJneWRcIixcImd5ZVwiLFwiZ3lmXCIsXCJneWdcIixcImd5aVwiLFwiZ3lsXCIsXCJneW1cIixcImd5blwiLFwiZ3lvXCIsXCJneXJcIixcImd5eVwiLFwiZ3l6XCIsXCJnemFcIixcImd6aVwiLFwiZ3puXCJdXG4sWyBcImhhXCIsXCJoZVwiLFwiaGlcIixcImhvXCIsXCJoclwiLFwiaHRcIixcImh1XCIsXCJoeVwiLFwiaHpcIixcImhhYVwiLFwiaGFiXCIsXCJoYWNcIixcImhhZFwiLFwiaGFlXCIsXCJoYWZcIixcImhhZ1wiLFwiaGFoXCIsXCJoYWlcIixcImhhalwiLFwiaGFrXCIsXCJoYWxcIixcImhhbVwiLFwiaGFuXCIsXCJoYW9cIixcImhhcFwiLFwiaGFxXCIsXCJoYXJcIixcImhhc1wiLFwiaGF2XCIsXCJoYXdcIixcImhheFwiLFwiaGF5XCIsXCJoYXpcIixcImhiYVwiLFwiaGJiXCIsXCJoYm5cIixcImhib1wiLFwiaGJ1XCIsXCJoY2FcIixcImhjaFwiLFwiaGRuXCIsXCJoZHNcIixcImhkeVwiLFwiaGVhXCIsXCJoZWRcIixcImhlZ1wiLFwiaGVoXCIsXCJoZWlcIixcImhlbVwiLFwiaGdtXCIsXCJoZ3dcIixcImhoaVwiLFwiaGhyXCIsXCJoaHlcIixcImhpYVwiLFwiaGliXCIsXCJoaWRcIixcImhpZlwiLFwiaGlnXCIsXCJoaWhcIixcImhpaVwiLFwiaGlqXCIsXCJoaWtcIixcImhpbFwiLFwiaGltXCIsXCJoaW9cIixcImhpclwiLFwiaGl0XCIsXCJoaXdcIixcImhpeFwiLFwiaGppXCIsXCJoa2FcIixcImhrZVwiLFwiaGtoXCIsXCJoa2tcIixcImhrblwiLFwiaGtzXCIsXCJobGFcIixcImhsYlwiLFwiaGxkXCIsXCJobGVcIixcImhsdFwiLFwiaGx1XCIsXCJobWFcIixcImhtYlwiLFwiaG1jXCIsXCJobWRcIixcImhtZVwiLFwiaG1mXCIsXCJobWdcIixcImhtaFwiLFwiaG1pXCIsXCJobWpcIixcImhta1wiLFwiaG1sXCIsXCJobW1cIixcImhtblwiLFwiaG1wXCIsXCJobXFcIixcImhtclwiLFwiaG1zXCIsXCJobXRcIixcImhtdVwiLFwiaG12XCIsXCJobXdcIixcImhteFwiLFwiaG15XCIsXCJobXpcIixcImhuYVwiLFwiaG5kXCIsXCJobmVcIixcImhuZ1wiLFwiaG5oXCIsXCJobmlcIixcImhualwiLFwiaG5uXCIsXCJobm9cIixcImhuc1wiLFwiaG51XCIsXCJob2FcIixcImhvYlwiLFwiaG9jXCIsXCJob2RcIixcImhvZVwiLFwiaG9oXCIsXCJob2lcIixcImhvalwiLFwiaG9rXCIsXCJob2xcIixcImhvbVwiLFwiaG9vXCIsXCJob3BcIixcImhvclwiLFwiaG9zXCIsXCJob3RcIixcImhvdlwiLFwiaG93XCIsXCJob3lcIixcImhvelwiLFwiaHBvXCIsXCJocHNcIixcImhyYVwiLFwiaHJjXCIsXCJocmVcIixcImhya1wiLFwiaHJtXCIsXCJocm9cIixcImhycFwiLFwiaHJyXCIsXCJocnRcIixcImhydVwiLFwiaHJ3XCIsXCJocnhcIixcImhyelwiLFwiaHNiXCIsXCJoc2hcIixcImhzbFwiLFwiaHNuXCIsXCJoc3NcIixcImh0aVwiLFwiaHRvXCIsXCJodHNcIixcImh0dVwiLFwiaHR4XCIsXCJodWJcIixcImh1Y1wiLFwiaHVkXCIsXCJodWVcIixcImh1ZlwiLFwiaHVnXCIsXCJodWhcIixcImh1aVwiLFwiaHVqXCIsXCJodWtcIixcImh1bFwiLFwiaHVtXCIsXCJodW9cIixcImh1cFwiLFwiaHVxXCIsXCJodXJcIixcImh1c1wiLFwiaHV0XCIsXCJodXVcIixcImh1dlwiLFwiaHV3XCIsXCJodXhcIixcImh1eVwiLFwiaHV6XCIsXCJodmNcIixcImh2ZVwiLFwiaHZrXCIsXCJodm5cIixcImh2dlwiLFwiaHdhXCIsXCJod2NcIixcImh3b1wiLFwiaHlhXCIsXCJoeXdcIixcImh5eFwiXVxuLFsgXCJpYVwiLFwiaWRcIixcImllXCIsXCJpZ1wiLFwiaWlcIixcImlrXCIsXCJpblwiLFwiaW9cIixcImlzXCIsXCJpdFwiLFwiaXVcIixcIml3XCIsXCJpYWlcIixcImlhblwiLFwiaWFwXCIsXCJpYXJcIixcImliYVwiLFwiaWJiXCIsXCJpYmRcIixcImliZVwiLFwiaWJnXCIsXCJpYmhcIixcImliaVwiLFwiaWJsXCIsXCJpYm1cIixcImliblwiLFwiaWJyXCIsXCJpYnVcIixcImlieVwiLFwiaWNhXCIsXCJpY2hcIixcImljbFwiLFwiaWNyXCIsXCJpZGFcIixcImlkYlwiLFwiaWRjXCIsXCJpZGRcIixcImlkZVwiLFwiaWRpXCIsXCJpZHJcIixcImlkc1wiLFwiaWR0XCIsXCJpZHVcIixcImlmYVwiLFwiaWZiXCIsXCJpZmVcIixcImlmZlwiLFwiaWZrXCIsXCJpZm1cIixcImlmdVwiLFwiaWZ5XCIsXCJpZ2JcIixcImlnZVwiLFwiaWdnXCIsXCJpZ2xcIixcImlnbVwiLFwiaWduXCIsXCJpZ29cIixcImlnc1wiLFwiaWd3XCIsXCJpaGJcIixcImloaVwiLFwiaWhwXCIsXCJpaHdcIixcImlpblwiLFwiaWlyXCIsXCJpamNcIixcImlqZVwiLFwiaWpqXCIsXCJpam5cIixcImlqb1wiLFwiaWpzXCIsXCJpa2VcIixcImlraVwiLFwiaWtrXCIsXCJpa2xcIixcImlrb1wiLFwiaWtwXCIsXCJpa3JcIixcImlrc1wiLFwiaWt0XCIsXCJpa3ZcIixcImlrd1wiLFwiaWt4XCIsXCJpa3pcIixcImlsYVwiLFwiaWxiXCIsXCJpbGdcIixcImlsaVwiLFwiaWxrXCIsXCJpbGxcIixcImlsbVwiLFwiaWxvXCIsXCJpbHBcIixcImlsc1wiLFwiaWx1XCIsXCJpbHZcIixcImlsd1wiLFwiaW1hXCIsXCJpbWVcIixcImltaVwiLFwiaW1sXCIsXCJpbW5cIixcImltb1wiLFwiaW1yXCIsXCJpbXNcIixcImlteVwiLFwiaW5iXCIsXCJpbmNcIixcImluZVwiLFwiaW5nXCIsXCJpbmhcIixcImlualwiLFwiaW5sXCIsXCJpbm1cIixcImlublwiLFwiaW5vXCIsXCJpbnBcIixcImluc1wiLFwiaW50XCIsXCJpbnpcIixcImlvclwiLFwiaW91XCIsXCJpb3dcIixcImlwaVwiLFwiaXBvXCIsXCJpcXVcIixcImlxd1wiLFwiaXJhXCIsXCJpcmVcIixcImlyaFwiLFwiaXJpXCIsXCJpcmtcIixcImlyblwiLFwiaXJvXCIsXCJpcnJcIixcImlydVwiLFwiaXJ4XCIsXCJpcnlcIixcImlzYVwiLFwiaXNjXCIsXCJpc2RcIixcImlzZVwiLFwiaXNnXCIsXCJpc2hcIixcImlzaVwiLFwiaXNrXCIsXCJpc21cIixcImlzblwiLFwiaXNvXCIsXCJpc3JcIixcImlzdFwiLFwiaXN1XCIsXCJpdGJcIixcIml0Y1wiLFwiaXRkXCIsXCJpdGVcIixcIml0aVwiLFwiaXRrXCIsXCJpdGxcIixcIml0bVwiLFwiaXRvXCIsXCJpdHJcIixcIml0c1wiLFwiaXR0XCIsXCJpdHZcIixcIml0d1wiLFwiaXR4XCIsXCJpdHlcIixcIml0elwiLFwiaXVtXCIsXCJpdmJcIixcIml2dlwiLFwiaXdrXCIsXCJpd21cIixcIml3b1wiLFwiaXdzXCIsXCJpeGNcIixcIml4bFwiLFwiaXlhXCIsXCJpeW9cIixcIml5eFwiLFwiaXpoXCIsXCJpemlcIixcIml6clwiLFwiaXp6XCJdXG4sWyBcImphXCIsXCJqaVwiLFwianZcIixcImp3XCIsXCJqYWFcIixcImphYlwiLFwiamFjXCIsXCJqYWRcIixcImphZVwiLFwiamFmXCIsXCJqYWhcIixcImphalwiLFwiamFrXCIsXCJqYWxcIixcImphbVwiLFwiamFuXCIsXCJqYW9cIixcImphcVwiLFwiamFyXCIsXCJqYXNcIixcImphdFwiLFwiamF1XCIsXCJqYXhcIixcImpheVwiLFwiamF6XCIsXCJqYmVcIixcImpiaVwiLFwiamJqXCIsXCJqYmtcIixcImpibVwiLFwiamJuXCIsXCJqYm9cIixcImpiclwiLFwiamJ0XCIsXCJqYnVcIixcImpid1wiLFwiamNzXCIsXCJqY3RcIixcImpkYVwiLFwiamRnXCIsXCJqZHRcIixcImplYlwiLFwiamVlXCIsXCJqZWdcIixcImplaFwiLFwiamVpXCIsXCJqZWtcIixcImplbFwiLFwiamVuXCIsXCJqZXJcIixcImpldFwiLFwiamV1XCIsXCJqZ2JcIixcImpnZVwiLFwiamdrXCIsXCJqZ29cIixcImpoaVwiLFwiamhzXCIsXCJqaWFcIixcImppYlwiLFwiamljXCIsXCJqaWRcIixcImppZVwiLFwiamlnXCIsXCJqaWhcIixcImppaVwiLFwiamlsXCIsXCJqaW1cIixcImppb1wiLFwiamlxXCIsXCJqaXRcIixcImppdVwiLFwiaml2XCIsXCJqaXlcIixcImpqZVwiLFwiampyXCIsXCJqa2FcIixcImprbVwiLFwiamtvXCIsXCJqa3BcIixcImprclwiLFwiamtzXCIsXCJqa3VcIixcImpsZVwiLFwiamxzXCIsXCJqbWFcIixcImptYlwiLFwiam1jXCIsXCJqbWRcIixcImptaVwiLFwiam1sXCIsXCJqbW5cIixcImptclwiLFwiam1zXCIsXCJqbXdcIixcImpteFwiLFwiam5hXCIsXCJqbmRcIixcImpuZ1wiLFwiam5pXCIsXCJqbmpcIixcImpubFwiLFwiam5zXCIsXCJqb2JcIixcImpvZFwiLFwiam9nXCIsXCJqb3JcIixcImpvc1wiLFwiam93XCIsXCJqcGFcIixcImpwclwiLFwianB4XCIsXCJqcXJcIixcImpyYVwiLFwianJiXCIsXCJqcnJcIixcImpydFwiLFwianJ1XCIsXCJqc2xcIixcImp1YVwiLFwianViXCIsXCJqdWNcIixcImp1ZFwiLFwianVoXCIsXCJqdWlcIixcImp1a1wiLFwianVsXCIsXCJqdW1cIixcImp1blwiLFwianVvXCIsXCJqdXBcIixcImp1clwiLFwianVzXCIsXCJqdXRcIixcImp1dVwiLFwianV3XCIsXCJqdXlcIixcImp2ZFwiLFwianZuXCIsXCJqd2lcIixcImp5YVwiLFwianllXCIsXCJqeXlcIl1cbixbIFwia2FcIixcImtnXCIsXCJraVwiLFwia2pcIixcImtrXCIsXCJrbFwiLFwia21cIixcImtuXCIsXCJrb1wiLFwia3JcIixcImtzXCIsXCJrdVwiLFwia3ZcIixcImt3XCIsXCJreVwiLFwia2FhXCIsXCJrYWJcIixcImthY1wiLFwia2FkXCIsXCJrYWVcIixcImthZlwiLFwia2FnXCIsXCJrYWhcIixcImthaVwiLFwia2FqXCIsXCJrYWtcIixcImthbVwiLFwia2FvXCIsXCJrYXBcIixcImthcVwiLFwia2FyXCIsXCJrYXZcIixcImthd1wiLFwia2F4XCIsXCJrYXlcIixcImtiYVwiLFwia2JiXCIsXCJrYmNcIixcImtiZFwiLFwia2JlXCIsXCJrYmZcIixcImtiZ1wiLFwia2JoXCIsXCJrYmlcIixcImtialwiLFwia2JrXCIsXCJrYmxcIixcImtibVwiLFwia2JuXCIsXCJrYm9cIixcImticFwiLFwia2JxXCIsXCJrYnJcIixcImtic1wiLFwia2J0XCIsXCJrYnVcIixcImtidlwiLFwia2J3XCIsXCJrYnhcIixcImtieVwiLFwia2J6XCIsXCJrY2FcIixcImtjYlwiLFwia2NjXCIsXCJrY2RcIixcImtjZVwiLFwia2NmXCIsXCJrY2dcIixcImtjaFwiLFwia2NpXCIsXCJrY2pcIixcImtja1wiLFwia2NsXCIsXCJrY21cIixcImtjblwiLFwia2NvXCIsXCJrY3BcIixcImtjcVwiLFwia2NyXCIsXCJrY3NcIixcImtjdFwiLFwia2N1XCIsXCJrY3ZcIixcImtjd1wiLFwia2N4XCIsXCJrY3lcIixcImtjelwiLFwia2RhXCIsXCJrZGNcIixcImtkZFwiLFwia2RlXCIsXCJrZGZcIixcImtkZ1wiLFwia2RoXCIsXCJrZGlcIixcImtkalwiLFwia2RrXCIsXCJrZGxcIixcImtkbVwiLFwia2RuXCIsXCJrZG9cIixcImtkcFwiLFwia2RxXCIsXCJrZHJcIixcImtkdFwiLFwia2R1XCIsXCJrZHZcIixcImtkd1wiLFwia2R4XCIsXCJrZHlcIixcImtkelwiLFwia2VhXCIsXCJrZWJcIixcImtlY1wiLFwia2VkXCIsXCJrZWVcIixcImtlZlwiLFwia2VnXCIsXCJrZWhcIixcImtlaVwiLFwia2VqXCIsXCJrZWtcIixcImtlbFwiLFwia2VtXCIsXCJrZW5cIixcImtlb1wiLFwia2VwXCIsXCJrZXFcIixcImtlclwiLFwia2VzXCIsXCJrZXRcIixcImtldVwiLFwia2V2XCIsXCJrZXdcIixcImtleFwiLFwia2V5XCIsXCJrZXpcIixcImtmYVwiLFwia2ZiXCIsXCJrZmNcIixcImtmZFwiLFwia2ZlXCIsXCJrZmZcIixcImtmZ1wiLFwia2ZoXCIsXCJrZmlcIixcImtmalwiLFwia2ZrXCIsXCJrZmxcIixcImtmbVwiLFwia2ZuXCIsXCJrZm9cIixcImtmcFwiLFwia2ZxXCIsXCJrZnJcIixcImtmc1wiLFwia2Z0XCIsXCJrZnVcIixcImtmdlwiLFwia2Z3XCIsXCJrZnhcIixcImtmeVwiLFwia2Z6XCIsXCJrZ2FcIixcImtnYlwiLFwia2djXCIsXCJrZ2RcIixcImtnZVwiLFwia2dmXCIsXCJrZ2dcIixcImtnaFwiLFwia2dpXCIsXCJrZ2pcIixcImtna1wiLFwia2dsXCIsXCJrZ21cIixcImtnblwiLFwia2dvXCIsXCJrZ3BcIixcImtncVwiLFwia2dyXCIsXCJrZ3NcIixcImtndFwiLFwia2d1XCIsXCJrZ3ZcIixcImtnd1wiLFwia2d4XCIsXCJrZ3lcIixcImtoYVwiLFwibHlnXCIsXCJraGJcIixcImtoY1wiLFwia2hkXCIsXCJraGVcIixcImtoZlwiLFwia2hnXCIsXCJraGhcIixcImtoaVwiLFwia2hqXCIsXCJraGtcIixcImtobFwiLFwia2huXCIsXCJraG9cIixcImtocFwiLFwia2hxXCIsXCJraHJcIixcImtoc1wiLFwia2h0XCIsXCJraHVcIixcImtodlwiLFwia2h3XCIsXCJraHhcIixcImtoeVwiLFwia2h6XCIsXCJraWFcIixcImtpYlwiLFwia2ljXCIsXCJraWRcIixcImtpZVwiLFwia2lmXCIsXCJraWdcIixcImtpaFwiLFwia2lpXCIsXCJraWpcIixcImtpbFwiLFwia2ltXCIsXCJraW9cIixcImtpcFwiLFwia2lxXCIsXCJraXNcIixcImtpdFwiLFwia2l1XCIsXCJraXZcIixcImtpd1wiLFwia2l4XCIsXCJraXlcIixcImtpelwiLFwia2phXCIsXCJramJcIixcImtqY1wiLFwia2pkXCIsXCJramVcIixcImtqZlwiLFwia2pnXCIsXCJramhcIixcImtqaVwiLFwia2pqXCIsXCJramtcIixcImtqbFwiLFwia2ptXCIsXCJram5cIixcImtqb1wiLFwia2pwXCIsXCJranFcIixcImtqclwiLFwia2pzXCIsXCJranRcIixcImtqdVwiLFwia2p2XCIsXCJranhcIixcImtqeVwiLFwia2p6XCIsXCJra2FcIixcImtrYlwiLFwia2tjXCIsXCJra2RcIixcImtrZVwiLFwia2tmXCIsXCJra2dcIixcImtraFwiLFwia2tpXCIsXCJra2pcIixcImtra1wiLFwia2tsXCIsXCJra21cIixcImtrblwiLFwia2tvXCIsXCJra3BcIixcImtrcVwiLFwia2tyXCIsXCJra3NcIixcImtrdFwiLFwia2t1XCIsXCJra3ZcIixcImtrd1wiLFwia2t4XCIsXCJra3lcIixcImtrelwiLFwia2xhXCIsXCJrbGJcIixcImtsY1wiLFwia2xkXCIsXCJrbGVcIixcImtsZlwiLFwia2xnXCIsXCJrbGhcIixcImtsaVwiLFwia2xqXCIsXCJrbGtcIixcImtsbFwiLFwia2xtXCIsXCJrbG5cIixcImtsb1wiLFwia2xwXCIsXCJrbHFcIixcImtsclwiLFwia2xzXCIsXCJrbHRcIixcImtsdVwiLFwia2x2XCIsXCJrbHdcIixcImtseFwiLFwia2x5XCIsXCJrbHpcIixcImttYVwiLFwia21iXCIsXCJrbWNcIixcImttZFwiLFwia21lXCIsXCJrbWZcIixcImttZ1wiLFwia21oXCIsXCJrbWlcIixcImttalwiLFwia21rXCIsXCJrbWxcIixcImttbVwiLFwia21uXCIsXCJrbW9cIixcImttcFwiLFwia21xXCIsXCJrbXJcIixcImttc1wiLFwia210XCIsXCJrbXVcIixcImttdlwiLFwia213XCIsXCJrbXhcIixcImtteVwiLFwia216XCIsXCJrbmFcIixcImtuYlwiLFwia25jXCIsXCJrbmRcIixcImtuZVwiLFwia25mXCIsXCJrbmdcIixcImtuaVwiLFwia25qXCIsXCJrbmtcIixcImtubFwiLFwia25tXCIsXCJrbm5cIixcImtub1wiLFwia25wXCIsXCJrbnFcIixcImtuclwiLFwia25zXCIsXCJrbnRcIixcImtudVwiLFwia252XCIsXCJrbndcIixcImtueFwiLFwia255XCIsXCJrbnpcIixcImtvYVwiLFwia29jXCIsXCJrb2RcIixcImtvZVwiLFwia29mXCIsXCJrb2dcIixcImtvaFwiLFwia29pXCIsXCJrb2pcIixcImtva1wiLFwia29sXCIsXCJrb29cIixcImtvcFwiLFwia29xXCIsXCJrb3NcIixcImtvdFwiLFwia291XCIsXCJrb3ZcIixcImtvd1wiLFwia294XCIsXCJrb3lcIixcImtvelwiLFwia3BhXCIsXCJrcGJcIixcImtwY1wiLFwia3BkXCIsXCJrcGVcIixcImtwZlwiLFwia3BnXCIsXCJrcGhcIixcImtwaVwiLFwia3BqXCIsXCJrcGtcIixcImtwbFwiLFwia3BtXCIsXCJrcG5cIixcImtwb1wiLFwia3BwXCIsXCJrcHFcIixcImtwclwiLFwia3BzXCIsXCJrcHRcIixcImtwdVwiLFwia3B2XCIsXCJrcHdcIixcImtweFwiLFwia3B5XCIsXCJrcHpcIixcImtxYVwiLFwia3FiXCIsXCJrcWNcIixcImtxZFwiLFwia3FlXCIsXCJrcWZcIixcImtxZ1wiLFwia3FoXCIsXCJrcWlcIixcImtxalwiLFwia3FrXCIsXCJrcWxcIixcImtxbVwiLFwia3FuXCIsXCJrcW9cIixcImtxcFwiLFwia3FxXCIsXCJrcXJcIixcImtxc1wiLFwia3F0XCIsXCJrcXVcIixcImtxdlwiLFwia3F3XCIsXCJrcXhcIixcImtxeVwiLFwia3F6XCIsXCJrcmFcIixcImtyYlwiLFwia3JjXCIsXCJrcmRcIixcImtyZVwiLFwia3JmXCIsXCJrcmhcIixcImtyaVwiLFwia3JqXCIsXCJrcmtcIixcImtybFwiLFwia3JtXCIsXCJrcm5cIixcImtyb1wiLFwia3JwXCIsXCJrcnJcIixcImtyc1wiLFwia3J0XCIsXCJrcnVcIixcImtydlwiLFwia3J3XCIsXCJrcnhcIixcImtyeVwiLFwia3J6XCIsXCJrc2FcIixcImtzYlwiLFwia3NjXCIsXCJrc2RcIixcImtzZVwiLFwia3NmXCIsXCJrc2dcIixcImtzaFwiLFwia3NpXCIsXCJrc2pcIixcImtza1wiLFwia3NsXCIsXCJrc21cIixcImtzblwiLFwia3NvXCIsXCJrc3BcIixcImtzcVwiLFwia3NyXCIsXCJrc3NcIixcImtzdFwiLFwia3N1XCIsXCJrc3ZcIixcImtzd1wiLFwia3N4XCIsXCJrc3lcIixcImtzelwiLFwia3RhXCIsXCJrdGJcIixcImt0Y1wiLFwia3RkXCIsXCJrdGVcIixcImt0ZlwiLFwia3RnXCIsXCJrdGhcIixcImt0aVwiLFwia3RqXCIsXCJrdGtcIixcImt0bFwiLFwia3RtXCIsXCJrdG5cIixcImt0b1wiLFwia3RwXCIsXCJrdHFcIixcImt0clwiLFwia3RzXCIsXCJrdHRcIixcImt0dVwiLFwia3R2XCIsXCJrdHdcIixcImt0eFwiLFwia3R5XCIsXCJrdHpcIixcImt1YlwiLFwia3VjXCIsXCJrdWRcIixcImt1ZVwiLFwia3VmXCIsXCJrdWdcIixcImt1aFwiLFwia3VpXCIsXCJrdWpcIixcImt1a1wiLFwia3VsXCIsXCJrdW1cIixcImt1blwiLFwia3VvXCIsXCJrdXBcIixcImt1cVwiLFwia3VzXCIsXCJrdXRcIixcImt1dVwiLFwia3V2XCIsXCJrdXdcIixcImt1eFwiLFwia3V5XCIsXCJrdXpcIixcImt2YVwiLFwia3ZiXCIsXCJrdmNcIixcImt2ZFwiLFwia3ZlXCIsXCJrdmZcIixcImt2Z1wiLFwia3ZoXCIsXCJrdmlcIixcImt2alwiLFwia3ZrXCIsXCJrdmxcIixcImt2bVwiLFwia3ZuXCIsXCJrdm9cIixcImt2cFwiLFwia3ZxXCIsXCJrdnJcIixcImt2c1wiLFwia3Z0XCIsXCJrdnVcIixcImt2dlwiLFwia3Z3XCIsXCJrdnhcIixcImt2eVwiLFwia3Z6XCIsXCJrd2FcIixcImt3YlwiLFwia3djXCIsXCJrd2RcIixcImt3ZVwiLFwia3dmXCIsXCJrd2dcIixcImt3aFwiLFwia3dpXCIsXCJrd2pcIixcImt3a1wiLFwia3dsXCIsXCJrd21cIixcImt3blwiLFwia3dvXCIsXCJrd3BcIixcImt3cVwiLFwia3dyXCIsXCJrd3NcIixcImt3dFwiLFwia3d1XCIsXCJrd3ZcIixcImt3d1wiLFwia3d4XCIsXCJrd3lcIixcImt3elwiLFwia3hhXCIsXCJreGJcIixcImt4Y1wiLFwia3hkXCIsXCJreGVcIixcImt4ZlwiLFwia3hoXCIsXCJreGlcIixcImt4alwiLFwia3hrXCIsXCJreGxcIixcImt4bVwiLFwia3huXCIsXCJreG9cIixcImt4cFwiLFwia3hxXCIsXCJreHJcIixcImt4c1wiLFwia3h0XCIsXCJreHVcIixcImt4dlwiLFwia3h3XCIsXCJreHhcIixcImt4eVwiLFwia3h6XCIsXCJreWFcIixcImt5YlwiLFwia3ljXCIsXCJreWRcIixcImt5ZVwiLFwia3lmXCIsXCJreWdcIixcImt5aFwiLFwia3lpXCIsXCJreWpcIixcImt5a1wiLFwia3lsXCIsXCJreW1cIixcImt5blwiLFwia3lvXCIsXCJreXBcIixcImt5cVwiLFwia3lyXCIsXCJreXNcIixcImt5dFwiLFwia3l1XCIsXCJreXZcIixcImt5d1wiLFwia3l4XCIsXCJreXlcIixcImt5elwiLFwia3phXCIsXCJremJcIixcImt6Y1wiLFwia3pkXCIsXCJremVcIixcImt6ZlwiLFwia3pnXCIsXCJremhcIixcImt6aVwiLFwia3pqXCIsXCJremtcIixcImt6bFwiLFwia3ptXCIsXCJrem5cIixcImt6b1wiLFwia3pwXCIsXCJrenFcIixcImt6clwiLFwia3pzXCIsXCJrenRcIixcImt6dVwiLFwia3p2XCIsXCJrendcIixcImt6eFwiLFwia3p5XCIsXCJrenpcIl1cbixbIFwibGFcIixcImxiXCIsXCJsZ1wiLFwibGlcIixcImxuXCIsXCJsb1wiLFwibHRcIixcImx1XCIsXCJsdlwiLFwibGFhXCIsXCJsYWJcIixcImxhY1wiLFwibGFkXCIsXCJsYWVcIixcImxhZlwiLFwibGFnXCIsXCJsYWhcIixcImxhaVwiLFwibGFqXCIsXCJsYWtcIixcImxhbFwiLFwibGFtXCIsXCJsYW5cIixcImxhcFwiLFwibGFxXCIsXCJsYXJcIixcImxhc1wiLFwibGF1XCIsXCJsYXdcIixcImxheFwiLFwibGF5XCIsXCJsYXpcIixcImxiYVwiLFwibGJiXCIsXCJsYmNcIixcImxiZVwiLFwibGJmXCIsXCJsYmdcIixcImxiaVwiLFwibGJqXCIsXCJsYmtcIixcImxibFwiLFwibGJtXCIsXCJsYm5cIixcImxib1wiLFwibGJxXCIsXCJsYnJcIixcImxic1wiLFwibGJ0XCIsXCJsYnVcIixcImxidlwiLFwibGJ3XCIsXCJsYnhcIixcImxieVwiLFwibGJ6XCIsXCJsY2NcIixcImxjZFwiLFwibGNlXCIsXCJsY2ZcIixcImxjaFwiLFwibGNsXCIsXCJsY21cIixcImxjcFwiLFwibGNxXCIsXCJsY3NcIixcImxkYVwiLFwibGRiXCIsXCJsZGRcIixcImxkZ1wiLFwibGRoXCIsXCJsZGlcIixcImxkalwiLFwibGRrXCIsXCJsZGxcIixcImxkbVwiLFwibGRuXCIsXCJsZG9cIixcImxkcFwiLFwibGRxXCIsXCJsZWFcIixcImxlYlwiLFwibGVjXCIsXCJsZWRcIixcImxlZVwiLFwibGVmXCIsXCJsZWdcIixcImxlaFwiLFwibGVpXCIsXCJsZWpcIixcImxla1wiLFwibGVsXCIsXCJsZW1cIixcImxlblwiLFwibGVvXCIsXCJsZXBcIixcImxlcVwiLFwibGVyXCIsXCJsZXNcIixcImxldFwiLFwibGV1XCIsXCJsZXZcIixcImxld1wiLFwibGV4XCIsXCJsZXlcIixcImxlelwiLFwibGZhXCIsXCJsZm5cIixcImxnYVwiLFwibGdiXCIsXCJsZ2dcIixcImxnaFwiLFwibGdpXCIsXCJsZ2tcIixcImxnbFwiLFwibGdtXCIsXCJsZ25cIixcImxncVwiLFwibGdyXCIsXCJsZ3RcIixcImxndVwiLFwibGd6XCIsXCJsaGFcIixcImxoaFwiLFwibGhpXCIsXCJsaGxcIixcImxobVwiLFwibGhuXCIsXCJsaHBcIixcImxoc1wiLFwibGh0XCIsXCJsaHVcIixcImxpYVwiLFwibGliXCIsXCJsaWNcIixcImxpZFwiLFwibGllXCIsXCJsaWZcIixcImxpZ1wiLFwibGloXCIsXCJsaWlcIixcImxpalwiLFwibGlrXCIsXCJsaWxcIixcImxpb1wiLFwibGlwXCIsXCJsaXFcIixcImxpclwiLFwibGlzXCIsXCJsaXVcIixcImxpdlwiLFwibGl3XCIsXCJsaXhcIixcImxpeVwiLFwibGl6XCIsXCJsamFcIixcImxqZVwiLFwibGppXCIsXCJsamxcIixcImxqcFwiLFwibGp3XCIsXCJsanhcIixcImxrYVwiLFwibGtiXCIsXCJsa2NcIixcImxrZFwiLFwibGtlXCIsXCJsa2hcIixcImxraVwiLFwibGtqXCIsXCJsa2xcIixcImxrbVwiLFwibGtuXCIsXCJsa29cIixcImxrclwiLFwibGtzXCIsXCJsa3RcIixcImxrdVwiLFwibGt5XCIsXCJsbGFcIixcImxsYlwiLFwibGxjXCIsXCJsbGRcIixcImxsZVwiLFwibGxmXCIsXCJsbGdcIixcImxsaFwiLFwibGxpXCIsXCJsbGpcIixcImxsa1wiLFwibGxsXCIsXCJsbG1cIixcImxsblwiLFwibGxvXCIsXCJsbHBcIixcImxscVwiLFwibGxzXCIsXCJsbHVcIixcImxseFwiLFwibG1hXCIsXCJsbWJcIixcImxtY1wiLFwibG1kXCIsXCJsbWVcIixcImxtZlwiLFwibG1nXCIsXCJsbWhcIixcImxtaVwiLFwibG1qXCIsXCJsbWtcIixcImxtbFwiLFwibG1tXCIsXCJsbW5cIixcImxtb1wiLFwibG1wXCIsXCJsbXFcIixcImxtclwiLFwibG11XCIsXCJsbXZcIixcImxtd1wiLFwibG14XCIsXCJsbXlcIixcImxtelwiLFwibG5hXCIsXCJsbmJcIixcImxuZFwiLFwibG5nXCIsXCJsbmhcIixcImxuaVwiLFwibG5qXCIsXCJsbmxcIixcImxubVwiLFwibG5uXCIsXCJsbm9cIixcImxuc1wiLFwibG51XCIsXCJsbndcIixcImxuelwiLFwibG9hXCIsXCJsb2JcIixcImxvY1wiLFwibG9lXCIsXCJsb2ZcIixcImxvZ1wiLFwibG9oXCIsXCJsb2lcIixcImxvalwiLFwibG9rXCIsXCJsb2xcIixcImxvbVwiLFwibG9uXCIsXCJsb29cIixcImxvcFwiLFwibG9xXCIsXCJsb3JcIixcImxvc1wiLFwibG90XCIsXCJsb3VcIixcImxvdlwiLFwibG93XCIsXCJsb3hcIixcImxveVwiLFwibG96XCIsXCJscGFcIixcImxwZVwiLFwibHBuXCIsXCJscG9cIixcImxweFwiLFwibHJhXCIsXCJscmNcIixcImxyZVwiLFwibHJnXCIsXCJscmlcIixcImxya1wiLFwibHJsXCIsXCJscm1cIixcImxyblwiLFwibHJvXCIsXCJscnJcIixcImxydFwiLFwibHJ2XCIsXCJscnpcIixcImxzYVwiLFwibHNiXCIsXCJsc2RcIixcImxzZVwiLFwibHNnXCIsXCJsc2hcIixcImxzaVwiLFwibHNsXCIsXCJsc21cIixcImxzblwiLFwibHNvXCIsXCJsc3BcIixcImxzclwiLFwibHNzXCIsXCJsc3RcIixcImxzdlwiLFwibHN5XCIsXCJsdGNcIixcImx0Z1wiLFwibHRoXCIsXCJsdGlcIixcImx0blwiLFwibHRvXCIsXCJsdHNcIixcImx0dVwiLFwibHVhXCIsXCJsdWNcIixcImx1ZFwiLFwibHVlXCIsXCJsdWZcIixcImx1aVwiLFwibHVqXCIsXCJsdWtcIixcImx1bFwiLFwibHVtXCIsXCJsdW5cIixcImx1b1wiLFwibHVwXCIsXCJsdXFcIixcImx1clwiLFwibHVzXCIsXCJsdXRcIixcImx1dVwiLFwibHV2XCIsXCJsdXdcIixcImx1eVwiLFwibHV6XCIsXCJsdmFcIixcImx2aVwiLFwibHZrXCIsXCJsdnNcIixcImx2dVwiLFwibHdhXCIsXCJsd2VcIixcImx3Z1wiLFwibHdoXCIsXCJsd2xcIixcImx3bVwiLFwibHdvXCIsXCJsd3NcIixcImx3dFwiLFwibHd1XCIsXCJsd3dcIixcImx4bVwiLFwibHlhXCIsXCJseWdcIixcImx5blwiLFwibHpoXCIsXCJsemxcIixcImx6blwiLFwibHp6XCJdXG4sWyBcIm1nXCIsXCJtaFwiLFwibWlcIixcIm1rXCIsXCJtbFwiLFwibW5cIixcIm1vXCIsXCJtclwiLFwibXNcIixcIm10XCIsXCJteVwiLFwibWFhXCIsXCJtYWJcIixcIm1hZFwiLFwibWFlXCIsXCJtYWZcIixcIm1hZ1wiLFwibWFpXCIsXCJtYWpcIixcIm1ha1wiLFwibWFtXCIsXCJtYW5cIixcIm1hcFwiLFwibWFxXCIsXCJtYXNcIixcIm1hdFwiLFwibWF1XCIsXCJtYXZcIixcIm1hd1wiLFwibWF4XCIsXCJtYXpcIixcIm1iYVwiLFwibWJiXCIsXCJtYmNcIixcIm1iZFwiLFwibWJlXCIsXCJtYmZcIixcIm1iaFwiLFwibWJpXCIsXCJtYmpcIixcIm1ia1wiLFwibWJsXCIsXCJtYm1cIixcIm1iblwiLFwibWJvXCIsXCJtYnBcIixcIm1icVwiLFwibWJyXCIsXCJtYnNcIixcIm1idFwiLFwibWJ1XCIsXCJtYnZcIixcIm1id1wiLFwibWJ4XCIsXCJtYnlcIixcIm1ielwiLFwibWNhXCIsXCJtY2JcIixcIm1jY1wiLFwibWNkXCIsXCJtY2VcIixcIm1jZlwiLFwibWNnXCIsXCJtY2hcIixcIm1jaVwiLFwibWNqXCIsXCJtY2tcIixcIm1jbFwiLFwibWNtXCIsXCJtY25cIixcIm1jb1wiLFwibWNwXCIsXCJtY3FcIixcIm1jclwiLFwibWNzXCIsXCJtY3RcIixcIm1jdVwiLFwibWN2XCIsXCJtY3dcIixcIm1jeFwiLFwibWN5XCIsXCJtY3pcIixcIm1kYVwiLFwibWRiXCIsXCJtZGNcIixcIm1kZFwiLFwibWRlXCIsXCJtZGZcIixcIm1kZ1wiLFwibWRoXCIsXCJtZGlcIixcIm1kalwiLFwibWRrXCIsXCJtZGxcIixcIm1kbVwiLFwibWRuXCIsXCJtZHBcIixcIm1kcVwiLFwibWRyXCIsXCJtZHNcIixcIm1kdFwiLFwibWR1XCIsXCJtZHZcIixcIm1kd1wiLFwibWR4XCIsXCJtZHlcIixcIm1kelwiLFwibWVhXCIsXCJtZWJcIixcIm1lY1wiLFwibWVkXCIsXCJtZWVcIixcIm1lZlwiLFwibWVnXCIsXCJtZWhcIixcIm1laVwiLFwibWVqXCIsXCJtZWtcIixcIm1lbFwiLFwibWVtXCIsXCJtZW5cIixcIm1lb1wiLFwibWVwXCIsXCJtZXFcIixcIm1lclwiLFwibWVzXCIsXCJtZXRcIixcIm1ldVwiLFwibWV2XCIsXCJtZXdcIixcIm1leVwiLFwibWV6XCIsXCJtZmFcIixcIm1mYlwiLFwibWZjXCIsXCJtZmRcIixcIm1mZVwiLFwibWZmXCIsXCJtZmdcIixcIm1maFwiLFwibWZpXCIsXCJtZmpcIixcIm1ma1wiLFwibWZsXCIsXCJtZm1cIixcIm1mblwiLFwibWZvXCIsXCJtZnBcIixcIm1mcVwiLFwibWZyXCIsXCJtZnNcIixcIm1mdFwiLFwibWZ1XCIsXCJtZnZcIixcIm1md1wiLFwibWZ4XCIsXCJtZnlcIixcIm1melwiLFwibWdhXCIsXCJtZ2JcIixcIm1nY1wiLFwibWdkXCIsXCJtZ2VcIixcIm1nZlwiLFwibWdnXCIsXCJtZ2hcIixcIm1naVwiLFwibWdqXCIsXCJtZ2tcIixcIm1nbFwiLFwibWdtXCIsXCJtZ25cIixcIm1nb1wiLFwibWdwXCIsXCJtZ3FcIixcIm1nclwiLFwibWdzXCIsXCJtZ3RcIixcIm1ndVwiLFwibWd2XCIsXCJtZ3dcIixcIm1neFwiLFwibWd5XCIsXCJtZ3pcIixcIm1oYVwiLFwibWhiXCIsXCJtaGNcIixcIm1oZFwiLFwibWhlXCIsXCJtaGZcIixcIm1oZ1wiLFwibWhoXCIsXCJtaGlcIixcIm1oalwiLFwibWhrXCIsXCJtaGxcIixcIm1obVwiLFwibWhuXCIsXCJtaG9cIixcIm1ocFwiLFwibWhxXCIsXCJtaHJcIixcIm1oc1wiLFwibWh0XCIsXCJtaHVcIixcIm1od1wiLFwibWh4XCIsXCJtaHlcIixcIm1oelwiLFwibWlhXCIsXCJtaWJcIixcIm1pY1wiLFwibWlkXCIsXCJtaWVcIixcIm1pZlwiLFwibWlnXCIsXCJtaWhcIixcIm1paVwiLFwibWlqXCIsXCJtaWtcIixcIm1pbFwiLFwibWltXCIsXCJtaW5cIixcIm1pb1wiLFwibWlwXCIsXCJtaXFcIixcIm1pclwiLFwibWlzXCIsXCJtaXRcIixcIm1pdVwiLFwibWl3XCIsXCJtaXhcIixcIm1peVwiLFwibWl6XCIsXCJtamFcIixcIm1qYlwiLFwibWpjXCIsXCJtamRcIixcIm1qZVwiLFwibWpnXCIsXCJtamhcIixcIm1qaVwiLFwibWpqXCIsXCJtamtcIixcIm1qbFwiLFwibWptXCIsXCJtam5cIixcIm1qb1wiLFwibWpwXCIsXCJtanFcIixcIm1qclwiLFwibWpzXCIsXCJtanRcIixcIm1qdVwiLFwibWp2XCIsXCJtandcIixcIm1qeFwiLFwibWp5XCIsXCJtanpcIixcIm1rYVwiLFwibWtiXCIsXCJta2NcIixcIm1rZVwiLFwibWtmXCIsXCJta2dcIixcIm1raFwiLFwibWtpXCIsXCJta2pcIixcIm1ra1wiLFwibWtsXCIsXCJta21cIixcIm1rblwiLFwibWtvXCIsXCJta3BcIixcIm1rcVwiLFwibWtyXCIsXCJta3NcIixcIm1rdFwiLFwibWt1XCIsXCJta3ZcIixcIm1rd1wiLFwibWt4XCIsXCJta3lcIixcIm1relwiLFwibWxhXCIsXCJtbGJcIixcIm1sY1wiLFwibWxkXCIsXCJtbGVcIixcIm1sZlwiLFwibWxoXCIsXCJtbGlcIixcIm1salwiLFwibWxrXCIsXCJtbGxcIixcIm1sbVwiLFwibWxuXCIsXCJtbG9cIixcIm1scFwiLFwibWxxXCIsXCJtbHJcIixcIm1sc1wiLFwibWx1XCIsXCJtbHZcIixcIm1sd1wiLFwibWx4XCIsXCJtbHpcIixcIm1tYVwiLFwibW1iXCIsXCJtbWNcIixcIm1tZFwiLFwibW1lXCIsXCJtbWZcIixcIm1tZ1wiLFwibW1oXCIsXCJtbWlcIixcIm1talwiLFwibW1rXCIsXCJtbWxcIixcIm1tbVwiLFwibW1uXCIsXCJtbW9cIixcIm1tcFwiLFwibW1xXCIsXCJtbXJcIixcIm1tdFwiLFwibW11XCIsXCJtbXZcIixcIm1td1wiLFwibW14XCIsXCJtbXlcIixcIm1telwiLFwibW5hXCIsXCJtbmJcIixcIm1uY1wiLFwibW5kXCIsXCJtbmVcIixcIm1uZlwiLFwibW5nXCIsXCJtbmhcIixcIm1uaVwiLFwibW5qXCIsXCJtbmtcIixcIm1ubFwiLFwibW5tXCIsXCJtbm5cIixcIm1ub1wiLFwibW5wXCIsXCJtbnFcIixcIm1uclwiLFwibW5zXCIsXCJtbnRcIixcIm1udVwiLFwibW52XCIsXCJtbndcIixcIm1ueFwiLFwibW55XCIsXCJtbnpcIixcIm1vYVwiLFwibW9jXCIsXCJtb2RcIixcIm1vZVwiLFwibW9mXCIsXCJtb2dcIixcIm1vaFwiLFwibW9pXCIsXCJtb2pcIixcIm1va1wiLFwibW9tXCIsXCJtb29cIixcIm1vcFwiLFwibW9xXCIsXCJtb3JcIixcIm1vc1wiLFwibW90XCIsXCJtb3VcIixcIm1vdlwiLFwibW93XCIsXCJtb3hcIixcIm1veVwiLFwibW96XCIsXCJtcGFcIixcIm1wYlwiLFwibXBjXCIsXCJtcGRcIixcIm1wZVwiLFwibXBnXCIsXCJtcGhcIixcIm1waVwiLFwibXBqXCIsXCJtcGtcIixcIm1wbFwiLFwibXBtXCIsXCJtcG5cIixcIm1wb1wiLFwibXBwXCIsXCJtcHFcIixcIm1wclwiLFwibXBzXCIsXCJtcHRcIixcIm1wdVwiLFwibXB2XCIsXCJtcHdcIixcIm1weFwiLFwibXB5XCIsXCJtcHpcIixcIm1xYVwiLFwibXFiXCIsXCJtcWNcIixcIm1xZVwiLFwibXFmXCIsXCJtcWdcIixcIm1xaFwiLFwibXFpXCIsXCJtcWpcIixcIm1xa1wiLFwibXFsXCIsXCJtcW1cIixcIm1xblwiLFwibXFvXCIsXCJtcXBcIixcIm1xcVwiLFwibXFyXCIsXCJtcXNcIixcIm1xdFwiLFwibXF1XCIsXCJtcXZcIixcIm1xd1wiLFwibXF4XCIsXCJtcXlcIixcIm1xelwiLFwibXJhXCIsXCJtcmJcIixcIm1yY1wiLFwibXJkXCIsXCJtcmVcIixcIm1yZlwiLFwibXJnXCIsXCJtcmhcIixcIm1yalwiLFwibXJrXCIsXCJtcmxcIixcIm1ybVwiLFwibXJuXCIsXCJtcm9cIixcIm1ycFwiLFwibXJxXCIsXCJtcnJcIixcIm1yc1wiLFwibXJ0XCIsXCJtcnVcIixcIm1ydlwiLFwibXJ3XCIsXCJtcnhcIixcIm1yeVwiLFwibXJ6XCIsXCJtc2JcIixcIm1zY1wiLFwibXNkXCIsXCJtc2VcIixcIm1zZlwiLFwibXNnXCIsXCJtc2hcIixcIm1zaVwiLFwibXNqXCIsXCJtc2tcIixcIm1zbFwiLFwibXNtXCIsXCJtc25cIixcIm1zb1wiLFwibXNwXCIsXCJtc3FcIixcIm1zclwiLFwibXNzXCIsXCJtc3RcIixcIm1zdVwiLFwibXN2XCIsXCJtc3dcIixcIm1zeFwiLFwibXN5XCIsXCJtc3pcIixcIm10YVwiLFwibXRiXCIsXCJtdGNcIixcIm10ZFwiLFwibXRlXCIsXCJtdGZcIixcIm10Z1wiLFwibXRoXCIsXCJtdGlcIixcIm10alwiLFwibXRrXCIsXCJtdGxcIixcIm10bVwiLFwibXRuXCIsXCJtdG9cIixcIm10cFwiLFwibXRxXCIsXCJtdHJcIixcIm10c1wiLFwibXR0XCIsXCJtdHVcIixcIm10dlwiLFwibXR3XCIsXCJtdHhcIixcIm10eVwiLFwibXVhXCIsXCJtdWJcIixcIm11Y1wiLFwibXVkXCIsXCJtdWVcIixcIm11Z1wiLFwibXVoXCIsXCJtdWlcIixcIm11alwiLFwibXVrXCIsXCJtdWxcIixcIm11bVwiLFwibXVuXCIsXCJtdW9cIixcIm11cFwiLFwibXVxXCIsXCJtdXJcIixcIm11c1wiLFwibXV0XCIsXCJtdXVcIixcIm11dlwiLFwibXV4XCIsXCJtdXlcIixcIm11elwiLFwibXZhXCIsXCJtdmJcIixcIm12ZFwiLFwibXZlXCIsXCJtdmZcIixcIm12Z1wiLFwibXZoXCIsXCJtdmlcIixcIm12a1wiLFwibXZsXCIsXCJtdm1cIixcIm12blwiLFwibXZvXCIsXCJtdnBcIixcIm12cVwiLFwibXZyXCIsXCJtdnNcIixcIm12dFwiLFwibXZ1XCIsXCJtdnZcIixcIm12d1wiLFwibXZ4XCIsXCJtdnlcIixcIm12elwiLFwibXdhXCIsXCJtd2JcIixcIm13Y1wiLFwibXdkXCIsXCJtd2VcIixcIm13ZlwiLFwibXdnXCIsXCJtd2hcIixcIm13aVwiLFwibXdqXCIsXCJtd2tcIixcIm13bFwiLFwibXdtXCIsXCJtd25cIixcIm13b1wiLFwibXdwXCIsXCJtd3FcIixcIm13clwiLFwibXdzXCIsXCJtd3RcIixcIm13dVwiLFwibXd2XCIsXCJtd3dcIixcIm13eFwiLFwibXd5XCIsXCJtd3pcIixcIm14YVwiLFwibXhiXCIsXCJteGNcIixcIm14ZFwiLFwibXhlXCIsXCJteGZcIixcIm14Z1wiLFwibXhoXCIsXCJteGlcIixcIm14alwiLFwibXhrXCIsXCJteGxcIixcIm14bVwiLFwibXhuXCIsXCJteG9cIixcIm14cFwiLFwibXhxXCIsXCJteHJcIixcIm14c1wiLFwibXh0XCIsXCJteHVcIixcIm14dlwiLFwibXh3XCIsXCJteHhcIixcIm14eVwiLFwibXh6XCIsXCJteWJcIixcIm15Y1wiLFwibXlkXCIsXCJteWVcIixcIm15ZlwiLFwibXlnXCIsXCJteWhcIixcIm15aVwiLFwibXlqXCIsXCJteWtcIixcIm15bFwiLFwibXltXCIsXCJteW5cIixcIm15b1wiLFwibXlwXCIsXCJteXFcIixcIm15clwiLFwibXlzXCIsXCJteXRcIixcIm15dVwiLFwibXl2XCIsXCJteXdcIixcIm15eFwiLFwibXl5XCIsXCJteXpcIixcIm16YVwiLFwibXpiXCIsXCJtemNcIixcIm16ZFwiLFwibXplXCIsXCJtemdcIixcIm16aFwiLFwibXppXCIsXCJtempcIixcIm16a1wiLFwibXpsXCIsXCJtem1cIixcIm16blwiLFwibXpvXCIsXCJtenBcIixcIm16cVwiLFwibXpyXCIsXCJtenNcIixcIm16dFwiLFwibXp1XCIsXCJtenZcIixcIm16d1wiLFwibXp4XCIsXCJtenlcIixcIm16elwiXVxuLFsgXCJuYVwiLFwibmJcIixcIm5kXCIsXCJuZVwiLFwibmdcIixcIm5sXCIsXCJublwiLFwibm9cIixcIm5yXCIsXCJudlwiLFwibnlcIixcIm5hYVwiLFwibmFiXCIsXCJuYWNcIixcIm5hZFwiLFwibmFlXCIsXCJuYWZcIixcIm5hZ1wiLFwibmFoXCIsXCJuYWlcIixcIm5halwiLFwibmFrXCIsXCJuYWxcIixcIm5hbVwiLFwibmFuXCIsXCJuYW9cIixcIm5hcFwiLFwibmFxXCIsXCJuYXJcIixcIm5hc1wiLFwibmF0XCIsXCJuYXdcIixcIm5heFwiLFwibmF5XCIsXCJuYXpcIixcIm5iYVwiLFwibmJiXCIsXCJuYmNcIixcIm5iZFwiLFwibmJlXCIsXCJuYmZcIixcIm5iZ1wiLFwibmJoXCIsXCJuYmlcIixcIm5ialwiLFwibmJrXCIsXCJuYm1cIixcIm5iblwiLFwibmJvXCIsXCJuYnBcIixcIm5icVwiLFwibmJyXCIsXCJuYnNcIixcIm5idFwiLFwibmJ1XCIsXCJuYnZcIixcIm5id1wiLFwibmJ4XCIsXCJuYnlcIixcIm5jYVwiLFwibmNiXCIsXCJuY2NcIixcIm5jZFwiLFwibmNlXCIsXCJuY2ZcIixcIm5jZ1wiLFwibmNoXCIsXCJuY2lcIixcIm5jalwiLFwibmNrXCIsXCJuY2xcIixcIm5jbVwiLFwibmNuXCIsXCJuY29cIixcIm5jcFwiLFwibmNxXCIsXCJuY3JcIixcIm5jc1wiLFwibmN0XCIsXCJuY3VcIixcIm5jeFwiLFwibmN6XCIsXCJuZGFcIixcIm5kYlwiLFwibmRjXCIsXCJuZGRcIixcIm5kZlwiLFwibmRnXCIsXCJuZGhcIixcIm5kaVwiLFwibmRqXCIsXCJuZGtcIixcIm5kbFwiLFwibmRtXCIsXCJuZG5cIixcIm5kcFwiLFwibmRxXCIsXCJuZHJcIixcIm5kc1wiLFwibmR0XCIsXCJuZHVcIixcIm5kdlwiLFwibmR3XCIsXCJuZHhcIixcIm5keVwiLFwibmR6XCIsXCJuZWFcIixcIm5lYlwiLFwibmVjXCIsXCJuZWRcIixcIm5lZVwiLFwibmVmXCIsXCJuZWdcIixcIm5laFwiLFwibmVpXCIsXCJuZWpcIixcIm5la1wiLFwibmVtXCIsXCJuZW5cIixcIm5lb1wiLFwibmVxXCIsXCJuZXJcIixcIm5lc1wiLFwibmV0XCIsXCJuZXVcIixcIm5ldlwiLFwibmV3XCIsXCJuZXhcIixcIm5leVwiLFwibmV6XCIsXCJuZmFcIixcIm5mZFwiLFwibmZsXCIsXCJuZnJcIixcIm5mdVwiLFwibmdhXCIsXCJuZ2JcIixcIm5nY1wiLFwibmdkXCIsXCJuZ2VcIixcIm5nZlwiLFwibmdnXCIsXCJuZ2hcIixcIm5naVwiLFwibmdqXCIsXCJuZ2tcIixcIm5nbFwiLFwibmdtXCIsXCJuZ25cIixcIm5nb1wiLFwibmdwXCIsXCJuZ3FcIixcIm5nclwiLFwibmdzXCIsXCJuZ3RcIixcIm5ndVwiLFwibmd2XCIsXCJuZ3dcIixcIm5neFwiLFwibmd5XCIsXCJuZ3pcIixcIm5oYVwiLFwibmhiXCIsXCJuaGNcIixcIm5oZFwiLFwibmhlXCIsXCJuaGZcIixcIm5oZ1wiLFwibmhoXCIsXCJuaGlcIixcIm5oa1wiLFwibmhtXCIsXCJuaG5cIixcIm5ob1wiLFwibmhwXCIsXCJuaHFcIixcIm5oclwiLFwibmh0XCIsXCJuaHVcIixcIm5odlwiLFwibmh3XCIsXCJuaHhcIixcIm5oeVwiLFwibmh6XCIsXCJuaWFcIixcIm5pYlwiLFwibmljXCIsXCJuaWRcIixcIm5pZVwiLFwibmlmXCIsXCJuaWdcIixcIm5paFwiLFwibmlpXCIsXCJuaWpcIixcIm5pa1wiLFwibmlsXCIsXCJuaW1cIixcIm5pblwiLFwibmlvXCIsXCJuaXFcIixcIm5pclwiLFwibmlzXCIsXCJuaXRcIixcIm5pdVwiLFwibml2XCIsXCJuaXdcIixcIm5peFwiLFwibml5XCIsXCJuaXpcIixcIm5qYVwiLFwibmpiXCIsXCJuamRcIixcIm5qaFwiLFwibmppXCIsXCJuampcIixcIm5qbFwiLFwibmptXCIsXCJuam5cIixcIm5qb1wiLFwibmpyXCIsXCJuanNcIixcIm5qdFwiLFwibmp1XCIsXCJuanhcIixcIm5qeVwiLFwibmp6XCIsXCJua2FcIixcIm5rYlwiLFwibmtjXCIsXCJua2RcIixcIm5rZVwiLFwibmtmXCIsXCJua2dcIixcIm5raFwiLFwibmtpXCIsXCJua2pcIixcIm5ra1wiLFwibmttXCIsXCJua25cIixcIm5rb1wiLFwibmtwXCIsXCJua3FcIixcIm5rclwiLFwibmtzXCIsXCJua3RcIixcIm5rdVwiLFwibmt2XCIsXCJua3dcIixcIm5reFwiLFwibmt6XCIsXCJubGFcIixcIm5sY1wiLFwibmxlXCIsXCJubGdcIixcIm5saVwiLFwibmxqXCIsXCJubGtcIixcIm5sbFwiLFwibmxtXCIsXCJubG5cIixcIm5sb1wiLFwibmxxXCIsXCJubHJcIixcIm5sdVwiLFwibmx2XCIsXCJubHdcIixcIm5seFwiLFwibmx5XCIsXCJubHpcIixcIm5tYVwiLFwibm1iXCIsXCJubWNcIixcIm5tZFwiLFwibm1lXCIsXCJubWZcIixcIm5tZ1wiLFwibm1oXCIsXCJubWlcIixcIm5talwiLFwibm1rXCIsXCJubWxcIixcIm5tbVwiLFwibm1uXCIsXCJubW9cIixcIm5tcFwiLFwibm1xXCIsXCJubXJcIixcIm5tc1wiLFwibm10XCIsXCJubXVcIixcIm5tdlwiLFwibm13XCIsXCJubXhcIixcIm5teVwiLFwibm16XCIsXCJubmFcIixcIm5uYlwiLFwibm5jXCIsXCJubmRcIixcIm5uZVwiLFwibm5mXCIsXCJubmdcIixcIm5uaFwiLFwibm5pXCIsXCJubmpcIixcIm5ua1wiLFwibm5sXCIsXCJubm1cIixcIm5ublwiLFwibm5wXCIsXCJubnFcIixcIm5uclwiLFwibm5zXCIsXCJubnRcIixcIm5udVwiLFwibm52XCIsXCJubndcIixcIm5ueFwiLFwibm55XCIsXCJubnpcIixcIm5vYVwiLFwibm9jXCIsXCJub2RcIixcIm5vZVwiLFwibm9mXCIsXCJub2dcIixcIm5vaFwiLFwibm9pXCIsXCJub2pcIixcIm5va1wiLFwibm9sXCIsXCJub21cIixcIm5vblwiLFwibm9vXCIsXCJub3BcIixcIm5vcVwiLFwibm9zXCIsXCJub3RcIixcIm5vdVwiLFwibm92XCIsXCJub3dcIixcIm5veVwiLFwibm96XCIsXCJucGFcIixcIm5wYlwiLFwibnBnXCIsXCJucGhcIixcIm5waVwiLFwibnBsXCIsXCJucG5cIixcIm5wb1wiLFwibnBzXCIsXCJucHVcIixcIm5weFwiLFwibnB5XCIsXCJucWdcIixcIm5xa1wiLFwibnFsXCIsXCJucW1cIixcIm5xblwiLFwibnFvXCIsXCJucXFcIixcIm5xdFwiLFwibnF5XCIsXCJucmFcIixcIm5yYlwiLFwibnJjXCIsXCJucmVcIixcIm5yZlwiLFwibnJnXCIsXCJucmlcIixcIm5ya1wiLFwibnJsXCIsXCJucm1cIixcIm5yblwiLFwibnJwXCIsXCJucnJcIixcIm5ydFwiLFwibnJ1XCIsXCJucnhcIixcIm5yelwiLFwibnNhXCIsXCJuc2JcIixcIm5zY1wiLFwibnNkXCIsXCJuc2VcIixcIm5zZlwiLFwibnNnXCIsXCJuc2hcIixcIm5zaVwiLFwibnNrXCIsXCJuc2xcIixcIm5zbVwiLFwibnNuXCIsXCJuc29cIixcIm5zcFwiLFwibnNxXCIsXCJuc3JcIixcIm5zc1wiLFwibnN0XCIsXCJuc3VcIixcIm5zdlwiLFwibnN3XCIsXCJuc3hcIixcIm5zeVwiLFwibnN6XCIsXCJudGRcIixcIm50ZVwiLFwibnRnXCIsXCJudGlcIixcIm50alwiLFwibnRrXCIsXCJudG1cIixcIm50b1wiLFwibnRwXCIsXCJudHJcIixcIm50c1wiLFwibnR1XCIsXCJudHdcIixcIm50eFwiLFwibnR5XCIsXCJudHpcIixcIm51YVwiLFwibnViXCIsXCJudWNcIixcIm51ZFwiLFwibnVlXCIsXCJudWZcIixcIm51Z1wiLFwibnVoXCIsXCJudWlcIixcIm51alwiLFwibnVrXCIsXCJudWxcIixcIm51bVwiLFwibnVuXCIsXCJudW9cIixcIm51cFwiLFwibnVxXCIsXCJudXJcIixcIm51c1wiLFwibnV0XCIsXCJudXVcIixcIm51dlwiLFwibnV3XCIsXCJudXhcIixcIm51eVwiLFwibnV6XCIsXCJudmhcIixcIm52bVwiLFwibnZvXCIsXCJud2FcIixcIm53YlwiLFwibndjXCIsXCJud2VcIixcIm53Z1wiLFwibndpXCIsXCJud21cIixcIm53b1wiLFwibndyXCIsXCJud3hcIixcIm53eVwiLFwibnhhXCIsXCJueGRcIixcIm54ZVwiLFwibnhnXCIsXCJueGlcIixcIm54a1wiLFwibnhsXCIsXCJueG1cIixcIm54blwiLFwibnhvXCIsXCJueHFcIixcIm54clwiLFwibnh1XCIsXCJueHhcIixcIm55YlwiLFwibnljXCIsXCJueWRcIixcIm55ZVwiLFwibnlmXCIsXCJueWdcIixcIm55aFwiLFwibnlpXCIsXCJueWpcIixcIm55a1wiLFwibnlsXCIsXCJueW1cIixcIm55blwiLFwibnlvXCIsXCJueXBcIixcIm55cVwiLFwibnlyXCIsXCJueXNcIixcIm55dFwiLFwibnl1XCIsXCJueXZcIixcIm55d1wiLFwibnl4XCIsXCJueXlcIixcIm56YVwiLFwibnpiXCIsXCJuemRcIixcIm56aVwiLFwibnprXCIsXCJuem1cIixcIm56c1wiLFwibnp1XCIsXCJuenlcIixcIm56elwiXVxuLFsgXCJvY1wiLFwib2pcIixcIm9tXCIsXCJvclwiLFwib3NcIixcIm9hYVwiLFwib2FjXCIsXCJvYXJcIixcIm9hdlwiLFwib2JpXCIsXCJvYmtcIixcIm9ibFwiLFwib2JtXCIsXCJvYm9cIixcIm9iclwiLFwib2J0XCIsXCJvYnVcIixcIm9jYVwiLFwib2NoXCIsXCJvY21cIixcIm9jb1wiLFwib2N1XCIsXCJvZGFcIixcIm9ka1wiLFwib2R0XCIsXCJvZHVcIixcIm9mb1wiLFwib2ZzXCIsXCJvZnVcIixcIm9nYlwiLFwib2djXCIsXCJvZ2VcIixcIm9nZ1wiLFwib2dvXCIsXCJvZ3VcIixcIm9odFwiLFwib2h1XCIsXCJvaWFcIixcIm9pblwiLFwib2piXCIsXCJvamNcIixcIm9qZ1wiLFwib2pwXCIsXCJvanNcIixcIm9qdlwiLFwib2p3XCIsXCJva2FcIixcIm9rYlwiLFwib2tjXCIsXCJva2RcIixcIm9rZVwiLFwib2tnXCIsXCJva2hcIixcIm9raVwiLFwib2tqXCIsXCJva2tcIixcIm9rbFwiLFwib2ttXCIsXCJva25cIixcIm9rb1wiLFwib2tyXCIsXCJva3NcIixcIm9rdVwiLFwib2t2XCIsXCJva3hcIixcIm9relwiLFwib2xhXCIsXCJvbGRcIixcIm9sZVwiLFwib2xrXCIsXCJvbG1cIixcIm9sb1wiLFwib2xyXCIsXCJvbHRcIixcIm9sdVwiLFwib21hXCIsXCJvbWJcIixcIm9tY1wiLFwib21lXCIsXCJvbWdcIixcIm9taVwiLFwib21rXCIsXCJvbWxcIixcIm9tblwiLFwib21vXCIsXCJvbXBcIixcIm9tcVwiLFwib21yXCIsXCJvbXRcIixcIm9tdVwiLFwib212XCIsXCJvbXdcIixcIm9teFwiLFwib215XCIsXCJvbmFcIixcIm9uYlwiLFwib25lXCIsXCJvbmdcIixcIm9uaVwiLFwib25qXCIsXCJvbmtcIixcIm9ublwiLFwib25vXCIsXCJvbnBcIixcIm9uclwiLFwib25zXCIsXCJvbnRcIixcIm9udVwiLFwib253XCIsXCJvbnhcIixcIm9vZFwiLFwib29nXCIsXCJvb25cIixcIm9vclwiLFwib29zXCIsXCJvcGFcIixcIm9wa1wiLFwib3BtXCIsXCJvcG9cIixcIm9wdFwiLFwib3B5XCIsXCJvcmFcIixcIm9yY1wiLFwib3JlXCIsXCJvcmdcIixcIm9yaFwiLFwib3JuXCIsXCJvcm9cIixcIm9yclwiLFwib3JzXCIsXCJvcnRcIixcIm9ydVwiLFwib3J2XCIsXCJvcndcIixcIm9yeFwiLFwib3J5XCIsXCJvcnpcIixcIm9zYVwiLFwib3NjXCIsXCJvc2lcIixcIm9zblwiLFwib3NvXCIsXCJvc3BcIixcIm9zdFwiLFwib3N1XCIsXCJvc3hcIixcIm90YVwiLFwib3RiXCIsXCJvdGRcIixcIm90ZVwiLFwib3RpXCIsXCJvdGtcIixcIm90bFwiLFwib3RtXCIsXCJvdG5cIixcIm90b1wiLFwib3RxXCIsXCJvdHJcIixcIm90c1wiLFwib3R0XCIsXCJvdHVcIixcIm90d1wiLFwib3R4XCIsXCJvdHlcIixcIm90elwiLFwib3VhXCIsXCJvdWJcIixcIm91ZVwiLFwib3VpXCIsXCJvdW1cIixcIm91blwiLFwib3ZkXCIsXCJvd2lcIixcIm93bFwiLFwib3liXCIsXCJveWRcIixcIm95bVwiLFwib3l5XCIsXCJvem1cIl1cbixbIFwicGFcIixcInBpXCIsXCJwbFwiLFwicHNcIixcInB0XCIsXCJwYWFcIixcInBhYlwiLFwicGFjXCIsXCJwYWRcIixcInBhZVwiLFwicGFmXCIsXCJwYWdcIixcInBhaFwiLFwicGFpXCIsXCJwYWtcIixcInBhbFwiLFwicGFtXCIsXCJwYW9cIixcInBhcFwiLFwicGFxXCIsXCJwYXJcIixcInBhc1wiLFwicGF0XCIsXCJwYXVcIixcInBhdlwiLFwicGF3XCIsXCJwYXhcIixcInBheVwiLFwicGF6XCIsXCJwYmJcIixcInBiY1wiLFwicGJlXCIsXCJwYmZcIixcInBiZ1wiLFwicGJoXCIsXCJwYmlcIixcInBibFwiLFwicGJtXCIsXCJwYm5cIixcInBib1wiLFwicGJwXCIsXCJwYnJcIixcInBic1wiLFwicGJ0XCIsXCJwYnVcIixcInBidlwiLFwicGJ5XCIsXCJwYnpcIixcInBjYVwiLFwicGNiXCIsXCJwY2NcIixcInBjZFwiLFwicGNlXCIsXCJwY2ZcIixcInBjZ1wiLFwicGNoXCIsXCJwY2lcIixcInBjalwiLFwicGNrXCIsXCJwY2xcIixcInBjbVwiLFwicGNuXCIsXCJwY3BcIixcInBjclwiLFwicGN3XCIsXCJwZGFcIixcInBkY1wiLFwicGRpXCIsXCJwZG5cIixcInBkb1wiLFwicGR0XCIsXCJwZHVcIixcInBlYVwiLFwicGViXCIsXCJwZWRcIixcInBlZVwiLFwicGVmXCIsXCJwZWdcIixcInBlaFwiLFwicGVpXCIsXCJwZWpcIixcInBla1wiLFwicGVsXCIsXCJwZW1cIixcInBlb1wiLFwicGVwXCIsXCJwZXFcIixcInBlc1wiLFwicGV2XCIsXCJwZXhcIixcInBleVwiLFwicGV6XCIsXCJwZmFcIixcInBmZVwiLFwicGZsXCIsXCJwZ2FcIixcInBnZFwiLFwicGdnXCIsXCJwZ2lcIixcInBna1wiLFwicGdsXCIsXCJwZ25cIixcInBnc1wiLFwicGd1XCIsXCJwZ3lcIixcInBnelwiLFwicGhhXCIsXCJwaGRcIixcInBoZ1wiLFwicGhoXCIsXCJwaGlcIixcInBoa1wiLFwicGhsXCIsXCJwaG1cIixcInBoblwiLFwicGhvXCIsXCJwaHFcIixcInBoclwiLFwicGh0XCIsXCJwaHVcIixcInBodlwiLFwicGh3XCIsXCJwaWFcIixcInBpYlwiLFwicGljXCIsXCJwaWRcIixcInBpZVwiLFwicGlmXCIsXCJwaWdcIixcInBpaFwiLFwicGlpXCIsXCJwaWpcIixcInBpbFwiLFwicGltXCIsXCJwaW5cIixcInBpb1wiLFwicGlwXCIsXCJwaXJcIixcInBpc1wiLFwicGl0XCIsXCJwaXVcIixcInBpdlwiLFwicGl3XCIsXCJwaXhcIixcInBpeVwiLFwicGl6XCIsXCJwanRcIixcInBrYVwiLFwicGtiXCIsXCJwa2NcIixcInBrZ1wiLFwicGtoXCIsXCJwa25cIixcInBrb1wiLFwicGtwXCIsXCJwa3JcIixcInBrc1wiLFwicGt0XCIsXCJwa3VcIixcInBsYVwiLFwicGxiXCIsXCJwbGNcIixcInBsZFwiLFwicGxlXCIsXCJwbGZcIixcInBsZ1wiLFwicGxoXCIsXCJwbGpcIixcInBsa1wiLFwicGxsXCIsXCJwbG5cIixcInBsb1wiLFwicGxwXCIsXCJwbHFcIixcInBsclwiLFwicGxzXCIsXCJwbHRcIixcInBsdVwiLFwicGx2XCIsXCJwbHdcIixcInBseVwiLFwicGx6XCIsXCJwbWFcIixcInBtYlwiLFwicG1jXCIsXCJwbWRcIixcInBtZVwiLFwicG1mXCIsXCJwbWhcIixcInBtaVwiLFwicG1qXCIsXCJwbWtcIixcInBtbFwiLFwicG1tXCIsXCJwbW5cIixcInBtb1wiLFwicG1xXCIsXCJwbXJcIixcInBtc1wiLFwicG10XCIsXCJwbXVcIixcInBtd1wiLFwicG14XCIsXCJwbXlcIixcInBtelwiLFwicG5hXCIsXCJwbmJcIixcInBuY1wiLFwicG5kXCIsXCJwbmVcIixcInBuZ1wiLFwicG5oXCIsXCJwbmlcIixcInBualwiLFwicG5rXCIsXCJwbmxcIixcInBubVwiLFwicG5uXCIsXCJwbm9cIixcInBucFwiLFwicG5xXCIsXCJwbnJcIixcInBuc1wiLFwicG50XCIsXCJwbnVcIixcInBudlwiLFwicG53XCIsXCJwbnhcIixcInBueVwiLFwicG56XCIsXCJwb2NcIixcInBvZFwiLFwicG9lXCIsXCJwb2ZcIixcInBvZ1wiLFwicG9oXCIsXCJwb2lcIixcInBva1wiLFwicG9tXCIsXCJwb25cIixcInBvb1wiLFwicG9wXCIsXCJwb3FcIixcInBvc1wiLFwicG90XCIsXCJwb3ZcIixcInBvd1wiLFwicG94XCIsXCJwb3lcIixcInBvelwiLFwicHBhXCIsXCJwcGVcIixcInBwaVwiLFwicHBrXCIsXCJwcGxcIixcInBwbVwiLFwicHBuXCIsXCJwcG9cIixcInBwcFwiLFwicHBxXCIsXCJwcHJcIixcInBwc1wiLFwicHB0XCIsXCJwcHVcIixcInBxYVwiLFwicHFlXCIsXCJwcW1cIixcInBxd1wiLFwicHJhXCIsXCJwcmJcIixcInByY1wiLFwicHJkXCIsXCJwcmVcIixcInByZlwiLFwicHJnXCIsXCJwcmhcIixcInByaVwiLFwicHJrXCIsXCJwcmxcIixcInBybVwiLFwicHJuXCIsXCJwcm9cIixcInBycFwiLFwicHJxXCIsXCJwcnJcIixcInByc1wiLFwicHJ0XCIsXCJwcnVcIixcInByd1wiLFwicHJ4XCIsXCJwcnlcIixcInByelwiLFwicHNhXCIsXCJwc2NcIixcInBzZFwiLFwicHNlXCIsXCJwc2dcIixcInBzaFwiLFwicHNpXCIsXCJwc2xcIixcInBzbVwiLFwicHNuXCIsXCJwc29cIixcInBzcFwiLFwicHNxXCIsXCJwc3JcIixcInBzc1wiLFwicHN0XCIsXCJwc3VcIixcInBzd1wiLFwicHN5XCIsXCJwdGFcIixcInB0aFwiLFwicHRpXCIsXCJwdG5cIixcInB0b1wiLFwicHRwXCIsXCJwdHFcIixcInB0clwiLFwicHR0XCIsXCJwdHVcIixcInB0dlwiLFwicHR3XCIsXCJwdHlcIixcInB1YVwiLFwicHViXCIsXCJwdWNcIixcInB1ZFwiLFwicHVlXCIsXCJwdWZcIixcInB1Z1wiLFwicHVpXCIsXCJwdWpcIixcInB1a1wiLFwicHVtXCIsXCJwdW9cIixcInB1cFwiLFwicHVxXCIsXCJwdXJcIixcInB1dFwiLFwicHV1XCIsXCJwdXdcIixcInB1eFwiLFwicHV5XCIsXCJwdXpcIixcInB3YVwiLFwicHdiXCIsXCJwd2dcIixcInB3aVwiLFwicHdtXCIsXCJwd25cIixcInB3b1wiLFwicHdyXCIsXCJwd3dcIixcInB4bVwiLFwicHllXCIsXCJweW1cIixcInB5blwiLFwicHlzXCIsXCJweXVcIixcInB5eFwiLFwicHl5XCIsXCJwem5cIl1cbixbIFwicXVcIixcInF1YVwiLFwicXViXCIsXCJxdWNcIixcInF1ZFwiLFwicXVmXCIsXCJxdWdcIixcInF1aFwiLFwicXVpXCIsXCJxdWtcIixcInF1bFwiLFwicXVtXCIsXCJxdW5cIixcInF1cFwiLFwicXVxXCIsXCJxdXJcIixcInF1c1wiLFwicXV2XCIsXCJxdXdcIixcInF1eFwiLFwicXV5XCIsXCJxdXpcIixcInF2YVwiLFwicXZjXCIsXCJxdmVcIixcInF2aFwiLFwicXZpXCIsXCJxdmpcIixcInF2bFwiLFwicXZtXCIsXCJxdm5cIixcInF2b1wiLFwicXZwXCIsXCJxdnNcIixcInF2d1wiLFwicXZ5XCIsXCJxdnpcIixcInF3YVwiLFwicXdjXCIsXCJxd2VcIixcInF3aFwiLFwicXdtXCIsXCJxd3NcIixcInF3dFwiLFwicXhhXCIsXCJxeGNcIixcInF4aFwiLFwicXhsXCIsXCJxeG5cIixcInF4b1wiLFwicXhwXCIsXCJxeHFcIixcInF4clwiLFwicXhzXCIsXCJxeHRcIixcInF4dVwiLFwicXh3XCIsXCJxeWFcIixcInF5cFwiXVxuLFsgXCJybVwiLFwicm5cIixcInJvXCIsXCJydVwiLFwicndcIixcInJhYVwiLFwicmFiXCIsXCJyYWNcIixcInJhZFwiLFwicmFmXCIsXCJyYWdcIixcInJhaFwiLFwicmFpXCIsXCJyYWpcIixcInJha1wiLFwicmFsXCIsXCJyYW1cIixcInJhblwiLFwicmFvXCIsXCJyYXBcIixcInJhcVwiLFwicmFyXCIsXCJyYXNcIixcInJhdFwiLFwicmF1XCIsXCJyYXZcIixcInJhd1wiLFwicmF4XCIsXCJyYXlcIixcInJhelwiLFwicmJiXCIsXCJyYmtcIixcInJibFwiLFwicmJwXCIsXCJyY2ZcIixcInJkYlwiLFwicmVhXCIsXCJyZWJcIixcInJlZVwiLFwicmVnXCIsXCJyZWlcIixcInJlalwiLFwicmVsXCIsXCJyZW1cIixcInJlblwiLFwicmVyXCIsXCJyZXNcIixcInJldFwiLFwicmV5XCIsXCJyZ2FcIixcInJnZVwiLFwicmdrXCIsXCJyZ25cIixcInJnclwiLFwicmdzXCIsXCJyZ3VcIixcInJoZ1wiLFwicmhwXCIsXCJyaWFcIixcInJpZVwiLFwicmlmXCIsXCJyaWxcIixcInJpbVwiLFwicmluXCIsXCJyaXJcIixcInJpdFwiLFwicml1XCIsXCJyamdcIixcInJqaVwiLFwicmpzXCIsXCJya2FcIixcInJrYlwiLFwicmtoXCIsXCJya2lcIixcInJrbVwiLFwicmt0XCIsXCJya3dcIixcInJtYVwiLFwicm1iXCIsXCJybWNcIixcInJtZFwiLFwicm1lXCIsXCJybWZcIixcInJtZ1wiLFwicm1oXCIsXCJybWlcIixcInJta1wiLFwicm1sXCIsXCJybW1cIixcInJtblwiLFwicm1vXCIsXCJybXBcIixcInJtcVwiLFwicm1yXCIsXCJybXNcIixcInJtdFwiLFwicm11XCIsXCJybXZcIixcInJtd1wiLFwicm14XCIsXCJybXlcIixcInJtelwiLFwicm5hXCIsXCJybmRcIixcInJuZ1wiLFwicm5sXCIsXCJybm5cIixcInJucFwiLFwicm5yXCIsXCJybndcIixcInJvYVwiLFwicm9iXCIsXCJyb2NcIixcInJvZFwiLFwicm9lXCIsXCJyb2ZcIixcInJvZ1wiLFwicm9sXCIsXCJyb21cIixcInJvb1wiLFwicm9wXCIsXCJyb3JcIixcInJvdVwiLFwicm93XCIsXCJycG5cIixcInJwdFwiLFwicnJpXCIsXCJycm9cIixcInJydFwiLFwicnNiXCIsXCJyc2lcIixcInJzbFwiLFwicnNtXCIsXCJydGNcIixcInJ0aFwiLFwicnRtXCIsXCJydHNcIixcInJ0d1wiLFwicnViXCIsXCJydWNcIixcInJ1ZVwiLFwicnVmXCIsXCJydWdcIixcInJ1aFwiLFwicnVpXCIsXCJydWtcIixcInJ1b1wiLFwicnVwXCIsXCJydXFcIixcInJ1dFwiLFwicnV1XCIsXCJydXlcIixcInJ1elwiLFwicndhXCIsXCJyd2tcIixcInJ3bFwiLFwicndtXCIsXCJyd29cIixcInJ3clwiLFwicnhkXCIsXCJyeHdcIixcInJ5blwiLFwicnlzXCIsXCJyeXVcIixcInJ6aFwiXVxuLFsgXCJzYVwiLFwic2NcIixcInNkXCIsXCJzZVwiLFwic2dcIixcInNoXCIsXCJzaVwiLFwic2tcIixcInNsXCIsXCJzbVwiLFwic25cIixcInNvXCIsXCJzcVwiLFwic3JcIixcInNzXCIsXCJzdFwiLFwic3VcIixcInN2XCIsXCJzd1wiLFwic2FhXCIsXCJzYWJcIixcInNhY1wiLFwic2FkXCIsXCJzYWVcIixcInNhZlwiLFwic2FoXCIsXCJzYWlcIixcInNhalwiLFwic2FrXCIsXCJzYWxcIixcInNhbVwiLFwic2FvXCIsXCJzYXBcIixcInNhcVwiLFwic2FyXCIsXCJzYXNcIixcInNhdFwiLFwic2F1XCIsXCJzYXZcIixcInNhd1wiLFwic2F4XCIsXCJzYXlcIixcInNhelwiLFwic2JhXCIsXCJzYmJcIixcInNiY1wiLFwic2JkXCIsXCJzYmVcIixcInNiZlwiLFwic2JnXCIsXCJzYmhcIixcInNiaVwiLFwic2JqXCIsXCJzYmtcIixcInNibFwiLFwic2JtXCIsXCJzYm5cIixcInNib1wiLFwic2JwXCIsXCJzYnFcIixcInNiclwiLFwic2JzXCIsXCJzYnRcIixcInNidVwiLFwic2J2XCIsXCJzYndcIixcInNieFwiLFwic2J5XCIsXCJzYnpcIixcInNjYVwiLFwic2NiXCIsXCJzY2VcIixcInNjZlwiLFwic2NnXCIsXCJzY2hcIixcInNjaVwiLFwic2NrXCIsXCJzY2xcIixcInNjblwiLFwic2NvXCIsXCJzY3BcIixcInNjcVwiLFwic2NzXCIsXCJzY3RcIixcInNjdVwiLFwic2N2XCIsXCJzY3dcIixcInNjeFwiLFwic2RhXCIsXCJzZGJcIixcInNkY1wiLFwic2RlXCIsXCJzZGZcIixcInNkZ1wiLFwic2RoXCIsXCJzZGpcIixcInNka1wiLFwic2RsXCIsXCJzZG1cIixcInNkblwiLFwic2RvXCIsXCJzZHBcIixcInNkcVwiLFwic2RyXCIsXCJzZHNcIixcInNkdFwiLFwic2R1XCIsXCJzZHZcIixcInNkeFwiLFwic2R6XCIsXCJzZWFcIixcInNlYlwiLFwic2VjXCIsXCJzZWRcIixcInNlZVwiLFwic2VmXCIsXCJzZWdcIixcInNlaFwiLFwic2VpXCIsXCJzZWpcIixcInNla1wiLFwic2VsXCIsXCJzZW1cIixcInNlblwiLFwic2VvXCIsXCJzZXBcIixcInNlcVwiLFwic2VyXCIsXCJzZXNcIixcInNldFwiLFwic2V1XCIsXCJzZXZcIixcInNld1wiLFwic2V5XCIsXCJzZXpcIixcInNmYlwiLFwic2ZlXCIsXCJzZm1cIixcInNmc1wiLFwic2Z3XCIsXCJzZ2FcIixcInNnYlwiLFwic2djXCIsXCJzZ2RcIixcInNnZVwiLFwic2dnXCIsXCJzZ2hcIixcInNnaVwiLFwic2dqXCIsXCJzZ2tcIixcInNnbFwiLFwic2dtXCIsXCJzZ25cIixcInNnb1wiLFwic2dwXCIsXCJzZ3JcIixcInNnc1wiLFwic2d0XCIsXCJzZ3VcIixcInNnd1wiLFwic2d4XCIsXCJzZ3lcIixcInNnelwiLFwic2hhXCIsXCJzaGJcIixcInNoY1wiLFwic2hkXCIsXCJzaGVcIixcInNoZ1wiLFwic2hoXCIsXCJzaGlcIixcInNoalwiLFwic2hrXCIsXCJzaGxcIixcInNobVwiLFwic2huXCIsXCJzaG9cIixcInNocFwiLFwic2hxXCIsXCJzaHJcIixcInNoc1wiLFwic2h0XCIsXCJzaHVcIixcInNodlwiLFwic2h3XCIsXCJzaHhcIixcInNoeVwiLFwic2h6XCIsXCJzaWFcIixcInNpYlwiLFwic2lkXCIsXCJzaWVcIixcInNpZlwiLFwic2lnXCIsXCJzaWhcIixcInNpaVwiLFwic2lqXCIsXCJzaWtcIixcInNpbFwiLFwic2ltXCIsXCJzaW9cIixcInNpcFwiLFwic2lxXCIsXCJzaXJcIixcInNpc1wiLFwic2l0XCIsXCJzaXVcIixcInNpdlwiLFwic2l3XCIsXCJzaXhcIixcInNpeVwiLFwic2l6XCIsXCJzamFcIixcInNqYlwiLFwic2pkXCIsXCJzamVcIixcInNqZ1wiLFwic2prXCIsXCJzamxcIixcInNqbVwiLFwic2puXCIsXCJzam9cIixcInNqcFwiLFwic2pyXCIsXCJzanNcIixcInNqdFwiLFwic2p1XCIsXCJzandcIixcInNrYVwiLFwic2tiXCIsXCJza2NcIixcInNrZFwiLFwic2tlXCIsXCJza2ZcIixcInNrZ1wiLFwic2toXCIsXCJza2lcIixcInNralwiLFwic2trXCIsXCJza21cIixcInNrblwiLFwic2tvXCIsXCJza3BcIixcInNrcVwiLFwic2tyXCIsXCJza3NcIixcInNrdFwiLFwic2t1XCIsXCJza3ZcIixcInNrd1wiLFwic2t4XCIsXCJza3lcIixcInNrelwiLFwic2xhXCIsXCJzbGNcIixcInNsZFwiLFwic2xlXCIsXCJzbGZcIixcInNsZ1wiLFwic2xoXCIsXCJzbGlcIixcInNsalwiLFwic2xsXCIsXCJzbG1cIixcInNsblwiLFwic2xwXCIsXCJzbHFcIixcInNsclwiLFwic2xzXCIsXCJzbHRcIixcInNsdVwiLFwic2x3XCIsXCJzbHhcIixcInNseVwiLFwic2x6XCIsXCJzbWFcIixcInNtYlwiLFwic21jXCIsXCJzbWRcIixcInNtZlwiLFwic21nXCIsXCJzbWhcIixcInNtaVwiLFwic21qXCIsXCJzbWtcIixcInNtbFwiLFwic21tXCIsXCJzbW5cIixcInNtcFwiLFwic21xXCIsXCJzbXJcIixcInNtc1wiLFwic210XCIsXCJzbXVcIixcInNtdlwiLFwic213XCIsXCJzbXhcIixcInNteVwiLFwic216XCIsXCJzbmJcIixcInNuY1wiLFwic25lXCIsXCJzbmZcIixcInNuZ1wiLFwic25oXCIsXCJzbmlcIixcInNualwiLFwic25rXCIsXCJzbmxcIixcInNubVwiLFwic25uXCIsXCJzbm9cIixcInNucFwiLFwic25xXCIsXCJzbnJcIixcInNuc1wiLFwic251XCIsXCJzbnZcIixcInNud1wiLFwic254XCIsXCJzbnlcIixcInNuelwiLFwic29hXCIsXCJzb2JcIixcInNvY1wiLFwic29kXCIsXCJzb2VcIixcInNvZ1wiLFwic29oXCIsXCJzb2lcIixcInNvalwiLFwic29rXCIsXCJzb2xcIixcInNvblwiLFwic29vXCIsXCJzb3BcIixcInNvcVwiLFwic29yXCIsXCJzb3NcIixcInNvdVwiLFwic292XCIsXCJzb3dcIixcInNveFwiLFwic295XCIsXCJzb3pcIixcInNwYlwiLFwic3BjXCIsXCJzcGRcIixcInNwZVwiLFwic3BnXCIsXCJzcGlcIixcInNwa1wiLFwic3BsXCIsXCJzcG1cIixcInNwblwiLFwic3BvXCIsXCJzcHBcIixcInNwcVwiLFwic3ByXCIsXCJzcHNcIixcInNwdFwiLFwic3B1XCIsXCJzcHZcIixcInNweFwiLFwic3B5XCIsXCJzcWFcIixcInNxaFwiLFwic3FqXCIsXCJzcWtcIixcInNxbVwiLFwic3FuXCIsXCJzcW9cIixcInNxcVwiLFwic3FyXCIsXCJzcXNcIixcInNxdFwiLFwic3F1XCIsXCJzcXhcIixcInNyYVwiLFwic3JiXCIsXCJzcmNcIixcInNyZVwiLFwic3JmXCIsXCJzcmdcIixcInNyaFwiLFwic3JpXCIsXCJzcmtcIixcInNybFwiLFwic3JtXCIsXCJzcm5cIixcInNyb1wiLFwic3JxXCIsXCJzcnJcIixcInNyc1wiLFwic3J0XCIsXCJzcnVcIixcInNydlwiLFwic3J3XCIsXCJzcnhcIixcInNyeVwiLFwic3J6XCIsXCJzc2FcIixcInNzYlwiLFwic3NjXCIsXCJzc2RcIixcInNzZVwiLFwic3NmXCIsXCJzc2dcIixcInNzaFwiLFwic3NpXCIsXCJzc2pcIixcInNza1wiLFwic3NsXCIsXCJzc21cIixcInNzblwiLFwic3NvXCIsXCJzc3BcIixcInNzcVwiLFwic3NyXCIsXCJzc3NcIixcInNzdFwiLFwic3N1XCIsXCJzc3ZcIixcInNzeFwiLFwic3N5XCIsXCJzc3pcIixcInN0YVwiLFwic3RiXCIsXCJzdGRcIixcInN0ZVwiLFwic3RmXCIsXCJzdGdcIixcInN0aFwiLFwic3RpXCIsXCJzdGpcIixcInN0a1wiLFwic3RsXCIsXCJzdG1cIixcInN0blwiLFwic3RvXCIsXCJzdHBcIixcInN0cVwiLFwic3RyXCIsXCJzdHNcIixcInN0dFwiLFwic3R1XCIsXCJzdHZcIixcInN0d1wiLFwic3R5XCIsXCJzdWFcIixcInN1YlwiLFwic3VjXCIsXCJzdWVcIixcInN1Z1wiLFwic3VpXCIsXCJzdWpcIixcInN1a1wiLFwic3VsXCIsXCJzdW1cIixcInN1b1wiLFwic3VxXCIsXCJzdXJcIixcInN1c1wiLFwic3V0XCIsXCJzdXZcIixcInN1d1wiLFwic3V4XCIsXCJzdXlcIixcInN1elwiLFwic3ZhXCIsXCJzdmJcIixcInN2Y1wiLFwic3ZlXCIsXCJzdmtcIixcInN2bVwiLFwic3ZyXCIsXCJzdnNcIixcInN2eFwiLFwic3diXCIsXCJzd2NcIixcInN3ZlwiLFwic3dnXCIsXCJzd2hcIixcInN3aVwiLFwic3dqXCIsXCJzd2tcIixcInN3bFwiLFwic3dtXCIsXCJzd25cIixcInN3b1wiLFwic3dwXCIsXCJzd3FcIixcInN3clwiLFwic3dzXCIsXCJzd3RcIixcInN3dVwiLFwic3d2XCIsXCJzd3dcIixcInN3eFwiLFwic3d5XCIsXCJzeGJcIixcInN4Y1wiLFwic3hlXCIsXCJzeGdcIixcInN4a1wiLFwic3hsXCIsXCJzeG1cIixcInN4blwiLFwic3hvXCIsXCJzeHJcIixcInN4c1wiLFwic3h1XCIsXCJzeHdcIixcInN5YVwiLFwic3liXCIsXCJzeWNcIixcInN5ZFwiLFwic3lpXCIsXCJzeWtcIixcInN5bFwiLFwic3ltXCIsXCJzeW5cIixcInN5b1wiLFwic3lyXCIsXCJzeXNcIixcInN5d1wiLFwic3l4XCIsXCJzeXlcIixcInN6YVwiLFwic3piXCIsXCJzemNcIixcInN6ZFwiLFwic3plXCIsXCJzemdcIixcInN6bFwiLFwic3puXCIsXCJzenBcIixcInN6c1wiLFwic3p2XCIsXCJzendcIixcInN6eVwiXVxuLFsgXCJ0YVwiLFwidGVcIixcInRnXCIsXCJ0aFwiLFwidGlcIixcInRrXCIsXCJ0bFwiLFwidG5cIixcInRvXCIsXCJ0clwiLFwidHNcIixcInR0XCIsXCJ0d1wiLFwidHlcIixcInRhYVwiLFwidGFiXCIsXCJ0YWNcIixcInRhZFwiLFwidGFlXCIsXCJ0YWZcIixcInRhZ1wiLFwidGFpXCIsXCJ0YWpcIixcInRha1wiLFwidGFsXCIsXCJ0YW5cIixcInRhb1wiLFwidGFwXCIsXCJ0YXFcIixcInRhclwiLFwidGFzXCIsXCJ0YXVcIixcInRhdlwiLFwidGF3XCIsXCJ0YXhcIixcInRheVwiLFwidGF6XCIsXCJ0YmFcIixcInRiYlwiLFwidGJjXCIsXCJ0YmRcIixcInRiZVwiLFwidGJmXCIsXCJ0YmdcIixcInRiaFwiLFwidGJpXCIsXCJ0YmpcIixcInRia1wiLFwidGJsXCIsXCJ0Ym1cIixcInRiblwiLFwidGJvXCIsXCJ0YnBcIixcInRicVwiLFwidGJyXCIsXCJ0YnNcIixcInRidFwiLFwidGJ1XCIsXCJ0YnZcIixcInRid1wiLFwidGJ4XCIsXCJ0YnlcIixcInRielwiLFwidGNhXCIsXCJ0Y2JcIixcInRjY1wiLFwidGNkXCIsXCJ0Y2VcIixcInRjZlwiLFwidGNnXCIsXCJ0Y2hcIixcInRjaVwiLFwidGNrXCIsXCJ0Y2xcIixcInRjbVwiLFwidGNuXCIsXCJ0Y29cIixcInRjcFwiLFwidGNxXCIsXCJ0Y3NcIixcInRjdFwiLFwidGN1XCIsXCJ0Y3dcIixcInRjeFwiLFwidGN5XCIsXCJ0Y3pcIixcInRkYVwiLFwidGRiXCIsXCJ0ZGNcIixcInRkZFwiLFwidGRlXCIsXCJ0ZGZcIixcInRkZ1wiLFwidGRoXCIsXCJ0ZGlcIixcInRkalwiLFwidGRrXCIsXCJ0ZGxcIixcInRkbVwiLFwidGRuXCIsXCJ0ZG9cIixcInRkcVwiLFwidGRyXCIsXCJ0ZHNcIixcInRkdFwiLFwidGR1XCIsXCJ0ZHZcIixcInRkeFwiLFwidGR5XCIsXCJ0ZWFcIixcInRlYlwiLFwidGVjXCIsXCJ0ZWRcIixcInRlZVwiLFwidGVmXCIsXCJ0ZWdcIixcInRlaFwiLFwidGVpXCIsXCJ0ZWtcIixcInRlbVwiLFwidGVuXCIsXCJ0ZW9cIixcInRlcFwiLFwidGVxXCIsXCJ0ZXJcIixcInRlc1wiLFwidGV0XCIsXCJ0ZXVcIixcInRldlwiLFwidGV3XCIsXCJ0ZXhcIixcInRleVwiLFwidGV6XCIsXCJ0ZmlcIixcInRmblwiLFwidGZvXCIsXCJ0ZnJcIixcInRmdFwiLFwidGdhXCIsXCJ0Z2JcIixcInRnY1wiLFwidGdkXCIsXCJ0Z2VcIixcInRnZlwiLFwidGdnXCIsXCJ0Z2hcIixcInRnaVwiLFwidGdqXCIsXCJ0Z25cIixcInRnb1wiLFwidGdwXCIsXCJ0Z3FcIixcInRnclwiLFwidGdzXCIsXCJ0Z3RcIixcInRndVwiLFwidGd2XCIsXCJ0Z3dcIixcInRneFwiLFwidGd5XCIsXCJ0Z3pcIixcInRoY1wiLFwidGhkXCIsXCJ0aGVcIixcInRoZlwiLFwidGhoXCIsXCJ0aGlcIixcInRoa1wiLFwidGhsXCIsXCJ0aG1cIixcInRoblwiLFwidGhwXCIsXCJ0aHFcIixcInRoclwiLFwidGhzXCIsXCJ0aHRcIixcInRodVwiLFwidGh2XCIsXCJ0aHdcIixcInRoeFwiLFwidGh5XCIsXCJ0aHpcIixcInRpYVwiLFwidGljXCIsXCJ0aWRcIixcInRpZVwiLFwidGlmXCIsXCJ0aWdcIixcInRpaFwiLFwidGlpXCIsXCJ0aWpcIixcInRpa1wiLFwidGlsXCIsXCJ0aW1cIixcInRpblwiLFwidGlvXCIsXCJ0aXBcIixcInRpcVwiLFwidGlzXCIsXCJ0aXRcIixcInRpdVwiLFwidGl2XCIsXCJ0aXdcIixcInRpeFwiLFwidGl5XCIsXCJ0aXpcIixcInRqYVwiLFwidGpnXCIsXCJ0amlcIixcInRqalwiLFwidGpsXCIsXCJ0am1cIixcInRqblwiLFwidGpvXCIsXCJ0anBcIixcInRqc1wiLFwidGp1XCIsXCJ0andcIixcInRrYVwiLFwidGtiXCIsXCJ0a2RcIixcInRrZVwiLFwidGtmXCIsXCJ0a2dcIixcInRra1wiLFwidGtsXCIsXCJ0a21cIixcInRrblwiLFwidGtwXCIsXCJ0a3FcIixcInRrclwiLFwidGtzXCIsXCJ0a3RcIixcInRrdVwiLFwidGt2XCIsXCJ0a3dcIixcInRreFwiLFwidGt6XCIsXCJ0bGFcIixcInRsYlwiLFwidGxjXCIsXCJ0bGRcIixcInRsZlwiLFwidGxnXCIsXCJ0bGhcIixcInRsaVwiLFwidGxqXCIsXCJ0bGtcIixcInRsbFwiLFwidGxtXCIsXCJ0bG5cIixcInRsb1wiLFwidGxwXCIsXCJ0bHFcIixcInRsclwiLFwidGxzXCIsXCJ0bHRcIixcInRsdVwiLFwidGx2XCIsXCJ0bHdcIixcInRseFwiLFwidGx5XCIsXCJ0bWFcIixcInRtYlwiLFwidG1jXCIsXCJ0bWRcIixcInRtZVwiLFwidG1mXCIsXCJ0bWdcIixcInRtaFwiLFwidG1pXCIsXCJ0bWpcIixcInRta1wiLFwidG1sXCIsXCJ0bW1cIixcInRtblwiLFwidG1vXCIsXCJ0bXBcIixcInRtcVwiLFwidG1yXCIsXCJ0bXNcIixcInRtdFwiLFwidG11XCIsXCJ0bXZcIixcInRtd1wiLFwidG15XCIsXCJ0bXpcIixcInRuYVwiLFwidG5iXCIsXCJ0bmNcIixcInRuZFwiLFwidG5lXCIsXCJ0bmZcIixcInRuZ1wiLFwidG5oXCIsXCJ0bmlcIixcInRua1wiLFwidG5sXCIsXCJ0bm1cIixcInRublwiLFwidG5vXCIsXCJ0bnBcIixcInRucVwiLFwidG5yXCIsXCJ0bnNcIixcInRudFwiLFwidG51XCIsXCJ0bnZcIixcInRud1wiLFwidG54XCIsXCJ0bnlcIixcInRuelwiLFwidG9iXCIsXCJ0b2NcIixcInRvZFwiLFwidG9lXCIsXCJ0b2ZcIixcInRvZ1wiLFwidG9oXCIsXCJ0b2lcIixcInRvalwiLFwidG9sXCIsXCJ0b21cIixcInRvb1wiLFwidG9wXCIsXCJ0b3FcIixcInRvclwiLFwidG9zXCIsXCJ0b3VcIixcInRvdlwiLFwidG93XCIsXCJ0b3hcIixcInRveVwiLFwidG96XCIsXCJ0cGFcIixcInRwY1wiLFwidHBlXCIsXCJ0cGZcIixcInRwZ1wiLFwidHBpXCIsXCJ0cGpcIixcInRwa1wiLFwidHBsXCIsXCJ0cG1cIixcInRwblwiLFwidHBvXCIsXCJ0cHBcIixcInRwcVwiLFwidHByXCIsXCJ0cHRcIixcInRwdVwiLFwidHB2XCIsXCJ0cHdcIixcInRweFwiLFwidHB5XCIsXCJ0cHpcIixcInRxYlwiLFwidHFsXCIsXCJ0cW1cIixcInRxblwiLFwidHFvXCIsXCJ0cXBcIixcInRxcVwiLFwidHFyXCIsXCJ0cXRcIixcInRxdVwiLFwidHF3XCIsXCJ0cmFcIixcInRyYlwiLFwidHJjXCIsXCJ0cmRcIixcInRyZVwiLFwidHJmXCIsXCJ0cmdcIixcInRyaFwiLFwidHJpXCIsXCJ0cmpcIixcInRya1wiLFwidHJsXCIsXCJ0cm1cIixcInRyblwiLFwidHJvXCIsXCJ0cnBcIixcInRycVwiLFwidHJyXCIsXCJ0cnNcIixcInRydFwiLFwidHJ1XCIsXCJ0cnZcIixcInRyd1wiLFwidHJ4XCIsXCJ0cnlcIixcInRyelwiLFwidHNhXCIsXCJ0c2JcIixcInRzY1wiLFwidHNkXCIsXCJ0c2VcIixcInRzZlwiLFwidHNnXCIsXCJ0c2hcIixcInRzaVwiLFwidHNqXCIsXCJ0c2tcIixcInRzbFwiLFwidHNtXCIsXCJ0c3BcIixcInRzcVwiLFwidHNyXCIsXCJ0c3NcIixcInRzdFwiLFwidHN1XCIsXCJ0c3ZcIixcInRzd1wiLFwidHN4XCIsXCJ0c3lcIixcInRzelwiLFwidHRhXCIsXCJ0dGJcIixcInR0Y1wiLFwidHRkXCIsXCJ0dGVcIixcInR0ZlwiLFwidHRnXCIsXCJ0dGhcIixcInR0aVwiLFwidHRqXCIsXCJ0dGtcIixcInR0bFwiLFwidHRtXCIsXCJ0dG5cIixcInR0b1wiLFwidHRwXCIsXCJ0dHFcIixcInR0clwiLFwidHRzXCIsXCJ0dHRcIixcInR0dVwiLFwidHR2XCIsXCJ0dHdcIixcInR0eVwiLFwidHR6XCIsXCJ0dWFcIixcInR1YlwiLFwidHVjXCIsXCJ0dWRcIixcInR1ZVwiLFwidHVmXCIsXCJ0dWdcIixcInR1aFwiLFwidHVpXCIsXCJ0dWpcIixcInR1bFwiLFwidHVtXCIsXCJ0dW5cIixcInR1b1wiLFwidHVwXCIsXCJ0dXFcIixcInR1c1wiLFwidHV0XCIsXCJ0dXVcIixcInR1dlwiLFwidHV3XCIsXCJ0dXhcIixcInR1eVwiLFwidHV6XCIsXCJ0dmFcIixcInR2ZFwiLFwidHZlXCIsXCJ0dmtcIixcInR2bFwiLFwidHZtXCIsXCJ0dm5cIixcInR2b1wiLFwidHZzXCIsXCJ0dnRcIixcInR2dVwiLFwidHZ3XCIsXCJ0dnhcIixcInR2eVwiLFwidHdhXCIsXCJ0d2JcIixcInR3Y1wiLFwidHdkXCIsXCJ0d2VcIixcInR3ZlwiLFwidHdnXCIsXCJ0d2hcIixcInR3bFwiLFwidHdtXCIsXCJ0d25cIixcInR3b1wiLFwidHdwXCIsXCJ0d3FcIixcInR3clwiLFwidHd0XCIsXCJ0d3VcIixcInR3d1wiLFwidHd4XCIsXCJ0d3lcIixcInR4YVwiLFwidHhiXCIsXCJ0eGNcIixcInR4ZVwiLFwidHhnXCIsXCJ0eGhcIixcInR4aVwiLFwidHhqXCIsXCJ0eG1cIixcInR4blwiLFwidHhvXCIsXCJ0eHFcIixcInR4clwiLFwidHhzXCIsXCJ0eHRcIixcInR4dVwiLFwidHh4XCIsXCJ0eHlcIixcInR5YVwiLFwidHllXCIsXCJ0eWhcIixcInR5aVwiLFwidHlqXCIsXCJ0eWxcIixcInR5blwiLFwidHlwXCIsXCJ0eXJcIixcInR5c1wiLFwidHl0XCIsXCJ0eXVcIixcInR5dlwiLFwidHl4XCIsXCJ0eXlcIixcInR5elwiLFwidHphXCIsXCJ0emhcIixcInR6alwiLFwidHpsXCIsXCJ0em1cIixcInR6blwiLFwidHpvXCIsXCJ0enhcIl1cbixbIFwidWdcIixcInVrXCIsXCJ1clwiLFwidXpcIixcInVhbVwiLFwidWFuXCIsXCJ1YXJcIixcInViYVwiLFwidWJpXCIsXCJ1YmxcIixcInViclwiLFwidWJ1XCIsXCJ1YnlcIixcInVkYVwiLFwidWRlXCIsXCJ1ZGdcIixcInVkaVwiLFwidWRqXCIsXCJ1ZGxcIixcInVkbVwiLFwidWR1XCIsXCJ1ZXNcIixcInVmaVwiLFwidWdhXCIsXCJ1Z2JcIixcInVnZVwiLFwidWduXCIsXCJ1Z29cIixcInVneVwiLFwidWhhXCIsXCJ1aG5cIixcInVpc1wiLFwidWl2XCIsXCJ1amlcIixcInVrYVwiLFwidWtnXCIsXCJ1a2hcIixcInVraVwiLFwidWtrXCIsXCJ1a2xcIixcInVrcFwiLFwidWtxXCIsXCJ1a3NcIixcInVrdVwiLFwidWt2XCIsXCJ1a3dcIixcInVreVwiLFwidWxhXCIsXCJ1bGJcIixcInVsY1wiLFwidWxlXCIsXCJ1bGZcIixcInVsaVwiLFwidWxrXCIsXCJ1bGxcIixcInVsbVwiLFwidWxuXCIsXCJ1bHVcIixcInVsd1wiLFwidW1hXCIsXCJ1bWJcIixcInVtY1wiLFwidW1kXCIsXCJ1bWdcIixcInVtaVwiLFwidW1tXCIsXCJ1bW5cIixcInVtb1wiLFwidW1wXCIsXCJ1bXJcIixcInVtc1wiLFwidW11XCIsXCJ1bmFcIixcInVuZFwiLFwidW5lXCIsXCJ1bmdcIixcInVuaVwiLFwidW5rXCIsXCJ1bm1cIixcInVublwiLFwidW5wXCIsXCJ1bnJcIixcInVudVwiLFwidW54XCIsXCJ1bnpcIixcInVva1wiLFwidXBpXCIsXCJ1cHZcIixcInVyYVwiLFwidXJiXCIsXCJ1cmNcIixcInVyZVwiLFwidXJmXCIsXCJ1cmdcIixcInVyaFwiLFwidXJpXCIsXCJ1cmpcIixcInVya1wiLFwidXJsXCIsXCJ1cm1cIixcInVyblwiLFwidXJvXCIsXCJ1cnBcIixcInVyclwiLFwidXJ0XCIsXCJ1cnVcIixcInVydlwiLFwidXJ3XCIsXCJ1cnhcIixcInVyeVwiLFwidXJ6XCIsXCJ1c2FcIixcInVzaFwiLFwidXNpXCIsXCJ1c2tcIixcInVzcFwiLFwidXNzXCIsXCJ1c3VcIixcInV0YVwiLFwidXRlXCIsXCJ1dGhcIixcInV0cFwiLFwidXRyXCIsXCJ1dHVcIixcInV1bVwiLFwidXVuXCIsXCJ1dXJcIixcInV1dVwiLFwidXZlXCIsXCJ1dmhcIixcInV2bFwiLFwidXdhXCIsXCJ1eWFcIixcInV6blwiLFwidXpzXCJdXG4sWyBcInZlXCIsXCJ2aVwiLFwidm9cIixcInZhYVwiLFwidmFlXCIsXCJ2YWZcIixcInZhZ1wiLFwidmFoXCIsXCJ2YWlcIixcInZhalwiLFwidmFsXCIsXCJ2YW1cIixcInZhblwiLFwidmFvXCIsXCJ2YXBcIixcInZhclwiLFwidmFzXCIsXCJ2YXVcIixcInZhdlwiLFwidmF5XCIsXCJ2YmJcIixcInZia1wiLFwidmVjXCIsXCJ2ZWRcIixcInZlbFwiLFwidmVtXCIsXCJ2ZW9cIixcInZlcFwiLFwidmVyXCIsXCJ2Z3JcIixcInZndFwiLFwidmljXCIsXCJ2aWRcIixcInZpZlwiLFwidmlnXCIsXCJ2aWxcIixcInZpblwiLFwidmlzXCIsXCJ2aXRcIixcInZpdlwiLFwidmthXCIsXCJ2a2lcIixcInZralwiLFwidmtrXCIsXCJ2a2xcIixcInZrbVwiLFwidmtuXCIsXCJ2a29cIixcInZrcFwiLFwidmt0XCIsXCJ2a3VcIixcInZrelwiLFwidmxwXCIsXCJ2bHNcIixcInZtYVwiLFwidm1iXCIsXCJ2bWNcIixcInZtZFwiLFwidm1lXCIsXCJ2bWZcIixcInZtZ1wiLFwidm1oXCIsXCJ2bWlcIixcInZtalwiLFwidm1rXCIsXCJ2bWxcIixcInZtbVwiLFwidm1wXCIsXCJ2bXFcIixcInZtclwiLFwidm1zXCIsXCJ2bXVcIixcInZtdlwiLFwidm13XCIsXCJ2bXhcIixcInZteVwiLFwidm16XCIsXCJ2bmtcIixcInZubVwiLFwidm5wXCIsXCJ2b3JcIixcInZvdFwiLFwidnJhXCIsXCJ2cm9cIixcInZyc1wiLFwidnJ0XCIsXCJ2c2lcIixcInZzbFwiLFwidnN2XCIsXCJ2dG9cIixcInZ1bVwiLFwidnVuXCIsXCJ2dXRcIixcInZ3YVwiXVxuLFsgXCJ3YVwiLFwid29cIixcIndhYVwiLFwid2FiXCIsXCJ3YWNcIixcIndhZFwiLFwid2FlXCIsXCJ3YWZcIixcIndhZ1wiLFwid2FoXCIsXCJ3YWlcIixcIndhalwiLFwid2FrXCIsXCJ3YWxcIixcIndhbVwiLFwid2FuXCIsXCJ3YW9cIixcIndhcFwiLFwid2FxXCIsXCJ3YXJcIixcIndhc1wiLFwid2F0XCIsXCJ3YXVcIixcIndhdlwiLFwid2F3XCIsXCJ3YXhcIixcIndheVwiLFwid2F6XCIsXCJ3YmFcIixcIndiYlwiLFwid2JlXCIsXCJ3YmZcIixcIndiaFwiLFwid2JpXCIsXCJ3YmpcIixcIndia1wiLFwid2JsXCIsXCJ3Ym1cIixcIndicFwiLFwid2JxXCIsXCJ3YnJcIixcIndic1wiLFwid2J0XCIsXCJ3YnZcIixcIndid1wiLFwid2NhXCIsXCJ3Y2lcIixcIndkZFwiLFwid2RnXCIsXCJ3ZGpcIixcIndka1wiLFwid2R1XCIsXCJ3ZHlcIixcIndlYVwiLFwid2VjXCIsXCJ3ZWRcIixcIndlZ1wiLFwid2VoXCIsXCJ3ZWlcIixcIndlbVwiLFwid2VuXCIsXCJ3ZW9cIixcIndlcFwiLFwid2VyXCIsXCJ3ZXNcIixcIndldFwiLFwid2V1XCIsXCJ3ZXdcIixcIndmZ1wiLFwid2dhXCIsXCJ3Z2JcIixcIndnZ1wiLFwid2dpXCIsXCJ3Z29cIixcIndndVwiLFwid2d3XCIsXCJ3Z3lcIixcIndoYVwiLFwid2hnXCIsXCJ3aGtcIixcIndodVwiLFwid2liXCIsXCJ3aWNcIixcIndpZVwiLFwid2lmXCIsXCJ3aWdcIixcIndpaFwiLFwid2lpXCIsXCJ3aWpcIixcIndpa1wiLFwid2lsXCIsXCJ3aW1cIixcIndpblwiLFwid2lyXCIsXCJ3aXRcIixcIndpdVwiLFwid2l2XCIsXCJ3aXdcIixcIndpeVwiLFwid2phXCIsXCJ3amlcIixcIndrYVwiLFwid2tiXCIsXCJ3a2RcIixcIndrbFwiLFwid2tyXCIsXCJ3a3VcIixcIndrd1wiLFwid2t5XCIsXCJ3bGFcIixcIndsY1wiLFwid2xlXCIsXCJ3bGdcIixcIndsaFwiLFwid2xpXCIsXCJ3bGtcIixcIndsbFwiLFwid2xtXCIsXCJ3bG9cIixcIndsclwiLFwid2xzXCIsXCJ3bHVcIixcIndsdlwiLFwid2x3XCIsXCJ3bHhcIixcIndseVwiLFwid21hXCIsXCJ3bWJcIixcIndtY1wiLFwid21kXCIsXCJ3bWVcIixcIndtZ1wiLFwid21oXCIsXCJ3bWlcIixcIndtbVwiLFwid21uXCIsXCJ3bW9cIixcIndtc1wiLFwid210XCIsXCJ3bXdcIixcIndteFwiLFwid25iXCIsXCJ3bmNcIixcInduZFwiLFwid25lXCIsXCJ3bmdcIixcInduaVwiLFwid25rXCIsXCJ3bm1cIixcIndublwiLFwid25vXCIsXCJ3bnBcIixcIndudVwiLFwid253XCIsXCJ3bnlcIixcIndvYVwiLFwid29iXCIsXCJ3b2NcIixcIndvZFwiLFwid29lXCIsXCJ3b2ZcIixcIndvZ1wiLFwid29pXCIsXCJ3b2tcIixcIndvbVwiLFwid29uXCIsXCJ3b29cIixcIndvclwiLFwid29zXCIsXCJ3b3dcIixcIndveVwiLFwid3BjXCIsXCJ3cmFcIixcIndyYlwiLFwid3JkXCIsXCJ3cmdcIixcIndyaFwiLFwid3JpXCIsXCJ3cmtcIixcIndybFwiLFwid3JtXCIsXCJ3cm5cIixcIndyb1wiLFwid3JwXCIsXCJ3cnJcIixcIndyc1wiLFwid3J1XCIsXCJ3cnZcIixcIndyd1wiLFwid3J4XCIsXCJ3cnlcIixcIndyelwiLFwid3NhXCIsXCJ3c2dcIixcIndzaVwiLFwid3NrXCIsXCJ3c3JcIixcIndzc1wiLFwid3N1XCIsXCJ3c3ZcIixcInd0ZlwiLFwid3RoXCIsXCJ3dGlcIixcInd0a1wiLFwid3RtXCIsXCJ3dHdcIixcInd1YVwiLFwid3ViXCIsXCJ3dWRcIixcInd1aFwiLFwid3VsXCIsXCJ3dW1cIixcInd1blwiLFwid3VyXCIsXCJ3dXRcIixcInd1dVwiLFwid3V2XCIsXCJ3dXhcIixcInd1eVwiLFwid3dhXCIsXCJ3d2JcIixcInd3b1wiLFwid3dyXCIsXCJ3d3dcIixcInd4YVwiLFwid3h3XCIsXCJ3eWFcIixcInd5YlwiLFwid3lpXCIsXCJ3eW1cIixcInd5clwiLFwid3l5XCJdXG4sWyBcInhoXCIsXCJ4YWFcIixcInhhYlwiLFwieGFjXCIsXCJ4YWRcIixcInhhZVwiLFwieGFnXCIsXCJ4YWlcIixcInhhalwiLFwieGFrXCIsXCJ4YWxcIixcInhhbVwiLFwieGFuXCIsXCJ4YW9cIixcInhhcFwiLFwieGFxXCIsXCJ4YXJcIixcInhhc1wiLFwieGF0XCIsXCJ4YXVcIixcInhhdlwiLFwieGF3XCIsXCJ4YXlcIixcInhiYVwiLFwieGJiXCIsXCJ4YmNcIixcInhiZFwiLFwieGJlXCIsXCJ4YmdcIixcInhiaVwiLFwieGJqXCIsXCJ4Ym1cIixcInhiblwiLFwieGJvXCIsXCJ4YnBcIixcInhiclwiLFwieGJ3XCIsXCJ4YnhcIixcInhieVwiLFwieGNiXCIsXCJ4Y2NcIixcInhjZVwiLFwieGNnXCIsXCJ4Y2hcIixcInhjbFwiLFwieGNtXCIsXCJ4Y25cIixcInhjb1wiLFwieGNyXCIsXCJ4Y3RcIixcInhjdVwiLFwieGN2XCIsXCJ4Y3dcIixcInhjeVwiLFwieGRhXCIsXCJ4ZGNcIixcInhka1wiLFwieGRtXCIsXCJ4ZG9cIixcInhkeVwiLFwieGViXCIsXCJ4ZWRcIixcInhlZ1wiLFwieGVsXCIsXCJ4ZW1cIixcInhlcFwiLFwieGVyXCIsXCJ4ZXNcIixcInhldFwiLFwieGV1XCIsXCJ4ZmFcIixcInhnYVwiLFwieGdiXCIsXCJ4Z2RcIixcInhnZlwiLFwieGdnXCIsXCJ4Z2lcIixcInhnbFwiLFwieGdtXCIsXCJ4Z25cIixcInhnclwiLFwieGd1XCIsXCJ4Z3dcIixcInhoYVwiLFwieGhjXCIsXCJ4aGRcIixcInhoZVwiLFwieGhyXCIsXCJ4aHRcIixcInhodVwiLFwieGh2XCIsXCJ4aWFcIixcInhpYlwiLFwieGlpXCIsXCJ4aWxcIixcInhpblwiLFwieGlwXCIsXCJ4aXJcIixcInhpc1wiLFwieGl2XCIsXCJ4aXlcIixcInhqYlwiLFwieGp0XCIsXCJ4a2FcIixcInhrYlwiLFwieGtjXCIsXCJ4a2RcIixcInhrZVwiLFwieGtmXCIsXCJ4a2dcIixcInhraFwiLFwieGtpXCIsXCJ4a2pcIixcInhra1wiLFwieGtsXCIsXCJ4a25cIixcInhrb1wiLFwieGtwXCIsXCJ4a3FcIixcInhrclwiLFwieGtzXCIsXCJ4a3RcIixcInhrdVwiLFwieGt2XCIsXCJ4a3dcIixcInhreFwiLFwieGt5XCIsXCJ4a3pcIixcInhsYVwiLFwieGxiXCIsXCJ4bGNcIixcInhsZFwiLFwieGxlXCIsXCJ4bGdcIixcInhsaVwiLFwieGxuXCIsXCJ4bG9cIixcInhscFwiLFwieGxzXCIsXCJ4bHVcIixcInhseVwiLFwieG1hXCIsXCJ4bWJcIixcInhtY1wiLFwieG1kXCIsXCJ4bWVcIixcInhtZlwiLFwieG1nXCIsXCJ4bWhcIixcInhtalwiLFwieG1rXCIsXCJ4bWxcIixcInhtbVwiLFwieG1uXCIsXCJ4bW9cIixcInhtcFwiLFwieG1xXCIsXCJ4bXJcIixcInhtc1wiLFwieG10XCIsXCJ4bXVcIixcInhtdlwiLFwieG13XCIsXCJ4bXhcIixcInhteVwiLFwieG16XCIsXCJ4bmFcIixcInhuYlwiLFwieG5kXCIsXCJ4bmdcIixcInhuaFwiLFwieG5pXCIsXCJ4bmpcIixcInhua1wiLFwieG5tXCIsXCJ4bm5cIixcInhub1wiLFwieG5xXCIsXCJ4bnJcIixcInhuc1wiLFwieG50XCIsXCJ4bnVcIixcInhueVwiLFwieG56XCIsXCJ4b2NcIixcInhvZFwiLFwieG9nXCIsXCJ4b2lcIixcInhva1wiLFwieG9tXCIsXCJ4b25cIixcInhvb1wiLFwieG9wXCIsXCJ4b3JcIixcInhvd1wiLFwieHBhXCIsXCJ4cGJcIixcInhwY1wiLFwieHBkXCIsXCJ4cGVcIixcInhwZlwiLFwieHBnXCIsXCJ4cGhcIixcInhwaVwiLFwieHBqXCIsXCJ4cGtcIixcInhwbFwiLFwieHBtXCIsXCJ4cG5cIixcInhwb1wiLFwieHBwXCIsXCJ4cHFcIixcInhwclwiLFwieHBzXCIsXCJ4cHRcIixcInhwdVwiLFwieHB2XCIsXCJ4cHdcIixcInhweFwiLFwieHB5XCIsXCJ4cHpcIixcInhxYVwiLFwieHF0XCIsXCJ4cmFcIixcInhyYlwiLFwieHJkXCIsXCJ4cmVcIixcInhyZ1wiLFwieHJpXCIsXCJ4cm1cIixcInhyblwiLFwieHJxXCIsXCJ4cnJcIixcInhydFwiLFwieHJ1XCIsXCJ4cndcIixcInhzYVwiLFwieHNiXCIsXCJ4c2NcIixcInhzZFwiLFwieHNlXCIsXCJ4c2hcIixcInhzaVwiLFwieHNqXCIsXCJ4c2xcIixcInhzbVwiLFwieHNuXCIsXCJ4c29cIixcInhzcFwiLFwieHNxXCIsXCJ4c3JcIixcInhzc1wiLFwieHN1XCIsXCJ4c3ZcIixcInhzeVwiLFwieHRhXCIsXCJ4dGJcIixcInh0Y1wiLFwieHRkXCIsXCJ4dGVcIixcInh0Z1wiLFwieHRoXCIsXCJ4dGlcIixcInh0alwiLFwieHRsXCIsXCJ4dG1cIixcInh0blwiLFwieHRvXCIsXCJ4dHBcIixcInh0cVwiLFwieHRyXCIsXCJ4dHNcIixcInh0dFwiLFwieHR1XCIsXCJ4dHZcIixcInh0d1wiLFwieHR5XCIsXCJ4dHpcIixcInh1YVwiLFwieHViXCIsXCJ4dWRcIixcInh1Z1wiLFwieHVqXCIsXCJ4dWxcIixcInh1bVwiLFwieHVuXCIsXCJ4dW9cIixcInh1cFwiLFwieHVyXCIsXCJ4dXRcIixcInh1dVwiLFwieHZlXCIsXCJ4dmlcIixcInh2blwiLFwieHZvXCIsXCJ4dnNcIixcInh3YVwiLFwieHdjXCIsXCJ4d2RcIixcInh3ZVwiLFwieHdnXCIsXCJ4d2pcIixcInh3a1wiLFwieHdsXCIsXCJ4d29cIixcInh3clwiLFwieHd0XCIsXCJ4d3dcIixcInh4YlwiLFwieHhrXCIsXCJ4eG1cIixcInh4clwiLFwieHh0XCIsXCJ4eWFcIixcInh5YlwiLFwieHlqXCIsXCJ4eWtcIixcInh5bFwiLFwieHl0XCIsXCJ4eXlcIixcInh6aFwiLFwieHptXCIsXCJ4enBcIl1cbixbIFwieWlcIixcInlvXCIsXCJ5YWFcIixcInlhYlwiLFwieWFjXCIsXCJ5YWRcIixcInlhZVwiLFwieWFmXCIsXCJ5YWdcIixcInlhaFwiLFwieWFpXCIsXCJ5YWpcIixcInlha1wiLFwieWFsXCIsXCJ5YW1cIixcInlhblwiLFwieWFvXCIsXCJ5YXBcIixcInlhcVwiLFwieWFyXCIsXCJ5YXNcIixcInlhdFwiLFwieWF1XCIsXCJ5YXZcIixcInlhd1wiLFwieWF4XCIsXCJ5YXlcIixcInlhelwiLFwieWJhXCIsXCJ5YmJcIixcInliZFwiLFwieWJlXCIsXCJ5YmhcIixcInliaVwiLFwieWJqXCIsXCJ5YmtcIixcInlibFwiLFwieWJtXCIsXCJ5Ym5cIixcInlib1wiLFwieWJ4XCIsXCJ5YnlcIixcInljaFwiLFwieWNsXCIsXCJ5Y25cIixcInljcFwiLFwieWRhXCIsXCJ5ZGRcIixcInlkZVwiLFwieWRnXCIsXCJ5ZGtcIixcInlkc1wiLFwieWVhXCIsXCJ5ZWNcIixcInllZVwiLFwieWVpXCIsXCJ5ZWpcIixcInllbFwiLFwieWVuXCIsXCJ5ZXJcIixcInllc1wiLFwieWV0XCIsXCJ5ZXVcIixcInlldlwiLFwieWV5XCIsXCJ5Z2FcIixcInlnaVwiLFwieWdsXCIsXCJ5Z21cIixcInlncFwiLFwieWdyXCIsXCJ5Z3NcIixcInlndVwiLFwieWd3XCIsXCJ5aGFcIixcInloZFwiLFwieWhsXCIsXCJ5aHNcIixcInlpYVwiLFwieWlmXCIsXCJ5aWdcIixcInlpaFwiLFwieWlpXCIsXCJ5aWpcIixcInlpa1wiLFwieWlsXCIsXCJ5aW1cIixcInlpblwiLFwieWlwXCIsXCJ5aXFcIixcInlpclwiLFwieWlzXCIsXCJ5aXRcIixcInlpdVwiLFwieWl2XCIsXCJ5aXhcIixcInlpeVwiLFwieWl6XCIsXCJ5a2FcIixcInlrZ1wiLFwieWtpXCIsXCJ5a2tcIixcInlrbFwiLFwieWttXCIsXCJ5a25cIixcInlrb1wiLFwieWtyXCIsXCJ5a3RcIixcInlrdVwiLFwieWt5XCIsXCJ5bGFcIixcInlsYlwiLFwieWxlXCIsXCJ5bGdcIixcInlsaVwiLFwieWxsXCIsXCJ5bG1cIixcInlsblwiLFwieWxvXCIsXCJ5bHJcIixcInlsdVwiLFwieWx5XCIsXCJ5bWFcIixcInltYlwiLFwieW1jXCIsXCJ5bWRcIixcInltZVwiLFwieW1nXCIsXCJ5bWhcIixcInltaVwiLFwieW1rXCIsXCJ5bWxcIixcInltbVwiLFwieW1uXCIsXCJ5bW9cIixcInltcFwiLFwieW1xXCIsXCJ5bXJcIixcInltc1wiLFwieW10XCIsXCJ5bXhcIixcInltelwiLFwieW5hXCIsXCJ5bmRcIixcInluZVwiLFwieW5nXCIsXCJ5bmhcIixcInlua1wiLFwieW5sXCIsXCJ5bm5cIixcInlub1wiLFwieW5xXCIsXCJ5bnNcIixcInludVwiLFwieW9iXCIsXCJ5b2dcIixcInlvaVwiLFwieW9rXCIsXCJ5b2xcIixcInlvbVwiLFwieW9uXCIsXCJ5b3NcIixcInlvdFwiLFwieW94XCIsXCJ5b3lcIixcInlwYVwiLFwieXBiXCIsXCJ5cGdcIixcInlwaFwiLFwieXBrXCIsXCJ5cG1cIixcInlwblwiLFwieXBvXCIsXCJ5cHBcIixcInlwelwiLFwieXJhXCIsXCJ5cmJcIixcInlyZVwiLFwieXJpXCIsXCJ5cmtcIixcInlybFwiLFwieXJtXCIsXCJ5cm5cIixcInlyb1wiLFwieXJzXCIsXCJ5cndcIixcInlyeVwiLFwieXNjXCIsXCJ5c2RcIixcInlzZ1wiLFwieXNsXCIsXCJ5c21cIixcInlzblwiLFwieXNvXCIsXCJ5c3BcIixcInlzclwiLFwieXNzXCIsXCJ5c3lcIixcInl0YVwiLFwieXRsXCIsXCJ5dHBcIixcInl0d1wiLFwieXR5XCIsXCJ5dWFcIixcInl1YlwiLFwieXVjXCIsXCJ5dWRcIixcInl1ZVwiLFwieXVmXCIsXCJ5dWdcIixcInl1aVwiLFwieXVqXCIsXCJ5dWtcIixcInl1bFwiLFwieXVtXCIsXCJ5dW5cIixcInl1cFwiLFwieXVxXCIsXCJ5dXJcIixcInl1dFwiLFwieXV1XCIsXCJ5dXdcIixcInl1eFwiLFwieXV5XCIsXCJ5dXpcIixcInl2YVwiLFwieXZ0XCIsXCJ5d2FcIixcInl3Z1wiLFwieXdsXCIsXCJ5d25cIixcInl3cVwiLFwieXdyXCIsXCJ5d3RcIixcInl3dVwiLFwieXd3XCIsXCJ5eGFcIixcInl4Z1wiLFwieXhsXCIsXCJ5eG1cIixcInl4dVwiLFwieXh5XCIsXCJ5eXJcIixcInl5dVwiLFwieXl6XCIsXCJ5emdcIixcInl6a1wiXVxuLFsgXCJ6YVwiLFwiemhcIixcInp1XCIsXCJ6YWFcIixcInphYlwiLFwiemFjXCIsXCJ6YWRcIixcInphZVwiLFwiemFmXCIsXCJ6YWdcIixcInphaFwiLFwiemFpXCIsXCJ6YWpcIixcInpha1wiLFwiemFsXCIsXCJ6YW1cIixcInphb1wiLFwiemFwXCIsXCJ6YXFcIixcInphclwiLFwiemFzXCIsXCJ6YXRcIixcInphdVwiLFwiemF2XCIsXCJ6YXdcIixcInpheFwiLFwiemF5XCIsXCJ6YXpcIixcInpiYVwiLFwiemJjXCIsXCJ6YmVcIixcInpibFwiLFwiemJ0XCIsXCJ6YnVcIixcInpid1wiLFwiemNhXCIsXCJ6Y2hcIixcInpkalwiLFwiemVhXCIsXCJ6ZWdcIixcInplaFwiLFwiemVuXCIsXCJ6Z2FcIixcInpnYlwiLFwiemdoXCIsXCJ6Z21cIixcInpnblwiLFwiemdyXCIsXCJ6aGJcIixcInpoZFwiLFwiemhpXCIsXCJ6aG5cIixcInpod1wiLFwiemh4XCIsXCJ6aWFcIixcInppYlwiLFwiemlrXCIsXCJ6aWxcIixcInppbVwiLFwiemluXCIsXCJ6aXJcIixcInppd1wiLFwieml6XCIsXCJ6a2FcIixcInprYlwiLFwiemtkXCIsXCJ6a2dcIixcInpraFwiLFwiemtrXCIsXCJ6a25cIixcInprb1wiLFwiemtwXCIsXCJ6a3JcIixcInprdFwiLFwiemt1XCIsXCJ6a3ZcIixcInprelwiLFwiemxhXCIsXCJ6bGVcIixcInpsalwiLFwiemxtXCIsXCJ6bG5cIixcInpscVwiLFwiemxzXCIsXCJ6bHdcIixcInptYVwiLFwiem1iXCIsXCJ6bWNcIixcInptZFwiLFwiem1lXCIsXCJ6bWZcIixcInptZ1wiLFwiem1oXCIsXCJ6bWlcIixcInptalwiLFwiem1rXCIsXCJ6bWxcIixcInptbVwiLFwiem1uXCIsXCJ6bW9cIixcInptcFwiLFwiem1xXCIsXCJ6bXJcIixcInptc1wiLFwiem10XCIsXCJ6bXVcIixcInptdlwiLFwiem13XCIsXCJ6bXhcIixcInpteVwiLFwiem16XCIsXCJ6bmFcIixcInpuZFwiLFwiem5lXCIsXCJ6bmdcIixcInpua1wiLFwiem5zXCIsXCJ6b2NcIixcInpvaFwiLFwiem9tXCIsXCJ6b29cIixcInpvcVwiLFwiem9yXCIsXCJ6b3NcIixcInpwYVwiLFwienBiXCIsXCJ6cGNcIixcInpwZFwiLFwienBlXCIsXCJ6cGZcIixcInpwZ1wiLFwienBoXCIsXCJ6cGlcIixcInpwalwiLFwienBrXCIsXCJ6cGxcIixcInpwbVwiLFwienBuXCIsXCJ6cG9cIixcInpwcFwiLFwienBxXCIsXCJ6cHJcIixcInpwc1wiLFwienB0XCIsXCJ6cHVcIixcInpwdlwiLFwienB3XCIsXCJ6cHhcIixcInpweVwiLFwienB6XCIsXCJ6cWVcIixcInpyYVwiLFwienJnXCIsXCJ6cm5cIixcInpyb1wiLFwienJwXCIsXCJ6cnNcIixcInpzYVwiLFwienNrXCIsXCJ6c2xcIixcInpzbVwiLFwienNyXCIsXCJ6c3VcIixcInp0ZVwiLFwienRnXCIsXCJ6dGxcIixcInp0bVwiLFwienRuXCIsXCJ6dHBcIixcInp0cVwiLFwienRzXCIsXCJ6dHRcIixcInp0dVwiLFwienR4XCIsXCJ6dHlcIixcInp1YVwiLFwienVoXCIsXCJ6dW1cIixcInp1blwiLFwienV5XCIsXCJ6d2FcIixcInp4eFwiLFwienliXCIsXCJ6eWdcIixcInp5alwiLFwienluXCIsXCJ6eXBcIixcInp6YVwiLFwienpqXCJdXG5dO1xuXG5cbmV4cG9ydCBjbGFzcyBMYW5nVXRpbCB7XG5cbiAgICAvKiBEZXRlcm1pbmUgaWYgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQgQkNQIDQ3IHN0cmluZyAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNCY3A0NyhsYW5nU3RyOiBzdHJpbmcpIDogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXigoW2EtekEtWl17MiwzfSgtW2EtekEtWl0oLVthLXpBLVpdezN9KXswLDJ9KT98W2EtekEtWl17NH18W2EtekEtWl17NSw4fSkoLVthLXpBLVpdezR9KT8oLShbYS16QS1aXXsyfXxbMC05XXszfSkpPygtKFswLTlhLXpBLVpdezUsOH18WzAtOV1bYS16QS1aXXszfSkpKigtWzAtOWEtd3ktekEtV1ktWl0oLVthLXpBLVowLTldezIsOH0pKykqKC14KC1bYS16QS1aMC05XXsxLDh9KSspP3x4KC1bYS16QS1aMC05XXsxLDh9KSt8KGVuLUdCLW9lZHxpLWFtaXxpLWJubnxpLWRlZmF1bHR8aS1lbm9jaGlhbnxpLWhha3xpLWtsaW5nb258aS1sdXh8aS1taW5nb3xpLW5hdmFqb3xpLXB3bnxpLXRhb3xpLXRheXxpLXRzdXxzZ24tQkUtRlJ8c2duLUJFLU5MfHNnbi1DSC1ERXxhcnQtbG9qYmFufGNlbC1nYXVsaXNofG5vLWJva3xuby1ueW58emgtZ3VveXV8emgtaGFra2F8emgtbWlufHpoLW1pbi1uYW58emgteGlhbmcpKSQvLnRlc3QobGFuZ1N0cilcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHZhbGlkUHJpbWFyeUxhbmcobGFuZ1N0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBwcmltYXJ5ID0gbGFuZ1N0ci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAocHJpbWFyeS5pbmNsdWRlcyhcIi1cIikpIHtcbiAgICAgICAgICAgIHByaW1hcnkgPSBwcmltYXJ5LnNwbGl0KFwiLVwiKVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcHJpbWFyeS5tYXRjaCgvW2Etel17MiwzfS8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgLy8gcWFhLi5xdHpcbiAgICAgICAgaWYgKHByaW1hcnkubGVuZ3RoID09PSAzIFxuICAgICAgICAgICAgJiYgcHJpbWFyeS5jaGFyQXQoMCkgPT09IFwicVwiXG4gICAgICAgICAgICAmJiBwcmltYXJ5LmNoYXJDb2RlQXQoMSkgPj0gOTcgJiYgcHJpbWFyeS5jaGFyQ29kZUF0KDEpIDw9IDExNlxuICAgICAgICAgICAgJiYgcHJpbWFyeS5jaGFyQ29kZUF0KDIpID49IDk3ICYmIHByaW1hcnkuY2hhckNvZGVBdCgyKSA8PSAxMjIpIHtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRQcmltYXJ5TGFuZ3NbcHJpbWFyeS5jaGFyQ29kZUF0KDApLTk3XS5pbmNsdWRlcyhwcmltYXJ5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1hdGNoUHJpbWFyeUxhbmcobGFuZzE6IHN0cmluZywgbGFuZzI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcHJpbWFyeTEgPSBsYW5nMTtcbiAgICAgICAgaWYgKHByaW1hcnkxLmluY2x1ZGVzKFwiLVwiKSkge1xuICAgICAgICAgICAgcHJpbWFyeTEgPSBwcmltYXJ5MS5zcGxpdChcIi1cIilbMF07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcHJpbWFyeTIgPSBsYW5nMjtcbiAgICAgICAgaWYgKHByaW1hcnkyLmluY2x1ZGVzKFwiLVwiKSkge1xuICAgICAgICAgICAgcHJpbWFyeTIgPSBwcmltYXJ5Mi5zcGxpdChcIi1cIilbMF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJpbWFyeTEgPT09IHByaW1hcnkyO1xuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEFSSUFEZWZpbml0aW9ucywgSURvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudCB9IGZyb20gXCIuLi8uLi8uLi9hcmlhL0FSSUFEZWZpbml0aW9uc1wiO1xuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuLi8uLi8uLi9hcmlhL0FSSUFNYXBwZXJcIjtcbmltcG9ydCB7IENhY2hlRG9jdW1lbnQsIENhY2hlRWxlbWVudCB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24vRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi9mcmFnbWVudFwiO1xuXG5leHBvcnQgY2xhc3MgUlBUVXRpbCB7XG4gICAgLy8gVGhpcyBsaXN0IGNvbnRhaW5zIGEgbGlzdCBvZiBlbGVtZW50IHRhZ3Mgd2hpY2ggY2FuIG5vdCBiZSBoaWRkZW4sIHdoZW4gaGlkZGVuIGlzXG4gICAgLy8gYWRkZWQgdG8gdGhlc2VzIGVsZW1lbnRzIGl0IGRvZXMgbm90IGRvIGFueXRoaW5nIGF0IGFsbC5cbiAgICAvLyAgYXJlYSAtLT4gYXJlYSBlbGVtZW50IGlzIHBhcnQgb2YgYSBtYXAgZWxlbWVudCBhbmQgaXQgY2FuIG5vdCBiZSBoaWRkZW4gYmVjYXVzZSBpdCBpcyB1c2VkIHRvXG4gICAgLy8gICAgICAgICAgIG1ha2UgYW4gY2VydGlhbiBwYXJ0cyBvZiBhbiBtYXAgaW50ZXJhY3RpdmUuXG4gICAgLy8gIHBhcmFtIC0tPiBlbGVtZW50IGNhbiBvbmx5IGJlIHBhcnQgb2Ygb2JqZWN0IGVsbWVudCBhbmQgaXQgY2Fubm90IGJlIGhpZGRlbiBkaXJlY3RseSwgaXRcbiAgICAvLyAgICAgICAgICAgIGNhbiBvbmx5IGJlIGhpZGRlbiBpZiB0aGUgcGFyZW50IGlzIGhpZGRlbi5cbiAgICAvLyAgYXVkaW8gLS0+IElmIHRoaXMgZWxlbWVudCBpcyBoaWRkZW4gaXQgd2lsbCBzdGlsbCBwbGF5IHRoZSBtdXNpYywgc28gd2Ugc2hvdWxkIHN0aWxsIHRyaWdnZXJcbiAgICAvLyAgICAgICAgICAgIHZpb2xhdGlvbnMgZm9yIHRoaXMgZWxlbWVudC5cbiAgICAvLyBOb3RlOiBBbGwgZWxlbWVudCB0YWdzIHRoYXQgYXJlIGFkZGVkIGhlcmUgc2hvdWxkIGJlIGFkZGVkIGFzIGxvd2VyY2FzZSwgYXMgd2UgYXJlIHVzaW5nIGluZGV4T2YgdG8gZG8gdGhlIGNoZWNrLlxuICAgIHB1YmxpYyBzdGF0aWMgdW5oaWRlYWJsZUVsZW1lbnRzID0gWydhcmVhJywgJ3BhcmFtJywgJ2F1ZGlvJ107XG5cbiAgICAvLyBUaGlzIGxpc3QgY29udGFpbnMgYSBsaXN0IG9mIGVsZW1lbnRzIHRhZ3Mgd2hpY2ggaGF2ZSBkaXNwbGF5OiBub25lIGJ5IGRlZmF1bHQsIHNpbmNlIHdlIGhhdmUgcnVsZXMgdHJpZ2dlcmluZ1xuICAgIC8vIG9uIHRoZXNlcyBlbGVtZW50cyB3ZSBuZWVkIHRvIG1ha2UgdGhlbiB2aXNpYmxlIGJ5IGRlZmF1bHQgc28gdGhhdCB0aGUgcnVsZXMgY2FuIHRyaWdnZXIgcmVnYXJkbGVzcyBvZiB0aGVcbiAgICAvLyBDaGVjayBIaWRkZW4gQ29udGVudCBvcHRpb24gaW4gdGhlIHRvb2xzLlxuICAgIC8vICBzY3JpcHQgLS0+IHNjcmlwdCBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdFxuICAgIC8vICBsaW5rIC0tPiBsaW5rIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgdGhlIGFjdHVhbGx5IENTUyBzY3JpcHQgaXMgc3RpbGwgZXhlY3V0ZWQgc28gd2UgaGF2ZSB0b1xuICAgIC8vICAgICAgICAgICAgbWFyayB0aGlzIGVsZW1lbnQgYXMgdmlzaWJsZSBhdCBhbGwgdGltZXMuXG4gICAgLy8gIHN0eWxlIC0tPiBzdHlsZSBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYnV0IHRoZSBhY3R1YWxseSBDU1Mgc2NyaXB0IGlzIHN0aWxsIGV4ZWN1dGVkIHNvIHdlIGhhdmUgdG9cbiAgICAvLyAgICAgICAgICAgIG1hcmsgdGhpcyBlbGVtZW50IGFzIHZpc2libGUgYXQgYWxsIHRpbWVzLlxuICAgIC8vICBoZWFkIC0tPiBoZWFkIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgaXQgd2lsbCBzdGlsbCBiZWhhdmUgY29ycmVjdFxuICAgIC8vICB0aXRsZSAtLT4gdGl0bGUgZWxlbWVudHMgaGF2ZSBkaXNwbGF5OiBub25lIGJ5IGRlZmF1bHQsIGJ1dCBpdCB3aWxsIHN0aWxsIGRpc3BsYXkgdGhlIHRpdGxlXG4gICAgLy8gIG1ldGEgLS0+IG1ldGEgZWxlbWVudHMgaGF2ZSBkaXNwbGF5OiBub25lIGJ5IGRlZmF1bHQsIGJ1dCBpdCB3aWxsIHN0aWxsIHBlcmZvcm0gdGhlIGFjdGlvbiB0aGF0IG1ldGEgaXMgc3VwcG9zZSB0b1xuICAgIC8vICBiYXNlIC0tPiBiYXNlIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgaXQgd2lsbCBzdGlsbCBwZXJmb3JtIHRoZSBhY3Rpb24gdGhhdCBtZXRhIGlzIHN1cHBvc2UgdG9cbiAgICAvLyAgbm9zY3JpcHQgLS0+IG5vc2NyaXB0IGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgaXQgd2lsbCBzdGlsbCBwZXJmb3JtIHRoZSBhY3Rpb24gdGhhdCBtZXRhIGlzIHN1cHBvc2UgdG9cbiAgICAvLyAgdGVtcGxhdGUgLS0+IHRlbXBsYXRlIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBiZWNhdXNlIHRoZXkgYXJlIGp1c3QgYSBtZWNoYW5pc20gZm9yIGhvbGRpbmcgY2xpZW50LXNpZGUgY29udGVudFxuICAgIC8vICAgICAgICAgICAgICAgdGhhdCBpcyBub3QgdG8gYmUgcmVuZGVyZWQgd2hlbiBhIHBhZ2UgaXMgbG9hZGVkLiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvdGVtcGxhdGVcbiAgICAvLyAgZGF0YWxpc3QgLS0+IGRhdGFsaXN0IGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LFxuICAgIHB1YmxpYyBzdGF0aWMgaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgPSBbJ3NjcmlwdCcsICdsaW5rJywgJ3N0eWxlJywgJ2hlYWQnLCAndGl0bGUnLCAnbWV0YScsICdiYXNlJywgJ25vc2NyaXB0JywgJ3RlbXBsYXRlJywgJ2RhdGFsaXN0J11cblxuXG4gICAgLy8gVGhpcyBsaXN0IGNvbnRhaW5zIGEgbGlzdCBvZiBlbGVtZW50cyB0YWdzIHdoaWNoIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBzaW5jZSB3ZSBoYXZlIHJ1bGVzIHRyaWdnZXJpbmdcbiAgICBwdWJsaWMgc3RhdGljIG5hdkxpbmtLZXl3b3JkcyA9IFsnc3RhcnQnLCAnbmV4dCcsICdwcmV2JywgJ3ByZXZpb3VzJywgJ2NvbnRlbnRzJywgJ2luZGV4J11cblxuICAgIC8vIFRoaXMgbGlzdCBjb250YWlucyBhIGxpc3Qgb2YgcnVsZSBpZHMgZm9yIHRoZSBydWxlcyB0aGF0IGhhdmUgdG8gY2hlY2sgZm9yIGhpZGRlbiBjb250ZW50IHJlZ2FyZGxlc3Mgb2YgdGhlIENoZWNrIEhpZGRlblxuICAgIC8vIENvbnRlbnQgU2V0dGluZy4gVGhpcyBtZWFucyB0aGF0IHdoZW4gdGhlIGVuZ2luZSBpcyBhY3R1YWxseSBkZXRlcm1pbmUgd2hpY2ggZWxlbWVudHMgdG8gbWFzcyB0byB0aGUgcnVsZXMsIGl0IHdpbGwgYWx3YXlzXG4gICAgLy8gcGFzcyB0aGVzZXMgcnVsZXMgbm8gbWF0dGVyIHdoYXQgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IFNldHRpbmcgaXMuXG4gICAgcHVibGljIHN0YXRpYyBydWxlc1RoYXRIYXZlVG9DaGVja0hpZGRlbiA9IFsnUlBUX0VsZW1fVW5pcXVlSWQnXVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0RlZmluZWRBcmlhQXR0cmlidXRlQXRJbmRleChlbGUsIGluZGV4KSB7XG4gICAgICAgIGxldCBhdHRyTmFtZSA9IGVsZS5hdHRyaWJ1dGVzW2luZGV4XS5uYW1lO1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5pc0RlZmluZWRBcmlhQXR0cmlidXRlKGVsZSwgYXR0ck5hbWUpO1xuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2ludHJvc3RhdGVzXG4gICAgcHVibGljIHN0YXRpYyBhcmlhQXR0cmlidXRlUm9sZURlZmF1bHRzID0ge1xuICAgICAgICBcImFsZXJ0XCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1saXZlXCI6IFwiYXNzZXJ0aXZlXCIsXG4gICAgICAgICAgICBcImFyaWEtYXRvbWljXCI6IFwidHJ1ZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29tYm9ib3hcIjoge1xuICAgICAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwibGlzdGJveFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibGlzdGJveFwiOiB7XG4gICAgICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogXCJ2ZXJ0aWNhbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibG9nXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1saXZlXCI6IFwicG9saXRlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtZW51XCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBcInZlcnRpY2FsXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtZW51YmFyXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBcImhvcml6b250YWxcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1ldGVyXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1pblwiOiBcIjBcIixcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiBcIjEwMFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwib3B0aW9uXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBcImZhbHNlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwcm9ncmVzc2JhclwiOiB7XG4gICAgICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogXCIwXCIsXG4gICAgICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogXCIxMDBcIlxuICAgICAgICB9LFxuICAgICAgICBcInNjcm9sbGJhclwiOiB7XG4gICAgICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogXCJ2ZXJ0aWNhbFwiLFxuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IFwiMFwiLFxuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWF4XCI6IFwiMTAwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXBhcmF0b3JcIjoge1xuICAgICAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IFwiMFwiLFxuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWF4XCI6IFwiMTAwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzbGlkZXJcIjoge1xuICAgICAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IFwiMFwiLFxuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWF4XCI6IFwiMTAwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzcGluYnV0dG9uXCI6IHtcbiAgICAgICAgICAgIC8vIE5vdCBzdXJlIGhvdyB0byBlbmNvZGUgbWluL21heCAob3Igbm93IGluIDEuMiAtIFwiaGFzIG5vIHZhbHVlXCIpXG4gICAgICAgICAgICAvL1wiYXJpYS12YWx1ZW5vd1wiOiBcIjBcIiBUT0RPOiBhdCByaXNrOiBtYXliZSBkZWxldGUgYWZ0ZXIgQVJJQSAxLjIgcmVhY2hlcyBwcm9wb3NlZCByZWNcbiAgICAgICAgICAgIC8vIFByb2JhYmx5IGp1c3QgZGVsZXRlIHNwaW5idXR0b24gZnJvbSB0aGlzIGxpc3QgY29tcGxldGVseSBhbmQgbGV0IHVzZXIgYWdlbnRzIGhhbmRsZSBcImRlZmF1bHRzXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzdGF0dXNcIjoge1xuICAgICAgICAgICAgXCJhcmlhLWxpdmVcIjogXCJwb2xpdGVcIixcbiAgICAgICAgICAgIFwiYXJpYS1hdG9taWNcIjogXCJ0cnVlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0YWJcIjoge1xuICAgICAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IFwiZmFsc2VcIlxuICAgICAgICB9LFxuICAgICAgICBcInRhYmxpc3RcIjoge1xuICAgICAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IFwiaG9yaXpvbnRhbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidG9vbGJhclwiOiB7XG4gICAgICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogXCJob3Jpem9udGFsXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0cmVlXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBcInZlcnRpY2FsXCJcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYXRvbWljXG4gICAgcHVibGljIHN0YXRpYyBhcmlhQXR0cmlidXRlR2xvYmFsRGVmYXVsdHMgPSB7XG4gICAgICAgIFwiYXJpYS1hdG9taWNcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IFwibm9uZVwiLFxuICAgICAgICBcImFyaWEtYnVzeVwiOiBcImZhbHNlXCIsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLWN1cnJlbnRcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtZHJvcGVmZmVjdFwiOiBcIm5vbmVcIixcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLWdyYWJiZWRcIjogdW5kZWZpbmVkLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLWludmFsaWRcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtbGl2ZVwiOiBcIm9mZlwiLFxuICAgICAgICBcImFyaWEtbW9kYWxcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtbXVsdGlsaW5lXCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiOiBcImZhbHNlXCIsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiB1bmRlZmluZWQsXG4gICAgICAgIFwiYXJpYS1wcmVzc2VkXCI6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLXJlYWRvbmx5XCI6IFwiZmFsc2VcIixcbiAgICAgICAgLy9cImFyaWEtcmVsZXZhbnRcIjogXCJhZGRpdGlvbnMgdGV4dFwiLCBUT0RPOiBhcmUgbXVsdGlwbGUgdmFsdWVzIHN1cHBvcnRlZD9cbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLXNvcnRcIjogXCJub25lXCJcbiAgICB9XG5cbiAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbC1hYW0tMS4wLyNodG1sLWF0dHJpYnV0ZS1zdGF0ZS1hbmQtcHJvcGVydHktbWFwcGluZ3NcbiAgICBwdWJsaWMgc3RhdGljIGFyaWFBdHRyaWJ1dGVJbXBsaWNpdE1hcHBpbmdzID0ge1xuICAgICAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IHtcbiAgICAgICAgICAgIFwiZm9ybVwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIm9mZlwiID09PSBlLmdldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiKSA/IFwibm9uZVwiIDogXCJib3RoXCI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIm9mZlwiID09PSBlLmdldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiKSA/IFwibm9uZVwiIDogXCJib3RoXCI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZWxlY3RcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJvZmZcIiA9PT0gZS5nZXRBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIikgPyBcIm5vbmVcIiA6IFwiYm90aFwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGV4dGFyZWFcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJvZmZcIiA9PT0gZS5nZXRBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIikgPyBcIm5vbmVcIiA6IFwiYm90aFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICBcImlucHV0XCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuaGFzQXR0cmlidXRlKFwiaW5kZXRlcm1pbmF0ZVwiKSkgcmV0dXJuIFwibWl4ZWRcIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIiArIGUuaGFzQXR0cmlidXRlKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lbnVpdGVtXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuaGFzQXR0cmlidXRlKFwiaW5kZXRlcm1pbmF0ZVwiKSkgcmV0dXJuIFwibWl4ZWRcIjtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIiArIGUuaGFzQXR0cmlidXRlKFwiY2hlY2tlZFwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIipcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS5oYXNBdHRyaWJ1dGUoXCJpbmRldGVybWluYXRlXCIpKSByZXR1cm4gXCJtaXhlZFwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IHtcbiAgICAgICAgICAgIFwiYnV0dG9uXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZmllbGRzZXRcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm9wdGdyb3VwXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwib3B0aW9uXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2VsZWN0XCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGV4dGFyZWFcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiB7XG4gICAgICAgICAgICBcImRldGFpbHNcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJvcGVuXCIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkaWFsb2dcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJvcGVuXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjoge1xuICAgICAgICAgICAgXCJzZWxlY3RcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS5oYXNBdHRyaWJ1dGUoXCJtdWx0aXBsZVwiKSkgcmV0dXJuIFwidHJ1ZVwiO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXBsYWNlaG9sZGVyXCI6IHtcbiAgICAgICAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJwbGFjZWhvbGRlclwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGV4dGFyZWFcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJwbGFjZWhvbGRlclwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtcmVxdWlyZWRcIjoge1xuICAgICAgICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZWxlY3RcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGV4dGFyZWFcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBpbXBsaWNpdCBhcmlhIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZSwgYW4gaW5wdXQgd2l0aCBjaGVja2VkIGlzIGVxdWl2YWxlbnQgdG8gYXJpYS1jaGVja2VkPVwidHJ1ZVwiXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRBcmlhQXR0cmlidXRlKGVsZSwgYXR0cmlidXRlTmFtZSkge1xuICAgICAgICAvLyBJZiB0aGUgYXR0cmlidXRlIGlzIGRlZmluZWQsIGl0IHRha2VzIHByZWNlZGVuY2VcbiAgICAgICAgbGV0IHJldFZhbCA9IGVsZS5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7XG5cbiAgICAgICAgaWYgKGVsZS5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkgJiYgcmV0VmFsLnRyaW0oKSA9PT0gXCJcIikgeyAvL1wiXCIgaXMgdHJlYXRlZCBhcyBmYWxzZSwgc28gd2UgbmVlZCByZXR1cm4gaXQgYmVmb3JlIHRoZSBiZWxvdyBjaGVja1xuICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGVuIGRldGVybWluZSBpbXBsaWNpdCB2YWx1ZXMgZnJvbSBvdGhlciBhdHRyaWJ1dGVzXG4gICAgICAgIGlmICghcmV0VmFsKSB7XG4gICAgICAgICAgICBsZXQgdGFnID0gZWxlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSBpbiBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVJbXBsaWNpdE1hcHBpbmdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhZyBpbiBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVJbXBsaWNpdE1hcHBpbmdzW2F0dHJpYnV0ZU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IFJQVFV0aWwuYXJpYUF0dHJpYnV0ZUltcGxpY2l0TWFwcGluZ3NbYXR0cmlidXRlTmFtZV1bdGFnXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocmV0VmFsKSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwoZWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXCIqXCIgaW4gUlBUVXRpbC5hcmlhQXR0cmlidXRlSW1wbGljaXRNYXBwaW5nc1thdHRyaWJ1dGVOYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVJbXBsaWNpdE1hcHBpbmdzW2F0dHJpYnV0ZU5hbWVdW1wiKlwiXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocmV0VmFsKSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwoZWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIHJvbGUtYmFzZWQgZGVmYXVsdHNcbiAgICAgICAgaWYgKCFyZXRWYWwpIHtcbiAgICAgICAgICAgIGxldCByb2xlID0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKGVsZSk7XG4gICAgICAgICAgICBpZiAocm9sZSBpbiBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVSb2xlRGVmYXVsdHMgJiYgYXR0cmlidXRlTmFtZSBpbiBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVSb2xlRGVmYXVsdHNbcm9sZV0pIHtcbiAgICAgICAgICAgICAgICByZXRWYWwgPSBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVSb2xlRGVmYXVsdHNbcm9sZV1bYXR0cmlidXRlTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocmV0VmFsKSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbChlbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0aWxsIG5vdCBkZWZpbmVkPyBDaGVjayBnbG9iYWwgZGVmYXVsdHNcbiAgICAgICAgaWYgKCFyZXRWYWwgJiYgYXR0cmlidXRlTmFtZSBpbiBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVHbG9iYWxEZWZhdWx0cykge1xuICAgICAgICAgICAgcmV0VmFsID0gUlBUVXRpbC5hcmlhQXR0cmlidXRlR2xvYmFsRGVmYXVsdHNbYXR0cmlidXRlTmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRhYlRhZ01hcCA9IHtcbiAgICAgICAgXCJidXR0b25cIjogZnVuY3Rpb24gKGVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJpZnJhbWVcIjogdHJ1ZSxcbiAgICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbiAoZWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKSAhPT0gXCJoaWRkZW5cIiAmJiAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJzZWxlY3RcIjogZnVuY3Rpb24gKGVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiAhZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZXh0YXJlYVwiOiB0cnVlLFxuICAgICAgICBcImRpdlwiOiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpO1xuICAgICAgICB9LFxuICAgICAgICBcImFcIjogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIC8vIHhsaW5rOmhyZWY/PyBzZWUgc3ZnXG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpO1xuICAgICAgICB9LFxuICAgICAgICBcImFyZWFcIjogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImhyZWZcIik7XG4gICAgICAgIH0sXG4gICAgICAgIFwiYXVkaW9cIjogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpO1xuICAgICAgICB9LFxuICAgICAgICBcInZpZGVvXCI6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJzdW1tYXJ5XCI6IHRydWVcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHdvcmRDb3VudChzdHIpIDogbnVtYmVyIHtcbiAgICAgICAgc3RyID0gc3RyLnRyaW0oKTtcbiAgICAgICAgaWYgKHN0ci5sZW5ndGggPT09IDApIHJldHVybiAwO1xuICAgICAgICByZXR1cm4gc3RyLnNwbGl0KC9cXHMrL2cpLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IGRldGVjdHMgaWYgdGhlIGVsZW1lbnQgaXRzZWxmIGlzIGluIHRoZSB0YWIgb3JkZXIuXG4gICAgICogSG93ZXZlciwgdGhpcyBlbGVtZW50IG1heSBkZWxlZ2F0ZSBmb2N1cyB0byBhbm90aGVyIGVsZW1lbnQgdmlhIGFyaWEtYWN0aXZlZGVzY2VuZGFudFxuICAgICAqIEFsc28sIGZvY3VzIHZhcmllcyBieSBicm93c2VyLi4uICBzdGlja2luZyB0byB0aGluZ3MgdGhhdCBhcmUgZm9jdXNhYmxlIG9uIGNocm9tZSBhbmQgZmlyZWZveFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNUYWJiYWJsZShlbGVtZW50KSB7XG4gICAgICAgIC8vIFVzaW5nIGh0dHBzOi8vYWxseWpzLmlvL2RhdGEtdGFibGVzL2ZvY3VzYWJsZS5odG1sXG4gICAgICAgIC8vIEhhbmRsZSB0aGUgZXhwbGljaXQgY2FzZXMgZmlyc3RcbiAgICAgICAgaWYgKCFSUFRVdGlsLmlzTm9kZVZpc2libGUoZWxlbWVudCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpKSA+PSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV4cGxpY2l0IGNhc2VzIGhhbmRsZWQgLSBub3cgdGhlIGltcGxpY2l0XG4gICAgICAgIGxldCBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKG5vZGVOYW1lIGluIFJQVFV0aWwudGFiVGFnTWFwKSB7XG4gICAgICAgICAgICBsZXQgcmV0VmFsID0gUlBUVXRpbC50YWJUYWdNYXBbbm9kZU5hbWVdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAocmV0VmFsKSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsKGVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdGFiSW5kZXhMRVplcm8oZWxlbSkge1xuICAgICAgICBpZiAoUlBUVXRpbC5oYXNBdHRyaWJ1dGUoZWxlbSwgXCJ0YWJpbmRleFwiKSkge1xuICAgICAgICAgICAgaWYgKGVsZW0uZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIikubWF0Y2goL14tP1xcZCskLykpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFiaW5kZXhWYWx1ZSA9IHBhcnNlSW50KGVsZW0uZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIikpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YWJpbmRleFZhbHVlID09PSAwIHx8IHRhYmluZGV4VmFsdWUgPT09IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy9UT0RPOiBmdW5jdGlvbiBkb2VzIG5vdCBoYW5kbGUgZXF1aXZhbGVudHMgZm9yIHJvbGVzOiByb3csIGxpbmssIGhlYWRlciwgYnV0dG9uXG4gICAgLy8gQnV0IGl0IG1heSBub3QgaGF2ZSB0by4gIEJ1ZyByZXBvcnRzIGhhdmUgYmVlbiBhYm91dCByYWRpbyBidXR0b25zIGFuZCBjaGVja2JveGVzLlxuICAgIHB1YmxpYyBzdGF0aWMgaXNIdG1sRXF1aXYobm9kZSwgaHRtbEVxdWl2KSB7XG4gICAgICAgIGxldCByZXRWYWwgPSBmYWxzZTtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBub2RlLmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaHRtbEVxdWl2LmluZGV4T2YoXCJjaGVja2JveFwiKSAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gdHlwZSA9PT0gXCJjaGVja2JveFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGh0bWxFcXVpdi5pbmRleE9mKFwicmFkaW9cIikgIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IHR5cGUgPT09IFwicmFkaW9cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZShlbGUsIGF0dHJOYW1lKSB7XG4gICAgICAgIGxldCBpc0RlZmluZWRBcmlhQXR0cmlidXRlID0gZmFsc2U7XG4gICAgICAgIGlmIChhdHRyTmFtZS5zdWJzdHJpbmcoMCwgNSkgPT09ICdhcmlhLScpIHtcbiAgICAgICAgICAgIC8vIFVzZXIgYWdlbnRzIFNIT1VMRCB0cmVhdCBzdGF0ZSBhbmQgcHJvcGVydHkgYXR0cmlidXRlcyB3aXRoIGEgdmFsdWUgb2YgXCJcIiB0aGUgc2FtZSBhcyB0aGV5IHRyZWF0IGFuIGFic2VudCBhdHRyaWJ1dGUuXG4gICAgICAgICAgICBpc0RlZmluZWRBcmlhQXR0cmlidXRlID0gZWxlLmhhc0F0dHJpYnV0ZSAmJiBlbGUuaGFzQXR0cmlidXRlKGF0dHJOYW1lKSAmJiBlbGUuZ2V0QXR0cmlidXRlKGF0dHJOYW1lKS5sZW5ndGggPiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0RlZmluZWRBcmlhQXR0cmlidXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgbm9ybWFsaXplU3BhY2luZyhzKSB7XG4gICAgICAgIHJldHVybiBzLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJyk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgbm9uRXhpc3RhbnRJRHMobm9kZSwgdGFyZ2V0aWRzKSB7XG4gICAgICAgIGxldCByZXR1cm5ub3Rmb3VuZGlkcyA9ICcnO1xuICAgICAgICBpZiAoUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHRhcmdldGlkcykubGVuZ3RoIDwgMSkgcmV0dXJuIHJldHVybm5vdGZvdW5kaWRzO1xuXG4gICAgICAgIGxldCB0YXJnZXRBcnJheSA9IHRhcmdldGlkcy5zcGxpdChcIiBcIik7XG4gICAgICAgIGxldCBkb2MgPSBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCB4cCA9IFwiLy8qW0BpZD0nXCIgKyB0YXJnZXRBcnJheVtpXSArIFwiJ11cIjtcbiAgICAgICAgICAgIGxldCB4cGF0aFJlc3VsdCA9IGRvYy5ldmFsdWF0ZSh4cCwgbm9kZSwgZG9jLmRlZmF1bHROU1Jlc29sdmVyLCAwIC8qIFhQYXRoUmVzdWx0LkFOWV9UWVBFICovLCBudWxsKTtcbiAgICAgICAgICAgIGxldCByID0geHBhdGhSZXN1bHQuaXRlcmF0ZU5leHQoKTtcbiAgICAgICAgICAgIGlmICghcikgcmV0dXJubm90Zm91bmRpZHMgKz0gdGFyZ2V0QXJyYXlbaV0gKyAnLCAnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcocmV0dXJubm90Zm91bmRpZHMpLmxlbmd0aCA+PSAyKVxuICAgICAgICAgICAgcmV0dXJubm90Zm91bmRpZHMgPSByZXR1cm5ub3Rmb3VuZGlkcy5zdWJzdHJpbmcoMCwgcmV0dXJubm90Zm91bmRpZHMubGVuZ3RoIC0gMik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybm5vdGZvdW5kaWRzID0gJyc7XG4gICAgICAgIHJldHVybiByZXR1cm5ub3Rmb3VuZGlkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldERvY0VsZW1lbnRzQnlUYWcoZWxlbSwgdGFnTmFtZSkge1xuICAgICAgICBsZXQgZG9jID0gRnJhZ21lbnRVdGlsLmdldE93bmVyRnJhZ21lbnQoZWxlbSkgYXMgYW55O1xuICAgICAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgY2FjaGUgPSBSUFRVdGlsLmdldENhY2hlKGRvYywgXCJSUFRfRE9DRUxFTVNCWVRBR1wiLCB7fSk7XG4gICAgICAgIGlmICghKHRhZ05hbWUgaW4gY2FjaGUpKSB7XG4gICAgICAgICAgICBjYWNoZVt0YWdOYW1lXSA9IGRvYy5xdWVyeVNlbGVjdG9yQWxsKHRhZ05hbWUpO1xuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShkb2MsIFwiUlBUX0RPQ0VMRU1TQllUQUdcIiwgY2FjaGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWNoZVt0YWdOYW1lXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBnZXQgYSBsaXN0IG9mIGFsbCB0aGUgY2hpbGQgZWxlbW50cyB3aGljaCBtYXRjaCB0aGUgdGFnXG4gICAgICogbmFtZSBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIE5vdGU6IFRoaXMgaXMgYSB3cmFwcGVyIGZ1bmN0aW9uIHRvOiBSUFRVdGlsLmdldENoaWxkQnlUYWdIaWRkZW5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBwYXJlbnRFbGVtIC0gVGhlIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcm0ge3N0cmluZ30gdGFnTmFtZSAtIFRoZSB0YWcgdG8gc2VhcmNoIGZvciB1bmRlciB0aGUgcGFyZW50IGVsZW1lbnRcbiAgICAgKiBAcGFybSB7Ym9vbGVhbn0gaWdub3JlSGlkZGVuIC0gdHJ1ZSBpZiBoaWRkZW4gZWxlbWVudHMgd2l0aCB0aGUgdGFnIHNob3VsZCBpZ25vcmVkIGZyb20gdGhlIGxpc3RcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgaWYgdGhlIGhpZGRlbiBlbGVtZW50cyBzaG91bGQgYmUgYWRkZWRcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0xpc3R9IHJldFZhbCAtIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyB3aGljaCBtYXRjaGVkIHRoZSB0YWcgdW5kZXIgdGhlIHBhcmVudCB0aGF0IHdlcmUgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2hpbGRCeVRhZyhwYXJlbnRFbGVtLCB0YWdOYW1lKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmdldENoaWxkQnlUYWdIaWRkZW4ocGFyZW50RWxlbSwgdGFnTmFtZSwgZmFsc2UsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBnZXQgYSBsaXN0IG9mIGFsbCB0aGUgY2hpbGQgZWxlbW50cyB3aGljaCBtYXRjaCB0aGUgdGFnXG4gICAgICogbmFtZSBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBwYXJlbnRFbGVtIC0gVGhlIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcm0ge3N0cmluZ30gdGFnTmFtZSAtIFRoZSB0YWcgdG8gc2VhcmNoIGZvciB1bmRlciB0aGUgcGFyZW50IGVsZW1lbnRcbiAgICAgKiBAcGFybSB7Ym9vbGVhbn0gaWdub3JlSGlkZGVuIC0gdHJ1ZSBpZiBoaWRkZW4gZWxlbWVudHMgd2l0aCB0aGUgdGFnIHNob3VsZCBpZ25vcmVkIGZyb20gdGhlIGxpc3RcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgaWYgdGhlIGhpZGRlbiBlbGVtZW50cyBzaG91bGQgYmUgYWRkZWRcbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJIaWRkZW5TZXR0aW5nIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBoaWRkZW4gc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0xpc3R9IHJldFZhbCAtIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyB3aGljaCBtYXRjaGVkIHRoZSB0YWcgdW5kZXIgdGhlIHBhcmVudCB0aGF0IHdlcmUgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2hpbGRCeVRhZ0hpZGRlbihwYXJlbnRFbGVtLCB0YWdOYW1lLCBpZ25vcmVIaWRkZW4sIGNvbnNpZGVySGlkZGVuU2V0dGluZykge1xuICAgICAgICAvLyBWYXJpYWJsZSBEZWNsZXJhdGlvblxuICAgICAgICBsZXQgcmV0VmFsID0gW107XG4gICAgICAgIGxldCBjaGlsZCA9IHBhcmVudEVsZW0uZmlyc3RDaGlsZDtcblxuICAgICAgICAvLyBMb29wIG92ZXIgYWxsIHRoZSBjaGlsZCBlbGVtZW50cyBvZiB0aGUgcGFyZW50IHRvIGJ1aWxkIGEgbGlzdCBvZiBhbGwgdGhlIGVsZW1lbnRzIHRoYXRcbiAgICAgICAgLy8gbWF0Y2ggdGhlIHRhZ05hbWUgcHJvdmlkZWRcbiAgICAgICAgd2hpbGUgKGNoaWxkICE9IG51bGwpIHtcblxuICAgICAgICAgICAgLy8gT25seSBpbmNsdWRlIHRoZSBjaGlsZHJlbiBpbnRvIHRoZSByZXR1cm4gYXJyYXkgaWYgdGhleSBtYXRjaCB3aXRoIHRhZ25hbWUuXG4gICAgICAgICAgICBpZiAoY2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZSkge1xuXG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCBpZ25vcmVoaWRkZW4gd2FzIHNldCB0byB0cnVlLCB0aGVuIHBlcmZvcm0gYSBpc05vZGVWaXNpYmxlIGNoZWNrXG4gICAgICAgICAgICAgICAgLy8gYW5kIGluIHRoZSBjYXNlIHRoZSBub2RlIGlzIG5vdCB2aXNpbGJsZSB3ZSBtb3JlIHRvIHRoZXNlcyB0aGVuIG1vdmUgdG8gdGhlIG5leHQgbm9kZS5cbiAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIGEgY291cGxlIG9mIGNoZWNrcyB0byBkZXRlcm1pbmUgaWYgaGlkZGVuIGVsZW1lbnRzIHNob3VsZCBiZSBpZ25vcmVkIG9yIG5vdC5cbiAgICAgICAgICAgICAgICAvLyAgMS4gV2hlbiBpZ25vcmVIaWRkZW4gaXMgc2V0IHRvIHRydWUgdXBmcm9udCwgdGhlbiBwZXJmb3JtIGEgaXNOb2RlVmlzaWJsZVxuICAgICAgICAgICAgICAgIC8vICAyLiBJZiBjb25zaWRlckhpZGRlblNldHRpbmcgb3B0aW9uIGlzIHNldCB0byB0cnVlIHRoZW4gd2UgcGVyZm9ybSB0aGUgY2hlY2sgdG8gY29uc2lkZXIgdGhlXG4gICAgICAgICAgICAgICAgLy8gICAgIENoZWNrIEhpZGRlbiBDb250ZW50IHRoYXQgaXMgcHJvdmlkZWQuXG4gICAgICAgICAgICAgICAgLy8gIDIuMS4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgLy8gICAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAgICAgLy8gICAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgICAgIGlmICgoaWdub3JlSGlkZGVuIHx8IChjb25zaWRlckhpZGRlblNldHRpbmcgJiYgIVJQVFV0aWwuc2hvdWxkQ2hlY2tIaWRkZW5Db250ZW50KGNoaWxkKSkpICYmICFSUFRVdGlsLmlzTm9kZVZpc2libGUoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE1vdmUgb24gdG8gdGhlIG5leHQgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFB1c2ggdGhlIGVsZW1lbnRcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgc2libGluZyBlbGVtZW50XG4gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyBhIGxpc3Qgb2YgZWxlbWVudHMgdGhhdCBtYXRjaCBnaXZlbiByb2xlcyhzKS5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGJ5IGRlZmF1bHkgd2lsbCBub3QgY29uc2lkZXIgQ2hlY2sgSGlkZGVuIFNldHRpbmcgYXQgYWxsLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYnkgZGVmYXVseSB3aWxsIG5vdCBjb25zaWRlciBpbXBsaWNpdCByb2xlcy5cbiAgICAgKiBOb3RlOiBUaGlzIGlzIGEgd3JhcHBlciBmdW5jdGlvbiB0bzogUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlblxuICAgICAqXG4gICAgICogQHBhcm0ge2RvY3VtZW50fSBkb2MgLSBUaGUgZG9jdW1lbnQgbm9kZVxuICAgICAqIEBwYXJtIHtsaXN0IG9yIHN0cmluZ30gcm9sZXMgLSBMaXN0IG9yIHNpbmdsZSByb2xlIGZvciB3aGljaCB0byByZXR1cm4gZWxlbWVudHMgYmFzZWQgb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtMaXN0fSByZXRWYWwgLSBsaXN0IG9mIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggbWF0Y2hlZCB0aGUgcm9sZShzKSB0aGF0IHdlcmUgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RWxlbWVudHNCeVJvbGUoZG9jLCByb2xlcykge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihkb2MsIHJvbGVzLCBmYWxzZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgYSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgbWF0Y2ggZ2l2ZW4gcm9sZXMocykuXG4gICAgICogVGhpcyBmdW5jdGlvbiBhc2xvIGZpbmRzIGVsZW1lbnRzIHdpdGggaW1wbGljaXQgcm9sZXMuXG4gICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gY29uc2lkZXIgZWxlbWVudHMgdGhhdCBhcmUgaGlkZGVuIGJhc2VkIG9uIHRoZSBpZiB0aGUgQ2hlY2tcbiAgICAgKiBIaWRkZW4gQ29udGVudCBzZXR0aW5ncyBzaG91bGQgYmUgY29uc2lkZXJlZCBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZG9jdW1lbnR9IGRvYyAtIFRoZSBkb2N1bWVudCBub2RlXG4gICAgICogQHBhcm0ge2xpc3Qgb3Igc3RyaW5nfSByb2xlcyAtIExpc3Qgb3Igc2luZ2xlIHJvbGUgZm9yIHdoaWNoIHRvIHJldHVybiBlbGVtZW50cyBiYXNlZCBvbi5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJIaWRkZW5TZXR0aW5nIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBoaWRkZW4gc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJJbXBsaWNpdFJvbGVzIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBpbXBsaWNpdCByb2xlcyBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TGlzdH0gcmV0VmFsIC0gbGlzdCBvZiBhbGwgdGhlIGVsZW1lbnRzIHdoaWNoIG1hdGNoZWQgdGhlIHJvbGUocykgdGhhdCB3ZXJlIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKGRvYywgcm9sZXMsIGNvbnNpZGVySGlkZGVuU2V0dGluZywgY29uc2lkZXJJbXBsaWNpdFJvbGVzPykge1xuICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZSByb2xlIHRvIGVsZW1lbnQgYXNzb2ljYXRpb24gaXMgYWxyZWFkeSBtYWRlLCBhbmQgYXZhaWxhYmxlIGluIHRoZSBnbG9iYWwgaGFzQXR0cmlidXRlXG4gICAgICAgIC8vIHdlIGNhbiBqdXN0IHVzZSB0aGF0IG9uZSBpbnN0ZWFkIG9mIGJ1aWxkaW5nIGEgbmV3IG9uZS5cbiAgICAgICAgbGV0IHJvbGVUb0VsZW1zID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbnNpZGVySW1wbGljaXRSb2xlcykge1xuICAgICAgICAgICAgcm9sZVRvRWxlbXMgPSBSUFRVdGlsLmdldENhY2hlKGRvYywgXCJSUFRVdGlsX0dFVEVMRU1FTlRTQllfUk9MRV9JTVBMSUNJVFwiLCBudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJvbGVUb0VsZW1zID0gUlBUVXRpbC5nZXRDYWNoZShkb2MsIFwiUlBUVXRpbF9HRVRFTEVNRU5UU0JZX1JPTEVcIiwgbnVsbCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIEJ1aWxkIHRoZSBuZXcgcm9sZSB0byBlbGVtZW50LCB0aGlzIGlzIHdoZXJlIHdlIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGVsZW1lbnRzIGFuZCBleHRyYWN0IGFsbCB0aGVcbiAgICAgICAgLy8gZWxlbWVudHMgYnNhZWQgb24gcm9sZXMuXG4gICAgICAgIGlmIChyb2xlVG9FbGVtcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gUmUtaW5pdGlhbGl6ZSB0aGUgcm9sZVRvRWxlbXMgaGFzaFxuICAgICAgICAgICAgcm9sZVRvRWxlbXMgPSB7fTtcblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBib2R5IG9mIHRoZSBkb2NcbiAgICAgICAgICAgIGxldCByb290ID0gZG9jLmJvZHk7XG5cbiAgICAgICAgICAgIC8vIEtlZXAgbG9vcGluZyB1bnRpbCB3ZSBhcmUgYXQgdGhlIHZlcnkgcGFyZW50IG5vZGUgb2YgdGhlIGVudGlyZSBwYWdlLCBzbyB0aGF0IHdlIGNhbiBsb29wIHRocm91Z2hcbiAgICAgICAgICAgIC8vIGFsbCB0aGUgbm9kZXMuXG4gICAgICAgICAgICB3aGlsZSAoRE9NVXRpbC5wYXJlbnROb2RlKHJvb3QpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBwYXJlbnROb2RlXG4gICAgICAgICAgICAgICAgcm9vdCA9IERPTVV0aWwucGFyZW50Tm9kZShyb290KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQnVpbGQgYSBub2Rld2FsdGVyIGJhc2VkIG9mIHRoZSByb290IG5vZGUsIHRoaXMgbm9kZSB3YWx0ZXIgd2lsbCBiZSB1c2UgbG9vcCBvdmVyIGFsbCB0aGUgbm9kZXNcbiAgICAgICAgICAgIC8vIGFuZCBidWlsZCB0aGUgcm9sZXMgdG8gRWxlbWVudCBjb3JhbGF0aW9uXG4gICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihyb290KTtcblxuICAgICAgICAgICAgLy8gTG9vcCBvdmVyIHRoZSBlbnRpcmUgZG9jL2xpc3Qgb2Ygbm9kZXMgdG8gYnVpbGQgdGhlIHJvbGUgdG8gZWxlbWVudCBtYXBcbiAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgd2lsbCBidWlsZCBhbiByb2xlVG9FbGVtcyBoYXNoIHdoaWNoIGlzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0LlxuICAgICAgICAgICAgLy8gcm9sZVRvRWxlbXMgPSB7XG4gICAgICAgICAgICAvLyAgICBkb2N1bWVudDogW3tkaXZ9LHthYmJyfSx7dmFyfV0sXG4gICAgICAgICAgICAvLyAgICBtYWluOiBbe2Rpdn1dLFxuICAgICAgICAgICAgLy8gICAgbmF2aWdhdGlvbjogW3tkaXZ9XVxuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgd2hpbGUgKG53Lm5leHROb2RlKCkpIHtcblxuICAgICAgICAgICAgICAgIC8vIE9ubHkgY2hlY2sgdGhlIGVsZW1lbnRzIHdoaWNoIGhhdmUgdGhlIHJvbGUgYXR0cmlidXRlIGFzc2ljaWF0ZWQgdG8gdGhlbVxuICAgICAgICAgICAgICAgIGlmICghbncuYkVuZFRhZykge1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCB3Um9sZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgLy9jaGVjayBpZiB0aGUgbm9kZSBoYXMgcm9sZSBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgICAgIGlmIChudy5lbGVtKCkgJiYgbncuZWxlbSgpLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4dHJhY3QgYWxsIHRoZSByb2xlcyB0aGF0IGFyZSBhc3NpZ25lZCB0byB0aGlzIGVsZW1lbnQsIGNhbiBoYXZlIG11bHRpcGxlIHJvbGVzIG9uIG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBzcGxpdCBieSBzcGFjZSwgc28gd2UgbmVlZCB0byBleHRyYWN0IGFsbCBvZiB0aGVtIGludG8gYW4gYXJyYXkuXG4gICAgICAgICAgICAgICAgICAgICAgICB3Um9sZXMgPSBudy5lbGVtKCkuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAod1JvbGVzLmxlbmd0aCA9PT0gMCAmJiBjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShudy5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBpbXBsaWNpdCByb2xlcyBmb3IgdGhpcyBlbGVtZW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhZ1Byb3BlcnR5ICYmIHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdSb2xlcyA9IHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh3Um9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAgICAgICAgIC8vICAxLiBJZiBjb25zaWRlckhpZGRlblNldHRpbmcgb3B0aW9uIGlzIHNldCB0byB0cnVlIHRoZW4gd2UgcGVyZm9ybSB0aGUgY2hlY2sgdG8gY29uc2lkZXIgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBDaGVjayBIaWRkZW4gQ29udGVudCB0aGF0IGlzIHByb3ZpZGVkLlxuICAgICAgICAgICAgICAgICAgICAvLyAgMi4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBzbyBvbiBhbmQgc28gZm9ydGguXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25zaWRlckhpZGRlblNldHRpbmcgJiYgUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKG53Lm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHJvbGVzIGFuZCBhc3NpZ25lZCB0aGlzIG5vZGUgdG8gYWxsIHRoZXMgcm9sZXNcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3Um9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgdGhlIHJvbGUga2V5IGlzIG5vdCBhbHJlYWR5IGluIHRoZSByb2xlVG9FbGVtcyBoYXNoLCBjb25zdHJ1Y3QgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhlIGtleSBhbmQgYXNzaWduIGVtcHR5IGFycmF5LlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEod1JvbGVzW2ldIGluIHJvbGVUb0VsZW1zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVUb0VsZW1zW3dSb2xlc1tpXV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRvIHRoZSBhcnJheSBmb3IgdGhlIHJvbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVUb0VsZW1zW3dSb2xlc1tpXV0ucHVzaChudy5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2V0IHRoZSByb2xlVG9FbGVtcyBoYXNoIG1hcCBhcyBhIGdsb2JhbCB2YXJpYWJsZVxuICAgICAgICAgICAgaWYgKGNvbnNpZGVySW1wbGljaXRSb2xlcykge1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoZG9jLCBcIlJQVFV0aWxfR0VURUxFTUVOVFNCWV9ST0xFX0lNUExJQ0lUXCIsIHJvbGVUb0VsZW1zKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShkb2MsIFwiUlBUVXRpbF9HRVRFTEVNRU5UU0JZX1JPTEVcIiwgcm9sZVRvRWxlbXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWxpemUgdGhlIHJldHVybiB2YWx1ZVxuICAgICAgICBsZXQgcmV0VmFsID0gW107XG5cbiAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlcyB3aGVyZSB0aGUgcHJvdmlkZWQgcm9sZSBpcyBhIHN0cmluZyBhbmQgbm90IGFuIGFycmF5LFxuICAgICAgICAvLyBmb3IgdGhpcyBjYXNlIHdlIHRha2UgdGhlIHN0cmluZyBhbmQgcHV0IGl0IGludG8gYW4gYXJyYXlcbiAgICAgICAgaWYgKHR5cGVvZiAocm9sZXMpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBsZXQgcm9sZSA9IHJvbGVzO1xuICAgICAgICAgICAgcm9sZXMgPSBbXTtcbiAgICAgICAgICAgIHJvbGVzLnB1c2gocm9sZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMb29wIHRocm91Z2ggdGhlIHJvbGVzIHRoYXQgd2VyZSBwcm92aWRlZCBhbmQgZmluZCB0aGUgbGlzdCBvZiBlbGVtZW50cyBmb3IgdGhpcyByb2xlc1xuICAgICAgICAvLyBhbmQgYWRkIHRoZW0gdG8gdGhlIHJldHVybiB2YWx1ZS5cbiAgICAgICAgaWYgKHJvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gbG9vcCBvdmVyIGFsbCB0aGUgcm9sZXNcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IHRoZSByb2xlIGZyb20gdGhlIGFycmF5XG4gICAgICAgICAgICAgICAgbGV0IG5leHRSb2xlID0gcm9sZXNbaV07XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyBmb3IgdGhpcyByb2xlXG4gICAgICAgICAgICAgICAgbGV0IGNvcHlSb2xlcyA9IHJvbGVUb0VsZW1zW25leHRSb2xlXTtcblxuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBlbGVtZW50cyB0byBjb3B5IHRvIGFub3RoZXIgYXJyYXksIHRoZW4gcGVyZm9ybSB0aGUgY29weVxuICAgICAgICAgICAgICAgIGlmIChjb3B5Um9sZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTG9vcCBvdmVyIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggYXJlIHRvIGJlIGNvcGllZFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvcHlSb2xlcy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHRoaXMgZWxlbWVudCB0byB0aGUgcmV0dXJuIHZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goY29weVJvbGVzW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHJldHJpZXZpbmcgZWxlbWVudCdzIHJvbGVzLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYXNsbyBmaW5kcyBpbXBsaWNpdCByb2xlcy5cbiAgICAgKiBAcGFybSB7SFRNTEVsZW1lbnR9IGVsZSAtIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGZpbmQgcm9sZS5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJJbXBsaWNpdFJvbGVzIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBpbXBsaWNpdCByb2xlcyBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TGlzdH0gcm9sZXMgLSBsaXN0IG9mIGF0dHJpYnV0ZSByb2xlcyBhbmQgaW1wbGljaXQgcm9sZXMuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Um9sZXMoZWxlOiBFbGVtZW50LCBjb25zaWRlckltcGxpY2l0Um9sZXM6IGJvb2xlYW4pIDogc3RyaW5nW10ge1xuICAgICAgICBsZXQgcm9sZXMgOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAoZWxlICYmIGVsZS5oYXNBdHRyaWJ1dGUgJiYgZWxlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgIGxldCBhdHRyUm9sZXMgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcoZWxlLmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJSb2xlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIHJvbGVzLnB1c2goYXR0clJvbGVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgaWYgaW1wbGljaXQgcm9sZXMgZXhpc3QuXG4gICAgICAgIC8vTm90ZTogZWxlbWVudCBjYW4gaGF2ZSBtdWx0aXBsZSBpbXBsaWNpdCByb2xlc1xuICAgICAgICBpZiAoY29uc2lkZXJJbXBsaWNpdFJvbGVzKSB7XG4gICAgICAgICAgICBsZXQgaW1wbGljaXRSb2xlID0gUlBUVXRpbC5nZXRJbXBsaWNpdFJvbGUoZWxlKTtcbiAgICAgICAgICAgIGlmIChpbXBsaWNpdFJvbGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vYWRkIGltcGxpY2l0IHJvbGVzIHRvIHRoZSBhdHRyaWJ1dGVzIHJvbGVzLlxuICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdChpbXBsaWNpdFJvbGUsIHJvbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm9sZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaW1wbGljaXQgcm9sZSBvZiB0aGUgZWxlbWVtZW50XG4gICAgICogQHBhcm0ge0hUTUxFbGVtZW50fSBlbGUgLSBlbGVtZW50IGZvciB3aGljaCB0byBmaW5kIHJvbGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHRoZSBpbXBsaWNpdCByb2xlIG9yIFtdIGlmIGRvZXNuJ3QgZXhpc3RcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbXBsaWNpdFJvbGUoZWxlKSB7XG4gICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShlbGUpO1xuICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljaXQgcm9sZXMgZm9yIHRoaXMgZWxlbWVudC5cbiAgICAgICAgaWYgKHRhZ1Byb3BlcnR5KSB7XG4gICAgICAgICAgICBpZiAodGFnUHJvcGVydHkuaW1wbGljaXRSb2xlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcmVxdWlyZWQgcHJvcGVydGllcyBvZiB0aGUgcm9sZVxuICAgICAqIEBwYXJtIHtzdHJpbmd9IHJvbGUgLSB0aGUgcm9sZVxuICAgICAqIEBwYXJtIHtIVE1MRWxlbWVudH0gZWxlIC0gZWxlbWVudCBmb3Igd2hpY2ggdG8gZmluZCByb2xlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TGlzdH0gcHJvcGVydGllcyAtIGxpc3Qgb2YgcHJvcGVydGllcyB0aGF0IGFyZSByZXF1aXJlZCBieSB0aGUgcm9sZVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldFJvbGVSZXF1aXJlZFByb3BlcnRpZXMocm9sZSwgZWxlKSB7XG4gICAgICAgIGlmIChyb2xlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnNbcm9sZV0pIHtcbiAgICAgICAgICAgIGxldCByZXF1aXJlZEF0dHJpYnV0ZXMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnNbcm9sZV0ucmVxUHJvcHM7XG4gICAgICAgICAgICAvLyBoYW5kbGUgc3BlY2lhbCBjYXNlIG9mIHNlcGFyYXRvclxuICAgICAgICAgICAgaWYgKHJvbGUudG9Mb3dlckNhc2UoKSA9PT0gXCJzZXBhcmF0b3JcIiAmJiBSUFRVdGlsLmlzRm9jdXNhYmxlKGVsZSkpIHtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QoW1wiYXJpYS12YWx1ZW5vd1wiXSwgcmVxdWlyZWRBdHRyaWJ1dGVzIHx8IFtdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXF1aXJlZEF0dHJpYnV0ZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRlc3QgaWYgdGhlIGVsZSBub2RlIGlzIGZvY3VzYWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNGb2N1c2FibGUoZWxlKSB7XG4gICAgICAgIGlmIChlbGUgPT09IFwidW5kZWZpbmVkXCIgfHwgZWxlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuaXNUYWJiYWJsZShlbGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgaWYgYSBlbGVtZW50IGhhcyBnaXZlbiByb2xlLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYXNsbyBmaW5kcyBpZiBlbGVtZW50IGhhcyBnaXZlbiByb2xlcyBhcyBpbXBsaWNpdCByb2xlLlxuICAgICAqIEBwYXJtIHtIVE1MRWxlbWVudH0gZWxlIC0gZWxlbWVudCBmb3Igd2hpY2ggdG8gZmluZCByb2xlLlxuICAgICAqIEBwYXJtIHtsaXN0IG9yIHN0cmluZ30gcm9sZXMgLSBMaXN0IG9yIHNpbmdsZSByb2xlIGZvciB3aGljaCB0byBmaW5kIGlmIGVsZW1lbnQgaGFzIHRoZXNlIHJvbGVzLlxuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckltcGxpY2l0Um9sZXMgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGltcGxpY2l0IHJvbGVzIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtMaXN0fSByZXRWYWwgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIHRoIGVsZW1lbnQgaGFzIHRoZSBzcGVjaWZpZWQgcm9sZS5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICpcbiAgICAgKiBDb25zaWRlciB0byB1c2UgaGFzUm9sZUluU2VtYW50aWNzKCkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGhhc1JvbGUoZWxlLCByb2xlLCBjb25zaWRlckltcGxpY2l0Um9sZXM/KSB7ICAvL0NvbnNpZGVyIHRvIHVzZSBoYXNSb2xlSW5TZW1hbnRpY3MoKSBpbnN0ZWFkLlxuICAgICAgICBsZXQgcmV0VmFsID0gZmFsc2U7XG4gICAgICAgIGlmIChlbGUgJiYgZWxlLmhhc0F0dHJpYnV0ZSAmJiBlbGUuaGFzQXR0cmlidXRlKFwicm9sZVwiKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAocm9sZSkgIT0gdHlwZW9mIChcIlwiKSkge1xuICAgICAgICAgICAgICAgIGxldCByb2xlcyA9IGVsZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFyZXRWYWwgJiYgaSA8IHJvbGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IHJvbGVzW2ldIGluIHJvbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcm9sZXMgPSBlbGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmV0VmFsICYmIGkgPCByb2xlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByb2xlc1tpXSA9PT0gcm9sZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pZiBub25lIG9mIHRoZSB0aGUgYXR0cmlidXRlIHJvbGVzIG1hdGNoZWQgd2l0aCBnaXZlbiByb2xlXG4gICAgICAgIC8vY2hlY2sgaWYgaW1wbGljaXQgcm9sZXMgbWF0Y2hlcy5cbiAgICAgICAgLy9Ob3RlOiBlbGVtZW50IGNhbiBoYXZlIG11bHRpcGxlIGltcGxpY2l0IHJvbGVzXG4gICAgICAgIGlmICghcmV0VmFsICYmIGNvbnNpZGVySW1wbGljaXRSb2xlcykge1xuICAgICAgICAgICAgbGV0IHRhZ1Byb3BlcnR5ID0gUlBUVXRpbC5nZXRFbGVtZW50QXJpYVByb3BlcnR5KGVsZSk7XG4gICAgICAgICAgICBsZXQgd1JvbGVzID0gW107XG4gICAgICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljaXQgcm9sZXMgZm9yIHRoaXMgZWxlbWVudC5cbiAgICAgICAgICAgIGlmICh0YWdQcm9wZXJ0eSAmJiB0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvL2FkZCBpbXBsaWNpdCByb2xlcyB0byB0aGUgYXR0cmlidXRlcyByb2xlcy5cbiAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QodGFnUHJvcGVydHkuaW1wbGljaXRSb2xlLCB3Um9sZXMpO1xuICAgICAgICAgICAgICAgIC8vaWYgcm9sZSBpcyBhcnJheSBsb29wIHRocnUgYW5kIHNlZSBpZiBhbnkgIG9mIHRoZSBpbXBsaWNpdCByb2xlIHByZXNlbnQgaW4gdGhlIGFycmF5XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocm9sZSkgIT0gdHlwZW9mIChcIlwiKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJldFZhbCAmJiBpIDwgd1JvbGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSB3Um9sZXNbaV0gaW4gcm9sZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmV0VmFsICYmIGkgPCB3Um9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IHdSb2xlc1tpXSA9PT0gcm9sZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZWxlbWVudCBoYXMgdGhlIHJvbGUsIGluY2x1ZGluZyB0aGUgaW1wbGllZCByb2xlIGlmIHJvbGUgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkLlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXBsYWNpbmcgdGhlIGhhc1JvbGUgZnVuY3Rpb25cbiAgICAgKlxuICAgICAqIEBwYXJtIHtIVE1MRWxlbWVudH0gZWxlIC0gZWxlbWVudCBmb3Igd2hpY2ggdG8gZmluZCByb2xlLlxuICAgICAqIEBwYXJtIHtsaXN0IG9yIHN0cmluZ30gcm9sZXMgLSBMaXN0IG9yIHNpbmdsZSByb2xlIGZvciB3aGljaCB0byBmaW5kIGlmIGVsZW1lbnQgaGFzIHRoZXNlIHJvbGVzLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TGlzdH0gcmV0VmFsIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiB0aGUgZWxlbWVudCBoYXMgdGhlIHNwZWNpZmllZCByb2xlLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGhhc1JvbGVJblNlbWFudGljcyhlbGUsIHJvbGUpIHtcbiAgICAgICAgbGV0IHJldFZhbCA9IGZhbHNlO1xuICAgICAgICBsZXQgcm9sZVNwZWNpZmllZCA9IGZhbHNlO1xuICAgICAgICBpZiAoZWxlICYmIGVsZS5oYXNBdHRyaWJ1dGUgJiYgZWxlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHJvbGUpICE9IHR5cGVvZiAoXCJcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgcm9sZXMgPSBlbGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmV0VmFsICYmIGkgPCByb2xlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByb2xlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gcm9sZXNbaV0gaW4gcm9sZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCByb2xlcyA9IGVsZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFyZXRWYWwgJiYgaSA8IHJvbGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvbGVTcGVjaWZpZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByb2xlc1tpXSA9PT0gcm9sZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocm9sZVNwZWNpZmllZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgaWYgaW1wbGljaXQgcm9sZXMgbWF0Y2hlcy5cbiAgICAgICAgLy9Ob3RlOiBlbGVtZW50IGNhbiBoYXZlIG11bHRpcGxlIGltcGxpY2l0IHJvbGVzXG4gICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShlbGUpO1xuICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljaXQgcm9sZXMgZm9yIHRoaXMgZWxlbWVudC5cbiAgICAgICAgaWYgKHRhZ1Byb3BlcnR5ICYmIHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGltcFJvbGVzID0gdGFnUHJvcGVydHkuaW1wbGljaXRSb2xlO1xuICAgICAgICAgICAgLy9pZiByb2xlIGlzIGFycmF5IGxvb3AgdGhydSBhbmQgc2VlIGlmIGFueSAgb2YgdGhlIGltcGxpY2l0IHJvbGUgcHJlc2VudCBpbiB0aGUgYXJyYXlcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHJvbGUpICE9IHR5cGVvZiAoXCJcIikpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJldFZhbCAmJiBpIDwgaW1wUm9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gaW1wUm9sZXNbaV0gaW4gcm9sZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmV0VmFsICYmIGkgPCBpbXBSb2xlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBpbXBSb2xlc1tpXSA9PT0gcm9sZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIGlmIGEgZWxlbWVudCBoYXMgZ2l2ZW4gcm9sZS5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsc28gY2hlY2tzIGlmIGVsZW1lbnQgaGFzIGdpdmVuIHJvbGVzIGFzIGltcGxpY2l0IHJvbGVzLlxuICAgICAqIEBwYXJtIHtIVE1MRWxlbWVudH0gZWxlIC0gZWxlbWVudCBmb3Igd2hpY2ggdG8gZmluZCByb2xlLlxuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckltcGxpY2l0Um9sZXMgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGltcGxpY2l0IHJvbGVzIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sfSByZXRWYWwgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIHRoZSBlbGVtZW50IGhhcyB0aGUgc3BlY2lmaWVkIHJvbGUuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaGFzQW55Um9sZShlbGUsIGNvbnNpZGVySW1wbGljaXRSb2xlcykge1xuICAgICAgICBsZXQgcmV0VmFsID0gZmFsc2U7XG4gICAgICAgIGlmIChlbGUgJiYgZWxlLmhhc0F0dHJpYnV0ZSAmJiBlbGUuaGFzQXR0cmlidXRlKFwicm9sZVwiKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vY2hlY2sgaWYgaW1wbGljaXQgcm9sZXMgZXhpc3QuXG4gICAgICAgIC8vTm90ZTogZWxlbWVudCBjYW4gaGF2ZSBtdWx0aXBsZSBpbXBsaWNpdCByb2xlc1xuICAgICAgICBpZiAoIXJldFZhbCAmJiBjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShlbGUpO1xuICAgICAgICAgICAgLy9jaGVjayBpZiB0aGVyZSBhcmUgYW55IGltcGxpY2l0IHJvbGVzIGZvciB0aGlzIGVsZW1lbnQuXG4gICAgICAgICAgICBpZiAodGFnUHJvcGVydHkgJiYgdGFnUHJvcGVydHkuaW1wbGljaXRSb2xlICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdGFnUHJvcGVydHkuaW1wbGljaXRSb2xlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXRWYWwgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0RhdGFUYWJsZSh0YWJsZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuICEoUlBUVXRpbC5oYXNSb2xlKHRhYmxlTm9kZSwgXCJub25lXCIpIHx8IFJQVFV0aWwuaGFzUm9sZSh0YWJsZU5vZGUsIFwicHJlc2VudGF0aW9uXCIpKTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIEEgY29tcGxleCBkYXRhIHRhYmxlIGlzIGEgZGF0YSB0YWJsZSB3aXRoIGFueSBvZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcmlzdGljczpcbiAgICAgKlxuICAgICAqIGEgdGhlYWQgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHR3byBvciBtb3JlIHRyIGVsZW1lbnRzXG4gICAgICogYSB0YWJsZSB3aXRoIG1vcmUgdGhhbiBvbmUgdGhlYWQgZWxlbWVudFxuICAgICAqIGEgdGFibGUgd2l0aCB0d28gb3IgbW9yZSB0ciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gb25seSB0aCBlbGVtZW50c1xuICAgICAqIGEgdGggb3IgdGQgZWxlbWVudCB3aXRoIGEgcm93c3BhbiBvciBjb2xzcGFuIGF0dHJpYnV0ZVxuICAgICAqIGEgdHIgZWxlbWVudCB0aGF0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSB0ZCBlbGVtZW50IGFuZCB0d28gb3IgbW9yZSB0aCBlbGVtZW50c1xuICAgICAqIGEgdGFibGUgd2l0aCBoZWFkZXJzIG5vdCBsb2NhdGVkIGluIHRoZSBmaXJzdCByb3cgb3IgZmlyc3QgY29sdW1uXG4gICAgICogYSB0ZCBlbGVtZW50IHdpdGggYSBoZWFkZXJzIGF0dHJpYnV0ZSB2YWx1ZSB0aGF0IGNvbnRhaW5zIG1vcmUgdGhhbiB0d28gSURSRUZzXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpc0NvbXBsZXhEYXRhVGFibGUodGFibGUpIHtcblxuICAgICAgICBpZiAoXCJSUFRVdGlsX2lzQ29tcGxleERhdGFUYWJsZVwiIGluIHRhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0YWJsZS5SUFRVdGlsX2lzQ29tcGxleERhdGFUYWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0NvbXBsZXhUYWJsZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0YWJsZSAmJiBSUFRVdGlsLmlzRGF0YVRhYmxlKHRhYmxlKSkge1xuXG4gICAgICAgICAgICBsZXQgdGhOb2RlcyA9IG51bGwsXG4gICAgICAgICAgICAgICAgdGROb2RlcyA9IG51bGw7XG4gICAgICAgICAgICBsZXQgdHJOb2RlcyA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidHJcIik7XG4gICAgICAgICAgICBsZXQgdHJOb2RlQ291bnQgPSB0ck5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCB0ZE5vZGVDb3VudCA9IDAsXG4gICAgICAgICAgICAgICAgdGhOb2RlQ291bnQgPSAwLFxuICAgICAgICAgICAgICAgIHRyTm9kZXNIYXZpbmdPbmx5VGhOb2RlcyA9IDA7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhaXNDb21wbGV4VGFibGUgJiYgaSA8IHRyTm9kZUNvdW50OyArK2kpIHtcblxuICAgICAgICAgICAgICAgIHRoTm9kZXMgPSB0ck5vZGVzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGhcIik7XG4gICAgICAgICAgICAgICAgdGROb2RlcyA9IHRyTm9kZXNbaV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0ZFwiKTtcbiAgICAgICAgICAgICAgICB0aE5vZGVDb3VudCA9IHRoTm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRkTm9kZUNvdW50ID0gdGROb2Rlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBpZiAodGROb2RlQ291bnQgIT09IDApIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBhIHRyIGVsZW1lbnQgdGhhdCBjb250YWlucyBhdCBsZWFzdCBvbmUgdGQgZWxlbWVudCBhbmQgdHdvIG9yIG1vcmUgdGggZWxlbWVudHM7XG4gICAgICAgICAgICAgICAgICAgIGlzQ29tcGxleFRhYmxlID0gdGhOb2RlQ291bnQgPiAxO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGEgdGggZWxlbWVudCB3aXRoIGEgcm93c3BhbiBvciBjb2xzcGFuIGF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgIWlzQ29tcGxleFRhYmxlICYmIGogPCB0aE5vZGVDb3VudDsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NvbXBsZXhUYWJsZSA9ICgodGhOb2Rlc1tqXS5oYXNBdHRyaWJ1dGUoXCJyb3dzcGFuXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhOb2Rlc1tqXS5oYXNBdHRyaWJ1dGUoXCJjb2xzcGFuXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuZ2V0QW5jZXN0b3IodGhOb2Rlc1tqXSwgXCJ0YWJsZVwiKSA9PT0gdGFibGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYSB0ZCBlbGVtZW50IHdpdGggYSByb3dzcGFuIG9yIGNvbHNwYW4gYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgIC8vIGEgdGQgZWxlbWVudCB3aXRoIGEgaGVhZGVycyBhdHRyaWJ1dGUgdmFsdWUgdGhhdCBjb250YWlucyBtb3JlIHRoYW4gdHdvIElEUkVGc1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgIWlzQ29tcGxleFRhYmxlICYmIGsgPCB0ZE5vZGVDb3VudDsgKytrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NvbXBsZXhUYWJsZSA9ICgodGROb2Rlc1trXS5oYXNBdHRyaWJ1dGUoXCJyb3dzcGFuXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGROb2Rlc1trXS5oYXNBdHRyaWJ1dGUoXCJjb2xzcGFuXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRkTm9kZXNba10uaGFzQXR0cmlidXRlKFwiaGVhZGVyc1wiKSAmJiBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcodGROb2Rlc1trXS5nZXRBdHRyaWJ1dGUoXCJoZWFkZXJzXCIpKS5zcGxpdChcIiBcIikubGVuZ3RoID4gMikpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRBbmNlc3Rvcih0ZE5vZGVzW2tdLCBcInRhYmxlXCIpID09PSB0YWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gdHdvIG9yIG1vcmUgdHIgZWxlbWVudHMgdGhhdCBjb250YWluIG9ubHkgdGggZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoTm9kZUNvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgKyt0ck5vZGVzSGF2aW5nT25seVRoTm9kZXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaXNDb21wbGV4VGFibGUgPSB0ck5vZGVzSGF2aW5nT25seVRoTm9kZXMgPT09IDI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzQ29tcGxleFRhYmxlKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgdGhlYWROb2RlcyA9IHRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGhlYWRcIik7XG4gICAgICAgICAgICAgICAgbGV0IHRoZWFkTm9kZXNMZW5ndGggPSB0aGVhZE5vZGVzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGVhZE5vZGVzTGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHRhYmxlIGhhcyBtb3JlIHRoYW4gb25lIHRoZWFkIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgaXNDb21wbGV4VGFibGUgPSB0aGVhZE5vZGVzTGVuZ3RoID4gMTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBhIHRoZWFkIGVsZW1lbnQgdGhhdCBjb250YWlucyB0d28gb3IgbW9yZSB0ciBlbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQ29tcGxleFRhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0NvbXBsZXhUYWJsZSA9IHRoZWFkTm9kZXNbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0clwiKS5sZW5ndGggPiAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0NvbXBsZXhUYWJsZSAmJiB0ck5vZGVDb3VudCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIGEgdGFibGUgd2l0aCBoZWFkZXJzIG5vdCBsb2NhdGVkIGluIHRoZSBmaXJzdCByb3cgb3IgZmlyc3QgY29sdW1uXG4gICAgICAgICAgICAgICAgaXNDb21wbGV4VGFibGUgPSB0aE5vZGVDb3VudCA+IDAgJiYgIVJQVFV0aWwuaXNUYWJsZUhlYWRlckluRmlyc3RSb3dPckNvbHVtbih0YWJsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGFibGUuUlBUVXRpbF9pc0NvbXBsZXhEYXRhVGFibGUgPSBpc0NvbXBsZXhUYWJsZTtcblxuICAgICAgICByZXR1cm4gaXNDb21wbGV4VGFibGU7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgYSB0YWJsZSdzIGhlYWRlciBpcyBpbiB0aGUgZmlyc3Qgcm93IG9yIGNvbHVtblxuICAgIHB1YmxpYyBzdGF0aWMgaXNUYWJsZUhlYWRlckluRmlyc3RSb3dPckNvbHVtbihydWxlQ29udGV4dCkge1xuXG4gICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHJvd3MgPSBydWxlQ29udGV4dC5yb3dzO1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgZmlyc3Qgcm93IGlzIGFsbCBUSCdzXG4gICAgICAgIGlmIChyb3dzICE9IG51bGwgJiYgcm93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgZmlyc3RSb3cgPSByb3dzWzBdO1xuICAgICAgICAgICAgcGFzc2VkID0gZmlyc3RSb3cuY2VsbHMubGVuZ3RoID4gMCAmJiBSUFRVdGlsLmdldENoaWxkQnlUYWdIaWRkZW4oZmlyc3RSb3csIFwidGRcIiwgZmFsc2UsIHRydWUpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCByb3cgaXNuJ3QgYSBoZWFkZXIgcm93LCB0cnkgdGhlIGZpcnN0IGNvbHVtblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCB0aGUgZmlyc3QgY29sdW1uIGhhcyBhbGwgVEgncyB1bmxlc3Mgd2UgZmluZCBhIFREIGluIHRoZSBmaXJzdCBjb2x1bW4uXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCByb3dzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIG5vIGNlbGxzIGluIHRoaXMgcm93LCB0aGF0J3Mgb2theSB0b28uXG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9ICFyb3dzW2ldLmNlbGxzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzW2ldLmNlbGxzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93c1tpXS5jZWxsc1swXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwidGRcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSAtIGJvdGggZmlyc3Qgcm93IGFuZCBmaXJzdCBjb2x1bW4gYXJlIGhlYWRlcnMsIGJ1dCB0aGV5IGRpZCBub3QgdXNlXG4gICAgICAgICAgICAgICAgLy8gYSB0aCBmb3IgdGhlIHVwcGVyLWxlZnQgY2VsbFxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IHBhc3NlZCAmJiBpIDwgZmlyc3RSb3cuY2VsbHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmlyc3RSb3cuY2VsbHNbaV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcInRkXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBwYXNzZWQgJiYgaSA8IHJvd3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm8gY2VsbHMgaW4gdGhpcyByb3csIHRoYXQncyBva2F5IHRvby5cbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gIXJvd3NbaV0uY2VsbHMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NbaV0uY2VsbHMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzW2ldLmNlbGxzWzBdLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gXCJ0ZFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFzc2VkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNOb2RlSW5HcmlkKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShub2RlLCBcImdyaWRcIikgIT0gbnVsbDtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBpc0xheW91dFRhYmxlKHRhYmxlTm9kZSkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5oYXNSb2xlKHRhYmxlTm9kZSwgXCJwcmVzZW50YXRpb25cIikgfHwgUlBUVXRpbC5oYXNSb2xlKHRhYmxlTm9kZSwgXCJub25lXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldEZpbGVFeHQodXJsKSB7XG4gICAgICAgIGxldCBtID0gdXJsLm1hdGNoKC9cXC4oKFteOz8jXFwuXXxeJCkrKShbOz8jXXwkKS8pO1xuICAgICAgICBpZiAobSAhPSBudWxsICYmIG0ubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBcIi5cIiArIG1bMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RmlsZUFuY2hvcih1cmwpIHtcbiAgICAgICAgbGV0IG0gPSB1cmwubWF0Y2goLyMoKFteOz9cXC5dfF4kKSspKFs7P118JCkvKTtcbiAgICAgICAgaWYgKG0gIT0gbnVsbCAmJiBtLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gbVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBjaGVja09iakVtYmVkKG5vZGUsIGV4dFRlc3QsIG1pbWVUZXN0KSB7XG4gICAgICAgIGxldCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBpZiAobm9kZU5hbWUgIT0gXCJvYmplY3RcIiAmJiBub2RlTmFtZSAhPSBcImVtYmVkXCIgJiZcbiAgICAgICAgICAgIG5vZGVOYW1lICE9IFwiYVwiICYmIG5vZGVOYW1lICE9IFwiYXJlYVwiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCByZXRWYWwgPSBmYWxzZTtcbiAgICAgICAgLy8gQ2hlY2sgbWltZSB0eXBlXG4gICAgICAgIGlmICghcmV0VmFsICYmIG5vZGUuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgbGV0IG1pbWUgPSBub2RlLmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHJldFZhbCA9IG1pbWVUZXN0KG1pbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmV0VmFsICYmIG5vZGUuaGFzQXR0cmlidXRlKFwiY29kZXR5cGVcIikpIHtcbiAgICAgICAgICAgIGxldCBtaW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJjb2RldHlwZVwiKTtcbiAgICAgICAgICAgIHJldFZhbCA9IG1pbWVUZXN0KG1pbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgdGhlIGZpbGVuYW1lXG4gICAgICAgIGlmICghcmV0VmFsKSB7XG4gICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSBcImVtYmVkXCIpIHtcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG5vZGUuZ2V0QXR0cmlidXRlKFwic3JjXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PT0gXCJhXCIgfHwgbm9kZU5hbWUgPT09IFwiYXJlYVwiKSB7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBub2RlLmdldEF0dHJpYnV0ZShcImhyZWZcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUuaGFzQXR0cmlidXRlKFwiZGF0YVwiKSkge1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJkYXRhXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lID09PSBudWxsKSBmaWxlbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgZXh0ID0gUlBUVXRpbC5nZXRGaWxlRXh0KGZpbGVuYW1lKTtcbiAgICAgICAgICAgIHJldFZhbCA9IGV4dFRlc3QoZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGZvciBmaWxlbmFtZXMgaW4gdGhlIHBhcmFtc1xuICAgICAgICBpZiAoIXJldFZhbCAmJiBub2RlTmFtZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCBDaGVjayBIaWRkZW4gT3B0aW9uIGlzIHNldCB0aGVuIGNvbXBseSB3aXRoIHRoYXQgc2V0dGluZ1xuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IFJQVFV0aWwuZ2V0Q2hpbGRCeVRhZ0hpZGRlbihub2RlLCBcInBhcmFtXCIsIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmV0VmFsICYmIHBhcmFtcyAhPSBudWxsICYmIGkgPCBwYXJhbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwgPSBwYXJhbXNbaV0uaGFzQXR0cmlidXRlKFwidmFsdWVcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgZXh0VGVzdChSUFRVdGlsLmdldEZpbGVFeHQocGFyYW1zW2ldLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBpc0F1ZGlvT2JqRW1iZWRMaW5rKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuY2hlY2tPYmpFbWJlZChub2RlLCBSUFRVdGlsLmlzQXVkaW9FeHQsIGZ1bmN0aW9uIChtaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbWltZS5zdGFydHNXaXRoKFwiYXVkaW9cIilcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgaXNBdWRpb0V4dChleHQpIHtcbiAgICAgICAgbGV0IGF1ZGlvX2V4dGVuc2lvbnMgPSBbXCIuYWlmXCIsIFwiLmFpZmNcIiwgXCIuYWlmZlwiLCBcIi5haXJcIiwgXCIuYXNmXCIsIFwiLmF1XCIsIFwiLmNkYVwiLFxuICAgICAgICAgICAgXCIuZHNtXCIsIFwiLmRzc1wiLCBcIi5kd2RcIiwgXCIuaWZmXCIsIFwiLmthclwiLCBcIi5tMWFcIiwgXCIubWVkXCIsXG4gICAgICAgICAgICBcIi5tcDJcIiwgXCIubXAzXCIsIFwiLm1wYVwiLCBcIi5wY21cIiwgXCIucmFcIiwgXCIucmFtXCIsIFwiLnJtXCIsXG4gICAgICAgICAgICBcIi5zYW1cIiwgXCIuc2ZcIiwgXCIuc2YyXCIsIFwiLnNtcFwiLCBcIi5zbmRcIiwgXCIuc3Z4XCIsIFwiLnVsXCIsXG4gICAgICAgICAgICBcIi52b2NcIiwgXCIud2F2XCIsIFwiLndtYVwiLCBcIi53dmVcIlxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gUlBUVXRpbC52YWxJbkFycmF5KGV4dC50b0xvd2VyQ2FzZSgpLCBhdWRpb19leHRlbnNpb25zKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBpc1ZpZGVvT2JqRW1iZWRMaW5rKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuY2hlY2tPYmpFbWJlZChub2RlLCBSUFRVdGlsLmlzVmlkZW9FeHQsIGZ1bmN0aW9uIChtaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbWltZS5zdGFydHNXaXRoKFwidmlkZW9cIikgfHxcbiAgICAgICAgICAgICAgICBtaW1lLnN0YXJ0c1dpdGgoXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgaXNWaWRlb0V4dChleHQpIHtcbiAgICAgICAgbGV0IHZpZGVvX2V4dGVuc2lvbnMgPSBbXCIuYXNmXCIsIFwiLmF2aVwiLCBcIi5kaXZ4XCIsIFwiLmR2XCIsIFwiLm0xdlwiLCBcIi5tMnBcIiwgXCIubTJ2XCIsIFwiLm1vb3ZcIixcbiAgICAgICAgICAgIFwiLm1vdlwiLCBcIi5tcDRcIiwgXCIubXBlZ1wiLCBcIi5tcGdcIiwgXCIubXB2XCIsIFwiLm9nbVwiLCBcIi5vbWZcIiwgXCIucXRcIixcbiAgICAgICAgICAgIFwiLnJtXCIsIFwiLnJ2XCIsIFwiLnNtaVwiLCBcIi5zbWlsXCIsIFwiLnN3ZlwiLCBcIi52b2JcIiwgXCIud212XCIsIFwiLnJtdmJcIixcbiAgICAgICAgICAgIFwiLm12YlwiXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBSUFRVdGlsLnZhbEluQXJyYXkoZXh0LnRvTG93ZXJDYXNlKCksIHZpZGVvX2V4dGVuc2lvbnMpO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGlzSW1hZ2VPYmpFbWJlZExpbmsobm9kZSkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5jaGVja09iakVtYmVkKG5vZGUsIFJQVFV0aWwuaXNJbWdFeHQsIGZ1bmN0aW9uIChtaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbWltZS5zdGFydHNXaXRoKFwiaW1hZ2VcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGlzSW1nRXh0KGV4dCkge1xuICAgICAgICBsZXQgaW1hZ2VfZXh0ZW5zaW9ucyA9IFtcIi5ibXBcIiwgXCIuZ2lmXCIsIFwiLmpwZ1wiLCBcIi5qcGVnXCIsIFwiLnBjeFwiLCBcIi5wbmdcIl07XG4gICAgICAgIHJldHVybiBSUFRVdGlsLnZhbEluQXJyYXkoZXh0LnRvTG93ZXJDYXNlKCksIGltYWdlX2V4dGVuc2lvbnMpO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGlzSHRtbEV4dChleHQpIHtcbiAgICAgICAgbGV0IGh0bWxfZXh0ZW5zaW9ucyA9IFtcIi5hc3BcIiwgXCIuYXNweFwiLCBcIi5jZm1cIiwgXCIuY2ZtbFwiLCBcIi5jZ2lcIiwgXCIuaHRtXCIsIFwiLmh0bWxcIiwgXCIuc2h0bVwiLFxuICAgICAgICAgICAgXCIuc2h0bWxcIiwgXCIucGhwXCIsIFwiLnBsXCIsIFwiLnB5XCIsIFwiLnNodG1cIiwgXCIuc2h0bWxcIiwgXCIueGh0bWxcIlxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gUlBUVXRpbC52YWxJbkFycmF5KGV4dC50b0xvd2VyQ2FzZSgpLCBodG1sX2V4dGVuc2lvbnMpO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGlzUHJlc2VudGF0aW9uYWxFbGVtZW50KG5vZGUpIHtcbiAgICAgICAgLy8gRWxlbWVudHMgZXh0cmFjdGVkIGZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vZG9jcy9XZWIvSFRNTC9FbGVtZW50I0lubGluZV90ZXh0X3NlbWFudGljcyxcbiAgICAgICAgLy8gaHR0cDovL2Rldi53My5vcmcvaHRtbDUvaHRtbC1hdXRob3IvI3RleHQtbGV2ZWwtc2VtYW50aWNzIGFuZCBodHRwczovL3dpa2kud2hhdHdnLm9yZy93aWtpL1ByZXNlbnRhdGlvbmFsX2VsZW1lbnRzX2FuZF9hdHRyaWJ1dGVzXG4gICAgICAgIGxldCBwcmVzZW50YXRpb25hbEVsZW1lbnRzID0gW1wiYWJiclwiLCBcImJcIiwgXCJiZGlcIiwgXCJiZG9cIiwgXCJiclwiLCBcImNpdGVcIiwgXCJjb2RlXCIsIFwiZGF0YVwiLCBcImRmblwiLFxuICAgICAgICAgICAgXCJlbVwiLCBcImlcIiwgXCJrYmRcIiwgXCJtYXJrXCIsIFwicVwiLCBcInJwXCIsIFwicnRcIiwgXCJydGNcIiwgXCJydWJ5XCIsIFwic1wiLFxuICAgICAgICAgICAgXCJzYW1wXCIsIFwic21hbGxcIiwgXCJzcGFuXCIsIFwic3Ryb25nXCIsIFwic3ViXCIsIFwic3VwXCIsIFwidGltZVwiLCBcInVcIixcbiAgICAgICAgICAgIFwidmFyXCIsIFwid2JyXCIsIFwiYVwiLCBcInByb2dyZXNzXCIsIFwibWV0ZXJcIiwgXCJiYXNlZm9udFwiLCBcImJpZ1wiLCBcImNlbnRlclwiLFxuICAgICAgICAgICAgXCJzdHJpa2VcIiwgXCJ0dFwiLCBcImZvbnRcIiwgXCJibGlua1wiLCBcImgxXCIsIFwiaDJcIiwgXCJoM1wiLCBcImg0XCIsIFwiaDVcIiwgXCJoNlwiLFxuICAgICAgICAgICAgXCJoclwiLCBcImJsb2NrcXVvdGVcIiwgXCJwXCJcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwudmFsSW5BcnJheShub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIHByZXNlbnRhdGlvbmFsRWxlbWVudHMpO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGhhc1RyaWdnZXJlZChkb2MsIGlkKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmdldENhY2hlKGRvYywgaWQsIGZhbHNlKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyB0cmlnZ2VyT25jZShkb2MsIGlkLCBwYXNzZWQpIHtcbiAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIHRydWU7XG4gICAgICAgIGxldCB0cmlnZ2VyZWQgPSBSUFRVdGlsLmdldENhY2hlKGRvYywgaWQsIGZhbHNlKTtcbiAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShkb2MsIGlkLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJlZDtcbiAgICB9XG5cbiAgICAvKiBkZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGV4aXN0cyBpbiB0aGUgZ2l2ZW4gYXJyYXkgKi9cbiAgICBwdWJsaWMgc3RhdGljIHZhbEluQXJyYXkodmFsdWUsIGFycikge1xuICAgICAgICBmb3IgKGxldCBpZHggaW4gYXJyKSB7XG4gICAgICAgICAgICBpZiAoYXJyW2lkeF0gPT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRoZSBhbmNlc3RvciBvZiB0aGUgZ2l2ZW4gZWxlbWVudFxuICAgICAqIEBwYXJhbSB0YWdOYW1lcyBzdHJpbmcsIGFycmF5LCBvciBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIHRhZ3MgdG8gc2VhcmNoIGZvclxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QW5jZXN0b3IoZWxlbWVudCwgdGFnTmFtZXMpIHtcbiAgICAgICAgbGV0IHdhbGtOb2RlID0gZWxlbWVudDtcbiAgICAgICAgd2hpbGUgKHdhbGtOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgdGhpc1RhZyA9IHdhbGtOb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mICh0YWdOYW1lcykgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpc1RhZyA9PT0gdGFnTmFtZXMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhZ05hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGlkeCBpbiB0YWdOYW1lcykge1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzLmphdmEubGFuZy5TeXN0ZW0uZXJyLnByaW50bG4odGhpc1RhZyArIFwiOlwiICsgdGFnTmFtZXNbaWR4XSArIFwiOlwiICsgKHRhZ05hbWVzW2lkeF0gPT09IHRoaXNUYWcpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhZ05hbWVzW2lkeF0gPT09IHRoaXNUYWcpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Fsa05vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzVGFnIGluIHRhZ05hbWVzKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3YWxrTm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZSh3YWxrTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdhbGtOb2RlO1xuICAgIH1cblxuICAgIC8vIHJldHVybiB0cnVlIGlmIGVsZW1lbnQxIGFuZCBlbGVtZW50MiBhcmUgc2libGluZ3NcbiAgICBwdWJsaWMgc3RhdGljIGlzU2libGluZyhlbGVtZW50MSwgZWxlbWVudDIpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQxICYmIGVsZW1lbnQyKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAoRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQxKSAmJiBET01VdGlsLnBhcmVudE5vZGUoZWxlbWVudDEpLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQxKS5maXJzdENoaWxkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZSA9PT0gZWxlbWVudDIpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gdGhlIGFuY2VzdG9yIG9mIHRoZSBnaXZlbiBlbGVtZW50IGFuZCByb2xlLlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byBzdGFydCB0aGUgbm9kZSB3YWxrIG9uIHRvIGZpbmQgcGFyZW50IG5vZGVcbiAgICAgKiBAcGFybSB7c3RyaW5nfSByb2xlIC0gVGhlIHJvbGUgdG8gc2VhcmNoIGZvciBvbiBhbiBlbGVtZW50IHVuZGVyIHRoZSBwcm92aWRlZCBlbGVtZW50XG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySW1wbGljaXRSb2xlcyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaW1wbGljaXQgcm9sZXMgc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge25vZGV9IHdhbGtOb2RlIC0gQSBwYXJlbnQgbm9kZSBvZiB0aGUgZWxlbWVudCBwYXNzZWQgaW4sIHdoaWNoIGhhcyB0aGUgcHJvdmlkZWQgcm9sZVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEFuY2VzdG9yV2l0aFJvbGUoZWxlbWVudCwgcm9sZU5hbWUsIGNvbnNpZGVySW1wbGljaXRSb2xlcz8pIHtcbiAgICAgICAgbGV0IHdhbGtOb2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgICAgICB3aGlsZSAod2Fsa05vZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3Mod2Fsa05vZGUsIHJvbGVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmhhc1JvbGUod2Fsa05vZGUsIHJvbGVOYW1lLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2Fsa05vZGUgPSBET01VdGlsLnBhcmVudE5vZGUod2Fsa05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3YWxrTm9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFuY2VzdG9yV2l0aEF0dHJpYnV0ZShlbGVtZW50LCBhdHRyTmFtZSwgYXR0clZhbHVlKSB7XG4gICAgICAgIGxldCB3YWxrTm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICAgICAgd2hpbGUgKHdhbGtOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAod2Fsa05vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmICg8RWxlbWVudD53YWxrTm9kZSkuZ2V0QXR0cmlidXRlKGF0dHJOYW1lKSA9PT0gYXR0clZhbHVlKSBcbiAgICAgICAgICAgICAgICByZXR1cm4gd2Fsa05vZGU7XG4gICAgICAgICAgICB3YWxrTm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZSh3YWxrTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyBhIG5vZGUgd2hpY2ggbWF0Y2hlcyB0aGUgcm9sZSBhbmQgaXMgYSBzaWJsaW5nIG9mIHRoZVxuICAgICAqIHByb3ZpZGVkIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGJ5IGRlZmF1bHQgd2lsbCBub3QgY29uc2lkZXIgQ2hlY2sgSGlkZGVuIFNldHRpbmcgYXQgYWxsLlxuICAgICAqXG4gICAgICogTm90ZTogVGhpcyBpcyBhIHdyYXBwZXIgZnVuY3Rpb24gdG86IFJQVFV0aWwuZ2V0U2libGluZ1dpdGhSb2xlSGlkZGVuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gZWxlbWVudCAtIFRoZSBlbGVtZW50IHRvIHN0YXJ0IHRoZSBub2RlIHdhbGsgb24gdG8gZmluZCBzaWJsaW5nIG5vZGVcbiAgICAgKiBAcGFybSB7c3RyaW5nfSByb2xlIC0gVGhlIHJvbGUgdG8gc2VhcmNoIGZvciBvbiBhbiBlbGVtZW50IHVuZGVyIHRoZSBwcm92aWRlZCBlbGVtZW50XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtub2RlfSB3YWxrTm9kZSAtIEEgc2libGluZyBub2RlIG9mIHRoZSBlbGVtZW50IHBhc3NlZCBpbiwgd2hpY2ggaGFzIHRoZSBwcm92aWRlZCByb2xlXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U2libGluZ1dpdGhSb2xlKGVsZW1lbnQsIHJvbGUpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuZ2V0U2libGluZ1dpdGhSb2xlSGlkZGVuKGVsZW1lbnQsIHJvbGUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIGEgbm9kZSB3aGljaCBtYXRjaGVzIHRoZSByb2xlIGFuZCBpcyBhIHNpYmxpbmcgb2YgdGhlXG4gICAgICogcHJvdmlkZWQgZWxlbWVudC5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYWxzbyBjb25zaWRlcnMgaW1wbGljaXQgcm9sZXMgZm9yIHRoZSBlbGVtZW50cy5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGNvbnNpZGVyIGVsZW1lbnRzIHRoYXQgYXJlIGhpZGRlbiBiYXNlZCBvbiB0aGUgaWYgdGhlIENoZWNrXG4gICAgICogSGlkZGVuIENvbnRlbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIGNvbnNpZGVyZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byBzdGFydCB0aGUgbm9kZSB3YWxrIG9uIHRvIGZpbmQgc2libGluZyBub2RlXG4gICAgICogQHBhcm0ge3N0cmluZ30gcm9sZSAtIFRoZSByb2xlIHRvIHNlYXJjaCBmb3Igb24gYW4gZWxlbWVudCB1bmRlciB0aGUgcHJvdmlkZWQgZWxlbWVudFxuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckhpZGRlblNldHRpbmcgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGhpZGRlbiBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckltcGxpY2l0IC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBJbXBsaWNpdCByb2xlcyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge25vZGV9IHdhbGtOb2RlIC0gQSBzaWJsaW5nIG5vZGUgb2YgdGhlIGVsZW1lbnQgcGFzc2VkIGluLCB3aGljaCBoYXMgdGhlIHByb3ZpZGVkIHJvbGVcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRTaWJsaW5nV2l0aFJvbGVIaWRkZW4oZWxlbWVudCwgcm9sZSwgY29uc2lkZXJIaWRkZW5TZXR0aW5nLCBjb25zaWRlckltcGxpY2l0Um9sZT8pIHtcblxuICAgICAgICAvLyBWYXJpYWJsZSBEZWNsYXJhdGlvblxuICAgICAgICBsZXQgd2Fsa05vZGUgPSBudWxsO1xuICAgICAgICBsZXQgaGFzUm9sZSA9IGZhbHNlO1xuXG4gICAgICAgIC8vIE9ubHkgcGVyZm9ybSB0aGUgY2hlY2sgaWYgZWxlbWVudCBhbmQgcm9sZSBhcmUgYm90aCBwcm92aWRlZFxuICAgICAgICBpZiAoZWxlbWVudCAmJiByb2xlKSB7XG4gICAgICAgICAgICAvLyBGZXRjaCB0aGUgbmV4dCBzaWJsaW5nIGVsZW1lbnRcbiAgICAgICAgICAgIHdhbGtOb2RlID0gZWxlbWVudC5uZXh0U2libGluZztcblxuICAgICAgICAgICAgLy8gS2VlcCBsb29waW5nIG92ZXIgdGhlIG5leHQgc2libGluZ3MgdG8gZmluZCBlbGVtZW50IHdoaWNoIG1hdGNoZXNcbiAgICAgICAgICAgIC8vIHRoZSBwcm92aWRlZCByb2xlLlxuICAgICAgICAgICAgd2hpbGUgKHdhbGtOb2RlICE9PSBudWxsICYmICFoYXNSb2xlKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAgICAgLy8gIDEuIElmIGNvbnNpZGVySGlkZGVuU2V0dGluZyBvcHRpb24gaXMgc2V0IHRvIHRydWUgdGhlbiB3ZSBwZXJmb3JtIHRoZSBjaGVjayB0byBjb25zaWRlciB0aGVcbiAgICAgICAgICAgICAgICAvLyAgICAgQ2hlY2sgSGlkZGVuIENvbnRlbnQgdGhhdCBpcyBwcm92aWRlZC5cbiAgICAgICAgICAgICAgICAvLyAgMi4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgLy8gICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGUgaWYgY29uZGl0aW9ucyB1c2VzIHNob3J0LWNpcmN1aXRpbmcgc28gaWYgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBub3QgdHJ1ZSBpdCB3aWxsIG5vdCBjaGVjayB0aGUgbmV4dCBvbmUsXG4gICAgICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgICAgIGlmIChjb25zaWRlckhpZGRlblNldHRpbmcgJiYgUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHdhbGtOb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlIG9uIHRvIHRoZSBuZXh0IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcblxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGlzIG5vZGUgaGFzIHRoZSByb2xlIHRoYXQgd2UgbmVlZCB0byBjaGVjayBleGlzdHNcbiAgICAgICAgICAgICAgICBpZiAoY29uc2lkZXJJbXBsaWNpdFJvbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzUm9sZSA9IFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHdhbGtOb2RlLCByb2xlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBoYXNSb2xlID0gUlBUVXRpbC5oYXNSb2xlKHdhbGtOb2RlLCByb2xlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gTW92ZSBvbiB0byB0aGUgbmV4dCBub2RlXG4gICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgd2Ugc3RpbGwgaGF2ZSBub3QgZm91bmQgYSBub2RlIHRoYXQgbWF0Y2hlcyB0aGUgcm9sZSwgc3RhcnQgYSByZXZlcnNlIGxvb2sgdXBcbiAgICAgICAgICAgIGlmICghd2Fsa05vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBGZXRjaCB0aGUgcHJldmlvdXMgU2libGluZyBvZiB0aGlzIGVsZW1lbnRcbiAgICAgICAgICAgICAgICB3YWxrTm9kZSA9IGVsZW1lbnQucHJldmlvdXNTaWJsaW5nO1xuXG4gICAgICAgICAgICAgICAgLy8gS2VlcCBsb29waW5nIG92ZXIgYWxsIHRoZSBwcmV2aW91cyBzaWJsaW5ncyB0byBzZWFyY2ggZm9yIGFuIGVsZW1lbnQgd2hpY2hcbiAgICAgICAgICAgICAgICAvLyBtYXRjaGVzIHRoZSBwcm92aWRlZCByb2xlLlxuICAgICAgICAgICAgICAgIHdoaWxlICh3YWxrTm9kZSAhPT0gbnVsbCAmJiAhaGFzUm9sZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAgICAgICAgIC8vICAxLiBJZiBjb25zaWRlckhpZGRlblNldHRpbmcgb3B0aW9uIGlzIHNldCB0byB0cnVlIHRoZW4gd2UgcGVyZm9ybSB0aGUgY2hlY2sgdG8gY29uc2lkZXIgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBDaGVjayBIaWRkZW4gQ29udGVudCB0aGF0IGlzIHByb3ZpZGVkLlxuICAgICAgICAgICAgICAgICAgICAvLyAgMi4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBzbyBvbiBhbmQgc28gZm9ydGguXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25zaWRlckhpZGRlblNldHRpbmcgJiYgUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHdhbGtOb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBvbiB0byB0aGUgbmV4dCBub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWxrTm9kZSA9IHdhbGtOb2RlLnByZXZpb3VzU2libGluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGlzIG5vZGUgaGFzIHRoZSByb2xlIHRoYXQgd2UgbmVlZCB0byBjaGVjayBleGlzdHNcbiAgICAgICAgICAgICAgICAgICAgaGFzUm9sZSA9IFJQVFV0aWwuaGFzUm9sZSh3YWxrTm9kZSwgcm9sZSwgY29uc2lkZXJJbXBsaWNpdFJvbGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIE1vdmUgb24gdG8gdGhlIG5leHQgbm9kZVxuICAgICAgICAgICAgICAgICAgICB3YWxrTm9kZSA9IHdhbGtOb2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2Fsa05vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0Rlc2NlbmRhbnQocGFyZW50LCBjaGlsZCkge1xuICAgICAgICBsZXQgbm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZShjaGlsZCk7XG4gICAgICAgIHdoaWxlIChub2RlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChub2RlID09PSBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUgPSBET01VdGlsLnBhcmVudE5vZGUobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vY2hlY2sgaWYgdGhlIGZpcnN0IGZvcm0gY29udHJvbCBjaGlsZCBpcyBkaXNhYmxlZFxuICAgIHB1YmxpYyBzdGF0aWMgaXNEaXNhYmxlZEJ5Rmlyc3RDaGlsZEZvcm1FbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGZvcm1FbGVtZW50cyA9IFtcImlucHV0XCIsIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIiwgXCJrZXlnZW5cIiwgXCJwcm9ncmVzc1wiLCBcIm1ldGVyXCIsIFwib3V0cHV0XCJdO1xuICAgICAgICBpZiAoZWxlbWVudC5maXJzdENoaWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKGVsZW1lbnQpO1xuICAgICAgICAgICAgd2hpbGUgKG53Lm5leHROb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybUVsZW1lbnRzLmluY2x1ZGVzKG53Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQobncubm9kZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzRGlzYWJsZWRCeVJlZmVycmluZ0VsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBsZXQgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcImlkXCIpO1xuICAgICAgICBsZXQgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50O1xuICAgICAgICBsZXQgcm9vdCA9IGRvYy5ib2R5O1xuICAgICAgICB3aGlsZSAoRE9NVXRpbC5wYXJlbnROb2RlKHJvb3QpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIHBhcmVudE5vZGVcbiAgICAgICAgICAgIHJvb3QgPSBET01VdGlsLnBhcmVudE5vZGUocm9vdCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocm9vdCk7XG4gICAgICAgIHdoaWxlIChudy5uZXh0Tm9kZSgpKSB7XG4gICAgICAgICAgICAvLyBjaGVjayB0aGUgZWxlbWVudCB3aG9zZSAnYXJpYS1kZXNjcmliZWRieScgZXF1YWxzIHRvIHRoZSBpZFxuICAgICAgICAgICAgaWYgKG53Lm5vZGUgJiYgbncubm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBudy5lbGVtKCkpIHtcbiAgICAgICAgICAgICAgICBsZXQgQXJpYURlc2NyaWJlZGJ5SURBcnJheSA9IChudy5lbGVtKCkuZ2V0QXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiKSB8fCBcIlwiKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgaWYgKEFyaWFEZXNjcmliZWRieUlEQXJyYXkuaW5jbHVkZXMoaWQpICYmIFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQobncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyBhIGRlc2NlbmRhbnQgZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSwgdW5kZXJcbiAgICAgKiB0aGUgZWxlbWVudCB0aGF0IHdhcyBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIE5vdGUgYnkgZGVmYXVsdCB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBTZXR0aW5nLlxuICAgICAqXG4gICAgICogTm90ZTogVGhpcyBpcyBhIHdyYXBwZXIgZnVuY3Rpb24gdG86IFJQVFV0aWwuZ2V0RGVzY2VuZGFudFdpdGhSb2xlSGlkZGVuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gZWxlbWVudCAtIHBhcmVudCBlbGVtZW50IGZvciB3aGljaCB3ZSB3aWxsIGJlIGNoZWNraW5nIGRlc2NlbmRhbnRzIGZvclxuICAgICAqIEBwYXJtIHtzdHJpbmd9IHJvbGVOYW1lIC0gVGhlIHJvbGUgdG8gbG9vayBmb3Igb24gdGhlIGRlc2NlbmRhbnRzIGVsZW1lbnRzXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtub2RlfSAtIFRoZSBkZXNjZW5kYW50IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSByb2xlIHNwZWNpZmllZCAob25seSBvbmUpXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVzY2VuZGFudFdpdGhSb2xlKGVsZW1lbnQsIHJvbGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmdldERlc2NlbmRhbnRXaXRoUm9sZUhpZGRlbihlbGVtZW50LCByb2xlTmFtZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgYSBkZXNjZW5kYW50IGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIHJvbGUsIHVuZGVyXG4gICAgICogdGhlIGVsZW1lbnQgdGhhdCB3YXMgcHJvdmlkZWQuIFRoaXMgZnVuY3Rpb24gYXNsbyBmaW5kcyBlbGVtZW50cyB3aXRoIGltcGxpY2l0IHJvbGVzLlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBwYXJlbnQgZWxlbWVudCBmb3Igd2hpY2ggd2Ugd2lsbCBiZSBjaGVja2luZyBkZXNjZW5kYW50cyBmb3JcbiAgICAgKiBAcGFybSB7c3RyaW5nfSByb2xlTmFtZSAtIFRoZSByb2xlIHRvIGxvb2sgZm9yIG9uIHRoZSBkZXNjZW5kYW50cyBlbGVtZW50c1xuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckhpZGRlblNldHRpbmcgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGhpZGRlbiBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckltcGxpY2l0Um9sZXMgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGltcGxpY2l0IHJvbGVzIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtub2RlfSAtIFRoZSBkZXNjZW5kYW50IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSByb2xlIHNwZWNpZmllZCAob25seSBvbmUpXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVzY2VuZGFudFdpdGhSb2xlSGlkZGVuKGVsZW1lbnQsIHJvbGVOYW1lLCBjb25zaWRlckhpZGRlblNldHRpbmcsIGNvbnNpZGVySW1wbGljaXRSb2xlcz8pIHtcbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGVyYXRpb25cbiAgICAgICAgbGV0IGRlc2NlbmRhbnQgPSBudWxsO1xuICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihlbGVtZW50KTtcblxuICAgICAgICAvLyBMb29wIG92ZXIgYWxsIHRoZSBjaGlsZHJlbnMgb2YgdGhlIGVsZW1lbnQgcHJvdmlkZWQgYW5kIGNoZWNrIGlmIHRoZSByb2xlbmFtZSBwcm92aWRlZCBleGlzdHNcbiAgICAgICAgd2hpbGUgKG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBlbGVtZW50ICYmIG53Lm5vZGUgIT0gZWxlbWVudC5uZXh0U2libGluZykge1xuXG4gICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgIC8vIG9yIG5vdC5cbiAgICAgICAgICAgIC8vICAxLiBJZiBjb25zaWRlckhpZGRlblNldHRpbmcgb3B0aW9uIGlzIHNldCB0byB0cnVlIHRoZW4gd2UgcGVyZm9ybSB0aGUgY2hlY2sgdG8gY29uc2lkZXIgdGhlXG4gICAgICAgICAgICAvLyAgICAgQ2hlY2sgSGlkZGVuIENvbnRlbnQgdGhhdCBpcyBwcm92aWRlZC5cbiAgICAgICAgICAgIC8vICAyLiBPbmx5IHJ1biBpc05vZGVWaXNpYmxlIGNoZWNrIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBOT1QgYmUgY2hlY2tlZC4gSW4gdGhlIGNhc2UgdGhhdCBoaWRkZW4gY29udGVudCBpcyB0byxcbiAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgaWYgKGNvbnNpZGVySGlkZGVuU2V0dGluZyAmJiBSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4obncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGhhcyB0aGUgcm9sZSBzcGVjaWZpZWQsIGlmIGl0IGRvZXMgdGhlbiBzZXQgdGhpcyBhcyB0aGUgZGVzY2VuZGFudCBhbmQgc3RvcCBjaGVja2luZyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgICAgICAgIC8vIG5vZGVzLlxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGhhcyB0aGUgaW1wbGljaXQgcm9sZXMsIGlmIGl0IGRvZXMgdGhlbiBzZXQgdGhpcyBhcyB0aGUgZGVzY2VuZGFudCBhbmQgc3RvcCBjaGVja2luZyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgICAgICAgIC8vIG5vZGVzLlxuICAgICAgICAgICAgaWYgKGNvbnNpZGVySW1wbGljaXRSb2xlcyA/IFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKG53Lm5vZGUsIHJvbGVOYW1lKSA6IFJQVFV0aWwuaGFzUm9sZShudy5ub2RlLCByb2xlTmFtZSwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudCA9IG53Lm5vZGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzY2VuZGFudDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyBBbGwgZGVzY2VuZGFudCBlbGVtZW50cyB3aXRoIHRoZSBzcGVjaWZpZWQgcm9sZSwgdW5kZXJcbiAgICAgKiB0aGUgZWxlbWVudCB0aGF0IHdhcyBwcm92aWRlZC4gVGhpcyBmdW5jdGlvbiBhc2xvIGZpbmRzIGVsZW1lbnRzIHdpdGggaW1wbGljaXQgcm9sZXMuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gZWxlbWVudCAtIHBhcmVudCBlbGVtZW50IGZvciB3aGljaCB3ZSB3aWxsIGJlIGNoZWNraW5nIGRlc2NlbmRhbnRzIGZvclxuICAgICAqIEBwYXJtIHtzdHJpbmd9IHJvbGVOYW1lIC0gVGhlIHJvbGUgdG8gbG9vayBmb3Igb24gdGhlIGRlc2NlbmRhbnRzIGVsZW1lbnRzXG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySGlkZGVuU2V0dGluZyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaGlkZGVuIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySW1wbGljaXRSb2xlcyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaW1wbGljaXQgcm9sZXMgc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge25vZGV9IC0gVGhlIGRlc2NlbmRhbnQgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHJvbGUgc3BlY2lmaWVkIChvbmx5IG9uZSlcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRBbGxEZXNjZW5kYW50c1dpdGhSb2xlSGlkZGVuKGVsZW1lbnQsIHJvbGVOYW1lLCBjb25zaWRlckhpZGRlblNldHRpbmcsIGNvbnNpZGVySW1wbGljaXRSb2xlcykge1xuICAgICAgICAvLyBWYXJpYWJsZSBEZWNsZXJhdGlvblxuICAgICAgICBsZXQgZGVzY2VuZGFudHMgPSBbXTtcbiAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIoZWxlbWVudCk7XG5cbiAgICAgICAgLy8gTG9vcCBvdmVyIGFsbCB0aGUgY2hpbGRyZW5zIG9mIHRoZSBlbGVtZW50IHByb3ZpZGVkIGFuZCBjaGVjayBpZiB0aGUgcm9sZW5hbWUgcHJvdmlkZWQgZXhpc3RzXG4gICAgICAgIHdoaWxlIChudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gZWxlbWVudCAmJiBudy5ub2RlICE9IGVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgIGlmIChudy5iRW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgIC8vIG9yIG5vdC5cbiAgICAgICAgICAgIC8vICAxLiBJZiBjb25zaWRlckhpZGRlblNldHRpbmcgb3B0aW9uIGlzIHNldCB0byB0cnVlIHRoZW4gd2UgcGVyZm9ybSB0aGUgY2hlY2sgdG8gY29uc2lkZXIgdGhlXG4gICAgICAgICAgICAvLyAgICAgQ2hlY2sgSGlkZGVuIENvbnRlbnQgdGhhdCBpcyBwcm92aWRlZC5cbiAgICAgICAgICAgIC8vICAyLiBPbmx5IHJ1biBpc05vZGVWaXNpYmxlIGNoZWNrIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBOT1QgYmUgY2hlY2tlZC4gSW4gdGhlIGNhc2UgdGhhdCBoaWRkZW4gY29udGVudCBpcyB0byxcbiAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgaWYgKGNvbnNpZGVySGlkZGVuU2V0dGluZyAmJiBSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4obncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGhhcyB0aGUgcm9sZSBzcGVjaWZpZWQsIGlmIGl0IGRvZXMgdGhlbiBzZXQgdGhpcyBhcyB0aGUgZGVzY2VuZGFudCBhbmQgc3RvcCBjaGVja2luZyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgICAgICAgIC8vIG5vZGVzLlxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGhhcyB0aGUgaW1wbGljaXQgcm9sZXMsIGlmIGl0IGRvZXMgdGhlbiBzZXQgdGhpcyBhcyB0aGUgZGVzY2VuZGFudCBhbmQgc3RvcCBjaGVja2luZyB0aGUgcmVzdCBvZiB0aGVcbiAgICAgICAgICAgIC8vIG5vZGVzLlxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZShudy5ub2RlLCByb2xlTmFtZSwgY29uc2lkZXJJbXBsaWNpdFJvbGVzKSkge1xuICAgICAgICAgICAgICAgIGRlc2NlbmRhbnRzLnB1c2gobncubm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVzY2VuZGFudHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyBhbiBlbGVtZW50IHJlZmVyZW5jZWQgYnkgYXJpYS1vd25zIGFuZCBoYXMgdGhlXG4gICAgICogcm9sZSB0aGF0IHdhcyBzcGVjaWZpZWQuXG4gICAgICpcbiAgICAgKiBOb3RlIGJ5IGRlZmF1bHQgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBjb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgU2V0dGluZy5cbiAgICAgKlxuICAgICAqIE5vdGU6IFRoaXMgaXMgYSB3cmFwcGVyIGZ1bmN0aW9uIHRvOiBSUFRVdGlsLmdldEFyaWFPd25zV2l0aFJvbGVIaWRkZW5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBjaGVjayBmb3IgYXJpYS1vd25zXG4gICAgICogQHBhcm0ge3N0cmluZ30gcm9sZU5hbWUgLSBUaGUgcm9sZSB0byBsb29rIGZvciBvbiB0aGUgYXJpYS1vd25zIGVsZW1lbnRcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge25vZGV9IC0gVGhlIGVsZW1lbnQgdGhhdCBpcyByZWZlcmVuY2VkIGJ5IGFyaWEtb3ducyBhbmQgaGFzIHJvbGUgc3BlY2lmaWVkLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEFyaWFPd25zV2l0aFJvbGUoZWxlbWVudCwgcm9sZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuZ2V0QXJpYU93bnNXaXRoUm9sZUhpZGRlbihlbGVtZW50LCByb2xlTmFtZSwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgYW4gZWxlbWVudCByZWZlcmVuY2VkIGJ5IGFyaWEtb3ducyBhbmQgaGFzIHRoZVxuICAgICAqIHJvbGUgdGhhdCB3YXMgc3BlY2lmaWVkLiBUaGlzIGZ1bmN0aW9uIGFzbG8gZmluZHMgZWxlbWVudHMgd2l0aCBpbXBsaWNpdCByb2xlcy5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBlbGVtZW50IC0gRWxlbWVudCB0byBjaGVjayBmb3IgYXJpYS1vd25zXG4gICAgICogQHBhcm0ge3N0cmluZ30gcm9sZU5hbWUgLSBUaGUgcm9sZSB0byBsb29rIGZvciBvbiB0aGUgYXJpYS1vd25zIGVsZW1lbnRcbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJIaWRkZW5TZXR0aW5nIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBoaWRkZW4gc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJJbXBsaWNpdFJvbGVzIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBpbXBsaWNpdCByb2xlcyBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7bm9kZX0gLSBUaGUgZWxlbWVudCB0aGF0IGlzIHJlZmVyZW5jZWQgYnkgYXJpYS1vd25zIGFuZCBoYXMgcm9sZSBzcGVjaWZpZWQuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXJpYU93bnNXaXRoUm9sZUhpZGRlbihlbGVtZW50LCByb2xlTmFtZSwgY29uc2lkZXJIaWRkZW5TZXR0aW5nLCBjb25zaWRlckltcGxpY2l0Um9sZXM/KSB7XG4gICAgICAgIC8vIFZhcmlhYmxlIERlY2xlcmF0aW9uXG4gICAgICAgIGxldCByZWZlcmVuY2VkRWxlbWVudCA9IG51bGw7XG4gICAgICAgIGxldCByZWZlcmVuY2VkRWxlbUhhc1JvbGUgPSBmYWxzZTtcblxuICAgICAgICAvLyBJbiB0aGUgY2FzZSBhcmlhLW93bnMgaXMgbm90IG9uIHRoZSBlbGVtZW50IGp1c3QgYnJlYWsgb3V0IG9mIHRoaXMgZnVuY3Rpb24gd2l0aCBudWxsXG4gICAgICAgIGlmIChSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGVsZW1lbnQsIFwiYXJpYS1vd25zXCIpKSB7XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUgcmVmZXJlbmNlIElEXG4gICAgICAgICAgICBsZXQgcmVmZXJlbmNlSUQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcImFyaWEtb3duc1wiKTtcblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBlbGVtZW50IGZvciB0aGUgcmVmZXJlbmNlIElEXG4gICAgICAgICAgICByZWZlcmVuY2VkRWxlbWVudCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKGVsZW1lbnQsIHJlZmVyZW5jZUlEKTtcblxuICAgICAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAvLyAgMS4gSWYgY29uc2lkZXJIaWRkZW5TZXR0aW5nIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHdlIHBlcmZvcm0gdGhlIGNoZWNrIHRvIGNvbnNpZGVyIHRoZVxuICAgICAgICAgICAgLy8gICAgIENoZWNrIEhpZGRlbiBDb250ZW50IHRoYXQgaXMgcHJvdmlkZWQuXG4gICAgICAgICAgICAvLyAgMi4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAvLyAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgaWYgKGNvbnNpZGVySGlkZGVuU2V0dGluZyAmJiByZWZlcmVuY2VkRWxlbWVudCAhPSBudWxsICYmIFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihyZWZlcmVuY2VkRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VkRWxlbUhhc1JvbGUgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VkRWxlbUhhc1JvbGUgPSBSUFRVdGlsLmhhc1JvbGUocmVmZXJlbmNlZEVsZW1lbnQsIHJvbGVOYW1lLCBjb25zaWRlckltcGxpY2l0Um9sZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VkRWxlbUhhc1JvbGUgPyByZWZlcmVuY2VkRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqIGdldCBlbGVtZW50IGNvbnRhaW5pbmcgbGFiZWwgZm9yIHRoZSBnaXZlbiBlbGVtZW50XG4gICAgICogQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZCBiZWNhdXNlIHRoZSBmdW5jdGlvbiBuYW1lIGlzIG1pc2xlYWRpbmcuIFVzZSBnZXRMYWJlbEZvckVsZW1lbnQoZWxlbWVudCkgaW5zdGVhZFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5wdXRMYWJlbChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmdldExhYmVsRm9yRWxlbWVudChlbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIHRoZSBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGxhYmVsIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIE5vdGU6IFRoaXMgaXMgYSB3cmFwcGVyIGZ1bmN0aW9uIHRvOiBSUFRVdGlsLmdldExhYmVsRm9yRWxlbWVudEhpZGRlblxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBsYWJlbCBlbGVtZW50IGZvci5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2VsZW1lbnR9IGVsZW1lbnQgLSByZXR1cm4gdGhlIGVsZW1lbnQgZm9yIHRoZSBsYWJlbCwgb3RoZXJ3aXNlIG51bGxcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRMYWJlbEZvckVsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4oZWxlbWVudCwgZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgdGhlIGVsZW1lbnQgY29udGFpbmluZyB0aGUgbGFiZWwgZm9yIHRoZSBnaXZlbiBlbGVtZW50LlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBudWxsIGlmIHRoZSBjb250YWluaW5nIGxhYmxlIGVsZW1lbnQgaXMgaGlkZGVuLCB3aGVuIHRoZSBpZ25vcmVIaWRkZW4gb3B0aW9uXG4gICAgICogaXMgc2V0IHRvIHRydWUuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gZWxlbWVudCAtIFRoZSBlbGVtZW50IGZvciB3aGljaCB0byBnZXQgdGhlIGxhYmVsIGVsZW1lbnQgZm9yLlxuICAgICAqIEBwYXJtIHtib29sZWFufSBpZ25vcmVIaWRkZW4gLSB0cnVlIGlmIGhpZGRlbiBlbGVtZW50cyB3aXRoIGxhYmVsIHNob3VsZCBiZSBpZ25vcmVkIGZyb20gdGhlIGxpc3RcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgaWYgdGhlIGhpZGRlbiBlbGVtZW50cyBzaG91bGQgYmUgYWRkZWRcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2VsZW1lbnR9IGVsZW1lbnQgLSByZXR1cm4gdGhlIGVsZW1lbnQgZm9yIHRoZSBsYWJlbCwgb3RoZXJ3aXNlIG51bGxcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4oZWxlbWVudDogRWxlbWVudCwgaWdub3JlSGlkZGVuKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBnbG9iYWwgUlBUVXRpbF9MQUJFTFMgaGFzaCBpcyBhdmFpbGFibGUsIGFzIHRoaXMgd2lsbCBjb250YWluIHRoZSBsYWJlbCBub2RlcyBiYXNlZCBvblxuICAgICAgICAvLyBmb3IgYXR0cmlidXRlLlxuICAgICAgICAvL2lmICghUlBUVXRpbC5nZXRDYWNoZShlbGVtZW50Lm93bmVyRG9jdW1lbnQsXCJSUFRVdGlsX0xBQkVMU1wiLCBudWxsKSkge1xuICAgICAgICBsZXQgcm9vdCA9IGVsZW1lbnQuZ2V0Um9vdE5vZGUoKTtcbiAgICAgICAgaWYgKCFSUFRVdGlsLmdldENhY2hlKChyb290Lm5vZGVUeXBlID09PSAxMSk/IDxTaGFkb3dSb290PnJvb3QgOiA8RG9jdW1lbnQ+cm9vdCwgXCJSUFRVdGlsX0xBQkVMU1wiLCBudWxsKSkge1xuICAgICAgICAgICAgLy8gVmFyaWFibGUgRGVjbGVyYXRpb25cbiAgICAgICAgICAgIGxldCBpZFRvTGFiZWwgPSB7fVxuXG4gICAgICAgICAgICAvLyBHZXQgYWxsIHRoZSBsYWJlbCBlbGVtZW50cyBpbiB0aGUgZW50aXJlIGRvY1xuICAgICAgICAgICAgbGV0IGxhYmVsTm9kZXMgPSBSUFRVdGlsLmdldERvY0VsZW1lbnRzQnlUYWcoZWxlbWVudCwgXCJsYWJlbFwiKTtcbiAgICAgICAgICAgIC8vIExvb3Agb3ZlciBhbGwgdGhlIGxhYmVsIG5vZGVzLCBpbiB0aGUgY2FzZSB0aGUgbGFiZWwgbm9kZSBoYXMgYSBmb3IgYXR0cmlidXRlLFxuICAgICAgICAgICAgLy8gZXh0cmFjdCB0aGF0IGF0dHJpYnV0ZSBhbmQgYWRkIHRoaXMgbm9kZSB0byB0aGUgaGFzaCBpZiBpdCBpcyB2aXNpYmxlLlxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYWJlbE5vZGVzLmxlbmd0aDsgKytpKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAobGFiZWxOb2Rlc1tpXS5oYXNBdHRyaWJ1dGUoXCJmb3JcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgaWdub3JlIGhpZGRlbiBpcyBzcGVjaWZpZWQgYW5kIHRoZSBub2RlIGlzIG5vdCB2aXNpYmxlIHdlIGRvIG5vdCBhZGQgaXQgdG8gdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIGxhYmVsTm9kZXMgaGFzaC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlnbm9yZUhpZGRlbiAmJiAhUlBUVXRpbC5pc05vZGVWaXNpYmxlKGxhYmVsTm9kZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlkVG9MYWJlbFtsYWJlbE5vZGVzW2ldLmdldEF0dHJpYnV0ZShcImZvclwiKV0gPSBsYWJlbE5vZGVzW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBidWlsdCBoYXNoIHRvIHRoZSBvd25lckRvY3VtZW50IChkb2N1bWVudCksIHRvIGJlIHVzZWQgbGF0ZXIgdG8gZmFzdCByZXRyaXZhbFxuICAgICAgICAgICAgLy9SUFRVdGlsLnNldENhY2hlKGVsZW1lbnQub3duZXJEb2N1bWVudCwgXCJSUFRVdGlsX0xBQkVMU1wiLCBpZFRvTGFiZWwpO1xuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZSgocm9vdC5ub2RlVHlwZSA9PT0gMTEpPyA8U2hhZG93Um9vdD5yb290IDogPERvY3VtZW50PnJvb3QsIFwiUlBUVXRpbF9MQUJFTFNcIiwgaWRUb0xhYmVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoaXMgZWxlbWVudCBoYXMgYW4gaWQgYXR0cmlidXRlLCBnZXQgdGhlIGNvcm9zcG9uZGluZyBsYWJlbCBlbGVtZW50XG4gICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImlkXCIpKSB7XG4gICAgICAgICAgICAvLyBGZXRjaCB0aGUgaWQgYXR0cmlidXRlXG4gICAgICAgICAgICBsZXQgY3RybElkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZFwiKTtcbiAgICAgICAgICAgIC8vIFJldHVybiB0aGUgY29yb3Nwb25kaW5nIGxhYmVsIGVsZW1lbnQuXG4gICAgICAgICAgICAvLyBOb3RlOiBpbiB0aGUgY2FzZSB0aGF0IHRoZSB0aGUgaWQgaXMgbm90IGZvdW5kIGluIHRoZSBoYXNoIHRoYXQgbWVhbnMsIGl0IGRvZXMgbm90IGV4aXN0cyBvciBpcyBoaWRkZW5cbiAgICAgICAgICAgIGlmIChjdHJsSWQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvL3JldHVybiBSUFRVdGlsLmdldENhY2hlKGVsZW1lbnQuZ2V0Um9vdE5vZGUoKS5vd25lckRvY3VtZW50LFwiUlBUVXRpbF9MQUJFTFNcIix7fSlbY3RybElkXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUlBUVXRpbC5nZXRDYWNoZSgocm9vdC5ub2RlVHlwZSA9PT0gMTEpPyA8U2hhZG93Um9vdD5yb290IDogPERvY3VtZW50PnJvb3QsIFwiUlBUVXRpbF9MQUJFTFNcIix7fSlbY3RybElkXTtcbiAgICAgICAgICAgIH0gXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogUmV0dXJuIHNwZWNpZmllZCBlbGVtZW50IGF0dHJpYnV0ZSBpZiBwcmVzZW50IGVsc2UgcmV0dXJuIG51bGwgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEVsZW1lbnRBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cikge1xuICAgICAgICByZXR1cm4gKGVsZW1lbnQgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUgJiYgZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cikpID8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cikgOiBudWxsO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGhhcyBhbiBBUklBIGxhYmVsXG4gICAgcHVibGljIHN0YXRpYyBoYXNBcmlhTGFiZWwoZWxlbWVudCkge1xuXG4gICAgICAgIC8vIFJwdF9BcmlhX1ZhbGlkSWRSZWYgZGV0ZXJtaW5lcyBpZiB0aGUgYXJpYS1sYWJlbGxlZGJ5IGlkIHBvaW50cyB0byBhIHZhbGlkIGVsZW1lbnRcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZWxlbWVudCwgXCJhcmlhLWxhYmVsXCIpIHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZWxlbWVudCwgXCJhcmlhLWxhYmVsbGVkYnlcIik7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRydWUgaWYgZWxlbWVudCBoYXMgdmFsaWQgaW1wbGljaXQgbGFiZWxcbiAgICBwdWJsaWMgc3RhdGljIGhhc0ltcGxpY2l0TGFiZWwoZWxlbWVudCkge1xuICAgICAgICBsZXQgcGFyZW50Tm9kZSA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IoZWxlbWVudCwgXCJsYWJlbFwiKTtcbiAgICAgICAgLy8gVGVzdCAgYSkgaWYgdGhlIHBhcmVudCBpcyBhIGxhYmVsIHdoaWNoIGlzIHRoZSBpbXBsaWNpdCBsYWJlbFxuICAgICAgICAvLyAgICAgICBiKSBpZiB0aGUgZm9ybSBlbGVtZW50IGlzIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgbGFiZWxcbiAgICAgICAgLy8gICAgICAgYykgaWYgdGhlIGZvcm0gZWxlbWVudCByZXF1aXJlcyBhbiBpbXBsaWNpdCBvciBleHBsaWNpdCBsYWJlbCA6IFwiaW5wdXRcIiwgIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIiwgXCJrZXlnZW5cIiwgXCJwcm9ncmVzc1wiLCBcIm1ldGVyXCIsIFwib3V0cHV0XCJcbiAgICAgICAgLy8gZm9ybSBlbGVtZW50cyB0aGF0IGRvIG5vdCByZXF1aXJlIGltcGxpY2l0IG9yIGV4cGxpY2l0IGxhYmVsIGVsZW1lbnQgYXJlOlxuICAgICAgICAvLyBcIm9wdGdyb3VwXCIsIFwib3B0aW9uXCIsIFwiZGF0YWxpc3RcIihhZGRlZCBsYXRlcikuIFRoZXNlIHdlcmUgaGFuZGxlZCBkaWZmZXJlbnRseSBpbiB0aGUgbWFpbiBydWxlLCBtaWdodCBuZWVkIHRvIHJlZmFjdG9yIHRoZSBjb2RlIGxhdGVyXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgcGFyZW50Tm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwibGFiZWxcIiAmJiBSUFRVdGlsLmlzRmlyc3RGb3JtRWxlbWVudChwYXJlbnROb2RlLCBlbGVtZW50KSkge1xuICAgICAgICAgICAgbGV0IHBhcmVudENsb25lID0gcGFyZW50Tm9kZS5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICAvLyBleGNsdWRlIGFsbCBmb3JtIGVsZW1lbnRzIGZyb20gdGhlIGxhYmVsIHNpbmNlIHRoZXkgbWlnaHQgYWxzbyBoYXZlIGlubmVyIGNvbnRlbnRcbiAgICAgICAgICAgIHBhcmVudENsb25lID0gUlBUVXRpbC5yZW1vdmVBbGxGb3JtRWxlbWVudHNGcm9tTGFiZWwocGFyZW50Q2xvbmUpO1xuICAgICAgICAgICAgcmV0dXJuIFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHBhcmVudENsb25lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNGaXJzdEZvcm1FbGVtZW50KHBhcmVudE5vZGUsIGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGZvcm1FbGVtZW50c1JlcXVpcmluZ0xhYmVsID0gW1wiaW5wdXRcIiwgXCJ0ZXh0YXJlYVwiLCBcInNlbGVjdFwiLCBcImtleWdlblwiLCBcInByb2dyZXNzXCIsIFwibWV0ZXJcIiwgXCJvdXRwdXRcIl07XG4gICAgICAgIGlmIChwYXJlbnROb2RlLmZpcnN0Q2hpbGQgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocGFyZW50Tm9kZSk7XG4gICAgICAgICAgICB3aGlsZSAobncubmV4dE5vZGUoKSkge1xuICAgICAgICAgICAgICAgIGlmIChmb3JtRWxlbWVudHNSZXF1aXJpbmdMYWJlbC5pbmRleE9mKG53Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudy5ub2RlID09PSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZW1vdmVBbGxGb3JtRWxlbWVudHNGcm9tTGFiZWwoZWxlbWVudCkge1xuICAgICAgICBsZXQgZm9ybUVsZW1lbnRzID0gW1wiaW5wdXRcIiwgXCJ0ZXh0YXJlYVwiLCBcInNlbGVjdFwiLCBcImJ1dHRvblwiLCBcImRhdGFsaXN0XCIsIFwib3B0Z3JvdXBcIiwgXCJvcHRpb25cIiwgXCJrZXlnZW5cIiwgXCJvdXRwdXRcIiwgXCJwcm9ncmVzc1wiLCBcIm1ldGVyXCJdO1xuICAgICAgICBsZXQgY2hpbGROb2RlcyA9IGVsZW1lbnQuY2hpbGROb2RlcztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZm9ybUVsZW1lbnRzLmluZGV4T2YoY2hpbGROb2Rlc1tpXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBHaXZlbiBhbiBhcnJheSBvZiBlbGVtZW50cywgcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnRzIGhhdmUgdW5pcXVlIEFSSUEgbGFiZWxzXG4gICAgcHVibGljIHN0YXRpYyBoYXNVbmlxdWVBcmlhTGFiZWxzTG9jYWxseShlbGVtZW50cywgaXNHbG9iYWwpIHtcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgZG9jID0gZWxlbWVudHNbMF0ub3duZXJEb2N1bWVudDtcbiAgICAgICAgbGV0IGhhc0R1cGxpY2F0ZUxhYmVscyA9IGZhbHNlO1xuICAgICAgICBsZXQgdW5pcXVlQXJpYUxhYmVscyA9IG51bGw7XG5cbiAgICAgICAgaWYgKGlzR2xvYmFsKSB7XG4gICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzID0gUlBUVXRpbC5nZXRDYWNoZShkb2MsIFwiUlBUVXRpbF9IQVNfVU5JUVVFX0FSSUFfTEFCRUxTXCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bmlxdWVBcmlhTGFiZWxzID09PSBudWxsKSB7XG4gICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgIWhhc0R1cGxpY2F0ZUxhYmVscyAmJiBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLmhhc0F0dHJpYnV0ZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikpIHtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgYXJpYUxhYmVsID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGVsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGhhc0R1cGxpY2F0ZUxhYmVscyA9IGFyaWFMYWJlbCBpbiB1bmlxdWVBcmlhTGFiZWxzO1xuICAgICAgICAgICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzW2FyaWFMYWJlbF0gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1tpXS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxJRCA9IGVsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsTm9kZSA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKGVsZW1lbnRzW2ldLCBsYWJlbElEKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsID0gbGFiZWxOb2RlID8gUlBUVXRpbC5nZXRJbm5lclRleHQobGFiZWxOb2RlKSA6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkTGFiZWwgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcobGFiZWwpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGhhc0R1cGxpY2F0ZUxhYmVscyA9IG5vcm1hbGl6ZWRMYWJlbCBpbiB1bmlxdWVBcmlhTGFiZWxzO1xuICAgICAgICAgICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzW25vcm1hbGl6ZWRMYWJlbF0gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFzIG5vIGxhYmVsIGF0IGFsbFxuICAgICAgICAgICAgICAgICAgICBoYXNEdXBsaWNhdGVMYWJlbHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNHbG9iYWwpIHtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoZG9jLCBcIlJQVFV0aWxfSEFTX1VOSVFVRV9BUklBX0xBQkVMU1wiLCB1bmlxdWVBcmlhTGFiZWxzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWhhc0R1cGxpY2F0ZUxhYmVscztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFyaWFMYWJlbChlbGUpIHtcbiAgICAgICAgaWYgKGVsZS5oYXNBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGlmIChlbGUuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxhYmVsSURzID0gZWxlLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKS50cmltKCkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkTGFiZWwgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwLCBsZW5ndGggPSBsYWJlbElEcy5sZW5ndGg7IGogPCBsZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxJRCA9IGxhYmVsSURzW2pdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxOb2RlID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQoZWxlLCBsYWJlbElEKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsID0gbGFiZWxOb2RlID8gUlBUVXRpbC5nZXRJbm5lclRleHQobGFiZWxOb2RlKSA6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRMYWJlbCArPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcobGFiZWwpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkTGFiZWwudHJpbSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbGUuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcoZWxlLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikpLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlbGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgICAgICAvL2NvbnN0IGxhYmVsID0gUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnQoZWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4oZWxlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmICghbGFiZWwpIHJldHVybiBcIlwiO1xuICAgICAgICAgICAgcmV0dXJuIChSUFRVdGlsLmdldEFyaWFMYWJlbChsYWJlbCkgfHwgbGFiZWwuaW5uZXJUZXh0IHx8IFwiXCIpLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZpbmRBcmlhTGFiZWxEdXBlcyhlbGVtZW50cykge1xuICAgICAgICBsZXQgZHVwZU1hcCA9IHt9XG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsZSkge1xuICAgICAgICAgICAgZHVwZU1hcFtSUFRVdGlsLmdldEFyaWFMYWJlbChlbGUpXSA9IChkdXBlTWFwW1JQVFV0aWwuZ2V0QXJpYUxhYmVsKGVsZSldIHx8IDApICsgMTtcbiAgICAgICAgfSlcbiAgICAgICAgcmV0dXJuIGR1cGVNYXA7XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYW4gYXJyYXkgb2YgZWxlbWVudHMsIHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50cyBoYXZlIHVuaXF1ZSBBUklBIGxhYmVscyBnbG9iYWxseVxuICAgIHB1YmxpYyBzdGF0aWMgaGFzVW5pcXVlQXJpYUxhYmVscyhlbGVtZW50cykge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5oYXNVbmlxdWVBcmlhTGFiZWxzTG9jYWxseShlbGVtZW50cywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYW4gYXJyYXkgb2YgZWxlbWVudHMsIHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50cyBoYXZlIHVuaXF1ZSBBUklBIGxhYmVsc1xuICAgIHB1YmxpYyBzdGF0aWMgaGFzRHVwbGljYXRlQXJpYUxhYmVsc0xvY2FsbHkoZWxlbWVudHMsIGlzR2xvYmFsKSB7XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IGRvYyA9IGVsZW1lbnRzWzBdLm93bmVyRG9jdW1lbnQ7XG5cbiAgICAgICAgbGV0IGhhc0R1cGxpY2F0ZUxhYmVscyA9IGZhbHNlO1xuICAgICAgICBsZXQgdW5pcXVlQXJpYUxhYmVsczogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSBudWxsO1xuICAgICAgICBsZXQgZHVwbGljYXRlTGFiZWxOYW1lQXJyYXkgPSBuZXcgQXJyYXkoKTtcblxuICAgICAgICBpZiAoaXNHbG9iYWwpIHtcbiAgICAgICAgICAgIHVuaXF1ZUFyaWFMYWJlbHMgPSBSUFRVdGlsLmdldENhY2hlKGRvYywgXCJSUFRVdGlsX0hBU19VTklRVUVfQVJJQV9MQUJFTFNcIiwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVuaXF1ZUFyaWFMYWJlbHMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHVuaXF1ZUFyaWFMYWJlbHMgPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLmhhc0F0dHJpYnV0ZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikpIHtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgYXJpYUxhYmVsID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGVsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGhhc0R1cGxpY2F0ZUxhYmVscyA9IGFyaWFMYWJlbCBpbiB1bmlxdWVBcmlhTGFiZWxzO1xuICAgICAgICAgICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzW2FyaWFMYWJlbF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShhcmlhTGFiZWwgaW4gZHVwbGljYXRlTGFiZWxOYW1lQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVMYWJlbE5hbWVBcnJheVthcmlhTGFiZWxdID0gbmV3IEFycmF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlTGFiZWxOYW1lQXJyYXlbYXJpYUxhYmVsXS5wdXNoKGVsZW1lbnRzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50c1tpXS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxJRHMgPSBlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikudHJpbSgpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRMYWJlbCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwLCBsZW5ndGggPSBsYWJlbElEcy5sZW5ndGg7IGogPCBsZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsSUQgPSBsYWJlbElEc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbE5vZGUgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChlbGVtZW50c1tpXSwgbGFiZWxJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBsYWJlbE5vZGUgPyBSUFRVdGlsLmdldElubmVyVGV4dChsYWJlbE5vZGUpIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRMYWJlbCArPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcobGFiZWwpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaGFzRHVwbGljYXRlTGFiZWxzID0gbm9ybWFsaXplZExhYmVsIGluIHVuaXF1ZUFyaWFMYWJlbHM7XG4gICAgICAgICAgICAgICAgICAgIHVuaXF1ZUFyaWFMYWJlbHNbbm9ybWFsaXplZExhYmVsXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKG5vcm1hbGl6ZWRMYWJlbCBpbiBkdXBsaWNhdGVMYWJlbE5hbWVBcnJheSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZUxhYmVsTmFtZUFycmF5W25vcm1hbGl6ZWRMYWJlbF0gPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVMYWJlbE5hbWVBcnJheVtub3JtYWxpemVkTGFiZWxdLnB1c2goZWxlbWVudHNbaV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0dsb2JhbCkge1xuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShkb2MsIFwiUlBUVXRpbF9IQVNfVU5JUVVFX0FSSUFfTEFCRUxTXCIsIHVuaXF1ZUFyaWFMYWJlbHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkdXBsaWNhdGVMYWJlbE5hbWVBcnJheTtcbiAgICB9XG5cbiAgICAvLyBHaXZlbiBhbiBhcnJheSBvZiBlbGVtZW50cywgcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnRzIGhhdmUgdW5pcXVlIEFSSUEgbGFiZWxzIGdsb2JhbGx5XG4gICAgcHVibGljIHN0YXRpYyBoYXNEdXBsaWNhdGVBcmlhTGFiZWxzKGVsZW1lbnRzKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmhhc0R1cGxpY2F0ZUFyaWFMYWJlbHNMb2NhbGx5KGVsZW1lbnRzLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBHaXZlbiBhbiBhcnJheSBvZiBlbGVtZW50cywgcmV0dXJuIHRydWUgaWYgdGhlIGVsZW1lbnRzIGhhdmUgdW5pcXVlIGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGVzXG4gICAgcHVibGljIHN0YXRpYyBoYXNVbmlxdWVBcmlhTGFiZWxsZWRieShlbGVtZW50cykge1xuXG4gICAgICAgIGxldCBoYXNEdXBsaWNhdGVMYWJlbHMgPSBmYWxzZTtcbiAgICAgICAgbGV0IGxhYmVsUmVmcyA9IHt9O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyAhaGFzRHVwbGljYXRlTGFiZWxzICYmIGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkge1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0uaGFzQXR0cmlidXRlICYmIGVsZW1lbnRzW2ldLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBsYWJlbFJlZiA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpO1xuICAgICAgICAgICAgICAgIGhhc0R1cGxpY2F0ZUxhYmVscyA9IGxhYmVsUmVmIGluIGxhYmVsUmVmcztcbiAgICAgICAgICAgICAgICBsYWJlbFJlZnNbbGFiZWxSZWZdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFzRHVwbGljYXRlTGFiZWxzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIWhhc0R1cGxpY2F0ZUxhYmVscztcbiAgICB9XG5cbiAgICAvKiBEZXRlcm1pbmUgdGhlIG5vZGUgZGVwdGggb2YgdGhlIGdpdmVuIGVsZW1lbnQgKi9cbiAgICBwdWJsaWMgc3RhdGljIG5vZGVEZXB0aChlbGVtZW50KSB7XG4gICAgICAgIGxldCBkZXB0aCA9IDA7XG4gICAgICAgIGxldCB3YWxrTm9kZSA9IGVsZW1lbnQ7XG4gICAgICAgIHdoaWxlICh3YWxrTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd2Fsa05vZGUgPSBET01VdGlsLnBhcmVudE5vZGUod2Fsa05vZGUpO1xuICAgICAgICAgICAgZGVwdGggPSBkZXB0aCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlcHRoO1xuICAgIH1cblxuICAgIC8qIGNvbXBhcmUgbm9kZSBvcmRlciBvZiB0aGUgMiBnaXZlbiBub2RlcyAqL1xuICAgIC8qIHJldHVybnNcbiAgICAgKiAgIDAgaWYgdGhlIG5vZGVzIGFyZSBlcXVhbFxuICAgICAqICAgMSBpZiBub2RlIGIgaXMgYmVmb3JlIG5vZGUgYVxuICAgICAqICAtMSBpZiBub2RlIGEgaXMgYmVmb3JlIG5vZGUgYlxuICAgICAqICAgMiBpZiBub2RlIGEgaXMgbmVzdGVkIGluIG5vZGUgYlxuICAgICAqICAtMiBpZiBub2RlIGIgaXMgbmVzdGVkIGluIG5vZGUgYVxuICAgICAqICAgbnVsbCBpZiBlaXRoZXIgbm9kZSBpcyBudWxsIG9yIHRoZWlyIHBhcmVudCBub2RlcyBhcmUgbm90IGVxdWFsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjb21wYXJlTm9kZU9yZGVyKG5vZGVBLCBub2RlQikge1xuICAgICAgICBpZiAobm9kZUEgPT09IG5vZGVCKSByZXR1cm4gMDtcblxuICAgICAgICBsZXQgYURlcHRoID0gUlBUVXRpbC5ub2RlRGVwdGgobm9kZUEpO1xuICAgICAgICBsZXQgYkRlcHRoID0gUlBUVXRpbC5ub2RlRGVwdGgobm9kZUIpO1xuICAgICAgICBpZiAoYkRlcHRoID4gYURlcHRoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJEZXB0aCAtIGFEZXB0aDsgKytpKVxuICAgICAgICAgICAgICAgIG5vZGVCID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGVCKTtcbiAgICAgICAgICAgIGlmIChub2RlQSA9PT0gbm9kZUIpIC8vIE5vZGUgQiBuZXN0ZWQgaW4gTm9kZSBBXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0yO1xuICAgICAgICB9IGVsc2UgaWYgKGFEZXB0aCA+IGJEZXB0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhRGVwdGggLSBiRGVwdGg7ICsraSlcbiAgICAgICAgICAgICAgICBub2RlQSA9IERPTVV0aWwucGFyZW50Tm9kZShub2RlQSk7XG4gICAgICAgICAgICBpZiAobm9kZUEgPT09IG5vZGVCKSAvLyBOb2RlIEEgbmVzdGVkIGluIE5vZGUgQlxuICAgICAgICAgICAgICAgIHJldHVybiAyO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChub2RlQSAhPSBudWxsICYmIG5vZGVCICE9IG51bGwgJiYgRE9NVXRpbC5wYXJlbnROb2RlKG5vZGVBKSAhPSBET01VdGlsLnBhcmVudE5vZGUobm9kZUIpKSB7XG4gICAgICAgICAgICBub2RlQSA9IERPTVV0aWwucGFyZW50Tm9kZShub2RlQSk7XG4gICAgICAgICAgICBub2RlQiA9IERPTVV0aWwucGFyZW50Tm9kZShub2RlQik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGVBID09PSBudWxsIHx8IG5vZGVCID09PSBudWxsIHx8IERPTVV0aWwucGFyZW50Tm9kZShub2RlQSkgIT0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGVCKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHdoaWxlIChub2RlQiAhPSBudWxsICYmIG5vZGVCICE9IG5vZGVBKVxuICAgICAgICAgICAgbm9kZUIgPSBub2RlQi5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgIGlmIChub2RlQiA9PT0gbnVsbCkgLy8gbm9kZUIgYmVmb3JlIG5vZGVBXG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgZWxzZSByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIERldGVybWluZSBpZiB0aGUgZ2l2ZW4gYXR0cmlidXRlIG9mIHRoZSBnaXZlbiBlbGVtZW50IGlzIG5vdCBlbXB0eVxuICAgICAqICBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgYXR0cmlidXRlTm9uRW1wdHkoZWxlbWVudCwgYXR0clN0cikge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0clN0cikgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0clN0cikudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgLyogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZ2l2ZW4gZ2xvYmFsIHZhcmlhYmxlXG4gICAgICogd2l0aCBpdHMgaW5pdGlhbCB2YWx1ZSBhcyBnaXZlbiAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2FjaGUoY2FjaGVTcG90OiBFbGVtZW50IHwgRG9jdW1lbnQgfCBEb2N1bWVudEZyYWdtZW50LCBrZXlOYW1lLCBpbml0VmFsdWUpIHtcbiAgICAgICAgbGV0IGNhY2hlT2JqID0gKGNhY2hlU3BvdC5ub2RlVHlwZSA9PT0gOSAvKiBOb2RlLkRPQ1VNRU5UX05PREUgKi8gfHwgY2FjaGVTcG90Lm5vZGVUeXBlID09PSAxMSAvKiBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgKi8pID8gY2FjaGVTcG90IGFzIENhY2hlRG9jdW1lbnQgOiBjYWNoZVNwb3QgYXMgQ2FjaGVFbGVtZW50O1xuXG4gICAgICAgIGlmIChjYWNoZU9iai5hY2VDYWNoZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjYWNoZU9iai5hY2VDYWNoZSA9IHt9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhY2hlT2JqLmFjZUNhY2hlW2tleU5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNhY2hlT2JqLmFjZUNhY2hlW2tleU5hbWVdID0gaW5pdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWNoZU9iai5hY2VDYWNoZVtrZXlOYW1lXVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc2V0Q2FjaGUoY2FjaGVTcG90OiBEb2N1bWVudCB8IEVsZW1lbnQgfCBTaGFkb3dSb290LCBnbG9iYWxOYW1lLCB2YWx1ZSkgOiBhbnkge1xuICAgICAgICBsZXQgY2FjaGVPYmogPSAoY2FjaGVTcG90Lm5vZGVUeXBlID09PSA5IC8qIE5vZGUuRE9DVU1FTlRfTk9ERSAqLyB8fCBjYWNoZVNwb3Qubm9kZVR5cGUgPT09IDExIC8qIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAqLykgPyBjYWNoZVNwb3QgYXMgQ2FjaGVEb2N1bWVudCA6IGNhY2hlU3BvdCBhcyBDYWNoZUVsZW1lbnQ7XG4gICAgICAgIGlmIChjYWNoZU9iai5hY2VDYWNoZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjYWNoZU9iai5hY2VDYWNoZSA9IHt9XG4gICAgICAgIH1cbiAgICAgICAgY2FjaGVPYmouYWNlQ2FjaGVbZ2xvYmFsTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGdpdmVuIGZyYW1lLCBudWxsIGlmIG5vdCBmb3VuZCAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RnJhbWVCeU5hbWUocnVsZUNvbnRleHQsZnJhbWVOYW1lKSB7XG4gICAgICAgIGxldCB3aW5kb3cgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgICAgICBsZXQgZnJhbWVMaXN0ID0gW3dpbmRvd107XG4gICAgICAgIGxldCBpZHggPSAwO1xuICAgICAgICB3aGlsZSAoaWR4IDwgZnJhbWVMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoZnJhbWVMaXN0W2lkeF0ubmFtZSA9PT0gZnJhbWVOYW1lKSByZXR1cm4gZnJhbWVMaXN0W2lkeF07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmcmFtZUxpc3RbaWR4XS5mcmFtZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBpdCdzIGEgcmVhbCBmcmFtZSBhbmQgYXZvaWQgcmVjdXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVMaXN0W2lkeF0uZnJhbWVzW2ldICYmICFmcmFtZUxpc3QuaW5jbHVkZXMoZnJhbWVMaXN0W2lkeF0uZnJhbWVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lTGlzdC5wdXNoKGZyYW1lTGlzdFtpZHhdLmZyYW1lc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgICsraWR4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZGVmYXVsdE5TUmVzb2x2ZXIocHJlZml4KXtcbiAgICAgICAgbGV0IHVyaTtcbiAgICAgICAgc3dpdGNoIChwcmVmaXgpIHtcbiAgICAgICAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICAgICAgICAgIHVyaSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJztcbiAgICAgICAgICAgIGNhc2UgJ3gyJzpcbiAgICAgICAgICAgICAgICB1cmkgPSAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwyJztcbiAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgIHVyaSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJztcbiAgICAgICAgICAgIGNhc2UgJ3hodG1sJzpcbiAgICAgICAgICAgICAgICB1cmkgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHVyaSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVyaTtcbiAgICB9XG5cbiAgICAvL2NoZWNraW5nIGlmIG9ubHkgdGhlIGlubmVyIHRleHQgaXMgZW1wdHkgb3Igbm90XG4gICAgcHVibGljIHN0YXRpYyBpc0lubmVyVGV4dE9ubHlFbXB0eShlbGVtZW50KSB7XG4gICAgICAgIC8vIEdldCB0aGUgaW5uZXJUZXh0IG9mIHRoZSBlbGVtZW50XG4gICAgICAgIGxldCB0ZXh0ID0gZWxlbWVudC5pbm5lclRleHQ7XG5cbiAgICAgICAgaWYgKHRleHQgPT09IHVuZGVmaW5lZCAmJiBlbGVtZW50LnRleHRDb250ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIEluIGhlYWRsZXNzIG1vZGUsICBpbm5lclRleHQgaXMgc29tZXRpbWVzICd1bmRlZmluZWQnXG4gICAgICAgICAgICAvLyBzbyB3ZSB0cnkgdGV4dENvbnRlbnQgYXMgYSB3b3JrYXJvdW5kXG4gICAgICAgICAgICB0ZXh0ID0gZWxlbWVudC50ZXh0Q29udGVudFxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJldFZhbCA9ICEodGV4dCAhPT0gbnVsbCAmJiB0ZXh0LnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgICAgICAgaWYgKGVsZW1lbnQubm9kZVR5cGUgPT09IDEgJiYgZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInNsb3RcIikge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzbG90RWxlbSBvZiBlbGVtZW50LmFzc2lnbmVkTm9kZXMoKSkge1xuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCAmJiBSUFRVdGlsLmlzSW5uZXJUZXh0RW1wdHkoc2xvdEVsZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJpbSB0aGUgaW5uZXIgdGV4dCBhbmQgdmVyaWZ5IHRoYXQgaXQgaXMgbm90IGVtcHR5LlxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qIFJldHVybiB0aGUgaW5uZXIgdGV4dCBvZiB0aGUgZ2l2ZW4gZWxlbWVudCAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5uZXJUZXh0KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHJldFZhbCA9IGVsZW1lbnQuaW5uZXJUZXh0O1xuICAgICAgICBpZiAocmV0VmFsID09PSB1bmRlZmluZWQgfHwgcmV0VmFsLnRyaW0oKSA9PT0gXCJcIilcbiAgICAgICAgICAgIHJldFZhbCA9IGVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcgaWYgZWxlbWVudHMgaW5uZXIgdGV4dCBpcyBlbXB0eSBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gbm9kZSBUaGUgbm9kZSB3aGljaCBzaG91bGQgYmUgY2hlY2tlZCBpdCBoYXMgaW5uZXIgdGV4dCBvciBub3QuXG4gICAgICogQHJldHVybiB7Ym9vbH0gdHJ1ZSBpZiBlbGVtZW50IGhhcyBlbXB0eSBpbm5lciB0ZXh0LCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpc0lubmVyVGV4dEVtcHR5KGVsZW1lbnQpIHtcbiAgICAgICAgLy8gR2V0IHRoZSBpbm5lclRleHQgb2YgdGhlIGVsZW1lbnRcbiAgICAgICAgbGV0IHRleHQgPSBSUFRVdGlsLmdldElubmVyVGV4dChlbGVtZW50KTtcblxuICAgICAgICAvLyBUcmltIHRoZSBpbm5lciB0ZXh0IGFuZCB2ZXJpZnkgdGhhdCBpdCBpcyBub3QgZW1wdHkuXG4gICAgICAgIHJldHVybiAhKHRleHQgIT0gbnVsbCAmJiB0ZXh0LnRyaW0oKS5sZW5ndGggPiAwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0lubmVyQ29udGVudChlbGVtZW50KSB7XG4gICAgICAgIGxldCB0ZXh0ID0gUlBUVXRpbC5nZXRJbm5lclRleHQoZWxlbWVudCk7XG4gICAgICAgIGxldCBoYXNDb250ZW50ID0gKHRleHQgIT0gbnVsbCAmJiB0ZXh0LnRyaW0oKS5sZW5ndGggPiAwKTtcblxuICAgICAgICBpZiAoZWxlbWVudC5maXJzdENoaWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKGVsZW1lbnQpO1xuICAgICAgICAgICAgd2hpbGUgKCFoYXNDb250ZW50ICYmIG53Lm5leHROb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBoYXNDb250ZW50ID0gKG53Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbWdcIiAmJlxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KG53Lm5vZGUsIFwiYWx0XCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzQ29udGVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmUgaWYgYW4gZWxlbWVudCBoYXMgaW5uZXIgY29udGVudC5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsc28gY29uc2lkZXJzIGNhc2VzIHdoZXJlIGlubmVyIHRleHQgaXMgaGlkZGVuLCB3aGljaCBub3cgd2lsbFxuICAgICAqIGJlIGNsYXNzaWZpZWQgYXMgZG9lcyBub3QgaGF2ZSBoaWRkZW4gY29udGVudC5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBub2RlIFRoZSBub2RlIHdoaWNoIHNob3VsZCBiZSBjaGVja2VkIGl0IGhhcyBpbm5lciB0ZXh0IG9yIG5vdC5cbiAgICAgKiBAcmV0dXJuIHtib29sfSB0cnVlIGlmIGVsZW1lbnQgaGFzIGVtcHR5IGlubmVyIHRleHQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGhhc0lubmVyQ29udGVudEhpZGRlbihlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbkh5cGVyTGluayhlbGVtZW50LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdmdIYXNOYW1lKGVsZW1lbnQ6IFNWR0VsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZWxlbWVudCwgXCJhcmlhLWxhYmVsXCIpXG4gICAgICAgICAgICB8fCBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGVsZW1lbnQsIFwiYXJpYS1sYWJlbGxlZGJ5XCIpXG4gICAgICAgICAgICB8fCAhIWVsZW1lbnQucXVlcnlTZWxlY3RvcihcIjpzY29wZSA+IHRpdGxlXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFzSW5uZXJDb250ZW50SGlkZGVuSHlwZXJMaW5rKGVsZW1lbnQsIGh5cGVybGlua19mbGFnKSB7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBWYXJpYWJsZSBEZWNsZXJhdGlvblxuICAgICAgICBsZXQgY2hpbGRFbGVtZW50ID0gZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgbGV0IGhhc0NvbnRlbnQgPSBmYWxzZTtcblxuICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjaGlsZEVsZW1lbnQgaXMgbm90IG51bGwgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGVhY2ggb2YgdGhlIGVsZW1lbnRzXG4gICAgICAgIC8vIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbGVtZW50cyBhcmUgbm90IGFsbCBoaWRkZW4uXG4gICAgICAgIGlmIChjaGlsZEVsZW1lbnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBub2Rld2FsdGVyIG9mIHRoZSBlbGVtZW50IG5vZGUsIHNvIHRoYXQgd2UgY2FuIGxvb3Agb3ZlciBpdCBhbmQgdmVyaWZ5XG4gICAgICAgICAgICAvLyB0aGF0IHRoZSBlbGVtZW50cyB1bmRlciB0aGUgZWxlbWVudCBhcmUgbm90IGNvbXBsZXRseSBoaWRkZW4uXG4gICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihlbGVtZW50KTtcblxuICAgICAgICAgICAgLy8gTG9vcCBvdmVyIGFsbCB0aGUgbm9kZXMgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgbm9kZXMgb3Igd2UgaGF2ZSBkZXRlcm1pbmUgdGhhdCB0aGVyZSBpcyBjb250ZW50IHVuZGVyXG4gICAgICAgICAgICAvLyB0aGlzIHBhcmVudCBlbGVtZW50LlxuICAgICAgICAgICAgd2hpbGUgKCFoYXNDb250ZW50ICYmIG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBuZXh0IG5vZGVcbiAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IG53Lm5vZGU7XG5cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSBhbiBpbWcgZWxlbWVudCBpcyBwcmVzZW50IHdpdGggYWx0IHRoZW4gd2UgY2FuIG1hcmsgdGhpcyBhcyBwYXNzXG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGtlZXAgY2hlY2tpbmcgYWxsIHRoZSBvdGhlciBlbGVtZW50cy4gTWFrZSBzdXJlIHRoYXQgdGhpcyBpbWFnZSBlbGVtZW50IGlzIG5vdCBoaWRkZW4uXG4gICAgICAgICAgICAgICAgaGFzQ29udGVudCA9IChcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImltZ1wiXG4gICAgICAgICAgICAgICAgICAgICYmIChSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KG5vZGUsIFwiYWx0XCIpIHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobm9kZSwgXCJ0aXRsZVwiKSlcbiAgICAgICAgICAgICAgICAgICAgJiYgUlBUVXRpbC5pc05vZGVWaXNpYmxlKG5vZGUpXG4gICAgICAgICAgICAgICAgKSB8fCAoXG4gICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzdmdcIlxuICAgICAgICAgICAgICAgICAgICAmJiBSUFRVdGlsLnN2Z0hhc05hbWUobm9kZSBhcyBhbnkpXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIE5vdyB3ZSBjaGVjayBpZiB0aGlzIG5vZGUgaXMgb2YgdHlwZSBlbGVtZW50LCB2aXNpYmxlXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50ICYmIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgUlBUVXRpbC5pc05vZGVWaXNpYmxlKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBpbm5lclRleHQgb2YgdGhlIGVsZW1lbnQgaXMgZW1wdHkgb3Igbm90XG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbnRlbnQgPSAhUlBUVXRpbC5pc0lubmVyVGV4dE9ubHlFbXB0eShub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50ICYmIGh5cGVybGlua19mbGFnID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNDb250ZW50ID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShub2RlLCBcImFyaWEtbGFiZWxcIikgfHwgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShub2RlLCBcImFyaWEtbGFiZWxsZWRieVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb2MgPSBub2RlLm93bmVyRG9jdW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdpbiA9IGRvYy5kZWZhdWx0VmlldztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2luKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjU3R5bGUgPSB3aW4uZ2V0Q29tcHV0ZWRTdHlsZShub2RlIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ29udGVudCAmJiBjU3R5bGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjU3R5bGUuYmFja2dyb3VuZEltYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coY1N0eWxlLmNvbnRlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNDb250ZW50ID0gKChjU3R5bGUuYmFja2dyb3VuZEltYWdlICYmIGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UuaW5kZXhPZikgfHwgY1N0eWxlLmNvbnRlbnQpICYmIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobm9kZSwgXCJhbHRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBjYXNlcyB3aGVyZSB0aGVyZSBpcyB0ZXh0IG5vZGUgYWZ0ZXIgYW4gZWxlbWVudCB1bmRlciB0aGUgcGFyZW50XG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2UgZGV0ZWN0IG5vZGV0eXBlIGFzIHRleHQgbm9kZSBhbmQgdGhlIHBhdGVudCBvZiB0aGUgdGV4dCBub2RlIGlzXG4gICAgICAgICAgICAgICAgLy8gdGhlIHNhbWUgZWxlbWVudCB3ZSBhcmUgY2hlY2tpbmcgaGFzIElubmVyIGNvbnRlbnQgZm9yIHRoZW4gZ2V0IHRoZSBpbm5lciBjb250ZW50IG9mIHRoaXNcbiAgICAgICAgICAgICAgICAvLyB0ZXh0IG5vZGUuXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMgJiYgRE9NVXRpbC5wYXJlbnRFbGVtZW50KG5vZGUpID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBpbm5lclRleHQgb2YgdGhlIGVsZW1lbnQgaXMgZW1wdHkgb3Igbm90XG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbnRlbnQgPSAhUlBUVXRpbC5pc0lubmVyVGV4dEVtcHR5KG5vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGVyZSBhcmUgbm8gY2hpbGQgZWxlbWVudHMgdGhlbiB3ZSBjYW4gc2ltcGx5IHBlcmZvcm0gdGhlIGNoZWNrIGZvciBvbmx5IGlubmVydGV4dFxuICAgICAgICAvLyB0aGUgaW1nIHdpdGggYWx0IGNhc2Ugd2lsbCBiZSBjb3ZlcmVkIGluIHRoZSBhYm92ZSBpZiwgYXMgaW1nIGlzIGNvbnNpZGVycyBhcyBhbiBlbGVtZW50LlxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBpbm5lclRleHQgb2YgdGhlIGVsZW1lbnQgaXMgZW1wdHkgb3Igbm90XG4gICAgICAgICAgICBoYXNDb250ZW50ID0gIVJQVFV0aWwuaXNJbm5lclRleHRFbXB0eShlbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoYXNDb250ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFzSW5uZXJDb250ZW50T3JBbHQoZWxlbWVudCkge1xuICAgICAgICBsZXQgdGV4dCA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KGVsZW1lbnQpO1xuICAgICAgICBsZXQgaGFzQ29udGVudCA9ICh0ZXh0ICE9IG51bGwgJiYgdGV4dC50cmltKCkubGVuZ3RoID4gMCkgfHwgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShlbGVtZW50LCBcImFsdFwiKTtcblxuICAgICAgICBpZiAoZWxlbWVudC5maXJzdENoaWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKGVsZW1lbnQpO1xuICAgICAgICAgICAgd2hpbGUgKCFoYXNDb250ZW50ICYmIG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFzQ29udGVudCA9IChudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW1nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShudy5ub2RlLCBcImFsdFwiKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICYmIChSUFRVdGlsLmhhc1JvbGUobncubm9kZSwgXCJidXR0b25cIiwgdHJ1ZSkgfHwgUlBUVXRpbC5oYXNSb2xlKG53Lm5vZGUsIFwidGV4dGJveFwiKSlcbiAgICAgICAgICAgICAgICAgICAgJiYgKFJQVFV0aWwuaGFzQXJpYUxhYmVsKG53Lm5vZGUpIHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobncubm9kZSwgXCJ0aXRsZVwiKSB8fCBSUFRVdGlsLmdldExhYmVsRm9yRWxlbWVudEhpZGRlbihudy5lbGVtKCksIHRydWUpKSlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNDb250ZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29uY2F0VW5pcXVlQXJyYXlJdGVtKGl0ZW06IHN0cmluZywgYXJyOiBzdHJpbmdbXSkgOiBzdHJpbmdbXSB7XG4gICAgICAgIGFyci5pbmRleE9mKGl0ZW0pID09PSAtMSAmJiBpdGVtICE9PSBudWxsID8gYXJyLnB1c2goaXRlbSkgOiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QoaXRlbUxpc3Q6IHN0cmluZ1tdLCBhcnI6IHN0cmluZ1tdKSA6IHN0cmluZ1tdIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGl0ZW1MaXN0ICE9PSBudWxsICYmIGkgPCBpdGVtTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJyID0gUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW0oaXRlbUxpc3RbaV0sIGFycik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEVsZW1lbnRBcmlhUHJvcGVydHkocnVsZUNvbnRleHQpIHtcbiAgICAgICAgbGV0IHRhZ05hbWUgPSBudWxsO1xuICAgICAgICBsZXQgbmFtZSA9IG51bGw7XG5cbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0LnRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBydWxlQ29udGV4dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIHRhZ1Byb3BlcnR5IGV4aXN0cyBpbiB0aGUgZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50IGhhc2guXG4gICAgICAgIGxldCB0YWdQcm9wZXJ0eSA6IElEb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnQgPSBBUklBRGVmaW5pdGlvbnMuZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50W3RhZ05hbWVdO1xuICAgICAgICAvLyBUaGUgdGFnIG5lZWRzIHRvIGNoZWNrIHNvbWUgc3BlY2lhbCBhdHRyaWJ1dGVzXG4gICAgICAgIGlmICh0YWdQcm9wZXJ0eSA9PT0gbnVsbCB8fCB0YWdQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgc3BlY2lhbFRhZ1Byb3BlcnRpZXMgPSBBUklBRGVmaW5pdGlvbnMuZG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50U3BlY2lhbFRhZ3NbdGFnTmFtZV07XG4gICAgICAgICAgICBzd2l0Y2ggKHRhZ05hbWUpIHsgLy8gc3BlY2lhbCBjYXNlc1xuICAgICAgICAgICAgICAgIGNhc2UgXCJhXCI6XG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiaHJlZlwiKSA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ3aXRoLWhyZWZcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wid2l0aG91dC1ocmVmXCJdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXJlYVwiOlxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImhyZWZcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wid2l0aC1ocmVmXCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIndpdGhvdXQtaHJlZlwiXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImZpZ3VyZVwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmY3MgPSBSUFRVdGlsLmdldENoaWxkQnlUYWcocnVsZUNvbnRleHQsIFwiZmlnY2FwdGlvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZmNzICE9PSBudWxsICYmIGZjcy5sZW5ndGggPiAwID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImNoaWxkLWZpZ2NhcHRpb25cIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wibm8tY2hpbGQtZmlnY2FwdGlvblwiXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJmb290ZXJcIjoge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiYXJ0aWNsZVwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiY29tcGxlbWVudGFyeVwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwibWFpblwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwibmF2aWdhdGlvblwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwicmVnaW9uXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBhbmNlc3RvciAhPT0gbnVsbCA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJkZXMtc2VjdGlvbi1hcnRpY2xlXCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIm5vdC1kZXMtc2VjdGlvbi1hcnRpY2xlXCJdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBcImZvcm1cIjpcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IEFSSUFNYXBwZXIuY29tcHV0ZU5hbWUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wid2l0aC1uYW1lXCJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIndpdGhvdXQtbmFtZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiaGVhZGVyXCI6XG4gICAgICAgICAgICAgICAgICAgIGxldCBhbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJhcnRpY2xlXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3IgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJjb21wbGVtZW50YXJ5XCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3IgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJtYWluXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3IgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJuYXZpZ2F0aW9uXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYW5jZXN0b3IgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJyZWdpb25cIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yICE9PSBudWxsID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImRlcy1zZWN0aW9uLWFydGljbGVcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wibm90LWRlcy1zZWN0aW9uLWFydGljbGVcIl07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJpbWdcIjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFsdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWx0XCIpLnRyaW0oKSA9PT0gXCJcIiA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJpbWctd2l0aC1lbXB0eS1hbHRcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiaW1nLXdpdGgtYWx0LXRleHRcIl07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmhhc0FyaWFMYWJlbChydWxlQ29udGV4dCkgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiaW1nLXdpdGgtYWx0LXRleHRcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiaW1nLXdpdGhvdXQtYWx0XCJdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJpbnB1dFwiOlxuICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW3R5cGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhZ1Byb3BlcnR5ID09PSBudWxsIHx8IHRhZ1Byb3BlcnR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNoZWNrYm94XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImFyaWEtcHJlc3NlZFwiKSA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJjaGVja2JveC13aXRoLWFyaWEtcHJlc3NlZFwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJjaGVja2JveC13aXRob3V0LWFyaWEtcHJlc3NlZFwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZW1haWxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwibGlzdFwiKSA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJlbWFpbC13aXRoLWxpc3RcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiZW1haWwtbm8tbGlzdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwic2VhcmNoXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxpc3RcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wic2VhcmNoLXdpdGgtbGlzdFwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJzZWFyY2gtbm8tbGlzdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwidGVsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxpc3RcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1widGVsLXdpdGgtbGlzdFwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ0ZWwtbm8tbGlzdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsaXN0XCIpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcInRleHQtd2l0aC1saXN0XCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcInRleHQtbm8tbGlzdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwidXJsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxpc3RcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1widXJsLXdpdGgtbGlzdFwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ1cmwtbm8tbGlzdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0eXBlIGlzIHRoZSBzYW1lIGFzIHR5cGU9dGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsaXN0XCIpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcInRleHQtd2l0aC1saXN0XCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcInRleHQtbm8tbGlzdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdHlwZSBpcyB0aGUgc2FtZSBhcyB0eXBlPXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwibGlzdFwiKSA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ0ZXh0LXdpdGgtbGlzdFwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ0ZXh0LW5vLWxpc3RcIl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInNlY3Rpb25cIjpcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IEFSSUFNYXBwZXIuY29tcHV0ZU5hbWUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wid2l0aC1uYW1lXCJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIndpdGhvdXQtbmFtZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwic2VsZWN0XCI6XG4gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxUYWdQcm9wZXJ0aWVzID0gQVJJQURlZmluaXRpb25zLmRvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudFNwZWNpYWxUYWdzW1wic2VsZWN0XCJdO1xuICAgICAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwibXVsdGlwbGVcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwic2l6ZVwiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJzaXplXCIpID4gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJtdWx0aXBsZS1hdHRyLXNpemUtZ3QxXCJdO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wibm8tbXVsdGlwbGUtYXR0ci1zaXplLWd0MVwiXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInRkXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcInRoXCI6XG4gICAgICAgICAgICAgICAgY2FzZSBcInRyXCI6XG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwidGFibGVcIiwgdHJ1ZSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJkZXMtdGFibGVcIl07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiZ3JpZFwiLCB0cnVlKSB8fCBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwidHJlZWdyaWRcIiwgdHJ1ZSkgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiZGVzLWdyaWRcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiZGVzLW90aGVyXCJdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gQVJJQURlZmluaXRpb25zLmRvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudFNwZWNpYWxUYWdzW1wiZGVmYXVsdFwiXSBhcyBJRG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50O1xuICAgICAgICAgICAgfSAvL3N3aXRjaFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWdQcm9wZXJ0eSB8fCBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWxsb3dlZEFyaWFSb2xlcyhydWxlQ29udGV4dCwgcHJvcGVydGllczogSURvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudCkge1xuICAgICAgICBsZXQgYWxsb3dlZFJvbGVzIDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgbGV0IHRhZ1Byb3BlcnR5IDogSURvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudCA9IG51bGw7XG4gICAgICAgIGlmIChwcm9wZXJ0aWVzICE9PSBudWxsICYmIHByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBwcm9wZXJ0aWVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBSUFRVdGlsLmdldEVsZW1lbnRBcmlhUHJvcGVydHkocnVsZUNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhZ1Byb3BlcnR5ICE9PSBudWxsICYmIHRhZ1Byb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QodGFnUHJvcGVydHkuaW1wbGljaXRSb2xlLCBhbGxvd2VkUm9sZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGFnUHJvcGVydHkudmFsaWRSb2xlcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdCh0YWdQcm9wZXJ0eS52YWxpZFJvbGVzLCBhbGxvd2VkUm9sZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhbGxvd2VkUm9sZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBbGxvd2VkQXJpYUF0dHJpYnV0ZXMocnVsZUNvbnRleHQsIHBlcm1pdHRlZFJvbGVzLCBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gcnVsZUNvbnRleHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBsZXQgYWxsb3dlZEF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgLypUaGVzZSBuZWVkcyB0byBiZSBoYW5kbGVkIGZpcnN0IHNpbmNlIGl0cyBhcHBsaWNhYmxlIHRvIGFsbCBlbGVtZW50cyovXG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSAmJiBBUklBRGVmaW5pdGlvbnMuZWxlbWVudHNBbGxvd2VkRGlzYWJsZWQuaW5kZXhPZih0YWdOYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIC8qRWxlbWVudCB3aXRoIGEgZGlzYWJsZWQgYXR0cmlidXRlICBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbDUvZGlzYWJsZWQtZWxlbWVudHMuaHRtbFxuICAgICAgICAgICAgICAgIFVzZSB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIG9uIGFueSBlbGVtZW50IHRoYXQgaXMgYWxsb3dlZCB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIGluIEhUTUw1LiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgT25seSB1c2UgdGhlIGFyaWEtZGlzYWJsZWQgYXR0cmlidXRlIGZvciBlbGVtZW50cyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBoYXZlIGEgZGlzYWJsZWQgYXR0cmlidXRlIGluIEhUTUw1ICovXG4gICAgICAgICAgICBhbGxvd2VkQXR0cmlidXRlcyA9IFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtKFwiYXJpYS1kaXNhYmxlZFwiLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlcXVpcmVkXCIpICYmIEFSSUFEZWZpbml0aW9ucy5lbGVtZW50c0FsbG93ZWRSZXF1aXJlZC5pbmRleE9mKHRhZ05hbWUpID4gLTEpIHtcbiAgICAgICAgICAgIC8qRWxlbWVudCB3aXRoIGEgcmVxdWlyZWQgYXR0cmlidXRlICAvLyBodHRwOi8vd3d3LnRoZS1hcnQtb2Ytd2ViLmNvbS9odG1sL2h0bWw1LWZvcm0tdmFsaWRhdGlvbi9cbiAgICAgICAgICAgICAgICAqIGFyaWEtcmVxdWlyZWQ9XCJ0cnVlXCIgVXNlIHRoZSBhcmlhLXJlcXVpcmVkIGF0dHJpYnV0ZSBvbiBhbnkgZWxlbWVudCB0aGF0IGlzIGFsbG93ZWQgdGhlIHJlcXVpcmVkIGF0dHJpYnV0ZSBpbiBIVE1MNS5cbiAgICAgICAgICAgICAgICAqIE1BWSBhbHNvIGJlIHVzZWQgZm9yIGVsZW1lbnRzIHRoYXQgaGF2ZSBhbiBhdHRhY2hlZCBBUklBIHJvbGUgd2hpY2ggYWxsb3dzIHRoZSBhcmlhLXJlcXVpcmVkIGF0dHJpYnV0ZS4qL1xuICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMgPSBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbShcImFyaWEtcmVxdWlyZWRcIiwgYWxsb3dlZEF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZWFkb25seVwiKSAmJiBBUklBRGVmaW5pdGlvbnMuZWxlbWVudHNBbGxvd2VkUmVhZE9ubHkuaW5kZXhPZih0YWdOYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIC8qRWxlbWVudCB3aXRoIGEgcmVhZG9ubHkgYXR0cmlidXRlKiBhcmlhLXJlYWRvbmx5PVwidHJ1ZVwiICogVXNlIHRoZSByZWFkb25seSBhdHRyaWJ1dGUgb24gYW55IGVsZW1lbnQgdGhhdCBpcyBhbGxvd2VkIHRoZSByZWFkb25seSBhdHRyaWJ1dGUgaW4gSFRNTDUuXG4gICAgICAgICAgICAgICAgT25seSB1c2UgdGhlIGFyaWEtcmVhZG9ubHkgYXR0cmlidXRlIGZvciBlbGVtZW50cyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBoYXZlIGEgcmVhZG9ubHkgYXR0cmlidXRlIGluIEhUTUw1ICovXG4gICAgICAgICAgICBhbGxvd2VkQXR0cmlidXRlcyA9IFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtKFwiYXJpYS1yZWFkb25seVwiLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImhpZGRlblwiKSkge1xuICAgICAgICAgICAgLypFbGVtZW50IHdpdGggYSBoaWRkZW4gYXR0cmlidXRlIFVzZSB0aGUgYXJpYS1oaWRkZW4gYXR0cmlidXRlIG9uIGFueSBIVE1MIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgTm90ZTogSWYgYW4gZWxlbWVudCBoYXMgYSBoaWRkZW4gYXR0cmlidXRlLCBhbiBhcmlhLWhpZGRlbiBhdHRyaWJ1dGUgaXMgbm90IHJlcXVpcmVkLiovXG4gICAgICAgICAgICBhbGxvd2VkQXR0cmlidXRlcyA9IFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtKFwiYXJpYS1oaWRkZW5cIiwgYWxsb3dlZEF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRhZ1Byb3BlcnR5ID0gbnVsbDtcbiAgICAgICAgaWYgKHByb3BlcnRpZXMgIT0gbnVsbCAmJiBwcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IHByb3BlcnRpZXM7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gUlBUVXRpbC5nZXRFbGVtZW50QXJpYVByb3BlcnR5KHJ1bGVDb250ZXh0KTtcblxuICAgICAgICBsZXQgc2tpcEltcGxpY2l0Um9sZUNoZWNrID0gZmFsc2U7XG4gICAgICAgIGlmICh0YWdOYW1lID09PSBcImZvcm1cIiB8fCB0YWdOYW1lID09PSBcInNlY3Rpb25cIikge1xuICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBmb3JtIGhhcyBhbiBpbXBsaWNpdCByb2xlIG9ubHkgaWYgaXQgaGFzIGFuIGFjY2Vzc2libGUgbmFtZVxuICAgICAgICAgICAgc2tpcEltcGxpY2l0Um9sZUNoZWNrID0gIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikgJiZcbiAgICAgICAgICAgICAgICAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpICYmXG4gICAgICAgICAgICAgICAgIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInRpdGxlXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWdQcm9wZXJ0eSAhPT0gbnVsbCAmJiB0YWdQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBhZGQgdGhlIGltcGxpY2l0IHJvbGUgYWxsb3dlZCBhdHRyaWJ1dGVzIHRvIHRoZSBhbGxvd2VkIHJvbGUgbGlzdCBpZiB0aGVyZSBpcyBubyBzcGVjaWZpZWQgcm9sZVxuICAgICAgICAgICAgaWYgKHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIChwZXJtaXR0ZWRSb2xlcyA9PT0gbnVsbCB8fCBwZXJtaXR0ZWRSb2xlcyA9PT0gdW5kZWZpbmVkIHx8IHBlcm1pdHRlZFJvbGVzLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICAgICAgICAgICAhc2tpcEltcGxpY2l0Um9sZUNoZWNrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvbGVQcm9wZXJ0eSA9IEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1t0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGVbaV1dO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm9sZVByb3BlcnR5ICE9PSBudWxsICYmIHJvbGVQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IHJvbGVQcm9wZXJ0eS5wcm9wcztcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdChwcm9wZXJ0aWVzLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0gUlBUVXRpbC5nZXRSb2xlUmVxdWlyZWRQcm9wZXJ0aWVzKHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZVtpXSwgcnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KHByb3BlcnRpZXMsIGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBvZiBzZXBhcmF0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGVbaV0gPT09IFwic2VwYXJhdG9yXCIgJiYgUlBUVXRpbC5pc0ZvY3VzYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QoW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtdmFsdWVtYXhcIiwgXCJhcmlhLXZhbHVlbWluXCIsIFwiYXJpYS12YWx1ZXRleHRcIl0sIGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgZ2xvYmFsIHByb3BlcnRpZXMgdG8gdGhlIHZhbGlkIGF0dHJpYnV0ZSBsaXN0XG4gICAgICAgICAgICBpZiAodGFnUHJvcGVydHkuZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gQVJJQURlZmluaXRpb25zLmdsb2JhbFByb3BlcnRpZXM7IC8vIGdsb2JhbCBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KHByb3BlcnRpZXMsIGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiA8aW1nPiB3aXRoIGFsdD1cIlwiIGFsbG93cyBvbmx5IGFyaWEtaGlkZGVuXG4gICAgICAgICAgICAgICAgaWYgKHRhZ05hbWUgPT09IFwiaW1nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYWx0XCIpICYmXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKS50cmltKCkgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KFtcImFyaWEtaGlkZGVuXCJdLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gYWRkaW5nIHRoZSBzcGVjaWZpZWQgcm9sZSBwcm9wZXJ0aWVzIHRvIHRoZSBhbGxvd2VkIGF0dHJpYnV0ZSBsaXN0XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBwZXJtaXR0ZWRSb2xlcyAhPT0gbnVsbCAmJiBpIDwgcGVybWl0dGVkUm9sZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByb2xlUHJvcGVydGllcyA9IEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1twZXJtaXR0ZWRSb2xlc1tpXV07XG4gICAgICAgICAgICBpZiAocm9sZVByb3BlcnRpZXMgIT09IG51bGwgJiYgcm9sZVByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gcm9sZVByb3BlcnRpZXMucHJvcHM7IC8vIGFsbG93ZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdChwcm9wZXJ0aWVzLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgcHJvcGVydGllcyA9IFJQVFV0aWwuZ2V0Um9sZVJlcXVpcmVkUHJvcGVydGllcyhwZXJtaXR0ZWRSb2xlc1tpXSwgcnVsZUNvbnRleHQpOyAvLyByZXF1aXJlZCBwcm9wZXJ0aWVzXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KHByb3BlcnRpZXMsIGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgIGlmIChwZXJtaXR0ZWRSb2xlc1tpXSA9PT0gXCJzZXBhcmF0b3JcIiAmJiBSUFRVdGlsLmlzRm9jdXNhYmxlKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QoW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtdmFsdWVtYXhcIiwgXCJhcmlhLXZhbHVlbWluXCIsIFwiYXJpYS12YWx1ZXRleHRcIl0sIGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZ25vcmUgYXJpYS1sZXZlbCwgYXJpYS1zZXRzaXplIG9yIGFyaWEtcG9zaW5zZXQgaWYgXCJyb3dcIiBpcyBub3QgaW4gdHJlZWdyaWRcbiAgICAgICAgaWYgKHBlcm1pdHRlZFJvbGVzLmluY2x1ZGVzKFwicm93XCIpICYmIFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJ0cmVlZ3JpZFwiLCB0cnVlKSA9PSBudWxsICkge1xuICAgICAgICAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgICAgICAgIGlmICgoaW5kZXggPSBhbGxvd2VkQXR0cmlidXRlcy5pbmRleE9mKFwiYXJpYS1sZXZlbFwiKSkgPiAtMSlcbiAgICAgICAgICAgICAgICBhbGxvd2VkQXR0cmlidXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgICAgICAgaWYgKChpbmRleCA9IGFsbG93ZWRBdHRyaWJ1dGVzLmluZGV4T2YoXCJhcmlhLXNldHNpemVcIikpID4gLTEpXG4gICAgICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICAgICAgIGlmICgoaW5kZXggPSBhbGxvd2VkQXR0cmlidXRlcy5pbmRleE9mKFwiYXJpYS1wb3NpbnNldFwiKSkgPiAtMSlcbiAgICAgICAgICAgICAgICBhbGxvd2VkQXR0cmlidXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWxsb3dlZEF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBDU1MoZWxlbWVudCkge1xuICAgICAgICBsZXQgc3R5bGVUZXh0ID0gXCJcIjtcbiAgICAgICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGVsZW1lbnQuSUJNX0NTU19USEIpIHJldHVybiBlbGVtZW50LklCTV9DU1NfVEhCO1xuICAgICAgICBsZXQgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChub2RlTmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICBzdHlsZVRleHQgPSBSUFRVdGlsLmdldElubmVyVGV4dChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShcInN0eWxlXCIpKSB7XG4gICAgICAgICAgICBzdHlsZVRleHQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoc3R5bGVUZXh0ID09PSBudWxsIHx8IHN0eWxlVGV4dC50cmltKCkubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG4gICAgICAgIC8vcmVtb3ZlIGNvbW1lbnQgYmxvY2tzXG4gICAgICAgIGxldCByZSA9IC8oXFwvXFwqKyg/Oig/Oig/OlteXFwqXSkrKXwoPzpbXFwqXSsoPyFcXC8pKSlbKl0rXFwvKXxcXC9cXC8uKi9nO1xuICAgICAgICBsZXQgc3Vic3QgPSAnICc7XG4gICAgICAgIHN0eWxlVGV4dCA9IHN0eWxlVGV4dC5yZXBsYWNlKHJlLCBzdWJzdCk7XG4gICAgICAgIC8vIEZpbmQgYWxsIFwia2V5IDogdmFsO1wiIHBhaXJzIHdpdGggdmFyaW91cyB3aGl0ZXNwYWNlIGluYmV0d2VlblxuICAgICAgICBsZXQgcktleVZhbHMgPSAvXFxzKihbXjpcXHNdKylcXHMqOlxccyooW147JH1dKylcXHMqKDt8JCkvZztcbiAgICAgICAgLy8gRmluZCBhbGwgXCJzZWxlY3RvciB7IGNzc2tleXZhbHMgfSB3aXRoIHZhcmlvdXMgd2hpdGVzcGFjZSBpbmJldHdlZW5cbiAgICAgICAgbGV0IHJTZWxlY3RvcnMgPSAvXFxzKihbXntdKil7KFtefV0qKX0vZztcbiAgICAgICAgaWYgKHN0eWxlVGV4dC5pbmRleE9mKFwie1wiKSA9PT0gLTEpIHtcblxuICAgICAgICAgICAgbGV0IGtleVZhbHMgPSB7fTtcbiAgICAgICAgICAgIGxldCBtO1xuICAgICAgICAgICAgd2hpbGUgKChtID0gcktleVZhbHMuZXhlYyhzdHlsZVRleHQpKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAga2V5VmFsc1ttWzFdXSA9IG1bMl0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcmV0VmFsID0gW3tcbiAgICAgICAgICAgICAgICBzZWxlY3RvcjogbnVsbCxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGtleVZhbHNcbiAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgZWxlbWVudC5JQk1fQ1NTX1RIQiA9IHJldFZhbDtcbiAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmV0VmFsID0gW107XG4gICAgICAgICAgICBsZXQgbTtcbiAgICAgICAgICAgIGxldCBtMjtcbiAgICAgICAgICAgIHdoaWxlICgobSA9IHJTZWxlY3RvcnMuZXhlYyhzdHlsZVRleHQpKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGV0IGtleVZhbHMgPSB7fVxuICAgICAgICAgICAgICAgIGxldCBzZWxLZXkgPSBtWzFdO1xuICAgICAgICAgICAgICAgIGxldCBzZWxWYWwgPSBtWzJdO1xuXG4gICAgICAgICAgICAgICAgd2hpbGUgKChtMiA9IHJLZXlWYWxzLmV4ZWMoc2VsVmFsKSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBrZXlWYWxzW20yWzFdXSA9IG0yWzJdLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiBzZWxLZXksXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczoga2V5VmFsc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxlbWVudC5JQk1fQ1NTX1RIQiA9IHJldFZhbDtcbiAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyBpZiB0aGUgbm9kZSB0aGF0IGlzIHByb3ZpZWQgaXNcbiAgICAgKiB2aXNpYmxlIG9yIG5vdC4gRm9sbG93aW5nIGlzIGhvdyB0aGUgY2hlY2sgaXMgcGVyZm9ybWVkOlxuICAgICAqICAgIDEuIENoZWNrIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25zOlxuICAgICAqICAgICAgIENTUyAtLT4gZGlzbGF5OiBub25lXG4gICAgICogICAgICAgQ1NTIC0tPiB2aXNpYmlsaXR5OiBoaWRkZW5cbiAgICAgKiAgICAgICBhdHRyaWJ1dGUgLS0+IGhpZGRlblxuICAgICAqICAgIDIuIENoZWNrIGlmIHRoZSBhbnkgb2YgdGhlIGN1cnJlbnQgbm9kZXMgcGFyZW50cyBhcmUgaGlkZGVuIHdpdGggdGhlIHNhbWVcbiAgICAgKiAgICAgICBvcHRpb25zIGxpc3RlZCBpbiAxLlxuICAgICAqXG4gICAgICogICAgTm90ZTogSWYgZWl0aGVyIGN1cnJlbnQgbm9kZSBvciBhbnkgb2YgdGhlIHBhcmVudCBub2RlcyBhcmUgaGlkZGVuIHRoZW4gdGhpc1xuICAgICAqICAgICAgICAgIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGZhbHNlIChub2RlIGlzIG5vdCB2aXNpYmxlKS5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBub2RlIFRoZSBub2RlIHdoaWNoIHNob3VsZCBiZSBjaGVja2VkIGlmIGl0IGlzIHZpc2libGUgb3Igbm90LlxuICAgICAqIEByZXR1cm4ge2Jvb2x9IGZhbHNlIGlmIHRoZSBub2RlIGlzIE5PVCB2aXNpYmxlLCB0cnVlIG90aGVyd2lzZVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzTm9kZVZpc2libGUobm9kZSkge1xuXG4gICAgICAgIC8vIFNldCBQVF9OT0RFX0hJRERFTiB0byBmYWxzZSBmb3IgYWxsIHRoZSBub2RlcywgYmVmb3JlIHRoZSBjaGVjayBhbmQgdGhpcyB3aWxsIGJlIGNoYW5nZWQgdG9cbiAgICAgICAgLy8gdHJ1ZSB3aGVuIHdlIGRldGVjdCB0aGF0IHRoZSBub2RlIGlzIGhpZGRlbi4gV2UgaGF2ZSB0byBzZXQgaXQgdG8gZmFsc2Ugc28gdGhhdCB3ZSBrbm93XG4gICAgICAgIC8vIHRoZSBydWxlcyBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQuXG4gICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUobm9kZSwgXCJQVF9OT0RFX0hJRERFTlwiLCBSUFRVdGlsLmdldENhY2hlKG5vZGUsIFwiUFRfTk9ERV9ISURERU5cIiwgZmFsc2UpKTtcblxuICAgICAgICAvLyBDaGVjayB0aGUgbm9kZVR5cGUgaWYgdGhpcyBub2RlLCBpZiB0aGlzIG5vZGUgaXMgYSB0ZXh0IG5vZGUgdGhlblxuICAgICAgICAvLyB3ZSBnZXQgdGhlIHBhcmVudG5vZGUgYW5kIHNldCB0aGF0IGFzIHRoZSBub2RlIGFzIGEgdGV4dCBub2RlcyxcbiAgICAgICAgLy8gdmlzaWJpbGl0eSBpcyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBwYXJlbnQgbm9kZS5cbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgICAgIG5vZGUgPSBET01VdGlsLnBhcmVudE5vZGUobm9kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXZSBzaG91bGQgb25seSBhbGxvdyBub2RlVHlwZSBlbGVtZW50LCBhbmQgVGV4dE5vZGUgYWxsIG90aGVyIG5vZGVzVHlwZXNcbiAgICAgICAgLy8gd2UgY2FuIHJldHVybiB0aGUgdmlzaWJpbGl0eSBhcyB2aXNpYmxlLlxuICAgICAgICAvLyBGb2xsb3dpbmcgbm9kZXMgd2lsbCBiZSByZXR1cm5lZCBhcyB2aXNhYmxlIGJ5IGRlZmF1bHQsIHNpbmNlIHdlIGNhbiBub3RcbiAgICAgICAgLy8gYWN0dWFsbHkgY2hhbmdlIHRoZWlyIHZpc2liaWxpdHkuXG4gICAgICAgIC8vICBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSAtLT4gN1xuICAgICAgICAvLyAgTm9kZS5DT01NRU5UX05PREUgICAgICAgICAgICAgICAgLS0+IDhcbiAgICAgICAgLy8gIDkgLyogTm9kZS5ET0NVTUVOVF9OT0RFICovICAgICAgICAgICAgICAgLS0+IDlcbiAgICAgICAgLy8gIE5vZGUuRE9DVU1FTlRfVFlQRV9OT0RFICAgICAgICAgIC0tPiAxMFxuICAgICAgICAvLyAgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgLS0+IDExXG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBvd25lckRvY3VtZW50IGlzIHByZXNlbnQgYmVmb3JlIG1vdmluZyBmb3J3YXJkXG4gICAgICAgIC8vIGluIGRldGVjdGluZyBpZiB0aGUgbm9kZSBpcyB2aXNpYmxlIG9yIG5vdC4gSW4gdGhlIGNhc2UgdGhhdCBvd25lckRvY3VtZW50XG4gICAgICAgIC8vIGRvZXMgbm90IGV4aXN0IHRoZW4gd2Ugc2ltcGx5IHJldHVybiBub2RlIGlzIHZpc2libGUgYnkgZGVmYXVsdC5cbiAgICAgICAgaWYgKCFub2RlLm93bmVyRG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGFyYXRpb25cbiAgICAgICAgbGV0IGNvbXBTdHlsZTtcbiAgICAgICAgbGV0IG5vZGVOYW1lID0gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8vIEluIHRoZSBjYXNlIHRoaXMgbm9kZSBpcyBhIHNjcmlwdCwgbGluayBvciBzdHlsZSBub2RlLCByaWdodCBhd2F5IHJldHVybiBub2RlIGlzIHZpc2libGVcbiAgICAgICAgLy8gYmVjYXVzZSBzY3JpcHRzLCBsaW5rcyBhbmQgc3R5bGUgbm9kZXMgY2FuIG5vdCBiZSBoaWRkZW4gYnkgSFRNTCBhdHRyaWJ1dGUgb3IgQ1NTIG9yIGFyZSBoaWRkZW4gYnkgZGVmYXVsdC4gQnV0IHdlIHdhbnQgdG8gc2NhblxuICAgICAgICAvLyB0aGUgZWxlbWVudHMgZXZlcnl0aW1lIGFzIHRoZXkgcmVuZGVyIGNvbnRlbnQgc3RpbGwgd2hpY2ggaXMgc3RpbGwgdmlzaWJsZSB0byB1c2Vycy5cbiAgICAgICAgLy8gIHNjcmlwdCAtLT4gc2NyaXB0IGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0XG4gICAgICAgIC8vICBsaW5rIC0tPiBsaW5rIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgdGhlIGFjdHVhbGx5IENTUyBzY3JpcHQgaXMgc3RpbGwgZXhlY3V0ZWQgc28gd2UgaGF2ZSB0b1xuICAgICAgICAvLyAgICAgICAgICAgIG1hcmsgdGhpcyBlbGVtZW50IGFzIHZpc2libGUgYXQgYWxsIHRpbWVzLlxuICAgICAgICAvLyAgc3R5bGUgLS0+IHN0eWxlIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgdGhlIGFjdHVhbGx5IENTUyBzY3JpcHQgaXMgc3RpbGwgZXhlY3V0ZWQgc28gd2UgaGF2ZSB0b1xuICAgICAgICAvLyAgICAgICAgICAgIG1hcmsgdGhpcyBlbGVtZW50IGFzIHZpc2libGUgYXQgYWxsIHRpbWVzLlxuICAgICAgICBpZiAoUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cyAhPSBudWxsICYmIFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgIT0gdW5kZWZpbmVkICYmIFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMuaW5kZXhPZihub2RlTmFtZSkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIG5vZGUgaXMgdmlzaWJsZSwgd2UgY2hlY2sgY291cGxlIG9mIENTUyBwcm9wZXJ0aWVzIGFuZCBoaWRkZW4gYXR0cmlidXRlLlxuICAgICAgICAvLyBhcmVhLCBwYXJhbSBhbmQgYXVkaW8gZWxlbWVudHMgd2UgZG8gbm90IGNoZWNrIGlmIHRoZXkgYXJlIGhpZGRlbiBhcyBpdCBkb2VzIG5vdCBhcHBseSB0byB0aGVtLlxuICAgICAgICAvLyBDaGVjayB0aGUgdW5oaWRlYWJsZUVsZW1lbnRzIGFycmF5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIHJ1bGVzLCB0byBjaGVjayBpZiB0aGlzIGVsZW1lbnQgaXMgYWxsb3dlZCB0byBiZSBoaWRkZW4gb3Igbm90XG4gICAgICAgIC8vIGluIHRoZSBjYXNlIHRoYXQgdGhlIGVsZW1lbnQgaXMgcGFydCBvZiB0aGUgdW5oaWRlYWJsZUVsZW1lbnRzIGFycmF5IHRoZW4gd2UgZG8gbm90IHJ1biB0aGUgaGlkZGVuIGNoZWNrIG9uIHRoaXMgZWxlbWVudCxcbiAgICAgICAgLy8gYW5kIGdvIHN0cmlnaHQgdG8gdGhlIHBhcmVudCBub2RlLlxuICAgICAgICAvLyBBcnJheSBjaGVjayBlbGVtZW50cyBsaWtlOlxuICAgICAgICAvLyAgYXJlYSAtLT4gYXJlYSBlbGVtZW50IGlzIHBhcnQgb2YgYSBtYXAgZWxlbWVudCBhbmQgaXQgY2FuIG5vdCBiZSBoaWRkZW4gYmVjYXVzZSBpdCBpcyB1c2VkIHRvXG4gICAgICAgIC8vICAgICAgICAgICBtYWtlIGFuIGNlcnRpYW4gcGFydHMgb2YgYW4gbWFwIGludGVyYWN0aXZlLlxuICAgICAgICAvLyAgcGFyYW0gLS0+IGVsZW1lbnQgY2FuIG9ubHkgYmUgcGFydCBvZiBvYmplY3QgZWxtZW50IGFuZCBpdCBjYW5ub3QgYmUgaGlkZGVuIGRpcmVjdGx5LCBpdFxuICAgICAgICAvLyAgICAgICAgICAgIGNhbiBvbmx5IGJlIGhpZGRlbiBpZiB0aGUgcGFyZW50IGlzIGhpZGRlbi5cbiAgICAgICAgLy8gIGF1ZGlvIC0tPiBJZiB0aGlzIGVsZW1lbnQgaXMgaGlkZGVuIGl0IHdpbGwgc3RpbGwgcGxheSB0aGUgbXVzaWMsIHNvIHdlIHNob3VsZCBzdGlsbCB0cmlnZ2VyXG4gICAgICAgIC8vICAgICAgICAgICAgdmlvbGF0aW9ucyBmb3IgdGhpcyBlbGVtZW50LlxuICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHVuaGlkZWFibGVFbGVtZW50cyBhcnJheSBpcyBub3QgZGVmaW5lZCB0aGVuIHdlIGp1c3Qgc2NhbiBhbGwgZWxlbWVudHMgYW5kIGRvIG5vIGZpbHRlcmluZyBhdCBhbGwuXG4gICAgICAgIGlmIChSUFRVdGlsLnVuaGlkZWFibGVFbGVtZW50cyA9PT0gbnVsbCB8fCBSUFRVdGlsLnVuaGlkZWFibGVFbGVtZW50cyA9PT0gdW5kZWZpbmVkIHx8IFJQVFV0aWwudW5oaWRlYWJsZUVsZW1lbnRzLmluZGV4T2Yobm9kZU5hbWUpID09PSAtMSkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVmYXVsdFZpZXcgZXhpc3RzIGZvciB0aGlzIG5vZGUsIGlmIGl0IGRvZXMgdGhlbiB1c2UgdGhpcyB0byBydW4gdGhlIGdldENvbXB1dGVkU3R5bGVcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9uIHRvIGdldCB0aGUgQ1NTIHN0eWxlIGZvciB0aGUgbm9kZS5cbiAgICAgICAgICAgIGlmIChub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHtcbiAgICAgICAgICAgICAgICAvLyBSdW4gdGhlIGdldENvbXB1dGVkU3R5bGUgb24gdGhpcyBub2RlIHRvIGZldGNoIHRoZSBDU1MgY29tcHVhdGlvbiBvZiB0aGUgbm9kZVxuICAgICAgICAgICAgICAgIGNvbXBTdHlsZSA9IG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCBkZWZhdWx0VmlldyBkb2VzIG5vdCBleGlzdHMgcmV0dXJuIHRydWUgdG8gaWRlbnRpZnkgdGhhdCB0aGlzXG4gICAgICAgICAgICAvLyBub2RlIGlzIHZpc2libGUsIGJlY2F1c2Ugd2VyZSBub3QgYWJsZSB0byBkZXRlY3QgaWYgaXQgd2FzIG5vdC5cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGhpZGRlbiBlbGVtZW50IHByb3BlcnR5IGFuZCBoaWRkZW4gYXR0cmlidXRlXG4gICAgICAgICAgICBsZXQgaGlkZGVuQXR0cmlidXRlID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJoaWRkZW5cIik7XG4gICAgICAgICAgICBsZXQgaGlkZGVuUHJvcGVydHlDdXN0b20gPSBSUFRVdGlsLmdldENhY2hlKG5vZGUsIFwiUFRfTk9ERV9ISURERU5cIiwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIC8vIFRvIGdldCB0aGUgaGlkZGVuIHByb3BlcnR5IHdlIG5lZWQgdG8gcGVyZm9ybSBhIHNwZWNpYWwgY2hlY2sgYXMgaW4gc29tZSBjYXNlcyB0aGUgaGlkZGVuIHByb3BlcnR5IHdpbGwgbm90IGJlXG4gICAgICAgICAgICAvLyBhIGJvb2xlYW4sIGZvciB0aGVzZXMgY2FzZXMgd2Ugc2V0IGl0IHRvIGZhbHNlIGFzIHdlIGFyZSBub3QgYWJsZSB0byBkZXRlcm1pbmUgdGhlIHRydWUgaGlkZGVuIGNvbmRpdGlvbi5cbiAgICAgICAgICAgIC8vIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgYmVjYXVzZSBmb3JtIGVsZW1lbnRzIGFyZSBhYmxlIHRvIHBlcmZvcm0gYW4gb3ZlcnJpZGUsIHNvIHdoZW4gd2UgaGF2ZSBpZD1cImhpZGRlblwiIGZvciBhbiBlbGVtZW50XG4gICAgICAgICAgICAvLyB3aGljaCBpcyB1bmRlciB0aGUgZm9ybSBlbGVtZW50IHRoZW4sIG5vZGUuaGlkZGVuIGdpdmVzIHRoZSBlbGVtZW50L2xpc3Qgb2YgZWxlbWVudHMgd2hpY2ggaGF2ZSBpZD1cImhpZGRlblwiLiBSZWZlciB0b1xuICAgICAgICAgICAgLy8gbW96aWxsYSBidWc6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjczNTZcbiAgICAgICAgICAgIGxldCBoaWRkZW5Qcm9wZXJ0eSA9IHR5cGVvZiBub2RlLmhpZGRlbiA9PT0gXCJib29sZWFuXCIgPyBub2RlLmhpZGRlbiA6IGZhbHNlO1xuICAgICAgICAgICAgLy8gSWYgY29tcFN0eWxlIG9iamVjdCBpcyBlbXB0eSwgbm9kZSBkb2VzJ3QgaGF2ZSBoaWRkZW4gcHJvcGVydHksIG5vZGUgZG9lcyd0IGhhdmUgaGlkZGVuIGF0dHJpYnV0ZSBhbmQgZG9lcyd0IGhhdmUgY3VzdG9tIFBUXG4gICAgICAgICAgICAvLyBoaWRkZW4gcHJvcGVydHkgdGhlbiB3ZSBjYW4ganVzdCByZXR1cm4gdHJ1ZSAobm9kZSB2aXNpYmxlKSBhdCB0aGlzIHBvaW50LlxuICAgICAgICAgICAgaWYgKCFjb21wU3R5bGUgJiZcbiAgICAgICAgICAgICAgICAhaGlkZGVuUHJvcGVydHkgJiYgLy8gdGhpcyBjb3ZlcnMgZmFsc2UsIG51bGwsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIChoaWRkZW5BdHRyaWJ1dGUgPT09IG51bGwgfHwgaGlkZGVuQXR0cmlidXRlID09PSB1bmRlZmluZWQpICYmXG4gICAgICAgICAgICAgICAgIWhpZGRlblByb3BlcnR5Q3VzdG9tIC8vIFRoaXMgY292ZXJzIGZhbHNlLCBudWxsIG9yIHVuZGVmaW5lZFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgdGhlIGNvbXBTdHlsZSBpcyBkZWZpbmVkIHdlIGNoZWNrIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgICAgICAvLyAgQ1NTIHN0eWxlIGRpc3BsYXkgc2V0IHRvIG5vbmVcbiAgICAgICAgICAgIC8vICBDU1Mgc3R5bGUgdmlzaWJpbGl0eSBzZXQgdG8gaGlkZGVuXG4gICAgICAgICAgICAvLyAgICBOb3RlOiBGb3IgdGhpcyBwcm9wZXJ0eSBzaW5jZSBpdCBpcyBpbmhlcml0ZWQsIG5lZWQgdG8gc2tpcCB0aGUgY2hlY2sgb24gcGFyZW50cyBhc1xuICAgICAgICAgICAgLy8gICAgICAgICAgdGhlIHBhcmVudCBjYW4gaGF2ZSBoaWRkZW4gYnV0IHRoZSBjaGlsZCBjYW4gYmUgdmlzaWJsZS4gU28gd2Ugb25seSBjaGVjayB0aGlzIHByb3BlcnR5XG4gICAgICAgICAgICAvLyAgICAgICAgICBvbiBjaGlsZCBlbGVtZW50cy9lbGVtZW50cyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiB0aGUgZmlyc3QgdGltZS5cbiAgICAgICAgICAgIC8vICBub2RlIGhpZGRlbiBwcm9wZXJ0eSBzZXQgKG5vZGUuaGlkZGVuKVxuICAgICAgICAgICAgLy8gIG5vZGUgYXR0cmlidXRlIGhpZGRlbiBzZXQgKHRvIGFueSB2YWx1ZSlcbiAgICAgICAgICAgIC8vICBub2RlIGN1c3RvbSBoaWRkZW4gcHJvcGVydHkgc2VyIChub2RlLlBUX05PREVfSElEREVOKVxuICAgICAgICAgICAgLy8gSWYgYW55IG9mIHRoZSBhYm92ZSBjb25kaXRpb25zIGFyZSB0cnVlIHRoZW4gd2UgcmV0dXJuIGZhbHNlIGFzIHRoaXMgZWxlbWVudCBpcyBub3QgdmlzaWJsZVxuICAgICAgICAgICAgaWYgKChjb21wU3R5bGUgIT09IG51bGwgJiYgKChjb21wU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZGlzcGxheScpID09PSAnbm9uZScgfHxcbiAgICAgICAgICAgICAgICAoIVJQVFV0aWwuZ2V0Q2FjaGUobm9kZSwgXCJWaXNpYmlsaXR5X0NoZWNrX1BhcmVudFwiLCBudWxsKSAmJiBjb21wU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgndmlzaWJpbGl0eScpID09PSAnaGlkZGVuJykpKSB8fFxuICAgICAgICAgICAgICAgIChjb21wU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnZGlzcGxheScpICE9PSAnYmxvY2snICAmJiAoaGlkZGVuUHJvcGVydHkgfHwgaGlkZGVuQXR0cmlidXRlICE9IG51bGwgfHwgaGlkZGVuUHJvcGVydHlDdXN0b20pKSkpIHtcbiAgICAgICAgICAgICAgICAvLyBTZXQgYSBjdXN0b20gZXhwYW5kb3MgcHJvcGVydHkgb24gdGhlIHRoZSBub2RlIHRvIGlkZW50aWZ5IHRoYXQgaXQgaXMgaGlkZGVuLCBzbyB0aGF0IHdlIGNhbiB1c2VzXG4gICAgICAgICAgICAgICAgLy8gdXNlIHRoaXMgaW4gdGhlIHJ1bGVzIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBpcyBoaWRkZW4gb3Igbm90LCBpZiB3ZSBuZWVkIHRvLlxuICAgICAgICAgICAgICAgIC8vIFVzZSBleHBhbmRvcyBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGEgaGFzaCBtYXAgd2hpY2ggc3RvcmVzIHRoZSBlbGVtZW50cywgYWRkaW5nL2NoZWNraW5nIGV4cGFuZG9zXG4gICAgICAgICAgICAgICAgLy8gcHJvcGVydGllcyBpcyBhIGxvdCBmYXN0ZXIgcGVyZm9ybWFuY2Ugd2hpc2UuIEZvciBIYXNoIG1hcCB3ZSBuZWVkIHRvIHN0b3JlIGJhc2VkIG9uIHhwYXRoLCBhbmQgdG8gY2FsY3VsYXRlXG4gICAgICAgICAgICAgICAgLy8geHBhdGggaXQgaXMgbW9yZSBwZXJmb3JtYW5jZSBpbXBhY3QuXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShub2RlLCBcIlBUX05PREVfSElEREVOXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgcGFyZW50Tm9kZSBmb3IgdGhpcyBub2RlLCBiZWN1YXNlIHdlIGhhdmUgdG8gY2hlY2sgYWxsIHBhcmVudHMgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IGhhdmVcbiAgICAgICAgLy8gdGhlIGhpZGRlbiBDU1MsIHByb3BlcnR5IG9yIGF0dHJpYnV0ZS4gT25seSBrZWVwIGNoZWNraW5nIHVudGlsIHdlIGFyZSBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSBwYXJlbnROb2RlXG4gICAgICAgIC8vIGVsZW1lbnQuXG4gICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGUpO1xuXG4gICAgICAgIC8vIElmIHRoZSBwYXJlbnQgbm9kZSBleGlzdHMgYW5kIHRoZSBub2RldHlwZSBpcyBlbGVtZW50ICgxKSwgdGhlbiBydW4gcmVjdXJzaXZlIGNhbGwgdG8gcGVyZm9ybSB0aGUgY2hlY2tcbiAgICAgICAgLy8gYWxsIHRoZSB3YXkgdXAgdG8gdGhlIHZlcnkgcGFyZW50IG5vZGUuIFVzZSByZWN1cnNpdmUgY2FsbCBoZXJlIGluc3RlYWQgb2YgYSB3aGlsZSBsb29wIHNvIHRoYXQgd2UgZG8gbm90XG4gICAgICAgIC8vIGhhdmUgdG8gZHVwbGljYXRlIHRoZSBsb2dpYyBmb3IgY2hlY2tpbmcgaWYgdGhlIG5vZGUgaXMgdmlzaWJsZSBvciBub3QgZm9yIGFsbCB0aGUgcGFyZW50cyBzdGFydGluZyB3aXRoXG4gICAgICAgIC8vIGNoaWxkIG5vZGUuXG4gICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICE9IG51bGwgJiYgcGFyZW50RWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIGEgcGFyZW50IGVsZW1lbnQgZ29pbmcgdGhyb3VnaCB0aGUgaXNOb2RlVmlzaWJsZSBmdW5jdGlvbiB3ZSBoYXZlIHRvIG1hcmsgaXQgYXMgc3VjaFxuICAgICAgICAgICAgLy8gc28gdGhhdCBpbiB0aGUgZnVuY3Rpb24gd2UgY2FuIHNraXAgY2hlY2tpbmcgdmlzaWJpbGl0eTogaGlkZGVuIGZvciBwYXJlbnQgZWxlbWVudHMgc2luY2UgdmlzaWJpbGl0eTogaGlkZGVuXG4gICAgICAgICAgICAvLyBpcyBpbmhlcml0ZWQsIHdoaWNoIGFsbG93cyBhIGNoaWxkIHRvIGhhdmUgYSBkaWZmZXJlbnQgc2V0dGluZyB0aGVuIHRoZSBjaGlsZC4gVGhpcyBwcm9wZXJ0eSBvbmx5IG5lZWRzIHRvIGJlIGNoZWNrZWRcbiAgICAgICAgICAgIC8vIG9uY2UgZm9yIHRoZSBmaXJzdCBlbGVtZW50IHRoYXQgaXMgcGFzc2VkIGRvd24gYW5kIHRoYXQgaXMgYWxsLiBJZ25vcmUgaXQgZm9yIGFsbCB0aGUgcGFyZW50cyB0aGF0IHdlIGl0ZXJhdGUgb3Zlci5cbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocGFyZW50RWxlbWVudCBhcyBFbGVtZW50LCBcIlZpc2liaWxpdHlfQ2hlY2tfUGFyZW50XCIsIHRydWUpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB1cHdhcmRzIHJlY3Vyc2l2ZWx5LCBhbmQgc2F2ZSB0aGUgcmVzdWx0cyBpbiBhbiB2YXJpYWJsZVxuICAgICAgICAgICAgbGV0IG5vZGVWaXNpYmxlID0gUlBUVXRpbC5pc05vZGVWaXNpYmxlKHBhcmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBmb3VuZCB0byBub3QgYmUgdmlzaWJsZSB0aGVuIGFkZCB0aGUgY3VzdG9tIFBUX05PREVfSElEREVOIHRvIHRydWUuXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHdlIGNhbiB1c2UgdGhpcyBpbiB0aGUgcnVsZXMuXG4gICAgICAgICAgICBpZiAoIW5vZGVWaXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShub2RlLCBcIlBUX05PREVfSElEREVOXCIsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDaGVjayB1cHdhcmRzIHJlY3Vyc2l2ZWx5XG4gICAgICAgICAgICByZXR1cm4gbm9kZVZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gdHJ1ZSAobm9kZSBpcyB2aXNpYmxlKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gdHJ1ZSBpZiB0aGUgbm9kZSBvciBpdHMgYW5jZXN0ZXIgaXMgbmF0aXZlbHkgaGlkZGVuIG9yIGFyaWEtaGlkZGVuID0gJ3RydWUnXG4gICAgICogQHBhcmFtIG5vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzTm9kZUhpZGRlbkZyb21BVChub2RlOiBFbGVtZW50KSB7XG4gICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKG5vZGUpIHx8IG5vZGUuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgPT09ICd0cnVlJykgcmV0dXJuIHRydWU7XG4gICAgICAgIGxldCBhbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoQXR0cmlidXRlKG5vZGUsIFwiYXJpYS1oaWRkZW5cIiwgXCJ0cnVlXCIpO1xuICAgICAgICBpZiAoYW5jZXN0b3IpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRDb250cm9sT2ZMYWJlbChub2RlOiBOb2RlKSB7XG4gICAgICAgIC8vIEhhbmRsZSB0aGUgZWFzeSBjYXNlIG9mIGxhYmVsIC0+IGZvclxuICAgICAgICBsZXQgbGFiZWxBbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3Iobm9kZSwgXCJsYWJlbFwiKTtcbiAgICAgICAgaWYgKGxhYmVsQW5jZXN0b3IpIHtcbiAgICAgICAgICAgIGlmIChsYWJlbEFuY2VzdG9yLmhhc0F0dHJpYnV0ZShcImZvclwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBGcmFnbWVudFV0aWwuZ2V0QnlJZChub2RlLCBsYWJlbEFuY2VzdG9yLmdldEF0dHJpYnV0ZShcImZvclwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgaWRzIG9mIHBhcmVudCBub2Rlc1xuICAgICAgICBsZXQgaWREaWN0ID0ge307XG4gICAgICAgIGxldCBwYXJlbnRXYWxrID0gbm9kZTtcbiAgICAgICAgd2hpbGUgKHBhcmVudFdhbGspIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRXYWxrLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5jZXN0b3IgPSBwYXJlbnRXYWxrIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yLmhhc0F0dHJpYnV0ZShcImlkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlkRGljdFthbmNlc3Rvci5nZXRBdHRyaWJ1dGUoXCJpZFwiKV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudFdhbGsgPSBET01VdGlsLnBhcmVudE5vZGUocGFyZW50V2Fsayk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggY29udHJvbHMgdGhhdCB1c2UgYXJpYS1sYWJlbGxlZGJ5IGFuZCBzZWUgaWYgYW55IG9mIHRoZW0gcmVmZXJlbmNlIG9uZSBvZiBteSBhbmNlc3RvciBpZHNcbiAgICAgICAgY29uc3QgaW5wdXRzVXNpbmdMYWJlbGxlZEJ5ID0gbm9kZS5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqW2FyaWEtbGFiZWxsZWRieV1cIik7XG4gICAgICAgIGZvciAobGV0IGlkeD0wOyBpZHg8aW5wdXRzVXNpbmdMYWJlbGxlZEJ5Lmxlbmd0aDsgKytpZHgpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0VXNpbmdMYWJlbGxlZEJ5ID0gaW5wdXRzVXNpbmdMYWJlbGxlZEJ5W2lkeF07XG4gICAgICAgICAgICBjb25zdCBhcmlhTGFiZWxsZWRCeSA9IGlucHV0VXNpbmdMYWJlbGxlZEJ5LmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKTtcbiAgICAgICAgICAgIGNvbnN0IHNwID0gYXJpYUxhYmVsbGVkQnkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBzcCkge1xuICAgICAgICAgICAgICAgIGlmIChpZCBpbiBpZERpY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0VXNpbmdMYWJlbGxlZEJ5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmQgdGhlIGNhc2VzIHdoZXJlIHdlJ3JlIHdpdGhpbiBhbiBhcmlhIGxhYmVsbGVkYnlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcgaWYgdGhlIG5vZGUgdGhhdCBpcyBwcm92aWVkIGlzXG4gICAgICogZGlzYWJsZWQgb3Igbm90LiBGb2xsb3dpbmcgaXMgaG93IHRoZSBjaGVjayBpcyBwZXJmb3JtZWQ6XG4gICAgICogICAgMS4gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBkaXNhYmxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczpcbiAgICAgKiAgICAgICBhdHRyaWJ1dGUgLS0+IGRpc2FibGVkXG4gICAgICogICAgICAgICBBbHNvIG5lZWRzIHRvIGJlIFwiYnV0dG9uXCIsIFwiaW5wdXRcIiwgXCJzZWxlY3RcIiwgXCJ0ZXh0YXJlYVwiLCBcIm9wdGdyb3VwXCIsIFwib3B0aW9uXCIsXG4gICAgICogICAgICAgICBcIm1lbnVpdGVtXCIsIFwiZmllbGRzZXRcIiBub2RlcyAoaW4gYXJyYXkgZWxlbWVudHNBbGxvd2VkRGlzYWJsZWQpXG4gICAgICogICAgICAgYXR0cmlidXRlIC0tPiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiXG4gICAgICogICAgMi4gQ2hlY2sgaWYgYW55IG9mIHRoZSBjdXJyZW50IG5vZGVzIHBhcmVudHMgYXJlIGRpc2FibGVkIHdpdGggdGhlIHNhbWVcbiAgICAgKiAgICAgICBvcHRpb25zIGxpc3RlZCBpbiAxLlxuICAgICAqXG4gICAgICogICAgTm90ZTogSWYgZWl0aGVyIGN1cnJlbnQgbm9kZSBvciBhbnkgb2YgdGhlIHBhcmVudCBub2RlcyBhcmUgZGlzYWJsZWQgdGhlbiB0aGlzXG4gICAgICogICAgICAgICAgZnVuY3Rpb24gd2lsbCByZXR1cm4gdHJ1ZSAobm9kZSBpcyBkaXNhYmxlZCkuXG4gICAgICpcbiAgICAgKiBAcGFybSB7SFRNTEVsZW1lbnR9IG5vZGUgLSBUaGUgbm9kZSB3aGljaCBzaG91bGQgYmUgY2hlY2tlZCBpZiBpdCBpcyBkaXNhYmxlZCBvciBub3QuXG4gICAgICogQHJldHVybiB7Ym9vbH0gdHJ1ZSBpZiB0aGUgbm9kZSBpcyBkaXNhYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNOb2RlRGlzYWJsZWQobm9kZSkge1xuXG4gICAgICAgIC8vIFNldCBQVF9OT0RFX0RJU0FCTEVEIHRvIGZhbHNlIGZvciBhbGwgdGhlIG5vZGVzLCBiZWZvcmUgdGhlIGNoZWNrIGFuZCB0aGlzIHdpbGwgYmUgY2hhbmdlZCB0b1xuICAgICAgICAvLyB0cnVlIHdoZW4gd2UgZGV0ZWN0IHRoYXQgdGhlIG5vZGUgaXMgZGlzYWJsZWQuIFdlIGhhdmUgdG8gc2V0IGl0IHRvIGZhbHNlIHNvIHRoYXQgd2Uga25vd1xuICAgICAgICAvLyB0aGUgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQuIE9ubHkgc2V0IGl0IHRvIGZhbHNlIGlmIHRoZSBzZXR0aW5nIGlzIHVuZGVmaW5lZCBvciBudWxsXG4gICAgICAgIC8vIGFzIGlmIGl0IGlzIGRlZmluZWQgd2UgZG8gbm90IHduYXQgdG8gcmVzZXQgaXQuIEFzIGlmIGl0IGlzIHRydWUgdGhlbiB3ZSBzaG91bGQgbWFrZSB1c2Ugb2YgaXRcbiAgICAgICAgLy8gdG8gc3BlZWQgdXAgdGhlIGNoZWNrLlxuICAgICAgICBsZXQgUFRfTk9ERV9ESVNBQkxFRCA9IFJQVFV0aWwuZ2V0Q2FjaGUobm9kZSwgXCJQVF9OT0RFX0RJU0FCTEVEXCIsIGZhbHNlKTtcblxuICAgICAgICAvLyBDaGVjayB0aGUgbm9kZVR5cGUgb2YgdGhpcyBub2RlLCBpZiB0aGlzIG5vZGUgaXMgYSB0ZXh0IG5vZGUgdGhlblxuICAgICAgICAvLyB3ZSBnZXQgdGhlIHBhcmVudG5vZGUgYW5kIHNldCB0aGF0IGFzIHRoZSBub2RlIGFzIGEgdGV4dCBub2RlcyxcbiAgICAgICAgLy8gZGlzYWJsZWQgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgcGFyZW50IG5vZGUuXG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgICAgICBub2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGFyYXRpb25cbiAgICAgICAgbGV0IG5vZGVOYW1lID0gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8vIEdldCB0aGUgZGlzYWJsZWQgZWxlbWVudCBwcm9wZXJ0eSwgZGlzYWJsZWQgYW5kIGFyaWEtZGlzYWJsZWQgYXR0cmlidXRlIGFuZCBjaGVjayB0aGF0IGl0IGlzIHRydWVcbiAgICAgICAgbGV0IGRpc2FibGVkQXR0cmlidXRlID0gbm9kZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgbGV0IGRpc2FibGVkUHJvcGVydHlDdXN0b20gPSBQVF9OT0RFX0RJU0FCTEVEO1xuICAgICAgICBsZXQgYXJpYURpc2FibGVkQXR0cmlidXRlID0gbm9kZS5oYXNBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKSAmJiBub2RlLmdldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIikgPT09ICd0cnVlJztcblxuICAgICAgICAvLyBJZiB0aGlzIG5vZGUgaGFzIGRpc2FibGVkIGF0dHJpYnV0ZSBhbmQgdGhlIG5vZGUgYWxsb3dzIGRpc2FibGVkIGF0dHJpYnV0ZSwgdGhlbiByZXR1cm4gdHJ1ZS5cbiAgICAgICAgLy8gRGlzYWJsZWQgYXR0cmlidXRlIGlzIG9ubHkgYWxsb3dlZCBvbiBcImJ1dHRvblwiLCBcImlucHV0XCIsIFwic2VsZWN0XCIsIFwidGV4dGFyZWFcIiwgXCJvcHRncm91cFwiLCBcIm9wdGlvblwiLCBcIm1lbnVpdGVtXCIsIFwiZmllbGRzZXRcIlxuICAgICAgICAvLyBJbiB0aGUgY2FzZSBhcmlhLWRpc2FibGVkIGlzIHNldCB0byB0cnVlLCB0aGVuIGFsc28gcmV0dXJuIHRydWVcbiAgICAgICAgaWYgKGRpc2FibGVkUHJvcGVydHlDdXN0b20gfHwgKGRpc2FibGVkQXR0cmlidXRlICYmIEFSSUFEZWZpbml0aW9ucy5lbGVtZW50c0FsbG93ZWREaXNhYmxlZC5pbmRleE9mKG5vZGVOYW1lKSA+IC0xKSB8fCBhcmlhRGlzYWJsZWRBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIFBUX05PREVfRElTQUJMRUQgPSB0cnVlO1xuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShub2RlLCBcIlBUX05PREVfRElTQUJMRURcIiwgUFRfTk9ERV9ESVNBQkxFRCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCB0aGUgcGFyZW50Tm9kZSBmb3IgdGhpcyBub2RlLCBiZWN1YXNlIHdlIGhhdmUgdG8gY2hlY2sgYWxsIHBhcmVudHMgdG8gbWFrZSBzdXJlIHRoZXkgZG8gbm90IGhhdmVcbiAgICAgICAgLy8gZGlzYWJsZWQgYXR0cmlidXRlLiBPbmx5IGtlZXAgY2hlY2tpbmcgdW50aWwgd2UgYXJlIGFsbCB0aGUgd2F5IGJhY2sgdG8gdGhlIHBhcmVudE5vZGVcbiAgICAgICAgLy8gZWxlbWVudC5cbiAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBET01VdGlsLnBhcmVudE5vZGUobm9kZSk7XG5cbiAgICAgICAgLy8gSWYgdGhlIHBhcmVudCBub2RlIGV4aXN0cyBhbmQgdGhlIG5vZGV0eXBlIGlzIGVsZW1lbnQgKDEpLCB0aGVuIHJ1biByZWN1cnNpdmUgY2FsbCB0byBwZXJmb3JtIHRoZSBjaGVja1xuICAgICAgICAvLyBhbGwgdGhlIHdheSB1cCB0byB0aGUgdmVyeSBwYXJlbnQgbm9kZS4gVXNlIHJlY3Vyc2l2ZSBjYWxsIGhlcmUgaW5zdGVhZCBvZiBhIHdoaWxlIGxvb3Agc28gdGhhdCB3ZSBkbyBub3RcbiAgICAgICAgLy8gaGF2ZSB0byBkdXBsaWNhdGUgdGhlIGxvZ2ljIGZvciBjaGVja2luZyBpZiB0aGUgbm9kZSBpcyBkaXNhYmxlZCBvciBub3QgZm9yIGFsbCB0aGUgcGFyZW50cyBzdGFydGluZyB3aXRoXG4gICAgICAgIC8vIGNoaWxkIG5vZGUuXG4gICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICE9IG51bGwgJiYgcGFyZW50RWxlbWVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgdXB3YXJkcyByZWN1cnNpdmVseSwgYW5kIHNhdmUgdGhlIHJlc3VsdHMgaW4gYW4gdmFyaWFibGVcbiAgICAgICAgICAgIGxldCBub2RlRGlzYWJsZWQgPSBSUFRVdGlsLmlzTm9kZURpc2FibGVkKHBhcmVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBmb3VuZCB0byBiZSBkaXNhYmxlZCB0aGVuIGFkZCB0aGUgY3VzdG9tIFBUX05PREVfRElTQUJMRUQgdG8gdHJ1ZS5cbiAgICAgICAgICAgIC8vIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGlzIG5leHQgdGltZSwgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgbm9kZSBpcyBkaXNhYmxlZCBvciBub3QuXG4gICAgICAgICAgICAvLyBUaGlzIGlzIGV4dHJhIHBlcmNhdXRpb24sIHRoZSBpc05vZGVEaXNhYmxlZCBmdW5jdGlvbiBhbHJlYWR5IHNldHMgdGhpcy5cbiAgICAgICAgICAgIGlmIChub2RlRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBQVF9OT0RFX0RJU0FCTEVEID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgdXB3YXJkcyByZWN1cnNpdmVseVxuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShub2RlLCBcIlBUX05PREVfRElTQUJMRURcIiwgUFRfTk9ERV9ESVNBQkxFRCk7XG4gICAgICAgICAgICByZXR1cm4gbm9kZURpc2FibGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIGZhbHNlIChub2RlIGlzIG5vdCBkaXNhYmxlZClcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGRldGVybWluZSBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgYmUgY2hlY2tlZFxuICAgICAqIGluIHJ1bGVzLlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IG5vZGUgLSBBIG5vZGUgc28gdGhhdCB0aGUgZG9jdW1lbnQgY2FuIGJlIGFjY2Vzc2VkIHRvIGNoZWNrIGZvciB0aGVcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi4gQ2FuIGJlIGRvY3VtZW50IGVsZW1lbnQgb3IgYSBzaW1wbGUgbm9kZSBlbGVtZW50LlxuICAgICAqIEByZXR1cm4ge2Jvb2x9IHRydWUgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIGJlIGNoZWNrZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHNob3VsZENoZWNrSGlkZGVuQ29udGVudChub2RlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyBpZiBub2RlIHNob3VsZCBiZSBza2lwcGVkIGZyb20gY2hlY2tpbmcgb3Igbm90LCBiYXNlZFxuICAgICAqIG9uIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5ncyBhbmQgaWYgdGhlIG5vZGUgaXMgdmlzaWJsZSBvciBub3QuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gbm9kZSAtIE5vZGUgdG8gY2hlY2sgaWYgaXQgaXMgdmlzaWJsZSBvciBub3QgYmFzZWQgb24gdGhlIENoZWNrIEhpZGRlbiBDb250ZW50XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Ym9vbH0gdHJ1ZSBpZiBub2RlIHNob3VsZCBiZSBza2lwcGVkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBzaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKG5vZGUpIHtcbiAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgIC8vIG9yIG5vdC5cbiAgICAgICAgLy8gIDEuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2VcbiAgICAgICAgLy8gICAgIHJldHVybiB0cnVlIHRvIGlkZW50aWZ5IHRoYXQgdGhlIG5vZGUgc2hvdWxkIG5vdCBiZSBzY2FubmVkL2FkZGVkIHRvIGFueSBoYXNoL2FycmF5LlxuICAgICAgICAvL1xuICAgICAgICAvLyBOb3RlOiBUaGUgaWYgY29uZGl0aW9ucyB1c2VzIHNob3J0LWNpcmN1aXRpbmcgc28gaWYgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBub3QgdHJ1ZSBpdCB3aWxsIG5vdCBjaGVjayB0aGUgbmV4dCBvbmUsXG4gICAgICAgIC8vICAgICAgIHNvIG9uIGFuZCBzbyBmb3J0aC5cbiAgICAgICAgaWYgKCFSUFRVdGlsLnNob3VsZENoZWNrSGlkZGVuQ29udGVudChub2RlKSAmJiAhUlBUVXRpbC5pc05vZGVWaXNpYmxlKG5vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzZm9jdXNhYmxlQnlEZWZhdWx0KG5vZGUpIHtcbiAgICAgICAgdmFyIGZvY3VzYWJsZUVsZW1lbnRzID0gWydpbnB1dCcsICdzZWxlY3QnLCAnYnV0dG9uJywgJ3RleHRhcmVhJywgJ29wdGlvbicsICdhcmVhJ107XG4gICAgICAgIGlmIChub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYVwiICYmIFJQVFV0aWwuaGFzQXR0cmlidXRlKG5vZGUsICdocmVmJykpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAobm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImFyZWFcIiAmJiBSUFRVdGlsLmhhc0F0dHJpYnV0ZShub2RlLCAnaHJlZicpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKGZvY3VzYWJsZUVsZW1lbnRzLmluZGV4T2Yobm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSAhPSAtMSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrIGlmIGEgbm9uLXRhYmFibGUgbm9kZSBoYXMgdmFsaWQgdGFiYWJsZSBjb250ZW50LlxuICAgICAqIElmIGl0IGlzIHRhYmFibGUgKHRoZSB0YWJpbmRleCBpcyBub3Qgc3BlaWNpZmllZCBvciBpcyBub3QgLTEpLCByZXR1cm5zIGZhbHNlO1xuICAgICAqIElmIGl0IGlzIG5vbi10YWJhYmxlLCBidXQgYSBjaGlsZCBpcyB0YWJhYmxlIGFuZCBkb2VzIG5vdCBoYXZlIGVsZW1lbnQgY29udGVudCwgcmV0dXJucyBmYWxzZTtcbiAgICAgKiBPdGhlcndpc2UsIHJldHVybnMgdHJ1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG5vblRhYmFibGVDaGlsZENoZWNrKGVsZW1lbnQgOiBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSB8fFxuICAgICAgICAgICAgKHBhcnNlSW50KGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIikpICE9IC0xKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKGVsZW1lbnQpO1xuICAgICAgICB3aGlsZSAobncubmV4dE5vZGUoKSkge1xuICAgICAgICAgICAgbGV0IGNoaWxkID0gbncuZWxlbSgpO1xuICAgICAgICAgICAgaWYgKGNoaWxkID09PSBudWxsKSB7IC8vIFRleHQgbm9kZS4gdXN1YWxseSBpcyBhIGNhcnRyaWRnZSByZXR1cm4uXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGQuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIikgJiZcbiAgICAgICAgICAgICAgICAocGFyc2VJbnQoY2hpbGQuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIikpICE9IC0xKSAmJlxuICAgICAgICAgICAgICAgICFSUFRVdGlsLmhhc0lubmVyQ29udGVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBDU1NDb2xvckxvb2t1cCA9IHtcbiAgICAgICAgXCJhbGljZWJsdWVcIjogXCIjZjBmOGZmXCIsXG4gICAgICAgIFwiYW50aXF1ZXdoaXRlXCI6IFwiI2ZhZWJkN1wiLFxuICAgICAgICBcImFxdWFcIjogXCIjMDBmZmZmXCIsXG4gICAgICAgIFwiYXF1YW1hcmluZVwiOiBcIiM3ZmZmZDRcIixcbiAgICAgICAgXCJhenVyZVwiOiBcIiNmMGZmZmZcIixcbiAgICAgICAgXCJiZWlnZVwiOiBcIiNmNWY1ZGNcIixcbiAgICAgICAgXCJiaXNxdWVcIjogXCIjZmZlNGM0XCIsXG4gICAgICAgIFwiYmxhY2tcIjogXCIjMDAwMDAwXCIsXG4gICAgICAgIFwiYmxhbmNoZWRhbG1vbmRcIjogXCIjZmZlYmNkXCIsXG4gICAgICAgIFwiYmx1ZVwiOiBcIiMwMDAwZmZcIixcbiAgICAgICAgXCJibHVldmlvbGV0XCI6IFwiIzhhMmJlMlwiLFxuICAgICAgICBcImJyb3duXCI6IFwiI2E1MmEyYVwiLFxuICAgICAgICBcImJ1cmx5d29vZFwiOiBcIiNkZWI4ODdcIixcbiAgICAgICAgXCJjYWRldGJsdWVcIjogXCIjNWY5ZWEwXCIsXG4gICAgICAgIFwiY2hhcnRyZXVzZVwiOiBcIiM3ZmZmMDBcIixcbiAgICAgICAgXCJjaG9jb2xhdGVcIjogXCIjZDI2OTFlXCIsXG4gICAgICAgIFwiY29yYWxcIjogXCIjZmY3ZjUwXCIsXG4gICAgICAgIFwiY29ybmZsb3dlcmJsdWVcIjogXCIjNjQ5NWVkXCIsXG4gICAgICAgIFwiY29ybnNpbGtcIjogXCIjZmZmOGRjXCIsXG4gICAgICAgIFwiY3JpbXNvblwiOiBcIiNkYzE0M2NcIixcbiAgICAgICAgXCJjeWFuXCI6IFwiIzAwZmZmZlwiLFxuICAgICAgICBcImRhcmtibHVlXCI6IFwiIzAwMDA4YlwiLFxuICAgICAgICBcImRhcmtjeWFuXCI6IFwiIzAwOGI4YlwiLFxuICAgICAgICBcImRhcmtnb2xkZW5yb2RcIjogXCIjYjg4NjBiXCIsXG4gICAgICAgIFwiZGFya2dyYXlcIjogXCIjYTlhOWE5XCIsXG4gICAgICAgIFwiZGFya2dyZWVuXCI6IFwiIzAwNjQwMFwiLFxuICAgICAgICBcImRhcmtraGFraVwiOiBcIiNiZGI3NmJcIixcbiAgICAgICAgXCJkYXJrbWFnZW50YVwiOiBcIiM4YjAwOGJcIixcbiAgICAgICAgXCJkYXJrb2xpdmVncmVlblwiOiBcIiM1NTZiMmZcIixcbiAgICAgICAgXCJkYXJrb3JhbmdlXCI6IFwiI2ZmOGMwMFwiLFxuICAgICAgICBcImRhcmtvcmNoaWRcIjogXCIjOTkzMmNjXCIsXG4gICAgICAgIFwiZGFya3JlZFwiOiBcIiM4YjAwMDBcIixcbiAgICAgICAgXCJkYXJrc2FsbW9uXCI6IFwiI2U5OTY3YVwiLFxuICAgICAgICBcImRhcmtzZWFncmVlblwiOiBcIiM4ZmJjOGZcIixcbiAgICAgICAgXCJkYXJrc2xhdGVibHVlXCI6IFwiIzQ4M2Q4YlwiLFxuICAgICAgICBcImRhcmtzbGF0ZWdyYXlcIjogXCIjMmY0ZjRmXCIsXG4gICAgICAgIFwiZGFya3R1cnF1b2lzZVwiOiBcIiMwMGNlZDFcIixcbiAgICAgICAgXCJkYXJrdmlvbGV0XCI6IFwiIzk0MDBkM1wiLFxuICAgICAgICBcImRlZXBwaW5rXCI6IFwiI2ZmMTQ5M1wiLFxuICAgICAgICBcImRlZXBza3libHVlXCI6IFwiIzAwYmZmZlwiLFxuICAgICAgICBcImRpbWdyYXlcIjogXCIjNjk2OTY5XCIsXG4gICAgICAgIFwiZG9kZ2VyYmx1ZVwiOiBcIiMxZTkwZmZcIixcbiAgICAgICAgXCJmaXJlYnJpY2tcIjogXCIjYjIyMjIyXCIsXG4gICAgICAgIFwiZmxvcmFsd2hpdGVcIjogXCIjZmZmYWYwXCIsXG4gICAgICAgIFwiZm9yZXN0Z3JlZW5cIjogXCIjMjI4YjIyXCIsXG4gICAgICAgIFwiZnVjaHNpYVwiOiBcIiNmZjAwZmZcIixcbiAgICAgICAgXCJnYWluc2Jvcm9cIjogXCIjZGNkY2RjXCIsXG4gICAgICAgIFwiZ2hvc3R3aGl0ZVwiOiBcIiNmOGY4ZmZcIixcbiAgICAgICAgXCJnb2xkXCI6IFwiI2ZmZDcwMFwiLFxuICAgICAgICBcImdvbGRlbnJvZFwiOiBcIiNkYWE1MjBcIixcbiAgICAgICAgXCJncmF5XCI6IFwiIzgwODA4MFwiLFxuICAgICAgICBcImdyZWVuXCI6IFwiIzAwODAwMFwiLFxuICAgICAgICBcImdyZWVueWVsbG93XCI6IFwiI2FkZmYyZlwiLFxuICAgICAgICBcImhvbmV5ZGV3XCI6IFwiI2YwZmZmMFwiLFxuICAgICAgICBcImhvdHBpbmtcIjogXCIjZmY2OWI0XCIsXG4gICAgICAgIFwiaW5kaWFucmVkXCI6IFwiI2NkNWM1Y1wiLFxuICAgICAgICBcImluZGlnb1wiOiBcIiM0YjAwODJcIixcbiAgICAgICAgXCJpdm9yeVwiOiBcIiNmZmZmZjBcIixcbiAgICAgICAgXCJraGFraVwiOiBcIiNmMGU2OGNcIixcbiAgICAgICAgXCJsYXZlbmRlclwiOiBcIiNlNmU2ZmFcIixcbiAgICAgICAgXCJsYXZlbmRlcmJsdXNoXCI6IFwiI2ZmZjBmNVwiLFxuICAgICAgICBcImxhd25ncmVlblwiOiBcIiM3Y2ZjMDBcIixcbiAgICAgICAgXCJsZW1vbmNoaWZmb25cIjogXCIjZmZmYWNkXCIsXG4gICAgICAgIFwibGlnaHRibHVlXCI6IFwiI2FkZDhlNlwiLFxuICAgICAgICBcImxpZ2h0Y29yYWxcIjogXCIjZjA4MDgwXCIsXG4gICAgICAgIFwibGlnaHRjeWFuXCI6IFwiI2UwZmZmZlwiLFxuICAgICAgICBcImxpZ2h0Z29sZGVucm9keWVsbG93XCI6IFwiI2ZhZmFkMlwiLFxuICAgICAgICBcImxpZ2h0Z3JleVwiOiBcIiNkM2QzZDNcIixcbiAgICAgICAgXCJsaWdodGdyZWVuXCI6IFwiIzkwZWU5MFwiLFxuICAgICAgICBcImxpZ2h0cGlua1wiOiBcIiNmZmI2YzFcIixcbiAgICAgICAgXCJsaWdodHNhbG1vblwiOiBcIiNmZmEwN2FcIixcbiAgICAgICAgXCJsaWdodHNlYWdyZWVuXCI6IFwiIzIwYjJhYVwiLFxuICAgICAgICBcImxpZ2h0c2t5Ymx1ZVwiOiBcIiM4N2NlZmFcIixcbiAgICAgICAgXCJsaWdodHNsYXRlZ3JheVwiOiBcIiM3Nzg4OTlcIixcbiAgICAgICAgXCJsaWdodHN0ZWVsYmx1ZVwiOiBcIiNiMGM0ZGVcIixcbiAgICAgICAgXCJsaWdodHllbGxvd1wiOiBcIiNmZmZmZTBcIixcbiAgICAgICAgXCJsaW1lXCI6IFwiIzAwZmYwMFwiLFxuICAgICAgICBcImxpbWVncmVlblwiOiBcIiMzMmNkMzJcIixcbiAgICAgICAgXCJsaW5lblwiOiBcIiNmYWYwZTZcIixcbiAgICAgICAgXCJtYWdlbnRhXCI6IFwiI2ZmMDBmZlwiLFxuICAgICAgICBcIm1hcm9vblwiOiBcIiM4MDAwMDBcIixcbiAgICAgICAgXCJtZWRpdW1hcXVhbWFyaW5lXCI6IFwiIzY2Y2RhYVwiLFxuICAgICAgICBcIm1lZGl1bWJsdWVcIjogXCIjMDAwMGNkXCIsXG4gICAgICAgIFwibWVkaXVtb3JjaGlkXCI6IFwiI2JhNTVkM1wiLFxuICAgICAgICBcIm1lZGl1bXB1cnBsZVwiOiBcIiM5MzcwZDhcIixcbiAgICAgICAgXCJtZWRpdW1zZWFncmVlblwiOiBcIiMzY2IzNzFcIixcbiAgICAgICAgXCJtZWRpdW1zbGF0ZWJsdWVcIjogXCIjN2I2OGVlXCIsXG4gICAgICAgIFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogXCIjMDBmYTlhXCIsXG4gICAgICAgIFwibWVkaXVtdHVycXVvaXNlXCI6IFwiIzQ4ZDFjY1wiLFxuICAgICAgICBcIm1lZGl1bXZpb2xldHJlZFwiOiBcIiNjNzE1ODVcIixcbiAgICAgICAgXCJtaWRuaWdodGJsdWVcIjogXCIjMTkxOTcwXCIsXG4gICAgICAgIFwibWludGNyZWFtXCI6IFwiI2Y1ZmZmYVwiLFxuICAgICAgICBcIm1pc3R5cm9zZVwiOiBcIiNmZmU0ZTFcIixcbiAgICAgICAgXCJtb2NjYXNpblwiOiBcIiNmZmU0YjVcIixcbiAgICAgICAgXCJuYXZham93aGl0ZVwiOiBcIiNmZmRlYWRcIixcbiAgICAgICAgXCJuYXZ5XCI6IFwiIzAwMDA4MFwiLFxuICAgICAgICBcIm9sZGxhY2VcIjogXCIjZmRmNWU2XCIsXG4gICAgICAgIFwib2xpdmVcIjogXCIjODA4MDAwXCIsXG4gICAgICAgIFwib2xpdmVkcmFiXCI6IFwiIzZiOGUyM1wiLFxuICAgICAgICBcIm9yYW5nZVwiOiBcIiNmZmE1MDBcIixcbiAgICAgICAgXCJvcmFuZ2VyZWRcIjogXCIjZmY0NTAwXCIsXG4gICAgICAgIFwib3JjaGlkXCI6IFwiI2RhNzBkNlwiLFxuICAgICAgICBcInBhbGVnb2xkZW5yb2RcIjogXCIjZWVlOGFhXCIsXG4gICAgICAgIFwicGFsZWdyZWVuXCI6IFwiIzk4ZmI5OFwiLFxuICAgICAgICBcInBhbGV0dXJxdW9pc2VcIjogXCIjYWZlZWVlXCIsXG4gICAgICAgIFwicGFsZXZpb2xldHJlZFwiOiBcIiNkODcwOTNcIixcbiAgICAgICAgXCJwYXBheWF3aGlwXCI6IFwiI2ZmZWZkNVwiLFxuICAgICAgICBcInBlYWNocHVmZlwiOiBcIiNmZmRhYjlcIixcbiAgICAgICAgXCJwZXJ1XCI6IFwiI2NkODUzZlwiLFxuICAgICAgICBcInBpbmtcIjogXCIjZmZjMGNiXCIsXG4gICAgICAgIFwicGx1bVwiOiBcIiNkZGEwZGRcIixcbiAgICAgICAgXCJwb3dkZXJibHVlXCI6IFwiI2IwZTBlNlwiLFxuICAgICAgICBcInB1cnBsZVwiOiBcIiM4MDAwODBcIixcbiAgICAgICAgXCJyZWRcIjogXCIjZmYwMDAwXCIsXG4gICAgICAgIFwicm9zeWJyb3duXCI6IFwiI2JjOGY4ZlwiLFxuICAgICAgICBcInJveWFsYmx1ZVwiOiBcIiM0MTY5ZTFcIixcbiAgICAgICAgXCJzYWRkbGVicm93blwiOiBcIiM4YjQ1MTNcIixcbiAgICAgICAgXCJzYWxtb25cIjogXCIjZmE4MDcyXCIsXG4gICAgICAgIFwic2FuZHlicm93blwiOiBcIiNmNGE0NjBcIixcbiAgICAgICAgXCJzZWFncmVlblwiOiBcIiMyZThiNTdcIixcbiAgICAgICAgXCJzZWFzaGVsbFwiOiBcIiNmZmY1ZWVcIixcbiAgICAgICAgXCJzaWVubmFcIjogXCIjYTA1MjJkXCIsXG4gICAgICAgIFwic2lsdmVyXCI6IFwiI2MwYzBjMFwiLFxuICAgICAgICBcInNreWJsdWVcIjogXCIjODdjZWViXCIsXG4gICAgICAgIFwic2xhdGVibHVlXCI6IFwiIzZhNWFjZFwiLFxuICAgICAgICBcInNsYXRlZ3JheVwiOiBcIiM3MDgwOTBcIixcbiAgICAgICAgXCJzbm93XCI6IFwiI2ZmZmFmYVwiLFxuICAgICAgICBcInNwcmluZ2dyZWVuXCI6IFwiIzAwZmY3ZlwiLFxuICAgICAgICBcInN0ZWVsYmx1ZVwiOiBcIiM0NjgyYjRcIixcbiAgICAgICAgXCJ0YW5cIjogXCIjZDJiNDhjXCIsXG4gICAgICAgIFwidGVhbFwiOiBcIiMwMDgwODBcIixcbiAgICAgICAgXCJ0aGlzdGxlXCI6IFwiI2Q4YmZkOFwiLFxuICAgICAgICBcInRvbWF0b1wiOiBcIiNmZjYzNDdcIixcbiAgICAgICAgXCJ0dXJxdW9pc2VcIjogXCIjNDBlMGQwXCIsXG4gICAgICAgIFwidmlvbGV0XCI6IFwiI2VlODJlZVwiLFxuICAgICAgICBcIndoZWF0XCI6IFwiI2Y1ZGViM1wiLFxuICAgICAgICBcIndoaXRlXCI6IFwiI2ZmZmZmZlwiLFxuICAgICAgICBcIndoaXRlc21va2VcIjogXCIjZjVmNWY1XCIsXG4gICAgICAgIFwieWVsbG93XCI6IFwiI2ZmZmYwMFwiLFxuICAgICAgICBcInllbGxvd2dyZWVuXCI6IFwiIzlhY2QzMlwiLFxuICAgICAgICBcImJ1dHRvbnRleHRcIjogXCJyZ2JhKDAsIDAsIDAsIDAuODQ3KVwiLFxuICAgICAgICBcImJ1dHRvbmZhY2VcIjogXCIjZmZmZmZmXCIsXG4gICAgICAgIFwiZ3JheXRleHRcIjogXCJyZ2JhKDAsIDAsIDAsIDAuMjQ3KVwiXG4gICAgfVxuXG5cbiAgICAvLyBSZXdyaXRlIHRoZSBjb2xvciBvYmplY3QgdG8gYWNjb3VudCBmb3IgYWxwaGFcbiAgICBwdWJsaWMgc3RhdGljIENvbG9yKGNzc1N0eWxlQ29sb3IpIHtcbiAgICAgICAgY3NzU3R5bGVDb2xvciA9IGNzc1N0eWxlQ29sb3IudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGNzc1N0eWxlQ29sb3IgPT09IFwidHJhbnNwYXJlbnRcIikgcmV0dXJuIG5ldyBDb2xvck9iaigyNTUsIDI1NSwgMjU1LCAwKTtcbiAgICAgICAgaWYgKGNzc1N0eWxlQ29sb3IgaW4gUlBUVXRpbC5DU1NDb2xvckxvb2t1cClcbiAgICAgICAgICAgIGNzc1N0eWxlQ29sb3IgPSBSUFRVdGlsLkNTU0NvbG9yTG9va3VwW2Nzc1N0eWxlQ29sb3JdO1xuICAgICAgICBpZiAoY3NzU3R5bGVDb2xvci5zdGFydHNXaXRoKFwicmdiKFwiKSkge1xuICAgICAgICAgICAgbGV0IHJnYlJlZ2V4ID0gL1xccypyZ2JcXHMqXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccypcXCkvO1xuICAgICAgICAgICAgbGV0IG0gPSBjc3NTdHlsZUNvbG9yLm1hdGNoKHJnYlJlZ2V4KTtcbiAgICAgICAgICAgIGlmIChtID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3JPYmoobVsxXSwgbVsyXSwgbVszXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY3NzU3R5bGVDb2xvci5zdGFydHNXaXRoKFwicmdiYShcIikpIHtcbiAgICAgICAgICAgIGxldCByZ2JSZWdleCA9IC9cXHMqcmdiYVxccypcXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKixcXHMqKC4rKVxccypcXCkvO1xuICAgICAgICAgICAgbGV0IG0gPSBjc3NTdHlsZUNvbG9yLm1hdGNoKHJnYlJlZ2V4KTtcbiAgICAgICAgICAgIGlmIChtID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3JPYmoobVsxXSwgbVsyXSwgbVszXSwgbVs0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY3NzU3R5bGVDb2xvci5jaGFyQXQoMCkgIT0gXCIjXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNzc1N0eWxlQ29sb3IubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIHRocmVlLWRpZ2l0IFJHQiAoI3JnYikgaXMgY29udmVydGVkIHRvIHNpeC1kaWdpdCBmb3JtICgjcnJnZ2JiKSBieSByZXBsaWNhdGluZyBkaWdpdHNcbiAgICAgICAgICAgICAgICAvLyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1jb2xvci0zLyNyZ2ItY29sb3IpXG4gICAgICAgICAgICAgICAgY3NzU3R5bGVDb2xvciA9IFwiI1wiICsgY3NzU3R5bGVDb2xvci5jaGFyQXQoMSkucmVwZWF0KDIpICtcbiAgICAgICAgICAgICAgICAgICAgY3NzU3R5bGVDb2xvci5jaGFyQXQoMikucmVwZWF0KDIpICtcbiAgICAgICAgICAgICAgICAgICAgY3NzU3R5bGVDb2xvci5jaGFyQXQoMykucmVwZWF0KDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHRoaXNSZWQgPSBwYXJzZUludChjc3NTdHlsZUNvbG9yLnN1YnN0cmluZygxLCAzKSwgMTYpO1xuICAgICAgICAgICAgbGV0IHRoaXNHcmVlbiA9IHBhcnNlSW50KGNzc1N0eWxlQ29sb3Iuc3Vic3RyaW5nKDMsIDUpLCAxNik7XG4gICAgICAgICAgICBsZXQgdGhpc0JsdWUgPSBwYXJzZUludChjc3NTdHlsZUNvbG9yLnN1YnN0cmluZyg1LCA3KSwgMTYpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvck9iaih0aGlzUmVkLCB0aGlzR3JlZW4sIHRoaXNCbHVlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAgICByZXR1cm4gbnVsbDsgLy8gVW5yZWFjaGFibGVcbiAgICB9O1xuXG4gICAgcHVibGljIHN0YXRpYyBDb2xvckNvbWJvKHJ1bGVDb250ZXh0IDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGlmICghZG9jKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2luID0gZG9jLmRlZmF1bHRWaWV3O1xuICAgICAgICBpZiAoIXdpbikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgYW5jZXN0b3JzID0gW107XG4gICAgICAgIGxldCB3YWxrTm9kZSA6IEVsZW1lbnQgPSBydWxlQ29udGV4dDtcbiAgICAgICAgd2hpbGUgKHdhbGtOb2RlKSB7XG4gICAgICAgICAgICBpZiAod2Fsa05vZGUubm9kZVR5cGUgPT09IDEpXG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzLnB1c2god2Fsa05vZGUpO1xuICAgICAgICAgICAgd2Fsa05vZGUgPSBET01VdGlsLnBhcmVudEVsZW1lbnQod2Fsa05vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHJldFZhbCA9IHtcbiAgICAgICAgICAgIFwiaGFzR3JhZGllbnRcIjogZmFsc2UsXG4gICAgICAgICAgICBcImhhc0JHSW1hZ2VcIjogZmFsc2UsXG4gICAgICAgICAgICBcImZnXCI6IG51bGwsXG4gICAgICAgICAgICBcImJnXCI6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvbXBTdHlsZUNvbG9yID0gd2luLmdldENvbXB1dGVkU3R5bGUocnVsZUNvbnRleHQpLmNvbG9yO1xuICAgICAgICBpZiAoIWNvbXBTdHlsZUNvbG9yKVxuICAgICAgICAgICAgY29tcFN0eWxlQ29sb3IgPSBcImJsYWNrXCI7XG4gICAgICAgIHZhciBmZyA9IFJQVFV0aWwuQ29sb3IoY29tcFN0eWxlQ29sb3IpO1xuXG4gICAgICAgIHZhciByZUNvbG9yID0gL3RyYW5zcGFyZW50fHJnYmE/XFwoW14pXStcXCkvZ2k7XG4gICAgICAgIHZhciBndWVzc0dyYWRDb2xvciA9IGZ1bmN0aW9uIChncmFkTGlzdCwgYmdDb2xvciwgZmdDb2xvcikge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIGNvbG9yLCByZXR1cm4gdGhhdFxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZ3JhZExpc3QubGVuZ3RoID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ3JhZExpc3Q7XG5cbiAgICAgICAgICAgICAgICB2YXIgb3ZlcmFsbFdvcnN0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB2YXIgb3ZlcmFsbFdvcnN0UmF0aW8gPSBudWxsO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGlHcmFkID0gMTsgaUdyYWQgPCBncmFkTGlzdC5sZW5ndGg7ICsraUdyYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdvcnN0Q29sb3IgPSBncmFkTGlzdFtpR3JhZCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgd29yc3RSYXRpbyA9IGZnQ29sb3IuY29udHJhc3RSYXRpbyhncmFkTGlzdFtpR3JhZCAtIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSAuMTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzdGVwID4gLjAwMDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpZHggKyBzdGVwIDw9IDEgJiYgd29yc3RSYXRpbyA+IGZnQ29sb3IuY29udHJhc3RSYXRpbyhncmFkTGlzdFtpR3JhZF0ubWl4KGdyYWRMaXN0W2lHcmFkIC0gMV0sIGlkeCArIHN0ZXApLmdldE92ZXJsYXlDb2xvcihiZ0NvbG9yKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JzdENvbG9yID0gZ3JhZExpc3RbaUdyYWRdLm1peChncmFkTGlzdFtpR3JhZCAtIDFdLCBpZHggKyBzdGVwKS5nZXRPdmVybGF5Q29sb3IoYmdDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yc3RSYXRpbyA9IGZnQ29sb3IuY29udHJhc3RSYXRpbyh3b3JzdENvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpZHggKyBzdGVwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGlkeCAtIHN0ZXAgPj0gMCAmJiB3b3JzdFJhdGlvID4gZmdDb2xvci5jb250cmFzdFJhdGlvKGdyYWRMaXN0W2lHcmFkXS5taXgoZ3JhZExpc3RbaUdyYWQgLSAxXSwgaWR4IC0gc3RlcCkuZ2V0T3ZlcmxheUNvbG9yKGJnQ29sb3IpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcnN0Q29sb3IgPSBncmFkTGlzdFtpR3JhZF0ubWl4KGdyYWRMaXN0W2lHcmFkIC0gMV0sIGlkeCAtIHN0ZXApLmdldE92ZXJsYXlDb2xvcihiZ0NvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JzdFJhdGlvID0gZmdDb2xvci5jb250cmFzdFJhdGlvKHdvcnN0Q29sb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IGlkeCAtIHN0ZXA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwID0gc3RlcCAvIDEwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvdmVyYWxsV29yc3RSYXRpbyA9PT0gbnVsbCB8fCBvdmVyYWxsV29yc3RSYXRpbyA+IHdvcnN0UmF0aW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJhbGxXb3JzdFJhdGlvID0gd29yc3RSYXRpbztcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJhbGxXb3JzdCA9IHdvcnN0Q29sb3I7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJhbGxXb3JzdDtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBiZ0NvbG9yO1xuICAgICAgICB9O1xuXG4gICAgICAgIHZhciBwcmlvclN0YWNrQkcgPSBSUFRVdGlsLkNvbG9yKFwid2hpdGVcIik7XG4gICAgICAgIHZhciB0aGlzU3RhY2tPcGFjaXR5ID0gbnVsbDtcbiAgICAgICAgdmFyIHRoaXNTdGFja0FscGhhID0gbnVsbDtcbiAgICAgICAgdmFyIHRoaXNTdGFja0JHID0gbnVsbDtcbiAgICAgICAgLy8gQW5jZXN0b3JzIHByb2Nlc3NlZCBmcm9tIHRoZSB0b3Btb3N0IHBhcmVudCB0b3dhcmQgdGhlIGNoaWxkXG4gICAgICAgIHdoaWxlIChhbmNlc3RvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyIHByb2NOZXh0ID0gYW5jZXN0b3JzLnBvcCgpO1xuICAgICAgICAgICAgLy8gY1N0eWxlIGlzIHRoZSBjb21wdXRlZCBzdHlsZSBvZiB0aGlzIGxheWVyXG4gICAgICAgICAgICB2YXIgY1N0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUocHJvY05leHQpO1xuICAgICAgICAgICAgaWYgKGNTdHlsZSA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAgICAgICAgIC8vIHRoaXNCZ0NvbG9yIGlzIHRoZSBjb2xvciBvZiB0aGlzIGxheWVyIG9yIG51bGwgaWYgdGhlIGxheWVyIGlzIHRyYW5zcGFyZW50XG4gICAgICAgICAgICB2YXIgdGhpc0JnQ29sb3IgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGNTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgJiYgY1N0eWxlLmJhY2tncm91bmRDb2xvciAhPSBcInRyYW5zcGFyZW50XCIgJiYgY1N0eWxlLmJhY2tncm91bmRDb2xvciAhPSBcInJnYmEoMCwgMCwgMCwgMClcIikge1xuICAgICAgICAgICAgICAgIHRoaXNCZ0NvbG9yID0gUlBUVXRpbC5Db2xvcihjU3R5bGUuYmFja2dyb3VuZENvbG9yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBncmFkaWVudCBpbnZvbHZlZCwgc2V0IHRoaXNCZ0NvbG9yIHRvIHRoZSB3b3JzdCBjb2xvciBjb21iaW5hdGlvbiBhdmFpbGFibGUgYWdhaW5zdCB0aGUgZm9yZWdyb3VuZFxuICAgICAgICAgICAgaWYgKGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgJiYgY1N0eWxlLmJhY2tncm91bmRJbWFnZS5pbmRleE9mICYmIGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UuaW5kZXhPZihcImdyYWRpZW50XCIpICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgdmFyIGdyYWRDb2xvcnMgOiBzdHJpbmdbXSA9IGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UubWF0Y2gocmVDb2xvcik7XG4gICAgICAgICAgICAgICAgaWYgKGdyYWRDb2xvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWRDb2xvckNvbXAgOiBDb2xvck9ialtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JhZENvbG9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFncmFkQ29sb3JzW2ldLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRDb2xvcnMuc3BsaWNlKGktLSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYWRDb2xvckNvbXAucHVzaChSUFRVdGlsLkNvbG9yKGdyYWRDb2xvcnNbaV0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzQmdDb2xvciA9IGd1ZXNzR3JhZENvbG9yKGdyYWRDb2xvckNvbXAsIHRoaXNTdGFja0JHIHx8IHByaW9yU3RhY2tCRywgZmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSGFuZGxlIG5vbi1zb2xpZCBvcGFjaXR5XG4gICAgICAgICAgICBpZiAodGhpc1N0YWNrT3BhY2l0eSA9PT0gbnVsbCB8fCAoY1N0eWxlLm9wYWNpdHkgJiYgY1N0eWxlLm9wYWNpdHkubGVuZ3RoID4gMCAmJiBwYXJzZUZsb2F0KGNTdHlsZS5vcGFjaXR5KSA8IDEpKSB7XG4gICAgICAgICAgICAgICAgLy8gTmV3IHN0YWNrLCByZXNldFxuICAgICAgICAgICAgICAgIGlmICh0aGlzU3RhY2tCRyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE92ZXJsYXlcbiAgICAgICAgICAgICAgICAgICAgdGhpc1N0YWNrQkcuYWxwaGEgPSB0aGlzU3RhY2tPcGFjaXR5ICogdGhpc1N0YWNrQWxwaGE7XG4gICAgICAgICAgICAgICAgICAgIHByaW9yU3RhY2tCRyA9IHRoaXNTdGFja0JHLmdldE92ZXJsYXlDb2xvcihwcmlvclN0YWNrQkcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzU3RhY2tPcGFjaXR5ID0gMS4wO1xuICAgICAgICAgICAgICAgIHRoaXNTdGFja0FscGhhID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzU3RhY2tCRyA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGNTdHlsZS5vcGFjaXR5ICYmIGNTdHlsZS5vcGFjaXR5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1N0YWNrT3BhY2l0eSA9IHBhcnNlRmxvYXQoY1N0eWxlLm9wYWNpdHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpc0JnQ29sb3IgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzU3RhY2tCRyA9IHRoaXNCZ0NvbG9yO1xuICAgICAgICAgICAgICAgICAgICB0aGlzU3RhY2tBbHBoYSA9IHRoaXNTdGFja0JHLmFscGhhIHx8IDEuMDtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXNTdGFja0JHLmFscGhhO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1N0YWNrT3BhY2l0eSA9PT0gMS4wICYmIHRoaXNTdGFja0FscGhhID09PSAxLjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbC5oYXNCR0ltYWdlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwuaGFzR3JhZGllbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEhhbmRsZSBzb2xpZCBjb2xvciBiYWNrZ3JvdW5kcyBhbmQgZ3JhZGllbnQgY29sb3IgYmFja2dyb3VuZHNcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXNCZ0NvbG9yICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIHN0YWNrIGFscmVhZHkgaGFzIGEgYmFja2dyb3VuZCBjb2xvciwgYmxlbmQgaXRcbiAgICAgICAgICAgICAgICBpZiAodGhpc1N0YWNrQkcgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1N0YWNrQkcgPSB0aGlzQmdDb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1N0YWNrQWxwaGEgPSB0aGlzU3RhY2tCRy5hbHBoYSB8fCAxLjA7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzU3RhY2tCRy5hbHBoYTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzU3RhY2tCRyA9IHRoaXNCZ0NvbG9yLmdldE92ZXJsYXlDb2xvcih0aGlzU3RhY2tCRyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vICM1MjY6IElmIHRoaXNCZ0NvbG9yIGhhZCBhbiBhbHBoYSB2YWx1ZSwgaXQgbWF5IG5vdCBleHBvc2UgdGhyb3VnaCB0aGlzU3RhY2tCRyBpbiB0aGUgYWJvdmUgY29kZVxuICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IHdpcGUgb3V0IHRoZSBncmFkaWVudCBpbmZvIGlmIHRoaXMgbGF5ZXIgd2FzIHRyYW5zcGFyZW50XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNTdGFja09wYWNpdHkgPT09IDEuMCAmJiB0aGlzU3RhY2tBbHBoYSA9PT0gMS4wICYmICh0aGlzU3RhY2tCRy5hbHBoYSB8fCAxLjApID09PSAxLjAgJiYgKHRoaXNCZ0NvbG9yLmFscGhhIHx8IDEuMCkgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsLmhhc0JHSW1hZ2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsLmhhc0dyYWRpZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgJiYgY1N0eWxlLmJhY2tncm91bmRJbWFnZSAhPSBcIm5vbmVcIikge1xuICAgICAgICAgICAgICAgIGlmIChjU3R5bGUuYmFja2dyb3VuZEltYWdlLmluZGV4T2YgJiYgY1N0eWxlLmJhY2tncm91bmRJbWFnZS5pbmRleE9mKFwiZ3JhZGllbnRcIikgIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsLmhhc0dyYWRpZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwuaGFzQkdJbWFnZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzU3RhY2tCRyAhPSBudWxsKSB7XG4gICAgICAgICAgICBmZyA9IGZnLmdldE92ZXJsYXlDb2xvcih0aGlzU3RhY2tCRyk7XG4gICAgICAgICAgICBkZWxldGUgZmcuYWxwaGE7XG4gICAgICAgIH1cbiAgICAgICAgZmcuYWxwaGEgPSAoZmcuYWxwaGEgfHwgMSkgKiB0aGlzU3RhY2tPcGFjaXR5O1xuICAgICAgICBmZyA9IGZnLmdldE92ZXJsYXlDb2xvcihwcmlvclN0YWNrQkcpO1xuICAgICAgICBpZiAodGhpc1N0YWNrQkcgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpc1N0YWNrQkcuYWxwaGEgPSB0aGlzU3RhY2tPcGFjaXR5ICogdGhpc1N0YWNrQWxwaGE7XG4gICAgICAgICAgICBwcmlvclN0YWNrQkcgPSB0aGlzU3RhY2tCRy5nZXRPdmVybGF5Q29sb3IocHJpb3JTdGFja0JHKTtcbiAgICAgICAgfVxuICAgICAgICByZXRWYWwuZmcgPSBmZztcbiAgICAgICAgcmV0VmFsLmJnID0gcHJpb3JTdGFja0JHO1xuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH07XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0F0dHJpYnV0ZShlbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSB7XG4gICAgICAgIHZhciBoYXNBdHRyaWJ1dGUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBoYXNBdHRyaWJ1dGUgPSBlbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmF0dHJpYnV0ZXMgJiYgZWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSkge1xuICAgICAgICAgICAgdmFyIGF0dHIgPSBlbGVtZW50LmF0dHJpYnV0ZXMuZ2V0TmFtZWRJdGVtKGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICAgICAgaGFzQXR0cmlidXRlID0gYXR0ciAmJiBhdHRyLnNwZWNpZmllZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzQXR0cmlidXRlO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJQVFV0aWxTdHlsZSB7XG4gICAgcHVibGljIHN0YXRpYyBnZXRXZWlnaHROdW1iZXIoc3R5bGVWYWwpIHtcbiAgICAgICAgbGV0IG1hcCA9IHtcbiAgICAgICAgICAgIFwibGlnaHRcIjogMTAwLFxuICAgICAgICAgICAgXCJib2xkXCI6IDcwMFxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmV0VmFsID0gcGFyc2VJbnQoc3R5bGVWYWwpO1xuICAgICAgICBpZiAocmV0VmFsKSByZXR1cm4gcmV0VmFsO1xuICAgICAgICBpZiAoc3R5bGVWYWwgaW4gbWFwKVxuICAgICAgICAgICAgcmV0dXJuIG1hcFtzdHlsZVZhbF07XG4gICAgICAgIHJldHVybiA0MDA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRGb250SW5QaXhlbHMgPSBmdW5jdGlvbiAoc3R5bGVWYWwpIHtcbiAgICAgICAgbGV0IG1hcCA9IHtcbiAgICAgICAgICAgIFwieHgtc21hbGxcIjogMTYsXG4gICAgICAgICAgICBcIngtc21hbGxcIjogMTAsXG4gICAgICAgICAgICBcInNtYWxsXCI6IDEzLFxuICAgICAgICAgICAgXCJtZWRpdW1cIjogMTYsXG4gICAgICAgICAgICBcImxhcmdlXCI6IDE4LFxuICAgICAgICAgICAgXCJ4LWxhcmdlXCI6IDI0LFxuICAgICAgICAgICAgXCJ4eC1sYXJnZVwiOiAzMlxuICAgICAgICB9O1xuICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KHN0eWxlVmFsKTtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcFtzdHlsZVZhbF07XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHVuaXRzID0gc3R5bGVWYWwuc3Vic3RyaW5nKChcIlwiICsgdmFsdWUpLmxlbmd0aCk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gXCJcIiB8fCB1bml0cyA9PT0gXCJweFwiKSByZXR1cm4gdmFsdWU7XG4gICAgICAgIGlmICh1bml0cyA9PT0gXCJlbVwiKSByZXR1cm4gdmFsdWUgKiAxNjtcbiAgICAgICAgaWYgKHVuaXRzID09PSBcIiVcIikgcmV0dXJuIHZhbHVlIC8gMTAwICogMTY7XG4gICAgICAgIGlmICh1bml0cyA9PT0gXCJwdFwiKSByZXR1cm4gdmFsdWUgKiA0IC8gMztcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbG9yT2JqIHtcbiAgICByZWQgOiBudW1iZXI7XG4gICAgZ3JlZW4gOiBudW1iZXI7XG4gICAgYmx1ZSA6IG51bWJlcjtcbiAgICBhbHBoYSA6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHJlZCA6IHN0cmluZyB8IG51bWJlciwgZ3JlZW4gOiBzdHJpbmcgfCBudW1iZXIsIGJsdWUgOiBzdHJpbmcgfCBudW1iZXIsIGFscGhhPyA6IHN0cmluZyB8IG51bWJlcikge1xuICAgICAgICBmdW5jdGlvbiBmaXhDb21wb25lbnQoY29tcCA6IHN0cmluZyB8IG51bWJlcikgOiBudW1iZXIge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAoY29tcCkgIT0gdHlwZW9mIChcIlwiKSkgcmV0dXJuIGNvbXAgYXMgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNvbXBTdHIgPSBjb21wIGFzIHN0cmluZztcbiAgICAgICAgICAgIGNvbXBTdHIgPSBjb21wU3RyLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChjb21wU3RyW2NvbXBTdHIubGVuZ3RoIC0gMV0gIT0gXCIlXCIpIHJldHVybiBwYXJzZUludChjb21wU3RyKTtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQoY29tcFN0ci5zdWJzdHJpbmcoMCwgY29tcFN0ci5sZW5ndGggLSAxKSkgKiAyLjU1KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZCA9IGZpeENvbXBvbmVudChyZWQpO1xuICAgICAgICB0aGlzLmdyZWVuID0gZml4Q29tcG9uZW50KGdyZWVuKTtcbiAgICAgICAgdGhpcy5ibHVlID0gZml4Q29tcG9uZW50KGJsdWUpO1xuICAgICAgICBpZiAodHlwZW9mIChhbHBoYSkgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdGhpcy5hbHBoYSA9ICh0eXBlb2YgKGFscGhhKSA9PT0gdHlwZW9mIChcIlwiKSkgPyBwYXJzZUZsb2F0KGFscGhhIGFzIHN0cmluZykgOiBhbHBoYSBhcyBudW1iZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0hleEhlbHAodmFsdWUgOiBudW1iZXIpIDogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJldFZhbCA9IE1hdGgucm91bmQodmFsdWUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgaWYgKHJldFZhbC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICByZXR1cm4gXCIwXCIgKyByZXRWYWw7XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfTtcblxuICAgIHRvSGV4KCkgOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCIjXCIgKyB0aGlzLnRvSGV4SGVscCh0aGlzLnJlZCkgKyB0aGlzLnRvSGV4SGVscCh0aGlzLmdyZWVuKSArIHRoaXMudG9IZXhIZWxwKHRoaXMuYmx1ZSk7XG4gICAgfTtcblxuICAgIGNvbnRyYXN0UmF0aW8oYmdDb2xvciA6IENvbG9yT2JqKSB7XG4gICAgICAgIGxldCBmZ0NvbG9yOiBDb2xvck9iaiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5hbHBoYSkgIT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIGZnQ29sb3IgPSB0aGlzLmdldE92ZXJsYXlDb2xvcihiZ0NvbG9yKTtcblxuICAgICAgICBsZXQgbHVtMSA9IGZnQ29sb3IucmVsYXRpdmVMdW1pbmFuY2UoKTtcbiAgICAgICAgaWYgKCFiZ0NvbG9yLnJlbGF0aXZlTHVtaW5hbmNlKSB7XG4gICAgICAgICAgICBsZXQgcyA9IFwiXCI7XG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gYmdDb2xvcikge1xuICAgICAgICAgICAgICAgIHMgKz0ga2V5ICsgXCJcXG5cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFsZXJ0KGJnQ29sb3IpO1xuICAgICAgICAgICAgYWxlcnQocyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGx1bTIgPSBiZ0NvbG9yLnJlbGF0aXZlTHVtaW5hbmNlKCk7XG4gICAgICAgIGxldCByYXRpbyA9IChsdW0xID4gbHVtMikgPyAobHVtMSArIC4wNSkgLyAobHVtMiArIC4wNSkgOiAobHVtMiArIC4wNSkgLyAobHVtMSArIC4wNSk7XG4gICAgICAgIHJldHVybiByYXRpbztcbiAgICB9O1xuXG4gICAgcmVsYXRpdmVMdW1pbmFuY2UoKSA6IG51bWJlciB7XG4gICAgICAgIGxldCBSID0gdGhpcy5yZWQgLyAyNTUuMDtcbiAgICAgICAgbGV0IEcgPSB0aGlzLmdyZWVuIC8gMjU1LjA7XG4gICAgICAgIGxldCBCID0gdGhpcy5ibHVlIC8gMjU1LjA7XG4gICAgICAgIFIgPSBSIDw9IC4wMzkyOCA/IFIgLyAxMi45MiA6IE1hdGgucG93KChSICsgLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgICAgICAgRyA9IEcgPD0gLjAzOTI4ID8gRyAvIDEyLjkyIDogTWF0aC5wb3coKEcgKyAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICAgICAgICBCID0gQiA8PSAuMDM5MjggPyBCIC8gMTIuOTIgOiBNYXRoLnBvdygoQiArIC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gICAgICAgIHJldHVybiAwLjIxMjYgKiBSICsgMC43MTUyICogRyArIDAuMDcyMiAqIEI7XG4gICAgfTtcblxuICAgIG1peChjb2xvcjIgOiBDb2xvck9iaiwgcGVyY1RoaXMgOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5hbHBoYSkgPT09IFwidW5kZWZpbmVkXCIgJiYgdHlwZW9mIChjb2xvcjIuYWxwaGEpID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yT2JqKFxuICAgICAgICAgICAgICAgIHBlcmNUaGlzICogdGhpcy5yZWQgKyAoMSAtIHBlcmNUaGlzKSAqIGNvbG9yMi5yZWQsXG4gICAgICAgICAgICAgICAgcGVyY1RoaXMgKiB0aGlzLmdyZWVuICsgKDEgLSBwZXJjVGhpcykgKiBjb2xvcjIuZ3JlZW4sXG4gICAgICAgICAgICAgICAgcGVyY1RoaXMgKiB0aGlzLmJsdWUgKyAoMSAtIHBlcmNUaGlzKSAqIGNvbG9yMi5ibHVlXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGFscGhhVGhpcyA9IHRoaXMuYWxwaGEgPyB0aGlzLmFscGhhIDogMTtcbiAgICAgICAgICAgIGxldCBhbHBoYU90aGVyID0gY29sb3IyLmFscGhhID8gY29sb3IyLmFscGhhIDogMTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3JPYmooXG4gICAgICAgICAgICAgICAgcGVyY1RoaXMgKiB0aGlzLnJlZCArICgxIC0gcGVyY1RoaXMpICogY29sb3IyLnJlZCxcbiAgICAgICAgICAgICAgICBwZXJjVGhpcyAqIHRoaXMuZ3JlZW4gKyAoMSAtIHBlcmNUaGlzKSAqIGNvbG9yMi5ncmVlbixcbiAgICAgICAgICAgICAgICBwZXJjVGhpcyAqIHRoaXMuYmx1ZSArICgxIC0gcGVyY1RoaXMpICogY29sb3IyLmJsdWUsXG4gICAgICAgICAgICAgICAgcGVyY1RoaXMgKiBhbHBoYVRoaXMgKyAoMSAtIHBlcmNUaGlzKSAqIGFscGhhT3RoZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2V0T3ZlcmxheUNvbG9yKGJnQ29sb3IgOiBDb2xvck9iaikge1xuICAgICAgICBpZiAodHlwZW9mICh0aGlzLmFscGhhKSA9PT0gXCJ1bmRlZmluZWRcIiB8fCB0aGlzLmFscGhhID49IDEpIHtcbiAgICAgICAgICAgIC8vIE5vIG1peGluZyByZXF1aXJlZCAtIGl0J3Mgb3BhcXVlXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hbHBoYSA8IDApIHtcbiAgICAgICAgICAgIC8vXHRcdEhhYWMuRXJyb3IubG9nRXJyb3IoXCJJbnZhbGlkIGFscGhhIHZhbHVlXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiAoYmdDb2xvci5hbHBoYSkgIT0gXCJ1bmRlZmluZWRcIiAmJiBiZ0NvbG9yLmFscGhhIDwgMSkge1xuICAgICAgICAgICAgLy9cdFx0SGFhYy5FcnJvci5sb2dFcnJvcihcIkNhbm5vdCBtaXggd2l0aCBhIGJhY2tncm91bmQgYWxwaGFcIik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmV0VmFsID0gdGhpcy5taXgoYmdDb2xvciwgdGhpcy5hbHBoYSk7XG4gICAgICAgIGRlbGV0ZSByZXRWYWwuYWxwaGE7XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ1NTQ29sb3IoY3NzU3R5bGVDb2xvcikge1xuICAgICAgICBsZXQgdGhpc1JlZCA9IC0xO1xuICAgICAgICBsZXQgdGhpc0dyZWVuID0gLTE7XG4gICAgICAgIGxldCB0aGlzQmx1ZSA9IC0xO1xuXG4gICAgICAgIGNzc1N0eWxlQ29sb3IgPSBjc3NTdHlsZUNvbG9yLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChjc3NTdHlsZUNvbG9yLnN0YXJ0c1dpdGgoXCJyZ2IoXCIpKSB7XG4gICAgICAgICAgICBsZXQgcmdiUmVnZXggPSAvXFxzKnJnYlxccypcXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKlxcKS87XG4gICAgICAgICAgICBsZXQgbSA9IGNzc1N0eWxlQ29sb3IubWF0Y2gocmdiUmVnZXgpO1xuICAgICAgICAgICAgaWYgKG0gPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1JlZCA9IG1bMV07XG4gICAgICAgICAgICAgICAgdGhpc0dyZWVuID0gbVsyXTtcbiAgICAgICAgICAgICAgICB0aGlzQmx1ZSA9IG1bM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY3NzU3R5bGVDb2xvci5zdGFydHNXaXRoKFwicmdiYShcIikpIHtcbiAgICAgICAgICAgIGxldCByZ2JSZWdleCA9IC9cXHMqcmdiYVxccypcXChcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKixcXHMqKFxcZCspXFxzKixcXHMqKC4rKVxccypcXCkvO1xuICAgICAgICAgICAgbGV0IG0gPSBjc3NTdHlsZUNvbG9yLm1hdGNoKHJnYlJlZ2V4KTtcbiAgICAgICAgICAgIGlmIChtID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXNSZWQgPSBtWzFdO1xuICAgICAgICAgICAgICAgIHRoaXNHcmVlbiA9IG1bMl07XG4gICAgICAgICAgICAgICAgdGhpc0JsdWUgPSBtWzNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNzc1N0eWxlQ29sb3IuY2hhckF0KDApICE9IFwiI1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNzc1N0eWxlQ29sb3IgaW4gUlBUVXRpbC5DU1NDb2xvckxvb2t1cClcbiAgICAgICAgICAgICAgICAgICAgY3NzU3R5bGVDb2xvciA9IFJQVFV0aWwuQ1NTQ29sb3JMb29rdXBbY3NzU3R5bGVDb2xvcl07XG4gICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBmcm9tSGV4ID0gZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgICAgIGxldCBsb29rdXAgPSB7XG4gICAgICAgICAgICAgICAgICAgIFwiYVwiOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgXCJiXCI6IDExLFxuICAgICAgICAgICAgICAgICAgICBcImNcIjogMTIsXG4gICAgICAgICAgICAgICAgICAgIFwiZFwiOiAxMyxcbiAgICAgICAgICAgICAgICAgICAgXCJlXCI6IDE0LFxuICAgICAgICAgICAgICAgICAgICBcImZcIjogMTVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCAqIDE2ICtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KHZhbC5jaGFyQXQoaSkgaW4gbG9va3VwID8gbG9va3VwW3ZhbC5jaGFyQXQoaSldIDogdmFsLmNoYXJBdChpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3NzU3R5bGVDb2xvci5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgdGhyZWUtZGlnaXQgUkdCICgjcmdiKSBpcyBjb252ZXJ0ZWQgdG8gc2l4LWRpZ2l0IGZvcm0gKCNycmdnYmIpIGJ5IHJlcGxpY2F0aW5nIGRpZ2l0c1xuICAgICAgICAgICAgICAgIC8vIChodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWNvbG9yLTMvI3JnYi1jb2xvcilcbiAgICAgICAgICAgICAgICBjc3NTdHlsZUNvbG9yID0gXCIjXCIgKyBjc3NTdHlsZUNvbG9yLmNoYXJBdCgxKS5yZXBlYXQoMikgK1xuICAgICAgICAgICAgICAgICAgICBjc3NTdHlsZUNvbG9yLmNoYXJBdCgyKS5yZXBlYXQoMikgK1xuICAgICAgICAgICAgICAgICAgICBjc3NTdHlsZUNvbG9yLmNoYXJBdCgzKS5yZXBlYXQoMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzUmVkID0gZnJvbUhleChjc3NTdHlsZUNvbG9yLnN1YnN0cmluZygxLCAzKSk7XG4gICAgICAgICAgICB0aGlzR3JlZW4gPSBmcm9tSGV4KGNzc1N0eWxlQ29sb3Iuc3Vic3RyaW5nKDMsIDUpKTtcbiAgICAgICAgICAgIHRoaXNCbHVlID0gZnJvbUhleChjc3NTdHlsZUNvbG9yLnN1YnN0cmluZyg1LCA3KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBDb2xvck9iaih0aGlzUmVkLCB0aGlzR3JlZW4sIHRoaXNCbHVlKTtcbiAgICB9XG59XG5cbi8qIFJldHVybiBhIG5vZGUgd2Fsa2VyIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqIGJFbmQgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIGZhbHNlXG4gKiBidXQgaWYgdHJ1ZSwgaW5kaWNhdGVzIHRoZSBub2RlIGlzIHRoZSBlbmQgbm9kZSovXG5leHBvcnQgY2xhc3MgTm9kZVdhbGtlciB7XG4gICAgbm9kZSA6IE5vZGU7XG4gICAgYkVuZFRhZyA6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3Iobm9kZTogTm9kZSwgYkVuZD86IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICAgICAgdGhpcy5iRW5kVGFnID0gKGJFbmQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogYkVuZCA9PT0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgZWxlbSgpIDogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAmJiB0aGlzLm5vZGUgYXMgSFRNTEVsZW1lbnQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBuZXh0Tm9kZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmJFbmRUYWcpIHtcbiAgICAgICAgICAgIGxldCBpZnJhbWVOb2RlID0gKHRoaXMubm9kZSBhcyBIVE1MSUZyYW1lRWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgZWxlbWVudE5vZGUgPSAodGhpcy5ub2RlIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBzbG90RWxlbWVudCA9ICh0aGlzLm5vZGUgYXMgSFRNTFNsb3RFbGVtZW50KVxuICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqL1xuICAgICAgICAgICAgICAgICYmIHRoaXMubm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSBcIklGUkFNRVwiXG4gICAgICAgICAgICAgICAgJiYgaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnRcbiAgICAgICAgICAgICAgICAmJiBpZnJhbWVOb2RlLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IG93bmVyRWxlbWVudCA9IHRoaXMubm9kZTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSBpZnJhbWVOb2RlLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudCA9IG93bmVyRWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovXG4gICAgICAgICAgICAgICAgJiYgZWxlbWVudE5vZGUuc2hhZG93Um9vdFxuICAgICAgICAgICAgICAgICYmIGVsZW1lbnROb2RlLnNoYWRvd1Jvb3QuZmlyc3RDaGlsZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgb3duZXJFbGVtZW50ID0gdGhpcy5ub2RlO1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IGVsZW1lbnROb2RlLnNoYWRvd1Jvb3Q7XG4gICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudCA9IG93bmVyRWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxXG4gICAgICAgICAgICAgICAgJiYgZWxlbWVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzbG90XCJcbiAgICAgICAgICAgICAgICAmJiBzbG90RWxlbWVudC5hc3NpZ25lZE5vZGVzKCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgc2xvdE93bmVyID0gdGhpcy5ub2RlO1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHNsb3RFbGVtZW50LmFzc2lnbmVkTm9kZXMoKVswXTtcbiAgICAgICAgICAgICAgICAodGhpcy5ub2RlIGFzIGFueSkuc2xvdE93bmVyID0gc2xvdE93bmVyO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5maXJzdENoaWxkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHROb2RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5ub2RlIGFzIGFueSkub3duZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudDtcbiAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5ub2RlIGFzIGFueSkuc2xvdE93bmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSAhPT0gMSB8fCAhKHRoaXMubm9kZSBhcyBIVE1MRWxlbWVudCkuaGFzQXR0cmlidXRlKFwic2xvdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIHdhc24ndCBhIG5hbWVkIHNsb3QsIGxvb2sgZm9yIHRoZSBuZXh0IHVubmFtZWQgbm9kZSB0byBwdXQgaW4gdGhlIHNsb3RcbiAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSB0aGlzLm5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChuICYmIHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGhpcy5ub2RlIGFzIEhUTUxFbGVtZW50KS5oYXNBdHRyaWJ1dGUoXCJzbG90XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5ub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhbm90aGVyIHVubmFtZWQgc2xvdFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNsb3RPd25lciA9ICh0aGlzLm5vZGUgYXMgYW55KS5zbG90T3duZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSBuO1xuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lciA9IHNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSAodGhpcy5ub2RlIGFzIGFueSkuc2xvdE93bmVyO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJldk5vZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmJFbmRUYWcgJiYgdGhpcy5ub2RlLmxhc3RDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLmxhc3RDaGlsZDtcbiAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnByZXZpb3VzU2libGluZykge1xuICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYkVuZFRhZyAmJiAodGhpcy5ub2RlLmZpcnN0Q2hpbGQgPT09IG51bGwgfHwgdHlwZW9mICh0aGlzLm5vZGUuZmlyc3RDaGlsZCkgPT09ICd1bmRlZmluZWQnKSlcbiAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmxldCBkZXNpZ25ObHMgPSB7XG4gICAgXCJERVNJR05fQ09MT1JfUGFsZXR0ZV9Gb3JlZ3JvdW5kXCI6IFtcbiAgICAgICAgXCJGb3JlZ3JvdW5kIGNvbG9yIHswfSBpcyBpbiB0aGUgc3RhbmRhcmQgcGFsZXR0ZS5cIixcbiAgICAgICAgXCJGb3JlZ3JvdW5kIGNvbG9yIHswfSBpcyBub3QgaW4gdGhlIHN0YW5kYXJkIHBhbGV0dGUuXCJcbiAgICBdLFxuICAgIFwiREVTSUdOX0NPTE9SX1BhbGV0dGVfQmFja2dyb3VuZFwiOiBbXG4gICAgICAgIFwiQmFja2dyb3VuZCBjb2xvciB7MH0gaXMgaW4gdGhlIHN0YW5kYXJkIHBhbGV0dGUuXCIsXG4gICAgICAgIFwiQmFja2dyb3VuZCBjb2xvciB7MH0gaXMgbm90IGluIHRoZSBzdGFuZGFyZCBwYWxldHRlLlwiXG4gICAgXSxcbiAgICBcIkRFU0lHTl9UeXBvZ3JhcGh5X1BsZXhcIjogW1xuICAgICAgICBcIkZvbnQgRmFtaWx5IFxcXCJ7MH1cXFwiIGJlZ2lucyB3aXRoIFxcXCJJQk0gUGxleFxcXCJcIixcbiAgICAgICAgXCJGb250IEZhbWlseSBcXFwiezB9XFxcIiBpcyBub3QgYSBzdGFuZGFyZCBmb250LCBpdCBkb2VzIG5vdCBiZWdpbiB3aXRoIFxcXCJJQk0gUGxleFxcXCIuXCJcbiAgICBdLFxuICAgIFwiREVTSUdOX1R5cG9ncmFwaHlfVGV4dEFsaWduTGVmdFwiOiBbXG4gICAgICAgIFwiVGV4dCBpcyBsZWZ0IGp1c3RpZmllZFwiLFxuICAgICAgICBcIlRleHQgaXMgbm90IGxlZnQganVzdGlmaWVkXCJcbiAgICBdLFxuICAgIFwiREVTSUdOX0dyaWRMYXlvdXRfSW1nQXNwZWN0UmF0aW9cIjogW1xuICAgICAgICBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiSW1hZ2UgaXMgbm90IGEgc3VwcG9ydGVkIGFzcGVjdCByYXRpbyAoMTY6OSwgNDozLCAzOjIsIDI6MSwgb3IgMToxKVwiXG4gICAgXVxufVxuZXhwb3J0IHtkZXNpZ25ObHN9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uLy4uL2FjY2Vzc2liaWxpdHkvdXRpbC9sZWdhY3lcIjtcblxuY29uc3QgUEFMRVRURSA9IFtcbiAgICBcIiMyYzA4MGFcIiwgXCIjNGYwNDA4XCIsIFwiIzc1MGUxM1wiLCBcIiNhNTE5MjBcIiwgXCIjZGExZTI4XCIsIFwiI2ZiNGI1M1wiLCBcIiNmZjc2N2NcIiwgXCIjZmZhNGE5XCIsIFwiI2ZjZDBkM1wiLCBcIiNmZmYwZjFcIiwgXCIjMmEwYTE2XCIsIFwiIzRmMDAyN1wiLCBcIiM3NjBhM2FcIiwgXCIjYTExOTUwXCIsIFwiI2QxMjc2NVwiLCBcIiNlZTUzOGJcIiwgXCIjZmE3NWE2XCIsIFwiI2ZmYTBjMlwiLCBcIiNmZmNmZTFcIiwgXCIjZmZmMGY2XCIsIFwiIzFlMTAzM1wiLCBcIiMzMjEyNjBcIiwgXCIjNGYyMTk2XCIsIFwiIzZlMzJjOVwiLCBcIiM4YTNmZmNcIiwgXCIjYTk3MGZmXCIsIFwiI2JiOGVmZlwiLCBcIiNkMGIwZmZcIiwgXCIjZTZkNmZmXCIsIFwiI2Y3ZjFmZlwiLCBcIiMwNTEyNDNcIiwgXCIjMDUxYjc1XCIsIFwiIzA1MzBhZFwiLCBcIiMwNTRhZGFcIiwgXCIjMDA2MmZmXCIsIFwiIzQxOGNmZlwiLCBcIiM2ZWE2ZmZcIiwgXCIjOTdjMWZmXCIsIFwiI2M5ZGVmZlwiLCBcIiNlZGY0ZmZcIiwgXCIjMDcxOTJiXCIsIFwiIzAwMjc0OVwiLCBcIiMwMDNkNzNcIiwgXCIjMDA1OGExXCIsIFwiIzAwNzJjM1wiLCBcIiMxMTkzZThcIiwgXCIjMzBiMGZmXCIsIFwiIzZjY2FmZlwiLCBcIiNiM2U2ZmZcIiwgXCIjZTNmNmZmXCIsIFwiIzA4MWExY1wiLCBcIiMwMDJiMzBcIiwgXCIjMDA0NTQ4XCIsIFwiIzAwNjE2MVwiLCBcIiMwMDdkNzlcIiwgXCIjMDA5ZTlhXCIsIFwiIzAwYmFiNlwiLCBcIiMyMGQ1ZDJcIiwgXCIjODdlZGVkXCIsIFwiI2RiZmJmYlwiLCBcIiMwODFiMDlcIiwgXCIjMDEyZTBlXCIsIFwiIzA1NDcxOVwiLCBcIiMxMDY0MmFcIiwgXCIjMTk4MDM4XCIsIFwiIzI0YTI0OVwiLCBcIiMzZGJiNjFcIiwgXCIjNTZkNjc5XCIsIFwiIzlkZWViMlwiLCBcIiNkYWZiZTRcIiwgXCIjMDAwMDAwXCIsIFwiIzEzMTcxYVwiLCBcIiMyMDI1MjlcIiwgXCIjMzczZDQyXCIsIFwiIzUwNTY1YlwiLCBcIiM2OTcwNzdcIiwgXCIjODY4ZDk1XCIsIFwiIzlmYTVhZFwiLCBcIiNiOWJmYzdcIiwgXCIjZDhkY2UzXCIsIFwiI2YyZjRmOFwiLCBcIiNmZmZmZmZcIiwgXCIjMDAwMDAwXCIsIFwiIzE3MTcxN1wiLCBcIiMyNTI1MjVcIiwgXCIjM2QzZDNkXCIsIFwiIzU2NTY1NlwiLCBcIiM2ZjZmNmZcIiwgXCIjOGM4YzhjXCIsIFwiI2E0YTRhNFwiLCBcIiNiZWJlYmVcIiwgXCIjZGNkY2RjXCIsIFwiI2YzZjNmM1wiLCBcIiNmZmZmZmZcIiwgXCIjMDAwMDAwXCIsIFwiIzFhMTcxN1wiLCBcIiMyNzI0MjRcIiwgXCIjNDAzYzNjXCIsIFwiIzU5NTU1NVwiLCBcIiM3MjZlNmVcIiwgXCIjOGY4YjhiXCIsIFwiI2E3YTJhMlwiLCBcIiNjMWJjYmJcIiwgXCIjZTBkYmRhXCIsIFwiI2Y3ZjNmMVwiLCBcIiNmZmZmZmZcIlxuXVxuXG5sZXQgZGVzaWduUnVsZXNDb2xvcjogUnVsZVtdID0gW3tcbiAgICBpZDogXCJERVNJR05fQ09MT1JfUGFsZXR0ZV9Gb3JlZ3JvdW5kXCIsXG4gICAgY29udGV4dDogXCJkb206KlwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGxldCBoYXNUZXh0ID0gZmFsc2U7XG4gICAgICAgIGxldCBjaGlsZDogTm9kZSA9IHJ1bGVDb250ZXh0LmZpcnN0Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAzICYmIGNoaWxkLm5vZGVWYWx1ZS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGhhc1RleHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5Cb2R5ID0gZmFsc2U7XG4gICAgICAgIGxldCBwYXJlbnRXYWxrIDogRWxlbWVudCA9IHJ1bGVDb250ZXh0O1xuICAgICAgICB3aGlsZSAocGFyZW50V2Fsaykge1xuICAgICAgICAgICAgaWYgKHBhcmVudFdhbGsubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJib2R5XCIpIHtcbiAgICAgICAgICAgICAgICBpbkJvZHkgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFyZW50V2FsayA9IERPTVV0aWwucGFyZW50RWxlbWVudChwYXJlbnRXYWxrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc1RleHQgfHwgIWluQm9keSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbG9yQ29tYm8gPSBSUFRVdGlsLkNvbG9yQ29tYm8ocnVsZUNvbnRleHQpO1xuICAgICAgICBsZXQgZmcgPSBjb2xvckNvbWJvLmZnLnRvSGV4KCk7XG4gICAgICAgIGlmIChQQUxFVFRFLmluZGV4T2YoZmcpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEsW2ZnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoMiwgW2ZnXSk7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHRoZSBsaW5rIHRleHQgaXMgZW1wdHkgb3IgY29udGVudCB1bmRlciBsaW5rIGlzIGhpZGRlblxuICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEgzMCwgSDkxXG4gICAgICovXG4gICAgaWQ6IFwiREVTSUdOX0NPTE9SX1BhbGV0dGVfQmFja2dyb3VuZFwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBsZXQgcGFyZW50V2FsayA9IERPTVV0aWwucGFyZW50RWxlbWVudChydWxlQ29udGV4dCk7XG4gICAgICAgIHdoaWxlIChwYXJlbnRXYWxrKSB7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRDYWNoZShwYXJlbnRXYWxrLCBcIkRFU0lHTl9DT0xPUl9QYWxldHRlX0JhY2tncm91bmRcIiwgbnVsbCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudFdhbGsgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocGFyZW50V2Fsayk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbG9yQ29tYm8gPSBSUFRVdGlsLkNvbG9yQ29tYm8ocnVsZUNvbnRleHQpO1xuICAgICAgICBsZXQgYmcgPSBjb2xvckNvbWJvLmJnLnRvSGV4KCk7XG4gICAgICAgIGlmIChQQUxFVFRFLmluZGV4T2YoYmcpICE9PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEsW2JnXSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiREVTSUdOX0NPTE9SX1BhbGV0dGVfQmFja2dyb3VuZFwiLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbCgyLCBbYmddKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbl1cbmV4cG9ydCB7IGRlc2lnblJ1bGVzQ29sb3IgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi8uLi9hY2Nlc3NpYmlsaXR5L3V0aWwvbGVnYWN5XCI7XG5cbmxldCBkZXNpZ25SdWxlc0dyaWQ6IFJ1bGVbXSA9IFt7XG4gICAgaWQ6IFwiREVTSUdOX0dyaWRMYXlvdXRfSW1nQXNwZWN0UmF0aW9cIixcbiAgICBjb250ZXh0OiBcImFyaWE6aW1nXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgICAgICBjb25zdCBFUFNJTE9OID0gLjAwMDAwMDE7XG4gICAgICAgIGxldCB3ID0gcnVsZUNvbnRleHQubmF0dXJhbFdpZHRoO1xuICAgICAgICBsZXQgaCA9IHJ1bGVDb250ZXh0Lm5hdHVyYWxIZWlnaHQ7XG4gICAgICAgIGxldCByYXRpbyA9IE1hdGgubWF4KHcgLyBoLCBoIC8gdyk7XG4gICAgICAgIGlmIChNYXRoLmFicyhyYXRpbyAtIDE2IC8gOS4wKSA8IEVQU0lMT05cbiAgICAgICAgICAgIHx8IE1hdGguYWJzKHJhdGlvIC0gNCAvIDMuMCkgPCBFUFNJTE9OXG4gICAgICAgICAgICB8fCBNYXRoLmFicyhyYXRpbyAtIDMgLyAyLjApIDwgRVBTSUxPTlxuICAgICAgICAgICAgfHwgTWF0aC5hYnMocmF0aW8gLSAyIC8gMS4wKSA8IEVQU0lMT05cbiAgICAgICAgICAgIHx8IE1hdGguYWJzKHJhdGlvIC0gMSAvIDEuMCkgPCBFUFNJTE9OKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoMik7XG4gICAgICAgIH1cbiAgICB9XG59XVxuZXhwb3J0IHsgZGVzaWduUnVsZXNHcmlkIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vZG9tL0RPTVV0aWxcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vLi4vYWNjZXNzaWJpbGl0eS91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgZGVzaWduUnVsZXNUeXBlOiBSdWxlW10gPSBbe1xuICAgIGlkOiBcIkRFU0lHTl9UeXBvZ3JhcGh5X1BsZXhcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgbGV0IGluQm9keSA9IGZhbHNlO1xuICAgICAgICBsZXQgcGFyZW50V2FsayA6IEVsZW1lbnQgPSBydWxlQ29udGV4dDtcbiAgICAgICAgd2hpbGUgKHBhcmVudFdhbGspIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRXYWxrLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic3R5bGVcIiB8fCBwYXJlbnRXYWxrLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic2NyaXB0XCIpIHtcbiAgICAgICAgICAgICAgICBpbkJvZHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJlbnRXYWxrLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYm9keVwiKSB7XG4gICAgICAgICAgICAgICAgaW5Cb2R5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudFdhbGsgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocGFyZW50V2Fsayk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGhhc1RleHQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGNoaWxkIDogTm9kZSA9IHJ1bGVDb250ZXh0LmZpcnN0Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChjaGlsZCkge1xuICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlID09PSAzICYmIGNoaWxkLm5vZGVWYWx1ZS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGhhc1RleHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWluQm9keSB8fCAhaGFzVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGxldCBzdHlsZSA9IGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgbGV0IGZvbnRGYW1pbHkgPSBzdHlsZS5mb250RmFtaWx5O1xuICAgICAgICBpZiAoZm9udEZhbWlseS5zdWJzdHJpbmcoMCwgXCJcXFwiSUJNIFBsZXhcIi5sZW5ndGgpID09PSBcIlxcXCJJQk0gUGxleFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSxbZm9udEZhbWlseV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKDIsIFtmb250RmFtaWx5XSk7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIGlkOiBcIkRFU0lHTl9UeXBvZ3JhcGh5X1RleHRBbGlnbkxlZnRcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgbGV0IGluQm9keSA9IGZhbHNlO1xuICAgICAgICBsZXQgcGFyZW50V2FsayA6IEVsZW1lbnQgPSBydWxlQ29udGV4dDtcbiAgICAgICAgd2hpbGUgKHBhcmVudFdhbGspIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRXYWxrLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYm9keVwiKSB7XG4gICAgICAgICAgICAgICAgaW5Cb2R5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudFdhbGsgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocGFyZW50V2Fsayk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGhhc1RleHQgPSAocnVsZUNvbnRleHQuaW5uZXJUZXh0IHx8IFwiXCIpLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgICAgICBpZiAoIWluQm9keSB8fCAhaGFzVGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGxldCBzdHlsZSA9IGRvYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgbGV0IHRleHRBbGlnbiA9IHN0eWxlLnRleHRBbGlnbjtcbiAgICAgICAgaWYgKCF0ZXh0QWxpZ24gfHwgdGV4dEFsaWduID09PSBcImxlZnRcIiB8fCB0ZXh0QWxpZ24gPT09IFwic3RhcnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKDIpO1xuICAgICAgICB9XG4gICAgfVxufV1cbmV4cG9ydCB7IGRlc2lnblJ1bGVzVHlwZSB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IGRlc2lnblJ1bGVzQ29sb3IgfSBmcm9tIFwiLi9kZXNpZ24tY29sb3JcIjtcbmltcG9ydCB7IFJ1bGUgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IGRlc2lnblJ1bGVzR3JpZCB9IGZyb20gXCIuL2Rlc2lnbi1ncmlkbGF5b3V0XCI7XG5pbXBvcnQgeyBkZXNpZ25SdWxlc1R5cGUgfSBmcm9tIFwiLi9kZXNpZ24tdHlwb2dyYXBoeVwiO1xuXG5sZXQgZGVzaWduUnVsZXM6IFJ1bGVbXSA9IFtdLmNvbmNhdChcbiAgICBkZXNpZ25SdWxlc0NvbG9yLFxuICAgIGRlc2lnblJ1bGVzR3JpZCxcbiAgICBkZXNpZ25SdWxlc1R5cGVcbik7XG5leHBvcnQgeyBkZXNpZ25SdWxlcyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGVzZXQgfSBmcm9tIFwiLi4vLi4vQ2hlY2tlclwiO1xuaW1wb3J0IHsgZVJ1bGVQb2xpY3ksIGVSdWxlQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcblxubGV0IGRlc2lnblJ1bGVzZXRzOiBSdWxlc2V0W10gPSBbXTtcbi8qXG57XG4gICAgaWQ6IFwiSUJNX0Rlc2lnblwiLFxuICAgIGNhdGVnb3J5OiBlUnVsZUNhdGVnb3J5LkRFU0lHTixcbiAgICBcImNoZWNrcG9pbnRzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxXCIsIC8vIENvbG9yXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkRFU0lHTl9DT0xPUl9QYWxldHRlX0ZvcmVncm91bmRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJERVNJR05fQ09MT1JfUGFsZXR0ZV9CYWNrZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT05cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMlwiLCAvLyBUeXBlXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkRFU0lHTl9UeXBvZ3JhcGh5X1BsZXhcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJERVNJR05fVHlwb2dyYXBoeV9UZXh0QWxpZ25MZWZ0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT05cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiM1wiLCAvLyBHcmlkICYgTGF5b3V0XG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICAvLyB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGlkOiBcIkRFU0lHTl9HcmlkTGF5b3V0X0ltZ0FzcGVjdFJhdGlvXCIsXG4gICAgICAgICAgICAgICAgLy8gICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT05cbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICBdXG59XVxuKi9cbmV4cG9ydCB7IGRlc2lnblJ1bGVzZXRzIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IGExMXlIZWxwIH0gZnJvbSBcIi4vYWNjZXNzaWJpbGl0eS9oZWxwXCI7XG5cbmxldCBjaGVja0hlbHAgPSB7fVxuZnVuY3Rpb24gYWRkSGVscChoZWxwTWFwKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaGVscE1hcCkge1xuICAgICAgICBjaGVja0hlbHBba2V5XSA9IGhlbHBNYXBba2V5XTtcbiAgICB9ICAgIFxufVxuXG5hZGRIZWxwKGExMXlIZWxwKTtcblxuZXhwb3J0IHsgY2hlY2tIZWxwIH1cblxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBDaGVja2VyIH0gZnJvbSBcIi4vQ2hlY2tlclwiO1xuZXhwb3J0IHsgQ2hlY2tlciB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBhMTF5TmxzIH0gZnJvbSBcIi4vYWNjZXNzaWJpbGl0eS9ubHNcIjtcbmltcG9ydCB7IGRlc2lnbk5scyB9IGZyb20gXCIuL2Rlc2lnbi9ubHNcIjtcblxubGV0IGNoZWNrTmxzID0ge31cblxuZnVuY3Rpb24gYWRkTmxzKG5sc01hcCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG5sc01hcCkge1xuICAgICAgICBjaGVja05sc1trZXldID0gbmxzTWFwW2tleV07XG4gICAgfSAgICBcbn1cblxuYWRkTmxzKGExMXlObHMpO1xuYWRkTmxzKGRlc2lnbk5scyk7XG5cbmV4cG9ydCB7IGNoZWNrTmxzIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgYTExeVJ1bGVzIH0gZnJvbSBcIi4vYWNjZXNzaWJpbGl0eS9ydWxlc1wiO1xuaW1wb3J0IHsgZGVzaWduUnVsZXMgfSBmcm9tIFwiLi9kZXNpZ24vcnVsZXNcIjtcblxubGV0IGNoZWNrUnVsZXMgPSBbXVxuXG5jaGVja1J1bGVzID0gY2hlY2tSdWxlcy5jb25jYXQoYTExeVJ1bGVzKTtcbmNoZWNrUnVsZXMgPSBjaGVja1J1bGVzLmNvbmNhdChkZXNpZ25SdWxlcyk7XG5cbmV4cG9ydCB7IGNoZWNrUnVsZXMgfVxuXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IGExMXlSdWxlc2V0cyB9IGZyb20gXCIuL2FjY2Vzc2liaWxpdHkvcnVsZXNldHNcIjtcbmltcG9ydCB7IGRlc2lnblJ1bGVzZXRzIH0gZnJvbSBcIi4vZGVzaWduL3J1bGVzZXRzXCI7XG5cbmxldCBjaGVja1J1bGVzZXRzID0gW11cblxuY2hlY2tSdWxlc2V0cyA9IGNoZWNrUnVsZXNldHMuY29uY2F0KGExMXlSdWxlc2V0cyk7XG5jaGVja1J1bGVzZXRzID0gY2hlY2tSdWxlc2V0cy5jb25jYXQoZGVzaWduUnVsZXNldHMpO1xuXG5leHBvcnQgeyBjaGVja1J1bGVzZXRzIH1cblxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBJTWFwcGVyLCBJTWFwUmVzdWx0LCBCb3VuZHMgfSBmcm9tIFwiLi4vYXBpL0lNYXBwZXJcIjtcbmltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi4vZG9tL0RPTVV0aWxcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbW1vbk1hcHBlciBpbXBsZW1lbnRzIElNYXBwZXIge1xuICAgIGFic3RyYWN0IGNoaWxkcmVuSGF2ZVJvbGUobm9kZTogTm9kZSwgcm9sZTogc3RyaW5nKSA6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgZ2V0Um9sZShub2RlOiBOb2RlKSA6IHN0cmluZztcbiAgICBhYnN0cmFjdCBnZXROYW1lc3BhY2UoKSA6IHN0cmluZztcbiAgICBhYnN0cmFjdCBnZXRBdHRyaWJ1dGVzKG5vZGU6IE5vZGUpIDogeyBba2V5OnN0cmluZ106IHN0cmluZyB9O1xuXG4gICAgcHJvdGVjdGVkIGhpZXJhcmNoeVJvbGUgOiBzdHJpbmdbXSA9IG51bGw7XG4gICAgcHJvdGVjdGVkIGhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGU6IGJvb2xlYW5bXSA9IG51bGw7XG4gICAgcHJvdGVjdGVkIGhpZXJhcmNoeVBhdGg6IEFycmF5PHtcbiAgICAgICAgcm9sZVBhdGg6IHN0cmluZyxcbiAgICAgICAgcm9sZUNvdW50OiB7XG4gICAgICAgICAgICBbcm9sZTogc3RyaW5nXTogbnVtYmVyXG4gICAgICAgIH1cbiAgICB9PiA9IG51bGw7XG4gICAgcHJvdGVjdGVkIGhpZXJhcmNoeVJlc3VsdHM6IElNYXBSZXN1bHRbXSA9IG51bGw7XG5cbiAgICBnZXRCb3VuZHMobm9kZTogTm9kZSkgOiBCb3VuZHMge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXNldChub2RlOiBOb2RlKSB7XG4gICAgICAgIHRoaXMuaGllcmFyY2h5Um9sZSA9IFtdO1xuICAgICAgICB0aGlzLmhpZXJhcmNoeVJlc3VsdHMgPSBbXTtcbiAgICAgICAgdGhpcy5oaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlID0gW107XG4gICAgICAgIHRoaXMuaGllcmFyY2h5UGF0aCA9IFt7XG4gICAgICAgICAgICByb2xlUGF0aDogXCJcIixcbiAgICAgICAgICAgIHJvbGVDb3VudDoge31cbiAgICAgICAgfV07XG5cbiAgICAgICAgbGV0IGFuY2VzdG9ycyA6IE5vZGVbXSA9IFtdO1xuICAgICAgICBsZXQgcGFyZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSAhPSA5IC8qIE5vZGUuRE9DVU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgYW5jZXN0b3JzLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgIHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGFuY2VzdG9ycyA9IGFuY2VzdG9ycy5yZXZlcnNlKCk7ICBcbiAgICAgICAgZm9yIChjb25zdCBhbmNlc3RvciBvZiBhbmNlc3RvcnMpIHtcbiAgICAgICAgICAgIGxldCBzaWJsaW5ncyA9IFtdO1xuICAgICAgICAgICAgbGV0IHNpYmxpbmcgPSBhbmNlc3Rvci5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICB3aGlsZSAoc2libGluZykge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzLnB1c2goc2libGluZyk7XG4gICAgICAgICAgICAgICAgc2libGluZyA9IHNpYmxpbmcucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2libGluZ3MgPSBzaWJsaW5ncy5yZXZlcnNlKCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNpYmxpbmcgb2Ygc2libGluZ3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1c2hIaWVyYXJjaHkoc2libGluZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BIaWVyYXJjaHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucHVzaEhpZXJhcmNoeShhbmNlc3Rvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdXNoSGllcmFyY2h5KG5vZGU6IE5vZGUpIHtcbiAgICAgICAgbGV0IHJvbGUgOiBzdHJpbmc7XG4gICAgICAgIGxldCBwcmVzZW50YXRpb25hbENvbnRhaW5lciA9IHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZS5sZW5ndGggPiAwICYmICF0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGVbdGhpcy5oaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlLmxlbmd0aC0xXTtcbiAgICAgICAgaWYgKHByZXNlbnRhdGlvbmFsQ29udGFpbmVyKSB7XG4gICAgICAgICAgICByb2xlID0gXCJub25lXCI7XG4gICAgICAgICAgICB0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGUucHVzaChmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByb2xlID0gdGhpcy5nZXRSb2xlKG5vZGUpIHx8IFwibm9uZVwiO1xuICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlLnB1c2godGhpcy5jaGlsZHJlbkhhdmVSb2xlKG5vZGUsIHJvbGUpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpZXJhcmNoeVJvbGUucHVzaChyb2xlKTtcbiAgICAgICAgaWYgKHJvbGUgIT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50UGF0aEluZm8gPSB0aGlzLmhpZXJhcmNoeVBhdGhbdGhpcy5oaWVyYXJjaHlQYXRoLmxlbmd0aC0xXTtcbiAgICAgICAgICAgIHBhcmVudFBhdGhJbmZvLnJvbGVDb3VudFtyb2xlXSA9IChwYXJlbnRQYXRoSW5mby5yb2xlQ291bnRbcm9sZV0gfHwgMCkgKyAxOyBcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5UGF0aC5wdXNoKHtcbiAgICAgICAgICAgICAgICBcInJvbGVQYXRoXCI6IHBhcmVudFBhdGhJbmZvLnJvbGVQYXRoK1wiL1wiK3JvbGUrXCJbXCIrcGFyZW50UGF0aEluZm8ucm9sZUNvdW50W3JvbGVdK1wiXVwiLFxuICAgICAgICAgICAgICAgIFwicm9sZUNvdW50XCI6IHt9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhdHRyID0ge31cbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIGF0dHIgPSB0aGlzLmdldEF0dHJpYnV0ZXMobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaWVyYXJjaHlSZXN1bHRzLnB1c2goe1xuICAgICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogdGhpcy5nZXROYW1lc3BhY2UoKSxcbiAgICAgICAgICAgIHJvbGU6IHJvbGUsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiBhdHRyLFxuICAgICAgICAgICAgcm9sZVBhdGg6IHRoaXMuaGllcmFyY2h5UGF0aFt0aGlzLmhpZXJhcmNoeVBhdGgubGVuZ3RoLTFdLnJvbGVQYXRoLFxuICAgICAgICAgICAgYm91bmRzOiB0aGlzLmdldEJvdW5kcyhub2RlKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByaXZhdGUgcG9wSGllcmFyY2h5KCkge1xuICAgICAgICBsZXQgcm9sZSA9IHRoaXMuaGllcmFyY2h5Um9sZS5wb3AoKTtcbiAgICAgICAgdGhpcy5oaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlLnBvcCgpO1xuICAgICAgICBpZiAocm9sZSAhPT0gXCJub25lXCIpIHtcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5UGF0aC5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhpZXJhcmNoeVJlc3VsdHMucG9wKCk7XG4gICAgfVxuXG4gICAgb3BlblNjb3BlKG5vZGU6IE5vZGUpOiBJTWFwUmVzdWx0W10ge1xuICAgICAgICBpZiAodGhpcy5oaWVyYXJjaHlSb2xlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaEhpZXJhcmNoeShub2RlKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhpZXJhcmNoeVJlc3VsdHM7XG4gICAgfVxuXG4gICAgY2xvc2VTY29wZShub2RlOiBOb2RlKTogSU1hcFJlc3VsdFtdIHtcbiAgICAgICAgbGV0IHJldFZhbCA6IElNYXBSZXN1bHRbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJlcyBvZiB0aGlzLmhpZXJhcmNoeVJlc3VsdHMpIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IHRlbXAgPSByZXMubm9kZTtcbiAgICAgICAgICAgIC8vIHJlcy5ub2RlID0gbnVsbDtcbiAgICAgICAgICAgIC8vIGxldCBjbG9uZWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpO1xuICAgICAgICAgICAgLy8gY2xvbmVkLm5vZGUgPSByZXMubm9kZSA9IHRlbXA7IFxuICAgICAgICAgICAgLy8gcmV0VmFsLnB1c2goY2xvbmVkKTtcbiAgICAgICAgICAgIHJldFZhbC5wdXNoKHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0VmFsW3JldFZhbC5sZW5ndGgtMV0ucm9sZSA9IFwiL1wiK3JldFZhbFtyZXRWYWwubGVuZ3RoLTFdLnJvbGVcbiAgICAgICAgdGhpcy5wb3BIaWVyYXJjaHkoKTtcbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IElNYXBSZXN1bHQgfSBmcm9tIFwiLi4vYXBpL0lNYXBwZXJcIjtcbmltcG9ydCB7IFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uL2FwaS9JRW5naW5lXCI7XG5cbi8vIENvbnRleHQgdGhhdCB3aWxsIGNhdXNlIHRoaXMgcnVsZSB0byBleGVjdXRlLiBcbi8vIENvbnRleHQgc3ludGF4OlxuLy8gICBUcmlnZ2Vyczpcbi8vICAgICBhcmlhOnJvbGUgLSBUcmlnZ2VycyBvbiBlbGVtZW50IHdpdGggQVJJQSByb2xlIHJvbGVcbi8vICAgICBhcmlhOnJvbGVbYXR0cmlidXRlXSAtIFRyaWdnZXJzIG9uIGVsZW1lbnRzIHdpdGggdGhlIGVxdWl2YWxlbnQgbG9naWNhbCBcbi8vICAgICAgIGFyaWEtIGF0dHJpYnV0ZSAoZS5nLiwgYnV0dG9uW2Rpc2FibGVkXSB3aWxsIHRyaWdnZXIgb24gXG4vLyAgICAgICA8YnV0dG9uIGRpc2FibGVkPiBvciA8ZGl2IHJvbGU9XCJidXR0b25cIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiPilcbi8vICAgICByb2xlW2F0dHJpYnV0ZT12YWx1ZV0gLSBTaW1pbGFyIHRvIGFib3ZlLCB3aXRoIGNhc2Utc2Vuc2l0aXZlIG1hdGNoXG4vLyAgICAgICB0byB2YWx1ZVxuLy8gICAgIHJvbGVbYXR0cmlidXRlfnZhbHVlXSAtIFNpbWlsYXIgdG8gYWJvdmUsIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaFxuLy8gICAgIGRvbTplbGVtZW50IC0gVHJpZ2dlcnMgb24gYW4gZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZVxuLy8gICAgIGRvbTplbGVtZW50W2F0dHJpYnV0ZV0gLSBUcmlnZ2VycyBvbiBhIGRvbSBlbGVtZW50IHdpdGggdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGVcbi8vICAgICBkb206KlthdHRyaWJ1dGVdIC0gVHJpZ2dlcnMgb24gYWxsIGVsZW1lbnRzIHdpdGggdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGVcbi8vICAgQ29tYmluaW5nIHRyaWdnZXJzOlxuLy8gICAgIHRyaWdnZXIxIHRyaWdnZXIyIC0gVHJpZ2dlcnMgb24gZWxlbWVudHMgd2l0aCB0cmlnZ2VyMiB3aXRoaW4gYW4gXG4vLyAgICAgICBlbGVtZW50IHdpdGggdHJpZ2dlcjFcbi8vICAgICAhdHJpZ2dlcjEgdHJpZ2dlcjIgLSBUcmlnZ2VycyBvbiBlbGVtZW50cyB3aXRoIHRyaWdnZXIyIG5vdCB3aXRoaW5cbi8vICAgICAgIGVsZW1lbnQgd2l0aCB0cmlnZ2VyMVxuLy8gICAgIHRyaWdnZXIxPnRyaWdnZXIyIC0gVHJpZ2dlcnMgb24gZWxlbWVudHMgd2l0aCB0cmlnZ2VyMiB3aXRoIGFuXG4vLyAgICAgICBhbiBpbW1lZGlhdGUgcGFyZW50IHdpdGggdHJpZ2dlcjFcbi8vICAgICB0cmlnZ2VyMSt0cmlnZ2VyMiAtIFRyaWdnZXJzIG9uIGVsZW1lbnRzIHdpdGggdHJpZ2dlcjIgd2l0aCBhblxuLy8gICAgICAgaW1tZWRpYXRlIHByZXZpb3VzIHNpYmxpbmcgd2l0aCB0cmlnZ2VyMVxuLy8gICAgIHRyaWdnZXIxfnRyaWdnZXIyIC0gVHJpZ2dlcnMgb24gZWxlbWVudHMgd2l0aCB0cmlnZ2VyMiB3aXRoIGFuXG4vLyAgICAgICBzb21lIGVhcmxpZXIgc2libGluZyB3aXRoIHRyaWdnZXIxXG4vLyAgICAgY29udGV4dCxjb250ZXh0IC0gVHJpZ2dlcnMgb24gZWxlbWVudHMgd2l0aCBlaXRoZXIgY29udGV4dFxuZXhwb3J0IGNsYXNzIEF0dHJJbmZvIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGluY2x1c2l2ZTogYm9vbGVhbixcbiAgICAgICAgcHVibGljIGF0dHI6IHN0cmluZyxcbiAgICAgICAgcHVibGljIGVxPzogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgdmFsdWU/OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgaWYgKCFpbmNsdXNpdmUgXG4gICAgICAgICAgICAgICAgJiYgKCh0eXBlb2YgZXEpICE9PSBcInVuZGVmaW5lZFwiICYmIGVxLmxlbmd0aCA+IDApKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgaGF2ZSAhYXR0clwiK2VxK1wiIGNvbnRleHRcIik7ICAgIFxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmNsdXNpdmUgJiYgKHR5cGVvZiBlcSkgIT09IFwidW5kZWZpbmVkXCIgJiYgZXEubGVuZ3RoID4gMCAmJiAoKHR5cGVvZiB2YWx1ZSkgPT09IFwidW5kZWZpbmVkXCIgfHwgdmFsdWUubGVuZ3RoID09PSAwKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGhhdmUgZXF1aXZhbGVuY2UgY2hlY2sgd2l0aG91dCBhIHZhbHVlXCIpOyAgICBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaGVzKGNvbnRleHQ6IElNYXBSZXN1bHQpIHtcbiAgICAgICAgY29uc3QgcnVsZUF0dHJQYXJ0ID0gdGhpczsgXG4gICAgICAgIGNvbnN0IGVsZW1BdHRycyA9IGNvbnRleHQuYXR0cmlidXRlcztcbiAgICAgICAgaWYgKCEocnVsZUF0dHJQYXJ0LmF0dHIgaW4gZWxlbUF0dHJzKSkge1xuICAgICAgICAgICAgcmV0dXJuICFydWxlQXR0clBhcnQuaW5jbHVzaXZlXG4gICAgICAgIH0gZWxzZSBpZiAoIXJ1bGVBdHRyUGFydC5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmICghcnVsZUF0dHJQYXJ0LmVxKSB7XG4gICAgICAgICAgICAvLyBpbmNsdXNpdmUgbWF0Y2ggYW5kIEkgaGF2ZSB0aGF0IGF0dHJpYnV0ZSBhbmQgbm8gZXF1aXZhbGVuY2UgZGVmaW5lZFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpbmNsdXNpdmUgbWF0Y2ggYW5kIEkgaGF2ZSB0aGF0IGF0dHJpYnV0ZSBhbmQgZXF1aXZhbGVuY2UgZGVmaW5lZFxuICAgICAgICAgICAgY29uc3QgYXR0clZhbHVlID0gZWxlbUF0dHJzW3J1bGVBdHRyUGFydC5hdHRyXTtcbiAgICAgICAgICAgIGlmIChydWxlQXR0clBhcnQuZXEgPT09IFwiPVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVBdHRyUGFydC52YWx1ZSA9PT0gYXR0clZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQXR0clBhcnQuZXEgPT09IFwiIT1cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlQXR0clBhcnQudmFsdWUgIT09IGF0dHJWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUF0dHJQYXJ0LmVxID09PSBcIn5cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlQXR0clBhcnQudmFsdWUgPT09IGF0dHJWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUF0dHJQYXJ0LmVxID09PSBcIiF+XCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZUF0dHJQYXJ0LnZhbHVlICE9PSBhdHRyVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnRleHQgZXF1aXZhbGVuY2Ugb3BlcmF0b3Igbm90IHN1cHBvcnRlZFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFydEluZm8ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgaW5jbHVzaXZlOiBib29sZWFuLCBcbiAgICAgICAgcHVibGljIG5hbWVzcGFjZTogc3RyaW5nLFxuICAgICAgICBwdWJsaWMgcm9sZTogc3RyaW5nLCBcbiAgICAgICAgcHVibGljIGF0dHJzOiBBdHRySW5mb1tdLCBcbiAgICAgICAgcHVibGljIGNvbm5lY3Rvcjogc3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAocm9sZSA9PT0gXCIqXCIgJiYgIWluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIiEqIGNvbnRleHQgbm90IHN1cHBvcnRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgcHVibGljIG1hdGNoZXMoIFxuICAgICAgICBjb250ZXh0SGllcjogUnVsZUNvbnRleHRIaWVyYXJjaHksXG4gICAgICAgIGhpZXJMZXZlbDogbnVtYmVyKSA6IGJvb2xlYW4gXG4gICAge1xuICAgICAgICBjb25zdCBydWxlUGFydCA9IHRoaXM7XG4gICAgICAgIGxldCBydWxlUm9sZU1hdGNoID0gKHJ1bGVQYXJ0Lm5hbWVzcGFjZSBpbiBjb250ZXh0SGllcikgJiYgY29udGV4dEhpZXJbcnVsZVBhcnQubmFtZXNwYWNlXVtoaWVyTGV2ZWxdXG4gICAgICAgICAgICAmJiAoY29udGV4dEhpZXJbcnVsZVBhcnQubmFtZXNwYWNlXVtoaWVyTGV2ZWxdLnJvbGUgPT09IHJ1bGVQYXJ0LnJvbGVcbiAgICAgICAgICAgICAgICB8fCBjb250ZXh0SGllcltydWxlUGFydC5uYW1lc3BhY2VdW2hpZXJMZXZlbF0ucm9sZSAhPT0gXCJub25lXCIgJiYgcnVsZVBhcnQucm9sZSA9PT0gXCIqXCIpO1xuICAgICAgICBpZiAocnVsZVJvbGVNYXRjaCBcbiAgICAgICAgICAgICYmIHJ1bGVQYXJ0LnJvbGUgPT09IFwiKlwiIFxuICAgICAgICAgICAgJiYgcnVsZVBhcnQubmFtZXNwYWNlID09PSBcImRvbVwiIFxuICAgICAgICAgICAgJiYgKGNvbnRleHRIaWVyW3J1bGVQYXJ0Lm5hbWVzcGFjZV1baGllckxldmVsXS5yb2xlID09PSBcIiN0ZXh0XCJcbiAgICAgICAgICAgICAgICB8fCBjb250ZXh0SGllcltydWxlUGFydC5uYW1lc3BhY2VdW2hpZXJMZXZlbF0ucm9sZSA9PT0gXCIvI3RleHRcIikpIHtcbiAgICAgICAgICAgIHJ1bGVSb2xlTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVsZVBhcnQuaW5jbHVzaXZlICYmICFydWxlUm9sZU1hdGNoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghcnVsZVBhcnQuaW5jbHVzaXZlICYmICFydWxlUm9sZU1hdGNoKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICAvLyBNYXRjaCB0aGUgYXR0cmlidXRlc1xuICAgICAgICBjb25zdCBydWxlQXR0cnMgPSBydWxlUGFydC5hdHRycztcbiAgICAgICAgY29uc3QgZWxlbUNvbnRleHQgPSBjb250ZXh0SGllcltydWxlUGFydC5uYW1lc3BhY2VdW2hpZXJMZXZlbF07XG4gICAgICAgIGxldCBtYXRjaCA9IHRydWU7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZUF0dHJQYXJ0IG9mIHJ1bGVBdHRycykge1xuICAgICAgICAgICAgbWF0Y2ggPSBtYXRjaCAmJiBydWxlQXR0clBhcnQubWF0Y2hlcyhlbGVtQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFydWxlUGFydC5pbmNsdXNpdmUpIG1hdGNoID0gIW1hdGNoO1xuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBDb250ZXh0IHtcbiAgICBjb250ZXh0SW5mbyA6IFBhcnRJbmZvW10gPSBbXVxuXG4gICAgY29uc3RydWN0b3IoY29udGV4dDogc3RyaW5nKSB7XG4gICAgICAgIGxldCBjb250ZXh0SGllck1hdGNoZXMgOiBzdHJpbmdbXSA9IGNvbnRleHQubWF0Y2goLyE/Wy9hLXpBLVo6MC05KlxcLV9dKyhcXFtbXlxcXV0rXFxdKSpbID4rfl0/L2cpO1xuICAgICAgICBsZXQgcmVzdWx0cyA6IFBhcnRJbmZvW10gPSBbXVxuICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgY29udGV4dEhpZXJNYXRjaGVzKSB7XG4gICAgICAgICAgICBsZXQgcGFydHMgPSBwYXJ0Lm1hdGNoKC8oIT8pKFsvYS16QS1aOjAtOSpcXC1fXSspKChcXFtbXlxcXV0rXFxdKSopKFsgPit+XT8pLyk7XG4gICAgICAgICAgICBsZXQgYXR0ckluZm8gOiBBdHRySW5mb1tdID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGF0dHJQYXJ0IG9mIHBhcnRzWzNdLm1hdGNoKC9cXFsoW15cXF1dKylcXF0vZykgfHwgW10pIHtcbiAgICAgICAgICAgICAgICBsZXQgYXR0clBhcnRzID0gYXR0clBhcnQubWF0Y2goL1xcWyghPykoW2EtejpBLVoqXFwtX10rKSghP1s9fl0pPyhbXlxcXV0rKT9cXF0vKTtcbiAgICAgICAgICAgICAgICBhdHRySW5mby5wdXNoKG5ldyBBdHRySW5mbyhcbiAgICAgICAgICAgICAgICAgICAgYXR0clBhcnRzWzFdICE9PSBcIiFcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0clBhcnRzWzJdLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgIGF0dHJQYXJ0c1szXSxcbiAgICAgICAgICAgICAgICAgICAgYXR0clBhcnRzWzRdXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJ0c1syXSA9IHBhcnRzWzJdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBuc1BhcnRzID0gcGFydHNbMl0uc3BsaXQoXCI6XCIpO1xuICAgICAgICAgICAgbGV0IGluY2wgPSBwYXJ0c1sxXSAhPT0gXCIhXCI7XG4gICAgICAgICAgICBjb25zdCBucyA9IG5zUGFydHMuc2hpZnQoKTtcbiAgICAgICAgICAgIGxldCByb2xlID0gbnNQYXJ0cy5qb2luKFwiOlwiKTtcbiAgICAgICAgICAgIGxldCBwYXJ0SW5mbyA9IG5ldyBQYXJ0SW5mbyhpbmNsLCBucywgcm9sZSwgYXR0ckluZm8sIHBhcnRzW3BhcnRzLmxlbmd0aC0xXSk7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocGFydEluZm8pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGV4dEluZm8gPSByZXN1bHRzO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhbkNvbnRleHQoY29udGV4dDogc3RyaW5nKSA6IHN0cmluZyB7XG4gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICBjb250ZXh0ID0gY29udGV4dC5yZXBsYWNlKC8gKyEvZywgXCIgIVwiKTtcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQucmVwbGFjZSgvICsoWz4rfixdKS9nLCBcIiQxXCIpO1xuICAgICAgICBjb250ZXh0ID0gY29udGV4dC5yZXBsYWNlKC8oWz4rfixdKSArL2csIFwiJDFcIik7XG4gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnJlcGxhY2UoLyArL2csIFwiIFwiKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQudHJpbSgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBwYXJzZShjb250ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGNvbnRleHRzID0gQ29udGV4dC5zcGxpdE11bHRpcGxlKENvbnRleHQuY2xlYW5Db250ZXh0KGNvbnRleHQpKTtcblxuICAgICAgICBsZXQgcmV0VmFsIDogQ29udGV4dFtdID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250ZXh0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgbGV0IGN0eCA9IG5ldyBDb250ZXh0KGNvbnRleHRzW2ldKTtcbiAgICAgICAgICAgIHJldFZhbC5wdXNoKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGluaXRpYWwgcHJvY2Vzc2luZyBvZiBzcGxpdHRpbmcgb24gY29tbWEgLSBjb250ZXh0LGNvbnRleHRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBcbiAgICAgKi9cbiAgICBzdGF0aWMgc3BsaXRNdWx0aXBsZShjb250ZXh0OiBzdHJpbmcpIDogc3RyaW5nW10ge1xuICAgICAgICBsZXQgY29udGV4dHMgPSBbXTtcbiAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICAgIGlmIChjb250ZXh0LmluZGV4T2YoXCIsXCIpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHRzLnB1c2goY29udGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiBjb250ZXh0LnNwbGl0KFwiLFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0cy5wdXNoKGMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGV4dHM7XG4gICAgfVxufSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgSUVuZ2luZSwgUmVwb3J0LCBSdWxlLCBSdWxlRGV0YWlscywgUnVsZVJlc3VsdCwgZVJ1bGVDb25maWRlbmNlLCBSdWxlQ29udGV4dCwgTmxzTWFwLCBIZWxwTWFwLCBSdWxlQ29udGV4dEhpZXJhcmNoeSB9IGZyb20gXCIuLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgRE9NV2Fsa2VyIH0gZnJvbSBcIi4uL2RvbS9ET01XYWxrZXJcIjtcbmltcG9ydCB7IENvbnRleHQsIFBhcnRJbmZvLCBBdHRySW5mbyB9IGZyb20gXCIuL0NvbnRleHRcIjtcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuLi9jb25maWcvQ29uZmlnXCI7XG5pbXBvcnQgeyBJTWFwUmVzdWx0LCBJTWFwcGVyIH0gZnJvbSBcIi4uL2FwaS9JTWFwcGVyXCI7XG5pbXBvcnQgeyBET01NYXBwZXIgfSBmcm9tIFwiLi4vZG9tL0RPTU1hcHBlclwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuLi8uLlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlRG9jdW1lbnQgZXh0ZW5kcyBEb2N1bWVudCB7XG4gICAgYWNlQ2FjaGU6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVFbGVtZW50IGV4dGVuZHMgRWxlbWVudCB7XG4gICAgYWNlQ2FjaGU6IHsgW2tleTogc3RyaW5nXTogYW55IH1cbn1cblxuY2xhc3MgV3JhcHBlZFJ1bGUge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgaWR4PzogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IgKHB1YmxpYyBydWxlOiBSdWxlLCBwdWJsaWMgcGFyc2VkSW5mbyA6IENvbnRleHQpIHtcbiAgICAgICAgdGhpcy5ucyA9IHRoaXMucGFyc2VkSW5mby5jb250ZXh0SW5mb1t0aGlzLnBhcnNlZEluZm8uY29udGV4dEluZm8ubGVuZ3RoLTFdLm5hbWVzcGFjZTtcbiAgICAgICAgQ29uZmlnLkRFQlVHICYmIGNvbnNvbGUubG9nKFwiQWRkZWQgUnVsZTpcIiwgcnVsZS5pZCwgSlNPTi5zdHJpbmdpZnkodGhpcy5wYXJzZWRJbmZvKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBjb252ZXJ0aW5nIHRoZSBub2RlIGludG8gYSBzbmlwcGV0IHdoaWNoIGNhbiBiZSBhZGRlZCB0byByZXBvcnQuXG4gICAgICpcbiAgICAgKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSB0aGUgbm9kZSBhbmQgZXh0cmFjdCB0aGUgbm9kZSBuYW1lIGFuZCB0aGUgYXR0cmlidXRlcyBhbmQgYnVpbGQgdGhlIHNuaXBwZXQgYmFzZWQgb24gdGhpcy5cbiAgICAgKlxuICAgICAqIFRPRE86IEZ1dHVyZSwgbWF5YmUgd2UgY2FuIGV4dHJhY3QgbW9yZSB0aGVuIGp1c3Qgc2luZ2xlIGxpbmUsIGFkZCBtb3JlIGluZm8gb3IgZXZlbiBhZGQgY2xvc2luZyB0YWdzIGV0Yy4uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZSAtIFRoZSBodG1sIGVsZW1lbnQgdG8gY29udmVydCBpbnRvIGVsZW1lbnQgc25pcHBldCB3aXRoIG5vZGUgbmFtZSBhbmQgYXR0cmlidXRlcyBvbmx5LlxuICAgICAqXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBub2RlU25pcHBldCAtIHJldHVybiB0aGUgZWxlbWVudCBzbmlwcGV0IG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIHByb3ZpZGVkIHdoaWNoIG9ubHkgY29udGFpbnMsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVuYW1lIGFuZCBhdHRyaWJ1dGVzLiBpLmUuIDx0YWJsZSBpZD1cXFwibGF5b3V0X3RhYmxlMVxcXCIgcm9sZT1cXFwicHJlc2VudGF0aW9uXFxcIj5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiB0aGlzXG4gICAgICovXG4gICAgc3RhdGljIGNvbnZlcnROb2RlVG9TbmlwcGV0KG5vZGUgOiBFbGVtZW50KSB7XG4gICAgICAgIC8vIFZhcmlhYmxlIERlY2xlcmF0aW9uXG4gICAgICAgIHZhciBub2RlU25pcHBldCA9ICcnO1xuXG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIG5vZGUgbmFtZSBhbmQgYWRkIGl0IHRvIHRoZSBub2RlIHNuaXBwZXRcbiAgICAgICAgbm9kZVNuaXBwZXQgKz0gJzwnICsgbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIC8vIEV4dHJhY3QgYWxsIHRoZSBub2RlIGF0dHJpYnV0ZXMgYXMgYW4gYXJyYXlcbiAgICAgICAgdmFyIG5vZGVBdHRyaWJ1dGVzID0gbm9kZS5hdHRyaWJ1dGVzO1xuXG4gICAgICAgIC8vIEluIHRoZSBjYXNlIHRoZXJlIGFyZSBhdHRyaWJ1dGVzIG9uIHRoaXMgbm9kZVxuICAgICAgICBpZiAobm9kZUF0dHJpYnV0ZXMgIT09IG51bGwgJiYgdHlwZW9mIG5vZGVBdHRyaWJ1dGVzICE9PSAndW5kZWZpbmVkJykge1xuXG4gICAgICAgICAgICAvLyBMb29wIG92ZXIgYWxsIHRoZXNlcyBhdHRyaWJ1dGVzIGFuZCBhZGQgdGhlIG5hbWUgYW5kIHZhbHVlIHRvIHRoZSBub2RlU25pcHBldCB3aGljaCB3aWxsIGJlIHJldHVybmVkXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gbm9kZUF0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZUF0dHJpYnV0ZXNbaV0ubmFtZSA9PT0gXCJkYXRhLW5hbWV3YWxrXCIpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgYXR0cmlidXRlIG5hbWUgYW5kIHZhbHVlLlxuICAgICAgICAgICAgICAgIG5vZGVTbmlwcGV0ICs9ICcgJyArIG5vZGVBdHRyaWJ1dGVzW2ldLm5hbWUgKyAnPVwiJyArIG5vZGVBdHRyaWJ1dGVzW2ldLnZhbHVlICsgJ1wiJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsb3NlIHRoZSBub2RlXG4gICAgICAgIG5vZGVTbmlwcGV0ICs9ICc+JztcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIG5vZGUgc25pcHBldFxuICAgICAgICByZXR1cm4gbm9kZVNuaXBwZXQ7XG4gICAgfVxuXG4gICAgcnVuKGVuZ2luZTogRW5naW5lLCBjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBjb250ZXh0SGllcmFyY2hpZXM/OiBSdWxlQ29udGV4dEhpZXJhcmNoeSkgOiBSdWxlRGV0YWlsc1tdIHtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIGxldCByZXN1bHRzOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMucnVsZS5ydW4oY29udGV4dCwgb3B0aW9ucywgY29udGV4dEhpZXJhcmNoaWVzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgZXJyOiBFcnJvciA9IGU7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUlVMRSBFWENFUFRJT046XCIsdGhpcy5ydWxlLmlkLCBjb250ZXh0LmRvbS5yb2xlUGF0aCwgZXJyLnN0YWNrKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBpZiAoIXJlc3VsdHMpIHJlc3VsdHMgPSBbXTtcblxuICAgICAgICBpZiAoIShyZXN1bHRzIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgICAgICByZXN1bHRzID0gW3Jlc3VsdHNdO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXRWYWwgOiBSdWxlRGV0YWlsc1tdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlbmdpbmUuZ2V0TWVzc2FnZSh0aGlzLnJ1bGUuaWQsIHJlc3VsdC5yZWFzb25JZCwgcmVzdWx0Lm1lc3NhZ2VBcmdzKTtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbnMgaW4gY29udGV4dCkge1xuICAgICAgICAgICAgICAgIHBhdGhbbnNdID0gY29udGV4dFtuc10ucm9sZVBhdGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVJZCA9IHRoaXMucnVsZS5pZC5yZXBsYWNlKC9eKC4qKVxcJFxcJFxcZCskLywgXCIkMVwiKTtcblxuICAgICAgICAgICAgcmV0VmFsLnB1c2goe1xuICAgICAgICAgICAgICAgIHJ1bGVJZDogcnVsZUlkLFxuICAgICAgICAgICAgICAgIHZhbHVlOiByZXN1bHQudmFsdWUsXG4gICAgICAgICAgICAgICAgbm9kZTogY29udGV4dFtcImRvbVwiXS5ub2RlLFxuICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgcnVsZVRpbWU6IGVuZFRpbWUtc3RhcnRUaW1lLFxuICAgICAgICAgICAgICAgIHJlYXNvbklkOiByZXN1bHQucmVhc29uSWQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlQXJnczogcmVzdWx0Lm1lc3NhZ2VBcmdzLFxuICAgICAgICAgICAgICAgIGFwaUFyZ3M6IHJlc3VsdC5hcGlBcmdzLFxuICAgICAgICAgICAgICAgIGJvdW5kczogY29udGV4dFtcImRvbVwiXS5ib3VuZHMsXG4gICAgICAgICAgICAgICAgc25pcHBldDogV3JhcHBlZFJ1bGUuY29udmVydE5vZGVUb1NuaXBwZXQoY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRW5naW5lIGltcGxlbWVudHMgSUVuZ2luZSB7XG4gICAgbWFwcGVycyA6IHsgW25hbWVzcGFjZTogc3RyaW5nXSA6IElNYXBwZXIgfSA9IHt9O1xuICAgIHJ1bGVNYXAgOiB7IFtpZDogc3RyaW5nXTogUnVsZSB9ID0ge307XG4gICAgd3JhcHBlZFJ1bGVNYXAgOiB7IFtpZDogc3RyaW5nXTogV3JhcHBlZFJ1bGUgfSA9IHt9O1xuICAgIG5sc01hcCA6IE5sc01hcCA9IHt9XG4gICAgaGVscE1hcCA6IEhlbHBNYXAgPSB7fVxuXG4gICAgcHJpdmF0ZSBpbmNsUnVsZXM6IHtcbiAgICAgICAgW25zUm9sZTogc3RyaW5nXTogV3JhcHBlZFJ1bGVbXVxuICAgIH0gPSB7fVxuXG4gICAgcHJpdmF0ZSBleGNsUnVsZXM6IHtcbiAgICAgICAgW25zUm9sZTogc3RyaW5nXTogV3JhcHBlZFJ1bGVbXVxuICAgIH0gPSB7fVxuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIE5lZWQgYSBET00gTWFwcGVyIGFzIGEgbWluaW11bVxuICAgICAgICB0aGlzLmFkZE1hcHBlcihuZXcgRE9NTWFwcGVyKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNsZWFyQ2FjaGVzKGNhY2hlUm9vdCA6IE5vZGUpIDogdm9pZCB7XG4gICAgICAgIGRlbGV0ZSAoY2FjaGVSb290Lm93bmVyRG9jdW1lbnQgYXMgQ2FjaGVEb2N1bWVudCkuYWNlQ2FjaGU7XG4gICAgICAgIGxldCBudyA9IG5ldyBET01XYWxrZXIoY2FjaGVSb290KTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZGVsZXRlIChudy5ub2RlIGFzIENhY2hlRWxlbWVudCkuYWNlQ2FjaGU7XG4gICAgICAgICAgICBudy5ub2RlLm93bmVyRG9jdW1lbnQgJiYgZGVsZXRlIChudy5ub2RlLm93bmVyRG9jdW1lbnQgYXMgQ2FjaGVEb2N1bWVudCkuYWNlQ2FjaGU7XG4gICAgICAgIH0gd2hpbGUgKG53Lm5leHROb2RlKCkpO1xuICAgIH1cblxuICAgIHJ1bihyb290OiBEb2N1bWVudCB8IE5vZGUsIG9wdGlvbnM/OiB7fSk6IFByb21pc2U8UmVwb3J0PiB7XG4gICAgICAgIGlmIChyb290ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXCJudWxsIGRvY3VtZW50XCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb290Lm5vZGVUeXBlID09PSA5IC8qIE5vZGUuRE9DVU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgcm9vdCA9IChyb290IGFzIERvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcm9vdC5vd25lckRvY3VtZW50ICYmICgocm9vdC5vd25lckRvY3VtZW50IGFzIGFueSkuUFRfQ0hFQ0tfSElEREVOX0NPTlRFTlQgPSBmYWxzZSk7XG4gICAgICAgIEVuZ2luZS5jbGVhckNhY2hlcyhyb290KTtcbiAgICAgICAgY29uc3Qgd2Fsa2VyID0gbmV3IERPTVdhbGtlcihyb290KTtcbiAgICAgICAgY29uc3QgcmV0VmFsIDogUmVwb3J0ID0ge1xuICAgICAgICAgICAgcmVzdWx0czogW10sXG4gICAgICAgICAgICBudW1FeGVjdXRlZDogMCxcbiAgICAgICAgICAgIHJ1bGVUaW1lOiAwLFxuICAgICAgICAgICAgdG90YWxUaW1lOiAwXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgLy8gUmVzZXQgdGhlIHJvbGUgbWFwcGVyc1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBpbiB0aGlzLm1hcHBlcnMpIHtcbiAgICAgICAgICAgIHRoaXMubWFwcGVyc1tuYW1lc3BhY2VdLnJlc2V0KHJvb3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGV4dCBkZXRlY3RvclxuICAgICAgICBkbyB7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIGNvbnRleHQgaW5mb3JtYXRpb24gZnJvbSB0aGUgcnVsZSBtYXBwZXJzXG4gICAgICAgICAgICBjb25zdCBjb250ZXh0SGllcmFyY2hpZXMgOiBSdWxlQ29udGV4dEhpZXJhcmNoeSA9IHt9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBpbiB0aGlzLm1hcHBlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXdhbGtlci5iRW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHRIaWVyYXJjaGllc1tuYW1lc3BhY2VdID0gdGhpcy5tYXBwZXJzW25hbWVzcGFjZV0ub3BlblNjb3BlKHdhbGtlci5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKG5hbWVzcGFjZSA9PT0gXCJkb21cIiAmJiB3YWxrZXIubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3QgZWxlbSA9IHdhbGtlci5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsZXQgaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAoZWxlbS5oYXNBdHRyaWJ1dGUoXCJpZFwiKSAmJiAoaWQgPSBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpLnRyaW0oKSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChyb290Lm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpID09PSBlbGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHRIaWVyYXJjaGllc1tcImRvbVwiXVtjb250ZXh0SGllcmFyY2hpZXNbXCJkb21cIl0ubGVuZ3RoLTFdLnJvbGVQYXRoID0gXCIvLypbQGlkPSdcIitpZCtcIiddXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dEhpZXJhcmNoaWVzW25hbWVzcGFjZV0gPSB0aGlzLm1hcHBlcnNbbmFtZXNwYWNlXS5jbG9zZVNjb3BlKHdhbGtlci5ub2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh3YWxrZXIubm9kZS5ub2RlVHlwZSAhPT0gMTEgXG4gICAgICAgICAgICAgICAgJiYgKERPTVV0aWwuaXNOb2RlVmlzaWJsZSh3YWxrZXIubm9kZSlcbiAgICAgICAgICAgICAgICAgICAgfHwgd2Fsa2VyLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IHdhbGtlci5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiZGF0YWxpc3RcIlxuICAgICAgICAgICAgICAgICAgICB8fCB3YWxrZXIubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInBhcmFtXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgIURPTVV0aWwuZ2V0QW5jZXN0b3Iod2Fsa2VyLm5vZGUsIFtcImJvZHlcIl0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRleHQgOiBSdWxlQ29udGV4dCA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbnMgaW4gY29udGV4dEhpZXJhcmNoaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5zSGllciA9IGNvbnRleHRIaWVyYXJjaGllc1tuc107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RIaWVyID0gbnNIaWVyW25zSGllci5sZW5ndGgtMV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHRbbnNdID0gbGFzdEhpZXI7IFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBtYXRjaGluZ1J1bGVzID0gdGhpcy5nZXRNYXRjaGluZ1J1bGVzKGNvbnRleHRIaWVyYXJjaGllcyk7XG4gICAgICAgICAgICAgICAgbGV0IGRlcE1hdGNoID0ge31cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGNoaW5nUnVsZSBvZiBtYXRjaGluZ1J1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmdWxmaWxsc0RlcGVuZGVuY2llcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIG1hdGNoaW5nUnVsZS5ydWxlLmRlcGVuZGVuY2llcyB8fCBbXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZXBNYXRjaFtkZXBdKSBmdWxmaWxsc0RlcGVuZGVuY2llcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmdWxmaWxsc0RlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgOiBSdWxlRGV0YWlsc1tdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBtYXRjaGluZ1J1bGUucnVuKHRoaXMsIGNvbnRleHQsIG9wdGlvbnMsIGNvbnRleHRIaWVyYXJjaGllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcmFwcGVyIHNob3dzIGVycm9yIGluIGNvbnNvbGUuIFNraXAgdGhpcyBydWxlIGFzIE4vQVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8ga2lsbCB0aGUgZW5naW5lXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBvdXQgb2Ygc2NvcGUsIGl0IGZ1bGZpbGxzIHRoZSBkZXBlbmRlbmN5XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBNYXRjaFttYXRjaGluZ1J1bGUucnVsZS5pZF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbC5yZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwucnVsZVRpbWUgKz0gcmVzdWx0LnJ1bGVUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbC5udW1FeGVjdXRlZCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudmFsdWVbMV0gPT09IGVSdWxlQ29uZmlkZW5jZS5QQVNTKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcE1hdGNoW3Jlc3VsdC5ydWxlSWRdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKHdhbGtlci5uZXh0Tm9kZSgpKTtcbiAgICAgICAgcmV0VmFsLnRvdGFsVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpLXN0YXJ0O1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJldFZhbCk7XG4gICAgfVxuXG4gICAgZW5hYmxlUnVsZXMocnVsZUlkczogc3RyaW5nW10pIHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlSWQgaW4gdGhpcy5ydWxlTWFwKSB7XG4gICAgICAgICAgICB0aGlzLnJ1bGVNYXBbcnVsZUlkXS5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBydWxlSWQgb2YgcnVsZUlkcyB8fCBbXSkge1xuICAgICAgICAgICAgaWYgKCEocnVsZUlkIGluIHRoaXMucnVsZU1hcCkpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJXQVJOSU5HOiBSdWxlIElkXCIscnVsZUlkLFwiY291bGQgbm90IGJlIGVuYWJsZWQuXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bGVNYXBbcnVsZUlkXS5lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFJ1bGUocnVsZUlkOiBzdHJpbmcpOiBSdWxlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucnVsZU1hcFtydWxlSWRdO1xuICAgIH1cblxuICAgIGdldFJ1bGVzSWRzKCkgOiBzdHJpbmdbXSB7XG4gICAgICAgIGxldCByZXRWYWwgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlSWQgaW4gdGhpcy5ydWxlTWFwKSB7XG4gICAgICAgICAgICByZXRWYWwucHVzaChydWxlSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgYWRkUnVsZXMocnVsZXM6IFJ1bGVbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkUnVsZShydWxlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZFJ1bGUocnVsZTogUnVsZSkge1xuICAgICAgICBsZXQgY3R4cyA6Q29udGV4dFtdID0gQ29udGV4dC5wYXJzZShydWxlLmNvbnRleHQpO1xuICAgICAgICBsZXQgaWR4ID0gMDtcbiAgICAgICAgY29uc3QgcnVsZUlkID0gcnVsZS5pZDtcbiAgICAgICAgaWYgKHJ1bGVJZCBpbiB0aGlzLnJ1bGVNYXApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiV0FSTklORzogUnVsZVwiLHJ1bGVJZCxcImFscmVhZHkgYWRkZWQgdG8gZW5naW5lLiBJZ25vcmluZy4uLlwiKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJ1bGVNYXBbcnVsZUlkXSA9IHJ1bGU7XG4gICAgICAgIGZvciAoY29uc3QgY3R4IG9mIGN0eHMpIHtcbiAgICAgICAgICAgIGxldCB3cmFwSWQgPSBydWxlSWQ7XG4gICAgICAgICAgICBpZiAoaWR4ID49IDEpIHtcbiAgICAgICAgICAgICAgICB3cmFwSWQgPSBydWxlSWQrXCIkJFwiK2lkeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICsraWR4O1xuICAgICAgICAgICAgbGV0IHdyYXBwZWRSdWxlID0gbmV3IFdyYXBwZWRSdWxlKHJ1bGUsY3R4KTtcbiAgICAgICAgICAgIHRoaXMud3JhcHBlZFJ1bGVNYXBbd3JhcElkXSA9IHdyYXBwZWRSdWxlO1xuICAgICAgICAgICAgbGV0IHBhcnRzID0gd3JhcHBlZFJ1bGUucGFyc2VkSW5mby5jb250ZXh0SW5mbztcbiAgICAgICAgICAgIGxldCBsYXN0UGFydCA9IHBhcnRzW3BhcnRzLmxlbmd0aC0xXTtcbiAgICAgICAgICAgIGxldCB0cmlnZ2VyUm9sZSA9IGxhc3RQYXJ0Lm5hbWVzcGFjZStcIjpcIitsYXN0UGFydC5yb2xlO1xuICAgICAgICAgICAgaWYgKGxhc3RQYXJ0LmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5jbFJ1bGVzW3RyaWdnZXJSb2xlXSA9IHRoaXMuaW5jbFJ1bGVzW3RyaWdnZXJSb2xlXSB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmluY2xSdWxlc1t0cmlnZ2VyUm9sZV0ucHVzaCh3cmFwcGVkUnVsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZXhjbFJ1bGVzW3RyaWdnZXJSb2xlXSA9IHRoaXMuZXhjbFJ1bGVzW3RyaWdnZXJSb2xlXSB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4Y2xSdWxlc1t0cmlnZ2VyUm9sZV0ucHVzaCh3cmFwcGVkUnVsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRObHNNYXAobWFwOiBObHNNYXApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWFwKSB7XG4gICAgICAgICAgICB0aGlzLm5sc01hcFtrZXldID0gbWFwW2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRIZWxwTWFwKG1hcDogSGVscE1hcCkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXApIHtcbiAgICAgICAgICAgIHRoaXMuaGVscE1hcFtrZXldID0gbWFwW2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRNZXNzYWdlKHJ1bGVJZDogc3RyaW5nLCBydWxlSWR4OiBudW1iZXIgfCBzdHJpbmcsIG1zZ0FyZ3M/OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzcGxpdHRlciA9IHJ1bGVJZC5pbmRleE9mKFwiJCRcIik7XG4gICAgICAgIGlmIChzcGxpdHRlciA+PSAwKSB7XG4gICAgICAgICAgICBydWxlSWQgPSBydWxlSWQuc3Vic3RyaW5nKDAsc3BsaXR0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHJ1bGVJZCBpbiB0aGlzLm5sc01hcCkpIHJldHVybiBydWxlSWQ7XG4gICAgICAgIGxldCBtZXNzYWdlVGVtcGxhdGUgPSB0aGlzLm5sc01hcFtydWxlSWRdW3J1bGVJZHggfHwgMF07XG4gICAgICAgIGlmICghbWVzc2FnZVRlbXBsYXRlKSByZXR1cm4gcnVsZUlkK1wiX1wiK3J1bGVJZHg7XG4gICAgICAgIHJldHVybiBtZXNzYWdlVGVtcGxhdGUucmVwbGFjZSgvXFx7KFxcZCspXFx9L2csXG4gICAgICAgICAgICAobWF0Y2hlZFN0ciwgbWF0Y2hlZE51bSwgbWF0Y2hlZEluZGV4KSA9PiBtc2dBcmdzW21hdGNoZWROdW1dXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0SGVscChydWxlSWQ6IHN0cmluZywgcnVsZUlkeDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHNwbGl0dGVyID0gcnVsZUlkLmluZGV4T2YoXCIkJFwiKTtcbiAgICAgICAgaWYgKHNwbGl0dGVyID49IDApIHtcbiAgICAgICAgICAgIHJ1bGVJZCA9IHJ1bGVJZC5zdWJzdHJpbmcoMCxzcGxpdHRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEocnVsZUlkIGluIHRoaXMuaGVscE1hcCkpIHJldHVybiBydWxlSWQ7XG4gICAgICAgIHJ1bGVJZHggPSBydWxlSWR4IHx8IDA7XG4gICAgICAgIGxldCBoZWxwU3RyID0gbnVsbDtcbiAgICAgICAgaWYgKHJ1bGVJZHggaW4gdGhpcy5oZWxwTWFwW3J1bGVJZF0pIHtcbiAgICAgICAgICAgIGhlbHBTdHIgPSB0aGlzLmhlbHBNYXBbcnVsZUlkXVtydWxlSWR4IHx8IDBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGVscFN0ciA9IHRoaXMuaGVscE1hcFtydWxlSWRdWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoZWxwU3RyKSByZXR1cm4gcnVsZUlkK1wiX1wiK3J1bGVJZHg7XG4gICAgICAgIHJldHVybiBoZWxwU3RyO1xuICAgIH1cblxuICAgIGFkZE1hcHBlcihtYXBwZXI6IElNYXBwZXIpIHtcbiAgICAgICAgdGhpcy5tYXBwZXJzW21hcHBlci5nZXROYW1lc3BhY2UoKV0gPSBtYXBwZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgbWF0Y2gocnVsZVBhcnRzOiBQYXJ0SW5mb1tdLFxuICAgICAgICBjb250ZXh0SGllcjogUnVsZUNvbnRleHRIaWVyYXJjaHkpIDogYm9vbGVhblxuICAgIHtcbiAgICAgICAgbGV0IHBhcnRJZHggPSBydWxlUGFydHMubGVuZ3RoLTE7XG4gICAgICAgIGxldCBoaWVySWR4ID0gY29udGV4dEhpZXJbXCJkb21cIl0ubGVuZ3RoLTE7XG4gICAgICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBlbmQgb2YgdGhlIGhpZXJhcmNoeVxuICAgICAgICBpZiAoIXJ1bGVQYXJ0c1twYXJ0SWR4XS5tYXRjaGVzKGNvbnRleHRIaWVyLCBoaWVySWR4KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLS1wYXJ0SWR4O1xuICAgICAgICAgICAgLS1oaWVySWR4O1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChoaWVySWR4ID49IDAgJiYgcGFydElkeCA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0ID0gcnVsZVBhcnRzW3BhcnRJZHhdO1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1BhcnQgPSBydWxlUGFydHNbcGFydElkeF0ubWF0Y2hlcyhjb250ZXh0SGllciwgaGllcklkeCk7XG4gICAgICAgICAgICBpZiAocGFydC5jb25uZWN0b3IgPT09IFwiPlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzUGFydCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBEaXJlY3QgcGFyZW50IGNoZWNrIGFuZCBkb2Vzbid0IG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBEaXJlY3QgcGFyZW50IGNoZWNrIGFuZCBkb2VzIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIC0tcGFydElkeDtcbiAgICAgICAgICAgICAgICAgICAgLS1oaWVySWR4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFydC5jb25uZWN0b3IgPT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnQuaW5jbHVzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGluY2x1c2l2ZSBhbmNlc3RvciBtYXRjaFxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlc1BhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC0tcGFydElkeDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBJZiBkb2Vzbid0IG1hdGNoLCBqdXN0IG1vdmUgdXAgdGhlIHJvbGUgaGllcmFyY2h5XG4gICAgICAgICAgICAgICAgICAgIC0taGllcklkeDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtYXRjaGVzUGFydCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBleGNsdXNpdmUgYW5jZXN0b3IgbWF0Y2ggYW5kIGN1cnJlbnQgbWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXhjbHVzaXZlIGFuY2VzdG9yIG1hdGNoIGFuZCBjdXJyZW50IGRvZXNuJ3QgbWF0Y2ggLSBjaGVjayBmb3Igb3RoZXIgYW5jZXN0b3JzXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnRNYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzZWFyY2hJZHggPSBoaWVySWR4LTE7ICFwYXJlbnRNYXRjaCAmJiBzZWFyY2hJZHggPj0gMDsgLS1zZWFyY2hJZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE1hdGNoID0gIXJ1bGVQYXJ0c1twYXJ0SWR4XS5tYXRjaGVzKGNvbnRleHRIaWVyLCBzZWFyY2hJZHgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRNYXRjaCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIC0tcGFydElkeDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbnRleHQgY29ubmVjdG9yIFwiK3BhcnQuY29ubmVjdG9yK1wiIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRJZHggPT09IC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF0Y2hpbmdSdWxlcyhjdHhIaWVyIDogUnVsZUNvbnRleHRIaWVyYXJjaHkpIDogV3JhcHBlZFJ1bGVbXSB7XG4gICAgICAgIGxldCBkdXBlQ2hlY2sgPSB7fTtcbiAgICAgICAgbGV0IG1hdGNoZXMgOiBXcmFwcGVkUnVsZVtdID0gW107XG4gICAgICAgIGZ1bmN0aW9uIGFkZE1hdGNoZXMocnVsZXM6IFdyYXBwZWRSdWxlW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgICAgICAgICAgIGlmIChydWxlLnJ1bGUuZW5hYmxlZCAmJiBFbmdpbmUubWF0Y2gocnVsZS5wYXJzZWRJbmZvLmNvbnRleHRJbmZvLCBjdHhIaWVyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShydWxlLnJ1bGUuaWQgaW4gZHVwZUNoZWNrKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHJ1bGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZHVwZUNoZWNrW3J1bGUucnVsZS5pZF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgbnMgaW4gY3R4SGllcikge1xuICAgICAgICAgICAgbGV0IHJvbGUgPSBucytcIjpcIitjdHhIaWVyW25zXVtjdHhIaWVyW25zXS5sZW5ndGgtMV0ucm9sZTtcbiAgICAgICAgICAgIGlmIChyb2xlIGluIHRoaXMuaW5jbFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgYWRkTWF0Y2hlcyh0aGlzLmluY2xSdWxlc1tyb2xlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHhSb2xlIGluIHRoaXMuZXhjbFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHhSb2xlICE9PSByb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZXModGhpcy5leGNsUnVsZXNbeFJvbGVdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocm9sZSAhPT0gbnMrXCI6bm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvbGUuc3RhcnRzV2l0aChucytcIjovXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChucytcIjovKlwiIGluIHRoaXMuaW5jbFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRNYXRjaGVzKHRoaXMuaW5jbFJ1bGVzW25zK1wiOi8qXCJdKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5zK1wiOipcIiBpbiB0aGlzLmluY2xSdWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWF0Y2hlcyh0aGlzLmluY2xSdWxlc1tucytcIjoqXCJdKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIFNvcnQgZm9yIGRlcGVuZGVuY2llc1xuICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4IDwgbWF0Y2hlcy5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICBtYXRjaGVzW2lkeF0uaWR4ID0gaWR4O1xuICAgICAgICB9XG4gICAgICAgIG1hdGNoZXMuc29ydCgoYSxiKSA9PiB7XG4gICAgICAgICAgICAvLyBhIGJlZm9yZSBiOiAtMVxuICAgICAgICAgICAgLy8gYSBhZnRlciBiOiAxXG4gICAgICAgICAgICAvLyBlcXVpdjogMFxuICAgICAgICAgICAgY29uc3QgcnVsZUEgOiBSdWxlID0gYS5ydWxlO1xuICAgICAgICAgICAgY29uc3QgcnVsZUIgOiBSdWxlID0gYi5ydWxlO1xuICAgICAgICAgICAgaWYgKHJ1bGVBLmRlcGVuZGVuY2llcyAmJiAhcnVsZUIuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFydWxlQS5kZXBlbmRlbmNpZXMgJiYgcnVsZUIuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQS5kZXBlbmRlbmNpZXMgJiYgcnVsZUIuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVBLmRlcGVuZGVuY2llcy5pbmNsdWRlcyhydWxlQi5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQi5kZXBlbmRlbmNpZXMuaW5jbHVkZXMocnVsZUEuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5pZHgtYi5pZHg7XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBtYXRjaGVzO1xuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICAgIHN0YXRpYyBERUJVRyA9IGZhbHNlO1xuICAgIHN0YXRpYyBoZWxwUm9vdCA9IFwiaHR0cHM6Ly9hYmxlLmlibS5jb20vcnVsZXMvdG9vbHMvaGVscFwiO1xufSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQ29tbW9uTWFwcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9Db21tb25NYXBwZXJcIjtcbmltcG9ydCB7IEJvdW5kcyB9IGZyb20gXCIuLi9hcGkvSU1hcHBlclwiO1xuXG5leHBvcnQgY2xhc3MgRE9NTWFwcGVyIGV4dGVuZHMgQ29tbW9uTWFwcGVyIHtcbiAgICBjaGlsZHJlbkhhdmVSb2xlKG5vZGU6IE5vZGUsIHJvbGU6IHN0cmluZykgOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldFJvbGUobm9kZTogTm9kZSkgOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBnZXROYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiZG9tXCJcbiAgICB9XG4gICAgZ2V0QXR0cmlidXRlcyhub2RlOiBOb2RlKSA6IHsgW2tleTpzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIGxldCByZXRWYWwgPSB7fTtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW0gPSBub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4PGVsZW0uYXR0cmlidXRlcy5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ckluZm8gPSBlbGVtLmF0dHJpYnV0ZXNbaWR4XTtcbiAgICAgICAgICAgICAgICByZXRWYWxbYXR0ckluZm8ubmFtZS50b0xvd2VyQ2FzZSgpXSA9IGF0dHJJbmZvLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIGdldEJvdW5kcyhub2RlOiBOb2RlKSA6IEJvdW5kcyB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxIC8qTm9kZS5FTEVNRU5UX05PREUqLykge1xuICAgICAgICAgICAgbGV0IGFkanVzdG1lbnQgPSAxO1xuICAgICAgICAgICAgaWYgKG5vZGUub3duZXJEb2N1bWVudCAmJiBub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmRldmljZVBpeGVsUmF0aW8pIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RtZW50ID0gbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmRldmljZVBpeGVsUmF0aW87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgYm91bmRzID0gKG5vZGUgYXMgRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgXG4gICAgICAgICAgICAvLyBEbyBhIGNoZWNrIHdoZXRoZXIgYm91bmRzIGhhcyB2YWx1ZSBhcyB3ZSB1c2UgZGlmZmVyZW50IHRvb2wgKGh0bWxVbml0LCBicm93c2VyKSB0byBjYWxsIHRoaXMgZnVuY3Rpb25cbiAgICAgICAgICAgIGlmIChib3VuZHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBcImxlZnRcIjogTWF0aC5jZWlsKGJvdW5kcy5sZWZ0ICogYWRqdXN0bWVudCksXG4gICAgICAgICAgICAgICAgICAgIFwidG9wXCI6IE1hdGguY2VpbChib3VuZHMudG9wICogYWRqdXN0bWVudCksXG4gICAgICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IE1hdGguY2VpbChib3VuZHMuaGVpZ2h0ICogYWRqdXN0bWVudCksXG4gICAgICAgICAgICAgICAgICAgIFwid2lkdGhcIjogTWF0aC5jZWlsKGJvdW5kcy53aWR0aCAqIGFkanVzdG1lbnQpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGNsYXNzIERPTVV0aWwge1xuICAgIFxuICAgIHN0YXRpYyBoYXNQYXJlbnQobm9kZTogTm9kZSwgbmFtZXM6c3RyaW5nW10pIHtcbiAgICAgICAgbGV0IHAgPSBET01VdGlsLnBhcmVudEVsZW1lbnQobm9kZSk7XG4gICAgICAgIHdoaWxlIChwICYmICFuYW1lcy5pbmNsdWRlcyhwLm5vZGVOYW1lKSkge1xuICAgICAgICAgICAgcCA9IERPTVV0aWwucGFyZW50RWxlbWVudChwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISFwO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRBbmNlc3Rvcihub2RlOiBOb2RlLCBuYW1lczpzdHJpbmdbXSkge1xuICAgICAgICBsZXQgcCA9IERPTVV0aWwucGFyZW50RWxlbWVudChub2RlKTtcbiAgICAgICAgd2hpbGUgKHAgJiYgIW5hbWVzLmluY2x1ZGVzKHAubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIHAgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzTm9kZVZpc2libGUobm9kZTogTm9kZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHZpcyA9IG51bGw7XG4gICAgICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLm5vZGVUeXBlICE9PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IERPTVV0aWwucGFyZW50RWxlbWVudChub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBlbGVtID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHcgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgbGV0IGNzID0gdy5nZXRDb21wdXRlZFN0eWxlKGVsZW0pO1xuICAgICAgICAgICAgICAgIGlmIChjcy5kaXNwbGF5ID09PSBcIm5vbmVcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh2aXMgPT09IG51bGwgJiYgY3MudmlzaWJpbGl0eSkge1xuICAgICAgICAgICAgICAgICAgICB2aXMgPSBjcy52aXNpYmlsaXR5O1xuICAgICAgICAgICAgICAgICAgICBpZiAodmlzID09PSBcImhpZGRlblwiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW0gPSBET01VdGlsLnBhcmVudEVsZW1lbnQoZWxlbSk7XG4gICAgICAgICAgICB9IHdoaWxlIChlbGVtKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBzYW1lTm9kZShhOiBOb2RlLCBiOiBOb2RlKSA6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5pc1NhbWVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pc1NhbWVOb2RlKGIpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTm90IHN1cHBvcnRlZCBpbiB0aGlzIGVudmlyb25tZW50IC0gdHJ5IG91ciBiZXN0XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhbldoaXRlc3BhY2Uoczogc3RyaW5nKSA6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXRWYWwgPSBzLnJlcGxhY2UoL1sgXFx0XFxyXFxuXS9nLCBcIiBcIikucmVwbGFjZSgvICsvZyxcIiBcIik7XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgc3RhdGljIGNsZWFuU3BhY2Uoczogc3RyaW5nKSA6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXRWYWwgPSBzLnJlcGxhY2UoLyArL2csXCIgXCIpO1xuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIHN0YXRpYyBwYXJlbnROb2RlKG5vZGU6IE5vZGUpIDogTm9kZSB8IG51bGwge1xuICAgICAgICBsZXQgcCA6IE5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICAgIGlmIChwICYmIHAubm9kZVR5cGUgPT09IDExKSB7XG4gICAgICAgICAgICBpZiAoKHAgYXMgU2hhZG93Um9vdCkuaG9zdCkge1xuICAgICAgICAgICAgICAgIHAgPSAocCBhcyBTaGFkb3dSb290KS5ob3N0O1xuICAgICAgICAgICAgfSBlbHNlIGlmICgocCBhcyBhbnkpLm93bmVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHAgPSAocCBhcyBhbnkpLm93bmVyRWxlbWVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgc3RhdGljIHBhcmVudEVsZW1lbnQobm9kZTogTm9kZSkgOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIGxldCBlbGVtIDogRWxlbWVudCA9IG5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgZWxlbSA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtKSBhcyBFbGVtZW50O1xuICAgICAgICB9IHdoaWxlIChlbGVtICYmIGVsZW0ubm9kZVR5cGUgIT09IDEpO1xuICAgICAgICByZXR1cm4gZWxlbTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gdHJ1ZSBpZiBlbGVtZW50MSBhbmQgZWxlbWVudDIgKGNlbGxzKSBhcmUgaW4gdGhlIHNhbWUgdGFibGVcbiAgICBzdGF0aWMgaXNJblNhbWVUYWJsZShlbGVtZW50MSwgZWxlbWVudDIpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQxICYmIGVsZW1lbnQyKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnROYW1lID0gWyd0YWJsZSddO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50MT0gRE9NVXRpbC5nZXRBbmNlc3RvcihlbGVtZW50MSwgcGFyZW50TmFtZSk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQyPSBET01VdGlsLmdldEFuY2VzdG9yKGVsZW1lbnQyLCBwYXJlbnROYW1lKTtcbiAgICAgICAgICAgIGlmIChwYXJlbnQxICE9PSBudWxsICYmIHBhcmVudDIgIT0gbnVsbCAmJiBET01VdGlsLnNhbWVOb2RlKHBhcmVudDEsIHBhcmVudDIpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgc3RhdGljIHNoYWRvd1Jvb3ROb2RlKG5vZGU6IE5vZGUpIDogTm9kZSB8IG51bGwge1xuICAgICAgICBsZXQgbmQgPSBub2RlO1xuICAgICAgICB3aGlsZSAobmQgIT0gbnVsbCAmJiBuZC5ub2RlVHlwZSAhPT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKVxuICAgICAgICAgICAgbmQgPSBuZC5wYXJlbnROb2RlO1xuICAgICAgICByZXR1cm4gbmQ7XG5cbiAgICB9XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4vRE9NVXRpbFwiO1xuXG5leHBvcnQgY2xhc3MgRE9NV2Fsa2VyIHtcbiAgICByb290IDogTm9kZTtcbiAgICBub2RlIDogTm9kZTtcbiAgICBiRW5kVGFnOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoZWxlbWVudCA6IE5vZGUsIGJFbmQ/IDogYm9vbGVhbiwgcm9vdD8gOiBOb2RlKSB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvb3QgfHwgZWxlbWVudDtcbiAgICAgICAgdGhpcy5ub2RlID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5iRW5kVGFnID0gKGJFbmQgPT0gdW5kZWZpbmVkID8gZmFsc2UgOiBiRW5kID09IHRydWUpO1xuICAgIH1cblxuICAgIGF0Um9vdCgpIDogYm9vbGVhbiB7XG4gICAgICAgIGlmICgodGhpcyBhcyBhbnkpLm93bmVyRWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5yb290ID09PSB0aGlzLm5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucm9vdC5pc1NhbWVOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb290LmlzU2FtZU5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJvb3QuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvb3QuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcy5ub2RlKSA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCAtIHRyeSBvdXIgYmVzdFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5wYXJlbnROb2RlID09PSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmV4dE5vZGUoKSA6IGJvb2xlYW4ge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuYkVuZFRhZykge1xuICAgICAgICAgICAgICAgIGxldCBpZnJhbWVOb2RlID0gKHRoaXMubm9kZSBhcyBIVE1MSUZyYW1lRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnROb2RlID0gKHRoaXMubm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IHNsb3RFbGVtZW50ID0gKHRoaXMubm9kZSBhcyBIVE1MU2xvdEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyBcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5ub2RlLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09IFwiSUZSQU1FXCJcbiAgICAgICAgICAgICAgICAgICAgJiYgRE9NVXRpbC5pc05vZGVWaXNpYmxlKGlmcmFtZU5vZGUpXG4gICAgICAgICAgICAgICAgICAgICYmIGlmcmFtZU5vZGUuY29udGVudERvY3VtZW50XG4gICAgICAgICAgICAgICAgICAgICYmIGlmcmFtZU5vZGUuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvd25lckVsZW1lbnQgPSB0aGlzLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IGlmcmFtZU5vZGUuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudCA9IG93bmVyRWxlbWVudDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyBcbiAgICAgICAgICAgICAgICAgICAgJiYgRE9NVXRpbC5pc05vZGVWaXNpYmxlKGVsZW1lbnROb2RlKVxuICAgICAgICAgICAgICAgICAgICAmJiBlbGVtZW50Tm9kZS5zaGFkb3dSb290XG4gICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnROb2RlLnNoYWRvd1Jvb3QuZmlyc3RDaGlsZClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvd25lckVsZW1lbnQgPSB0aGlzLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IGVsZW1lbnROb2RlLnNoYWRvd1Jvb3Q7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgXG4gICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic2xvdFwiXG4gICAgICAgICAgICAgICAgICAgICYmIHNsb3RFbGVtZW50LmFzc2lnbmVkTm9kZXMoKS5sZW5ndGggPiAwKSBcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzbG90T3duZXIgPSB0aGlzLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHNsb3RFbGVtZW50LmFzc2lnbmVkTm9kZXMoKVswXTtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lciA9IHNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8gfHwgdGhpcy5ub2RlLm5vZGVUeXBlID09PSAxMSkgLyogTm9kZS5FTEVNRU5UX05PREUgKi8gJiYgdGhpcy5ub2RlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0Um9vdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSAodGhpcy5ub2RlIGFzIGFueSkub3duZXJFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLm5vZGVUeXBlICE9PSAxIHx8ICEodGhpcy5ub2RlIGFzIEhUTUxFbGVtZW50KS5oYXNBdHRyaWJ1dGUoXCJzbG90XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIHdhc24ndCBhIG5hbWVkIHNsb3QsIGxvb2sgZm9yIHRoZSBuZXh0IHVubmFtZWQgbm9kZSB0byBwdXQgaW4gdGhlIHNsb3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuID0gdGhpcy5ub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYgdGhpcy5ub2RlLm5vZGVUeXBlID09PSAxICYmICh0aGlzLm5vZGUgYXMgSFRNTEVsZW1lbnQpLmhhc0F0dHJpYnV0ZShcInNsb3RcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5ub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYW5vdGhlciB1bm5hbWVkIHNsb3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2xvdE93bmVyID0gKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSBuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGUgYXMgYW55KS5zbG90T3duZXIgPSBzbG90T3duZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9ICh0aGlzLm5vZGUgYXMgYW55KS5zbG90T3duZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9ICh0aGlzLm5vZGUgYXMgYW55KS5zbG90T3duZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChcbiAgICAgICAgICAgICh0aGlzLm5vZGUubm9kZVR5cGUgIT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8gJiYgdGhpcy5ub2RlLm5vZGVUeXBlICE9PSAxMSAmJiB0aGlzLm5vZGUubm9kZVR5cGUgIT09IDMgLyogTm9kZS5URVhUX05PREUgKi8pXG4gICAgICAgICAgICB8fCAodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxICYmICh0aGlzLm5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwiYUNoZWNrZXJcIikgPT09IFwiQUNFXCIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByZXZOb2RlKCkgOiBib29sZWFuIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgaWYgKHRoaXMuYkVuZFRhZykge1xuICAgICAgICAgICAgICAgIGxldCBpZnJhbWVOb2RlID0gKHRoaXMubm9kZSBhcyBIVE1MSUZyYW1lRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnROb2RlID0gKHRoaXMubm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyBcbiAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5ub2RlLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09IFwiSUZSQU1FXCJcbiAgICAgICAgICAgICAgICAgICAgJiYgRE9NVXRpbC5pc05vZGVWaXNpYmxlKGlmcmFtZU5vZGUpXG4gICAgICAgICAgICAgICAgICAgICYmIGlmcmFtZU5vZGUuY29udGVudERvY3VtZW50XG4gICAgICAgICAgICAgICAgICAgICYmIGlmcmFtZU5vZGUuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudCkgXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb3duZXJFbGVtZW50ID0gdGhpcy5ub2RlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSBpZnJhbWVOb2RlLmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8gXG4gICAgICAgICAgICAgICAgICAgICYmIERPTVV0aWwuaXNOb2RlVmlzaWJsZShlbGVtZW50Tm9kZSlcbiAgICAgICAgICAgICAgICAgICAgJiYgZWxlbWVudE5vZGUuc2hhZG93Um9vdFxuICAgICAgICAgICAgICAgICAgICAmJiBlbGVtZW50Tm9kZS5zaGFkb3dSb290Lmxhc3RDaGlsZCkgXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb3duZXJFbGVtZW50ID0gdGhpcy5ub2RlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSBlbGVtZW50Tm9kZS5zaGFkb3dSb290O1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ub2RlIGFzIGFueSkub3duZXJFbGVtZW50ID0gb3duZXJFbGVtZW50O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyB8fCB0aGlzLm5vZGUubm9kZVR5cGUgPT09IDExKSAmJiB0aGlzLm5vZGUubGFzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5sYXN0Q2hpbGQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdFJvb3QoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5ub2RlIGFzIGFueSkub3duZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9ICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKFxuICAgICAgICAgICAgKHRoaXMubm9kZS5ub2RlVHlwZSAhPT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyAmJiB0aGlzLm5vZGUubm9kZVR5cGUgIT09IDExKVxuICAgICAgICAgICAgfHwgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGhpcy5ub2RlIGFzIEVsZW1lbnQpLmdldEF0dHJpYnV0ZShcImFDaGVja2VyXCIpID09PSBcIkFDRVwiKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBDb21tb25NYXBwZXIgfSBmcm9tIFwiLi4vY29tbW9uL0NvbW1vbk1hcHBlclwiO1xuXG5leHBvcnQgY2xhc3MgU3R5bGVNYXBwZXIgZXh0ZW5kcyBDb21tb25NYXBwZXIge1xuICAgIGNoaWxkcmVuSGF2ZVJvbGUobm9kZTogTm9kZSwgcm9sZTogc3RyaW5nKSA6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0Um9sZShub2RlOiBOb2RlKSA6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcImNvbXB1dGVkXCI7XG4gICAgfVxuICAgIGdldE5hbWVzcGFjZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJjc3NcIlxuICAgIH1cbiAgICBnZXRBdHRyaWJ1dGVzKG5vZGU6IE5vZGUpIDogeyBba2V5OnN0cmluZ106IHN0cmluZyB9IHtcbiAgICAgICAgbGV0IHJldFZhbCA9IHt9O1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgY29uc3QgZWxlbSA9IG5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4PHN0eWxlLmxlbmd0aDsgKytpZHgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gc3R5bGVbaWR4XS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHJldFZhbFtuYW1lXSA9IHN0eWxlW25hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxufVxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIiIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vc3JjL2luZGV4LnRzXCIpO1xuIiwiIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsdUJBQWEsQ0FBQyxXQUFXO3FCQUMxQztvQkFDRDt3QkFDSSxFQUFFLEVBQUUscUJBQXFCO3dCQUN6QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsMEJBQTBCO3dCQUM5QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsZ0RBQWdEO3dCQUNwRCxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsOENBQThDO3dCQUNsRCxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsdURBQXVEO3dCQUMzRCxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsZ0NBQWdDO3dCQUNwQyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsMEJBQTBCO3dCQUM5QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsNEJBQTRCO3dCQUNoQyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUscUNBQXFDO3dCQUN6QyxLQUFLLEVBQUUscUJBQVcsQ0FB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QUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsd0JBQXdCO3dCQUM1QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsNkJBQTZCO3dCQUNqQyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUscUJBQXFCO3dCQUN6QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsNkJBQTZCO3dCQUNqQyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsNkJBQTZCO3dCQUNqQyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsd0JBQXdCO3dCQUM1QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsa0JBQWtCO3dCQUN0QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsa0JBQWtCO3dCQUN0QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsYUFBYTt3QkFDakIsS0FBSyxFQUFFLHFC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QVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsbUJBQW1CO3dCQUN2QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsa0JBQWtCO3dCQUN0QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsaUNBQWlDO3dCQUNyQyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsMkJBQTJCO3dCQUMvQixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsaUNBQWlDO3dCQUNyQyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsa0NBQWtDO3dCQUN0QyxLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsb0JBQW9CO3dCQUN4QixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUsdUJBQXVCO3dCQUMzQixLQUFLLEVBQUUscUJBQVcsQ0FBQyxTQUFTO3dCQUM1QixZQUFZLEVBQUUsdUJBQWEsQ0FBQyxTQUFTO3FCQUN4QztvQkFDRDt3QkFDSSxFQUFFLEVBQUUseUNBQXlDO3dC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QUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQzdtRyxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDeDFILENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUM3aUUsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUM1ekQsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDenhCLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDM2pCLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDeGtFLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQ25xQyxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQ2xsQyxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDeDFCLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUMzNUgsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDempFLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN2MUgsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUMzK0YsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQy9pQyxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQy9uRSxDQUFFLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDblcsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUMzOUIsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDN3BHLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN4cUcsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQztJQUN4eUIsQ0FBRSxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDbmpCLENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQ2gzQyxDQUFFLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUM7SUFDbjVELENBQUUsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDO0lBQzE4QyxDQUFFLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FB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QVM7UUFDckIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsWUFBWSxFQUFFLFNBQVM7UUFDdkIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLFNBQVM7UUFDakIsWUFBWSxFQUFFLFNBQVM7UUFDdkIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsWUFBWSxFQUFFLFNBQVM7UUFDdkIsVUFBVSxFQUFFLFNBQVM7UUFDckIsVUFBVSxFQUFFLFNBQVM7UUFDckIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLFNBQVM7UUFDcEIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsT0FBTyxFQUFF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QUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7Q0FDL29DO0FBRUQsSUFBSSxnQkFBZ0IsR0FBVyxDQUFDO1FBQzVCLEVBQUUsRUFBRSxpQ0FBaUM7UUFDckMsT0FBTyxFQUFFLE9BQU87UUFDaEIsR0FBRyxFQUFFLFVBQUMsT0FBb0IsRUFBRSxPQUFZO1lBQ3BDLElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFtQixDQUFDO1lBQ3ZELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLEtBQUssR0FBUyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3pDLE9BQU8sS0FBSyxFQUFFO2dCQUNWLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUMzRCxPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUNsQjtnQkFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUM3QjtZQUNELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLFVBQVUsR0FBYSxXQUFXLENBQUM7WUFDdkMsT0FBTyxVQUFVLEVBQUU7Z0JBQ2YsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRTtvQkFDOUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDakI7Z0JBQ0QsVUFBVSxHQUFHLGlCQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xEO1lBQ0QsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDckIsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUNELElBQUksVUFBVSxHQUFHLGdCQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pELElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixPQUFPLHNCQUFRLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUMzQjtpQkFBTTtnQkFDSCxPQUFPLHNCQUFRLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM1QjtRQUNMLENBQUM7S0FDSjtJQUNEO1FBQ0k7OztXQUdHO1FBQ0gsRUFBRSxFQUFFLGlDQUFpQztRQUNyQyxPQUFPLEVBQUUsT0FBTztRQUNoQixHQUFHLEVBQUUsVUFBQyxPQUFvQixFQUFFLE9BQVk7WUFDcEMsSUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQW1CLENBQUM7WUFDdkQsSUFBSSxVQUFVLEdBQUcsaUJBQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEQsT0FBTyxVQUFVLEVBQUU7Z0JBQ2YsSUFBSSxnQkFBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ3ZFLE9BQU8sSUFBSSxDQUFDO2lCQUNmO2dCQUNELFVBQVUsR0FBRyxpQkFBTyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNsRDtZQUNELElBQUksVUFBVSxHQUFHLGdCQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2pELElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0IsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixPQUFPLHNCQUFRLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDMUI7aUJBQU07Z0JBQ0gsZ0JBQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN2RSxPQUFPLHNCQUFRLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUM1QjtRQUNMLENBQUM7S0FDSjtDQUNBO0FBQ1EsNENBQWdCOzs7Ozs7Ozs7Ozs7QUNwRnpCOzs7Ozs7Ozs7Ozs7OzsrRUFjK0U7OztBQUUvRSwyRkFBb0g7QUFHcEgsSUFBSSxlQUFlLEdBQVcsQ0FBQztRQUMzQixFQUFFLEVBQUUsa0NBQWtDO1FBQ3RDLE9BQU8sRUFBRSxVQUFVO1FBQ25CLEdBQUcsRUFBRSxVQUFDLE9BQW9CLEVBQUUsT0FBWTtZQUNwQyxJQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBd0IsQ0FBQztZQUM1RCxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUNqQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQ2xDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTzttQkFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU87bUJBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPO21CQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTzttQkFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sRUFBRTtnQkFDeEMsT0FBTyxzQkFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNILE9BQU8sc0JBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQzthQUN0QjtRQUNMLENBQUM7S0FDSixDQUFDO0FBQ08sMENBQWU7Ozs7Ozs7Ozs7OztBQ3ZDeEI7Ozs7Ozs7Ozs7Ozs7OytFQWMrRTs7O0FBRS9FLDJGQUFvSDtBQUNwSCwyRkFBK0M7QUFHL0MsSUFBSSxlQUFlLEdBQVcsQ0FBQztRQUMzQixFQUFFLEVBQUUsd0JBQXdCO1FBQzVCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLEdBQUcsRUFBRSxVQUFDLE9BQW9CLEVBQUUsT0FBWTtZQUNwQyxJQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBbUIsQ0FBQztZQUN2RCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxVQUFVLEdBQWEsV0FBVyxDQUFDO1lBQ3ZDLE9BQU8sVUFBVSxFQUFFO2dCQUNmLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUU7b0JBQ2pHLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ2YsTUFBTTtpQkFDVDtnQkFDRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO29CQUM5QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUNqQjtnQkFDRCxVQUFVLEdBQUcsaUJBQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbEQ7WUFDRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxLQUFLLEdBQVUsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUMxQyxPQUFPLEtBQUssRUFBRTtnQkFDVixJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDM0QsT0FBTyxHQUFHLElBQUksQ0FBQztpQkFDbEI7Z0JBQ0QsS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUNwQyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDbEMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBWSxFQUFFO2dCQUMvRCxPQUFPLHNCQUFRLEVBQUMsQ0FBQyxFQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUNuQztpQkFBTTtnQkFDSCxPQUFPLHNCQUFRLEVBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzthQUNwQztRQUNMLENBQUM7S0FDSjtJQUNEO1FBQ0ksRUFBRSxFQUFFLGlDQUFpQztRQUNyQyxPQUFPLEVBQUUsT0FBTztRQUNoQixHQUFHLEVBQUUsVUFBQyxPQUFvQixFQUFFLE9BQVk7WUFDcEMsSUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQW1CLENBQUM7WUFDdkQsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksVUFBVSxHQUFhLFdBQVcsQ0FBQztZQUN2QyxPQUFPLFVBQVUsRUFBRTtnQkFDZixJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxFQUFFO29CQUM5QyxNQUFNLEdBQUcsSUFBSSxDQUFDO2lCQUNqQjtnQkFDRCxVQUFVLEdBQUcsaUJBQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDbEQ7WUFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQztZQUNwQyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLEtBQUssTUFBTSxJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUU7Z0JBQzdELE9BQU8sc0JBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQzthQUN0QjtpQkFBTTtnQkFDSCxPQUFPLHNCQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEI7UUFDTCxDQUFDO0tBQ0osQ0FBQztBQUNPLDBDQUFlOzs7Ozs7Ozs7Ozs7QUNyRnhCOzs7Ozs7Ozs7Ozs7OzsrRUFjK0U7OztBQUUvRSxnSEFBa0Q7QUFFbEQsK0hBQXNEO0FBQ3RELCtIQUFzRDtBQUV0RCxJQUFJLFdBQVcsR0FBVyxFQUFFLENBQUMsTUFBTSxDQUMvQiwrQkFBZ0IsRUFDaEIsbUNBQWUsRUFDZixtQ0FBZSxDQUNsQixDQUFDO0FBQ08sa0NBQVc7Ozs7Ozs7Ozs7OztBQzFCcEI7Ozs7Ozs7Ozs7Ozs7OytFQWMrRTs7O0FBSy9FLElBQUksY0FBYyxHQUFjLEVBQUUsQ0FBQztBQTRDMUIsd0NBQWM7Ozs7Ozs7Ozs7OztBQy9EdkI7Ozs7Ozs7Ozs7Ozs7OytFQWMrRTs7O0FBRS9FLDZHQUFnRDtBQUVoRCxJQUFJLFNBQVMsR0FBRyxFQUFFO0FBU1QsOEJBQVM7QUFSbEIsU0FBUyxPQUFPLENBQUMsT0FBTztJQUNwQixLQUFLLElBQU0sR0FBRyxJQUFJLE9BQU8sRUFBRTtRQUN2QixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2pDO0FBQ0wsQ0FBQztBQUVELE9BQU8sQ0FBQyxlQUFRLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FDekJsQjs7Ozs7Ozs7Ozs7Ozs7K0VBYytFOzs7QUFFL0Usb0ZBQW9DO0FBQzNCLHlGQURBLGlCQUFPLFFBQ0E7Ozs7Ozs7Ozs7OztBQ2pCaEI7Ozs7Ozs7Ozs7Ozs7OytFQWMrRTs7O0FBRS9FLDBHQUE4QztBQUM5Qyw0RkFBeUM7QUFFekMsSUFBSSxRQUFRLEdBQUcsRUFBRTtBQVdSLDRCQUFRO0FBVGpCLFNBQVMsTUFBTSxDQUFDLE1BQU07SUFDbEIsS0FBSyxJQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUU7UUFDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMvQjtBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsYUFBTyxDQUFDLENBQUM7QUFDaEIsTUFBTSxDQUFDLGVBQVMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7QUM1QmxCOzs7Ozs7Ozs7Ozs7OzsrRUFjK0U7OztBQUUvRSxnSEFBa0Q7QUFDbEQsa0dBQTZDO0FBRTdDLElBQUksVUFBVSxHQUFHLEVBQUU7QUFLVixnQ0FBVTtBQUhuQiwrQkFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsaUJBQVMsQ0FBQyxDQUFDO0FBQzFDLCtCQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxtQkFBVyxDQUFDLENBQUM7Ozs7Ozs7Ozs7OztBQ3RCNUM7Ozs7Ozs7Ozs7Ozs7OytFQWMrRTs7O0FBRS9FLHlIQUF3RDtBQUN4RCwyR0FBbUQ7QUFFbkQsSUFBSSxhQUFhLEdBQUcsRUFBRTtBQUtiLHNDQUFhO0FBSHRCLHFDQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyx1QkFBWSxDQUFDLENBQUM7QUFDbkQscUNBQWEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLHlCQUFjLENBQUMsQ0FBQzs7Ozs7Ozs7Ozs7O0FDdEJyRDs7Ozs7Ozs7Ozs7Ozs7K0VBYytFOzs7QUFHL0UscUZBQXlDO0FBRXpDO0lBQUE7UUFNYyxrQkFBYSxHQUFjLElBQUksQ0FBQztRQUNoQyw4QkFBeUIsR0FBYyxJQUFJLENBQUM7UUFDNUMsa0JBQWEsR0FLbEIsSUFBSSxDQUFDO1FBQ0EscUJBQWdCLEdBQWlCLElBQUksQ0FBQztJQXdHcEQsQ0FBQztJQXRHRyxnQ0FBUyxHQUFULFVBQVUsSUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsNEJBQUssR0FBTCxVQUFNLElBQVU7UUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDO2dCQUNsQixRQUFRLEVBQUUsRUFBRTtnQkFDWixTQUFTLEVBQUUsRUFBRTthQUNoQixDQUFDLENBQUM7UUFFSCxJQUFJLFNBQVMsR0FBWSxFQUFFLENBQUM7UUFDNUIsSUFBSSxNQUFNLEdBQUcsaUJBQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsd0JBQXdCLEVBQUU7WUFDNUQsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QixNQUFNLEdBQUcsaUJBQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkM7UUFDRCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLEtBQXVCLFVBQVMsRUFBVCx1QkFBUyxFQUFULHVCQUFTLEVBQVQsSUFBUyxFQUFFO1lBQTdCLElBQU0sUUFBUTtZQUNmLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO1lBQ3ZDLE9BQU8sT0FBTyxFQUFFO2dCQUNaLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO2FBQ3JDO1lBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QixLQUFzQixVQUFRLEVBQVIscUJBQVEsRUFBUixzQkFBUSxFQUFSLElBQVEsRUFBRTtnQkFBM0IsSUFBTSxTQUFPO2dCQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBTyxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2QjtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsb0NBQWEsR0FBYixVQUFjLElBQVU7UUFDcEIsSUFBSSxJQUFhLENBQUM7UUFDbEIsSUFBSSx1QkFBdUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BKLElBQUksdUJBQXVCLEVBQUU7WUFDekIsSUFBSSxHQUFHLE1BQU0sQ0FBQztZQUNkLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUM7YUFBTTtZQUNILElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztZQUNwQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUMxRTtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNqQixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDcEIsVUFBVSxFQUFFLGNBQWMsQ0FBQyxRQUFRLEdBQUMsR0FBRyxHQUFDLElBQUksR0FBQyxHQUFHLEdBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBQyxHQUFHO2dCQUNuRixXQUFXLEVBQUUsRUFBRTthQUNsQixDQUFDLENBQUM7U0FDTjtRQUVELElBQUksSUFBSSxHQUFHLEVBQUU7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztZQUN2QixJQUFJLEVBQUUsSUFBSTtZQUNWLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzlCLElBQUksRUFBRSxJQUFJO1lBQ1YsVUFBVSxFQUFFLElBQUk7WUFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtZQUNsRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7U0FDL0IsQ0FBQztJQUNOLENBQUM7SUFFTyxtQ0FBWSxHQUFwQjtRQUNJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxnQ0FBUyxHQUFULFVBQVUsSUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztRQUV4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsaUNBQVUsR0FBVixVQUFXLElBQVU7UUFDakIsSUFBSSxNQUFNLEdBQWtCLEVBQUUsQ0FBQztRQUMvQixLQUFrQixVQUFxQixFQUFyQixTQUFJLENBQUMsZ0JBQWdCLEVBQXJCLGNBQXFCLEVBQXJCLElBQXFCLEVBQUU7WUFBcEMsSUFBTSxHQUFHO1lBQ1YseUJBQXlCO1lBQ3pCLG1CQUFtQjtZQUNuQixnREFBZ0Q7WUFDaEQsa0NBQWtDO1lBQ2xDLHVCQUF1QjtZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BCO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQy9ELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0wsbUJBQUM7QUFBRCxDQUFDO0FBdEhxQixvQ0FBWTs7Ozs7Ozs7Ozs7O0FDbkJsQzs7Ozs7Ozs7Ozs7Ozs7K0VBYytFOzs7QUFLL0UsaURBQWlEO0FBQ2pELGtCQUFrQjtBQUNsQixjQUFjO0FBQ2QsMERBQTBEO0FBQzFELCtFQUErRTtBQUMvRSxpRUFBaUU7QUFDakUsdUVBQXVFO0FBQ3ZFLDBFQUEwRTtBQUMxRSxpQkFBaUI7QUFDakIsNEVBQTRFO0FBQzVFLG1FQUFtRTtBQUNuRSxzRkFBc0Y7QUFDdEYsK0VBQStFO0FBQy9FLHdCQUF3QjtBQUN4Qix3RUFBd0U7QUFDeEUsOEJBQThCO0FBQzlCLHlFQUF5RTtBQUN6RSw4QkFBOEI7QUFDOUIscUVBQXFFO0FBQ3JFLDBDQUEwQztBQUMxQyxxRUFBcUU7QUFDckUsaURBQWlEO0FBQ2pELHFFQUFxRTtBQUNyRSwyQ0FBMkM7QUFDM0MsaUVBQWlFO0FBQ2pFO0lBQ0ksa0JBQ1csU0FBa0IsRUFDbEIsSUFBWSxFQUNaLEVBQVcsRUFDWCxLQUFjO1FBSGQsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osT0FBRSxHQUFGLEVBQUUsQ0FBUztRQUNYLFVBQUssR0FBTCxLQUFLLENBQVM7UUFFckIsSUFBSSxDQUFDLFNBQVM7ZUFDSCxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxXQUFXLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDekQ7WUFDSSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixHQUFDLEVBQUUsR0FBQyxVQUFVLENBQUMsQ0FBQztTQUN0RDtRQUNELElBQUksU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxXQUFXLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDckgsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1NBQ3BFO0lBQ0wsQ0FBQztJQUVNLDBCQUFPLEdBQWQsVUFBZSxPQUFtQjtRQUM5QixJQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUztTQUNqQzthQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDekIsdUVBQXVFO1lBQ3ZFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTTtZQUNILG9FQUFvRTtZQUNwRSxJQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLElBQUksWUFBWSxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUU7Z0JBQ3pCLE9BQU8sWUFBWSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7YUFDM0M7aUJBQU0sSUFBSSxZQUFZLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDakMsT0FBTyxZQUFZLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQzthQUMzQztpQkFBTSxJQUFJLFlBQVksQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFO2dCQUNoQyxPQUFPLFlBQVksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO2FBQzNDO2lCQUFNLElBQUksWUFBWSxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ2pDLE9BQU8sWUFBWSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7YUFDM0M7aUJBQU07Z0JBQ0gsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQzthQUNoRTtTQUNKO0lBQ0wsQ0FBQztJQUNMLGVBQUM7QUFBRCxDQUFDO0FBM0NZLDRCQUFRO0FBNkNyQjtJQUNJLGtCQUNXLFNBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLElBQVksRUFDWixLQUFpQixFQUNqQixTQUFpQjtRQUpqQixjQUFTLEdBQVQsU0FBUyxDQUFTO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNwQixJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQy9DO0lBQ0wsQ0FBQztJQUVFLDBCQUFPLEdBQWQsVUFDSSxXQUFpQyxFQUNqQyxTQUFpQjtRQUVqQixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFdBQVcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDO2VBQzlGLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUk7bUJBQzlELFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2hHLElBQUksYUFBYTtlQUNWLFFBQVEsQ0FBQyxJQUFJLEtBQUssR0FBRztlQUNyQixRQUFRLENBQUMsU0FBUyxLQUFLLEtBQUs7ZUFDNUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPO21CQUN4RCxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsRUFBRTtZQUN0RSxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxRQUFRLENBQUMsU0FBUyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXZELHVCQUF1QjtRQUN2QixJQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLEtBQTJCLFVBQVMsRUFBVCx1QkFBUyxFQUFULHVCQUFTLEVBQVQsSUFBUyxFQUFFO1lBQWpDLElBQU0sWUFBWTtZQUNuQixLQUFLLEdBQUcsS0FBSyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFBRSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVMLGVBQUM7QUFBRCxDQUFDO0FBekNZLDRCQUFRO0FBMkNyQjtJQUdJLGlCQUFZLE9BQWU7UUFGM0IsZ0JBQVcsR0FBZ0IsRUFBRTtRQUd6QixJQUFJLGtCQUFrQixHQUFjLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUMvRixJQUFJLE9BQU8sR0FBZ0IsRUFBRTtRQUM3QixLQUFtQixVQUFrQixFQUFsQix5Q0FBa0IsRUFBbEIsZ0NBQWtCLEVBQWxCLElBQWtCLEVBQUU7WUFBbEMsSUFBTSxJQUFJO1lBQ1gsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1lBQzNFLElBQUksUUFBUSxHQUFnQixFQUFFLENBQUM7WUFDL0IsS0FBdUIsVUFBcUMsRUFBckMsVUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQXJDLGNBQXFDLEVBQXJDLElBQXFDLEVBQUU7Z0JBQXpELElBQU0sUUFBUTtnQkFDZixJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7Z0JBQzdFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQ3RCLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQ3BCLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFDMUIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDLENBQUM7YUFDTjtZQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEMsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQzVCLElBQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRU0sb0JBQVksR0FBbkIsVUFBb0IsT0FBZTtRQUMvQixPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sYUFBSyxHQUFaLFVBQWEsT0FBZTtRQUN4QixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVwRSxJQUFJLE1BQU0sR0FBZSxFQUFFLENBQUM7UUFFNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxxQkFBYSxHQUFwQixVQUFxQixPQUFlO1FBQ2hDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLE9BQU8sRUFBRTtZQUNULElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDN0IsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMxQjtpQkFBTTtnQkFDSCxLQUFnQixVQUFrQixFQUFsQixZQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFsQixjQUFrQixFQUFsQixJQUFrQixFQUFFO29CQUEvQixJQUFNLENBQUM7b0JBQ1IsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDcEI7YUFDSjtTQUNKO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNMLGNBQUM7QUFBRCxDQUFDO0FBbkVZLDBCQUFPOzs7Ozs7Ozs7Ozs7QUNwSXBCOzs7Ozs7Ozs7Ozs7OzsrRUFjK0U7OztBQUUvRSxxRkFBcUo7QUFDckosMkZBQTZDO0FBQzdDLG1GQUF3RDtBQUN4RCx3RkFBMEM7QUFFMUMsMkZBQTZDO0FBQzdDLHFGQUF5QztBQVV6QztJQUlJLHFCQUFvQixJQUFVLEVBQVMsVUFBb0I7UUFBdkMsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVU7UUFDdkQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3RGLGVBQU0sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0ksZ0NBQW9CLEdBQTNCLFVBQTRCLElBQWM7UUFDdEMsdUJBQXVCO1FBQ3ZCLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUVyQix1REFBdUQ7UUFDdkQsV0FBVyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpELDhDQUE4QztRQUM5QyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRXJDLGdEQUFnRDtRQUNoRCxJQUFJLGNBQWMsS0FBSyxJQUFJLElBQUksT0FBTyxjQUFjLEtBQUssV0FBVyxFQUFFO1lBRWxFLHVHQUF1RztZQUN2RyxLQUFLLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pELElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxlQUFlO29CQUFFLFNBQVM7Z0JBQ3pELG9DQUFvQztnQkFDcEMsV0FBVyxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQzthQUN0RjtTQUNKO1FBRUQsaUJBQWlCO1FBQ2pCLFdBQVcsSUFBSSxHQUFHLENBQUM7UUFFbkIsMEJBQTBCO1FBQzFCLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx5QkFBRyxHQUFILFVBQUksTUFBYyxFQUFFLE9BQW9CLEVBQUUsT0FBWSxFQUFFLGtCQUF5QztRQUM3RixJQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZDLElBQUksT0FBa0MsQ0FBQztRQUN2QyxJQUFJO1lBQ0EsT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUNqRTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsSUFBTSxHQUFHLEdBQVUsQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9FLE1BQU0sQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsQ0FBQyxPQUFPLFlBQVksS0FBSyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdkI7UUFDRCxJQUFJLE1BQU0sR0FBbUIsRUFBRSxDQUFDO1FBQ2hDLEtBQXFCLFVBQU8sRUFBUCxtQkFBTyxFQUFQLHFCQUFPLEVBQVAsSUFBTyxFQUFFO1lBQXpCLElBQU0sTUFBTTtZQUNiLElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckYsSUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssSUFBTSxFQUFFLElBQUksT0FBTyxFQUFFO2dCQUN0QixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVE7YUFDbEM7WUFDRCxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTNELE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUk7Z0JBQ3pCLElBQUksRUFBRSxJQUFJO2dCQUNWLFFBQVEsRUFBRSxPQUFPLEdBQUMsU0FBUztnQkFDM0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixPQUFPLEVBQUUsT0FBTztnQkFDaEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dCQUMvQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87Z0JBQ3ZCLE1BQU0sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTtnQkFDN0IsT0FBTyxFQUFFLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBZSxDQUFDO2FBQzVFLENBQUM7U0FDTDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDTCxrQkFBQztBQUFELENBQUM7QUFFRDtJQWVJO1FBZEEsWUFBTyxHQUF1QyxFQUFFLENBQUM7UUFDakQsWUFBTyxHQUE0QixFQUFFLENBQUM7UUFDdEMsbUJBQWMsR0FBbUMsRUFBRSxDQUFDO1FBQ3BELFdBQU0sR0FBWSxFQUFFO1FBQ3BCLFlBQU8sR0FBYSxFQUFFO1FBRWQsY0FBUyxHQUViLEVBQUU7UUFFRSxjQUFTLEdBRWIsRUFBRTtRQUdGLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUkscUJBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVjLGtCQUFXLEdBQTFCLFVBQTJCLFNBQWdCO1FBQ3ZDLE9BQVEsU0FBUyxDQUFDLGFBQStCLENBQUMsUUFBUSxDQUFDO1FBQzNELElBQUksRUFBRSxHQUFHLElBQUkscUJBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxHQUFHO1lBQ0MsT0FBUSxFQUFFLENBQUMsSUFBcUIsQ0FBQyxRQUFRLENBQUM7WUFDMUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksT0FBUSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQStCLENBQUMsUUFBUSxDQUFDO1NBQ3JGLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO0lBQzVCLENBQUM7SUFFRCxvQkFBRyxHQUFILFVBQUksSUFBcUIsRUFBRSxPQUFZO1FBQ25DLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNmLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMxQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsd0JBQXdCLEVBQUU7WUFDOUMsSUFBSSxHQUFJLElBQWlCLENBQUMsZUFBZSxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFFLElBQUksQ0FBQyxhQUFxQixDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQU0sTUFBTSxHQUFZO1lBQ3BCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsV0FBVyxFQUFFLENBQUM7WUFDZCxRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1NBQ2Y7UUFDRCxJQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25DLHlCQUF5QjtRQUN6QixLQUFLLElBQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7UUFFRCxrQ0FBa0M7UUFDbEMsR0FBRztZQUNDLG9EQUFvRDtZQUNwRCxJQUFNLGtCQUFrQixHQUEwQixFQUFFO1lBQ3BELEtBQUssSUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQ2pCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0UsbUZBQW1GO29CQUMvRSx1Q0FBdUM7b0JBQ3ZDLFVBQVU7b0JBQ1YscUZBQXFGO29CQUNqRix3REFBd0Q7b0JBQ3BELGdHQUFnRztvQkFDcEcsSUFBSTtvQkFDUixJQUFJO29CQUNSLElBQUk7aUJBQ1A7cUJBQU07b0JBQ0gsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNuRjthQUNKO1lBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFO21CQUN4QixDQUFDLGlCQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7dUJBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU87dUJBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLFVBQVU7dUJBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU87dUJBQzlDLENBQUMsaUJBQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ2pELEVBQ0g7Z0JBQ0UsSUFBSSxPQUFPLEdBQWlCLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxJQUFNLEVBQUUsSUFBSSxrQkFBa0IsRUFBRTtvQkFDakMsSUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLElBQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6QyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO2lCQUMxQjtnQkFFRCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxRQUFRLEdBQUcsRUFBRTtnQkFDakIsS0FBMkIsVUFBYSxFQUFiLCtCQUFhLEVBQWIsMkJBQWEsRUFBYixJQUFhLEVBQUU7b0JBQXJDLElBQU0sWUFBWTtvQkFDbkIsSUFBSSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7b0JBQ2hDLEtBQWtCLFVBQW9DLEVBQXBDLGlCQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQXBDLGNBQW9DLEVBQXBDLElBQW9DLEVBQUU7d0JBQW5ELElBQU0sR0FBRzt3QkFDVixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs0QkFBRSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7cUJBQ3BEO29CQUNELElBQUksb0JBQW9CLEVBQUU7d0JBQ3RCLElBQUksT0FBTyxHQUFtQixFQUFFLENBQUM7d0JBQ2pDLElBQUk7NEJBQ0EsT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzt5QkFDMUU7d0JBQUMsT0FBTyxHQUFHLEVBQUU7NEJBQ1Ysd0RBQXdEOzRCQUN4RCxtQ0FBbUM7eUJBQ3RDO3dCQUNELDhDQUE4Qzt3QkFDOUMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTs0QkFDdEIsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO3lCQUN6Qzt3QkFDRCxLQUFxQixVQUFPLEVBQVAsbUJBQU8sRUFBUCxxQkFBTyxFQUFQLElBQU8sRUFBRTs0QkFBekIsSUFBTSxNQUFNOzRCQUNiLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUM1QixNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7NEJBQ25DLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDckIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLHlCQUFlLENBQUMsSUFBSSxFQUFFO2dDQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQzs2QkFDbEM7eUJBQ0o7cUJBQ0o7aUJBQ0o7YUFDSjtTQUNKLFFBQVEsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQzVCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBQyxLQUFLLENBQUM7UUFDOUMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCw0QkFBVyxHQUFYLFVBQVksT0FBaUI7UUFDekIsS0FBSyxJQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN4QztRQUNELEtBQXFCLFVBQWEsRUFBYixZQUFPLElBQUksRUFBRSxFQUFiLGNBQWEsRUFBYixJQUFhLEVBQUU7WUFBL0IsSUFBTSxNQUFNO1lBQ2IsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBQyxNQUFNLEVBQUMsdUJBQXVCLENBQUMsQ0FBQzthQUNuRTtpQkFBTTtnQkFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDdkM7U0FDSjtJQUNMLENBQUM7SUFFRCx3QkFBTyxHQUFQLFVBQVEsTUFBYztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELDRCQUFXLEdBQVg7UUFDSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDdkI7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQseUJBQVEsR0FBUixVQUFTLEtBQWE7UUFDbEIsS0FBbUIsVUFBSyxFQUFMLGVBQUssRUFBTCxtQkFBSyxFQUFMLElBQUssRUFBRTtZQUFyQixJQUFNLElBQUk7WUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELHdCQUFPLEdBQVAsVUFBUSxJQUFVO1FBQ2QsSUFBSSxJQUFJLEdBQWMsaUJBQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xELElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBQyxNQUFNLEVBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMzRSxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM1QixLQUFrQixVQUFJLEVBQUosYUFBSSxFQUFKLGtCQUFJLEVBQUosSUFBSSxFQUFFO1lBQW5CLElBQU0sR0FBRztZQUNWLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNwQixJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLE1BQU0sR0FBQyxJQUFJLEdBQUMsR0FBRyxDQUFDO2FBQzVCO1lBQ0QsRUFBRSxHQUFHLENBQUM7WUFDTixJQUFJLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDMUMsSUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7WUFDL0MsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLFNBQVMsR0FBQyxHQUFHLEdBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUN2RCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2pEO2lCQUFNO2dCQUNILElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2pEO1NBQ0o7SUFDTCxDQUFDO0lBRUQsMEJBQVMsR0FBVCxVQUFVLEdBQVc7UUFDakIsS0FBSyxJQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQsMkJBQVUsR0FBVixVQUFXLEdBQVk7UUFDbkIsS0FBSyxJQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsMkJBQVUsR0FBVixVQUFXLE1BQWMsRUFBRSxPQUF3QixFQUFFLE9BQWtCO1FBQ25FLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO1lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUM1QyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sTUFBTSxHQUFDLEdBQUcsR0FBQyxPQUFPLENBQUM7UUFDaEQsT0FBTyxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDdkMsVUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksSUFBSyxjQUFPLENBQUMsVUFBVSxDQUFDLEVBQW5CLENBQW1CLENBQ2hFLENBQUM7SUFDTixDQUFDO0lBRUQsd0JBQU8sR0FBUCxVQUFRLE1BQWMsRUFBRSxPQUF3QjtRQUM1QyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRTtZQUNmLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxRQUFRLENBQUMsQ0FBQztTQUN6QztRQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFDN0MsT0FBTyxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDSCxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxNQUFNLEdBQUMsR0FBRyxHQUFDLE9BQU8sQ0FBQztRQUN4QyxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsMEJBQVMsR0FBVCxVQUFVLE1BQWU7UUFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDakQsQ0FBQztJQUVjLFlBQUssR0FBcEIsVUFBcUIsU0FBcUIsRUFDdEMsV0FBaUM7UUFFakMsSUFBSSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7UUFDMUMsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNuRCxPQUFPLEtBQUssQ0FBQztTQUNoQjthQUFNO1lBQ0gsRUFBRSxPQUFPLENBQUM7WUFDVixFQUFFLE9BQU8sQ0FBQztTQUNiO1FBQ0QsT0FBTyxPQUFPLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUU7WUFDakMsSUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLElBQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JFLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ2Qsd0NBQXdDO29CQUN4QyxPQUFPLEtBQUssQ0FBQztpQkFDaEI7cUJBQU07b0JBQ0gscUNBQXFDO29CQUNyQyxFQUFFLE9BQU8sQ0FBQztvQkFDVixFQUFFLE9BQU8sQ0FBQztpQkFDYjthQUNKO2lCQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUU7Z0JBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDaEIsMkJBQTJCO29CQUMzQixJQUFJLFdBQVcsRUFBRTt3QkFDYixFQUFFLE9BQU8sQ0FBQztxQkFDYjtvQkFDRCxvREFBb0Q7b0JBQ3BELEVBQUUsT0FBTyxDQUFDO2lCQUNiO3FCQUFNLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ3JCLCtDQUErQztvQkFDL0MsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNILGlGQUFpRjtvQkFDakYsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO29CQUN4QixLQUFLLElBQUksU0FBUyxHQUFHLE9BQU8sR0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRTt3QkFDekUsV0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7cUJBQ3JFO29CQUNELElBQUksV0FBVzt3QkFBRSxPQUFPLEtBQUssQ0FBQzs7d0JBQ3pCLEVBQUUsT0FBTyxDQUFDO2lCQUNsQjthQUNKO2lCQUFNO2dCQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLEdBQUMsSUFBSSxDQUFDLFNBQVMsR0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2FBQzVFO1NBQ0o7UUFDRCxPQUFPLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU8saUNBQWdCLEdBQXhCLFVBQXlCLE9BQThCO1FBQ25ELElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLE9BQU8sR0FBbUIsRUFBRSxDQUFDO1FBQ2pDLFNBQVMsVUFBVSxDQUFDLEtBQW9CO1lBQ3BDLEtBQW1CLFVBQUssRUFBTCxlQUFLLEVBQUwsbUJBQUssRUFBTCxJQUFLLEVBQUU7Z0JBQXJCLElBQU0sSUFBSTtnQkFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQ3pFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxFQUFFO3dCQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7cUJBQ2xDO2lCQUNKO2FBQ0o7UUFDTCxDQUFDO1FBQ0QsS0FBSyxJQUFNLEVBQUUsSUFBSSxPQUFPLEVBQUU7WUFDdEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFDLEdBQUcsR0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDekQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDeEIsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNwQztZQUNELEtBQUssSUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUNoQixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUNyQzthQUNKO1lBQ0QsSUFBSSxJQUFJLEtBQUssRUFBRSxHQUFDLE9BQU8sRUFBRTtnQkFDckIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxFQUFFLEdBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQzVCLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBQyxLQUFLLENBQUMsQ0FBQztxQkFDdkM7aUJBQ0o7cUJBQU07b0JBQ0gsSUFBSSxFQUFFLEdBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQzNCLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDdEM7aUJBQ0o7YUFDSjtTQUNKO1FBQ0Qsd0JBQXdCO1FBQ3hCLEtBQUssSUFBSSxHQUFHLEdBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFDLENBQUMsRUFBQyxDQUFDO1lBQ2IsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixXQUFXO1lBQ1gsSUFBTSxLQUFLLEdBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFNLEtBQUssR0FBVSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzVCLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUU7Z0JBQzNDLE9BQU8sQ0FBQyxDQUFDO2FBQ1o7aUJBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtnQkFDbEQsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO2lCQUFNLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUNqRCxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDdkMsT0FBTyxDQUFDLENBQUM7aUJBQ1o7cUJBQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQzlDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ2I7YUFDSjtZQUNELE9BQU8sQ0FBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUNGLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDTCxhQUFDO0FBQUQsQ0FBQztBQXJWWSx3QkFBTTs7Ozs7Ozs7Ozs7O0FDOUhuQjs7Ozs7Ozs7Ozs7Ozs7K0VBYytFOzs7QUFFL0U7SUFBQTtJQUdBLENBQUM7SUFGVSxZQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsZUFBUSxHQUFHLHVDQUF1QyxDQUFDO0lBQzlELGFBQUM7Q0FBQTtBQUhZLHdCQUFNOzs7Ozs7Ozs7Ozs7QUNoQm5COzs7Ozs7Ozs7Ozs7OzsrRUFjK0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvRSwwR0FBc0Q7QUFHdEQ7SUFBK0IsNkJBQVk7SUFBM0M7O0lBMkNBLENBQUM7SUExQ0csb0NBQWdCLEdBQWhCLFVBQWlCLElBQVUsRUFBRSxJQUFZO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCwyQkFBTyxHQUFQLFVBQVEsSUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsZ0NBQVksR0FBWjtRQUNJLE9BQU8sS0FBSztJQUNoQixDQUFDO0lBQ0QsaUNBQWEsR0FBYixVQUFjLElBQVU7UUFDcEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsdUJBQXVCLEVBQUU7WUFDN0MsSUFBTSxJQUFJLEdBQUcsSUFBZSxDQUFDO1lBQzdCLEtBQUssSUFBSSxHQUFHLEdBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRTtnQkFDL0MsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO2FBQzVEO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsNkJBQVMsR0FBVCxVQUFVLElBQVU7UUFDaEIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxxQkFBcUIsRUFBRTtZQUMzQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO2dCQUN6RyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUM7YUFDaEU7WUFDRCxJQUFJLE1BQU0sR0FBSSxJQUFnQixDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFdkQseUdBQXlHO1lBQ3pHLElBQUksTUFBTSxFQUFFO2dCQUNSLE9BQU87b0JBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7b0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDO29CQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztvQkFDL0MsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7aUJBQ2hELENBQUM7YUFDTDtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNMLGdCQUFDO0FBQUQsQ0FBQyxDQTNDOEIsMkJBQVksR0EyQzFDO0FBM0NZLDhCQUFTOzs7Ozs7Ozs7Ozs7QUNuQnRCOzs7Ozs7Ozs7Ozs7OzsrRUFjK0U7OztBQUUvRTtJQUFBO0lBbUlBLENBQUM7SUFqSVUsaUJBQVMsR0FBaEIsVUFBaUIsSUFBVSxFQUFFLEtBQWM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JDLENBQUMsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVNLG1CQUFXLEdBQWxCLFVBQW1CLElBQVUsRUFBRSxLQUFjO1FBQ3pDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtZQUNuRCxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVNLHFCQUFhLEdBQXBCLFVBQXFCLElBQVU7UUFDM0IsSUFBSTtZQUNBLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztZQUNmLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLHVCQUF1QixFQUFFO2dCQUN4RCxJQUFJLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN0QztZQUNELElBQUksSUFBSSxHQUFHLElBQWUsQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUN2QyxHQUFHO2dCQUNDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLE1BQU07b0JBQUUsT0FBTyxLQUFLLENBQUM7Z0JBQ3hDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFO29CQUMvQixHQUFHLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztvQkFDcEIsSUFBSSxHQUFHLEtBQUssUUFBUTt3QkFBRSxPQUFPLEtBQUssQ0FBQztpQkFDdEM7Z0JBQ0QsSUFBSSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEMsUUFBUSxJQUFJLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNmO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFTSxnQkFBUSxHQUFmLFVBQWdCLENBQU8sRUFBRSxDQUFPO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNULE9BQU8sSUFBSSxDQUFDO1NBQ2Y7YUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUU7WUFDckIsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO2FBQU0sSUFBSSxDQUFDLENBQUMsdUJBQXVCLEVBQUU7WUFDbEMsT0FBTyxDQUFDLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdDO2FBQU07WUFDSCxtREFBbUQ7WUFDbkQsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFTSx1QkFBZSxHQUF0QixVQUF1QixDQUFTO1FBQzVCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLGtCQUFVLEdBQWpCLFVBQWtCLENBQVM7UUFDdkIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLGtCQUFVLEdBQWpCLFVBQWtCLElBQVU7UUFDeEIsSUFBSSxDQUFDLEdBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRTtZQUN4QixJQUFLLENBQWdCLENBQUMsSUFBSSxFQUFFO2dCQUN4QixDQUFDLEdBQUksQ0FBZ0IsQ0FBQyxJQUFJLENBQUM7YUFDOUI7aUJBQU0sSUFBSyxDQUFTLENBQUMsWUFBWSxFQUFFO2dCQUNoQyxDQUFDLEdBQUksQ0FBUyxDQUFDLFlBQVksQ0FBQzthQUMvQjtpQkFBTTtnQkFDSCxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQ1o7U0FDSjtRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVNLHFCQUFhLEdBQXBCLFVBQXFCLElBQVU7UUFDM0IsSUFBSSxJQUFJLEdBQWEsSUFBZSxDQUFDO1FBQ3JDLEdBQUc7WUFDQyxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQVksQ0FBQztTQUM5QyxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQscUVBQXFFO0lBQzlELHFCQUFhLEdBQXBCLFVBQXFCLFFBQVEsRUFBRSxRQUFRO1FBQ25DLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRTtZQUN0QixJQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLElBQU0sT0FBTyxHQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELElBQU0sT0FBTyxHQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3pELElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztnQkFDekUsT0FBTyxJQUFJLENBQUM7U0FDbkI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sc0JBQWMsR0FBckIsVUFBc0IsSUFBVTtRQUM1QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsc0JBQXNCO1lBQzVELEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ3ZCLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLDhCQUFzQixHQUE3QixVQUE4QixHQUFRO1FBQ2xDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFDckIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQzthQUFNLElBQUksR0FBRyxZQUFZLElBQUksRUFBRTtZQUM1QixPQUFPLEdBQUcsQ0FBQztTQUNkO2FBQU07WUFDSCxJQUFJLE1BQU0sVUFBQztZQUNYLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUNsQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNaLEtBQW1CLFVBQUcsRUFBSCxXQUFHLEVBQUgsaUJBQUcsRUFBSCxJQUFHLEVBQUU7b0JBQW5CLElBQU0sSUFBSTtvQkFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUNsRDthQUNKO2lCQUFNO2dCQUNILE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ1osS0FBSyxJQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUU7b0JBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0o7WUFDRCxPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFDTCxjQUFDO0FBQUQsQ0FBQztBQW5JWSwwQkFBTzs7Ozs7Ozs7Ozs7O0FDaEJwQjs7Ozs7Ozs7Ozs7Ozs7K0VBYytFOzs7QUFFL0UsZ0ZBQW9DO0FBRXBDO0lBS0ksbUJBQVksT0FBYyxFQUFFLElBQWUsRUFBRSxJQUFZO1FBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELDBCQUFNLEdBQU47UUFDSSxJQUFLLElBQVksQ0FBQyxZQUFZO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0Q7YUFBTTtZQUNILG1EQUFtRDtZQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFRCw0QkFBUSxHQUFSO1FBQ0ksR0FBRztZQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNmLElBQUksVUFBVSxHQUFJLElBQUksQ0FBQyxJQUEwQixDQUFDO2dCQUNsRCxJQUFJLFdBQVcsR0FBSSxJQUFJLENBQUMsSUFBb0IsQ0FBQztnQkFDN0MsSUFBSSxXQUFXLEdBQUksSUFBSSxDQUFDLElBQXdCO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyx1QkFBdUI7dUJBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVE7dUJBQzdDLGlCQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQzt1QkFDakMsVUFBVSxDQUFDLGVBQWU7dUJBQzFCLFVBQVUsQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUNqRDtvQkFDSSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO29CQUN0RCxJQUFJLENBQUMsSUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7aUJBQ2xEO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLHVCQUF1Qjt1QkFDcEQsaUJBQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO3VCQUNsQyxXQUFXLENBQUMsVUFBVTt1QkFDdEIsV0FBVyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQ3hDO29CQUNJLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLElBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2lCQUNsRDtxQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUM7dUJBQzVCLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTTt1QkFDN0MsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQzdDO29CQUNJLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLENBQUMsSUFBWSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7aUJBQzVDO3FCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ3hJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ3BDO3FCQUFNO29CQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2lCQUN2QjthQUNKO2lCQUFNO2dCQUNILElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNmLE9BQU8sS0FBSyxDQUFDO2lCQUNoQjtxQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29CQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO29CQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7cUJBQU0sSUFBSyxJQUFJLENBQUMsSUFBWSxDQUFDLFlBQVksRUFBRTtvQkFDeEMsSUFBSSxDQUFDLElBQUksR0FBSSxJQUFJLENBQUMsSUFBWSxDQUFDLFlBQVksQ0FBQztvQkFDNUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO3FCQUFNLElBQUssSUFBSSxDQUFDLElBQVksQ0FBQyxTQUFTLEVBQUU7b0JBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLElBQW9CLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUM5RSxpRkFBaUY7d0JBQ2pGLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO3dCQUM5QixPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLElBQUssSUFBSSxDQUFDLElBQW9CLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFOzRCQUNyRixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7eUJBQzdCO3dCQUNELElBQUksQ0FBQyxFQUFFOzRCQUNILGdDQUFnQzs0QkFDaEMsSUFBSSxTQUFTLEdBQUksSUFBSSxDQUFDLElBQVksQ0FBQyxTQUFTLENBQUM7NEJBQzdDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDOzRCQUNiLElBQUksQ0FBQyxJQUFZLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQzs0QkFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7eUJBQ3hCOzZCQUFNOzRCQUNILElBQUksQ0FBQyxJQUFJLEdBQUksSUFBSSxDQUFDLElBQVksQ0FBQyxTQUFTLENBQUM7NEJBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3lCQUN2QjtxQkFDSjt5QkFBTTt3QkFDSCxJQUFJLENBQUMsSUFBSSxHQUFJLElBQUksQ0FBQyxJQUFZLENBQUMsU0FBUyxDQUFDO3dCQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztxQkFDdkI7aUJBQ0o7cUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO3FCQUFNO29CQUNILE9BQU8sS0FBSyxDQUFDO2lCQUNoQjthQUNKO1NBQ0osUUFDRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixDQUFDO2VBQzdILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFLLElBQUksQ0FBQyxJQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxLQUFLLENBQUMsRUFDNUY7UUFDRixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsNEJBQVEsR0FBUjtRQUNJLEdBQUc7WUFDQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsSUFBSSxVQUFVLEdBQUksSUFBSSxDQUFDLElBQTBCLENBQUM7Z0JBQ2xELElBQUksV0FBVyxHQUFJLElBQUksQ0FBQyxJQUFvQixDQUFDO2dCQUM3QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyx1QkFBdUI7dUJBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVE7dUJBQzdDLGlCQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQzt1QkFDakMsVUFBVSxDQUFDLGVBQWU7dUJBQzFCLFVBQVUsQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUNqRDtvQkFDSSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDO29CQUN0RCxJQUFJLENBQUMsSUFBWSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7aUJBQ2xEO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLHVCQUF1Qjt1QkFDcEQsaUJBQU8sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO3VCQUNsQyxXQUFXLENBQUMsVUFBVTt1QkFDdEIsV0FBVyxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQ3ZDO29CQUNJLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLElBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2lCQUNsRDtxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUMvRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2lCQUNuQztxQkFBTTtvQkFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7YUFDSjtpQkFBTTtnQkFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDZixPQUFPLEtBQUssQ0FBQztpQkFDaEI7cUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO3FCQUFNLElBQUssSUFBSSxDQUFDLElBQVksQ0FBQyxZQUFZLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUksSUFBSSxDQUFDLElBQVksQ0FBQyxZQUFZLENBQUM7b0JBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2lCQUN4QjtxQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7cUJBQU07b0JBQ0gsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO2FBQ0o7U0FDSixRQUNHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztlQUM1RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSyxJQUFJLENBQUMsSUFBZ0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQzVGO1FBQ0YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNMLGdCQUFDO0FBQUQsQ0FBQztBQXpKWSw4QkFBUzs7Ozs7Ozs7Ozs7O0FDbEJ0Qjs7Ozs7Ozs7Ozs7Ozs7K0VBYytFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0UsMEdBQXNEO0FBRXREO0lBQWlDLCtCQUFZO0lBQTdDOztJQXNCQSxDQUFDO0lBckJHLHNDQUFnQixHQUFoQixVQUFpQixJQUFVLEVBQUUsSUFBWTtRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsNkJBQU8sR0FBUCxVQUFRLElBQVU7UUFDZCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBQ0Qsa0NBQVksR0FBWjtRQUNJLE9BQU8sS0FBSztJQUNoQixDQUFDO0lBQ0QsbUNBQWEsR0FBYixVQUFjLElBQVU7UUFDcEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsdUJBQXVCLEVBQUU7WUFDN0MsSUFBTSxJQUFJLEdBQUcsSUFBZSxDQUFDO1lBQzdCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BFLEtBQUssSUFBSSxHQUFHLEdBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFO2dCQUNyQyxJQUFNLE1BQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sQ0FBQyxNQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBSSxDQUFDLENBQUM7YUFDOUI7U0FDSjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDTCxrQkFBQztBQUFELENBQUMsQ0F0QmdDLDJCQUFZLEdBc0I1QztBQXRCWSxrQ0FBVzs7Ozs7OztVQ2xCeEI7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7OztVRXRCQTtVQUNBO1VBQ0E7VUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2FjZS8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvYXBpL0lFbmdpbmUudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2FyaWEvQVJJQURlZmluaXRpb25zLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9hcmlhL0FSSUFNYXBwZXIudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvQ2hlY2tlci50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L2hlbHAvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ubHMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9hcmlhX2hpZGRlbl9mb2N1c19taXN1c2UudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9pbmRleC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1hbmNob3ItcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtYXBwbGV0LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWFwcGxpY2F0aW9uLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWFyZWEtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtYXJpYS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1hcmlhTGFiZWxpbmctcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtYmxpbmstcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtYmxvY2txdW90ZS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1ib2R5LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWNhbnZhcy1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1jb2xvci1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1jb21ib2JveC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1lbGVtLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWVtYmVkLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWZpZWxkc2V0LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWZpZ3VyZS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1mb2N1cy1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1mb250LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LWZvcm0tcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtZnJhbWUtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtaGVhZGluZy1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1oaWVyYXJjaHktcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtaHRtbC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1pbWctcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtaW5wdXQtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtbGFiZWwtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtbGlzdC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1tYXJxdWVlLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LW1lZGlhLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LW1ldGEtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtb2JqZWN0LXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXMvcnB0LXNjcmlwdC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC1zZWxlY3QtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtc3R5bGUtcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS9ydWxlcy9ycHQtdGV4dC1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC10aXRsZS1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3JwdC12aWRlby1ydWxlcy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3J1bGVzL3RhYmxlLXJ1bGVzLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvcnVsZXNldHMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS91dGlsL2FuY2VzdG9yLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2FjY2Vzc2liaWxpdHkvdXRpbC9mcmFnbWVudC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3V0aWwvbGFuZy50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3V0aWwvbGVnYWN5LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2Rlc2lnbi9ubHMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvZGVzaWduL3J1bGVzL2Rlc2lnbi1jb2xvci50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9kZXNpZ24vcnVsZXMvZGVzaWduLWdyaWRsYXlvdXQudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvZGVzaWduL3J1bGVzL2Rlc2lnbi10eXBvZ3JhcGh5LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jaGVja2VyL2Rlc2lnbi9ydWxlcy9pbmRleC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9kZXNpZ24vcnVsZXNldHMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvaGVscC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9pbmRleC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvY2hlY2tlci9ubHMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvcnVsZXMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NoZWNrZXIvcnVsZXNldHMudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NvbW1vbi9Db21tb25NYXBwZXIudHMiLCJ3ZWJwYWNrOi8vYWNlLy4vc3JjL3YyL2NvbW1vbi9Db250ZXh0LnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jb21tb24vRW5naW5lLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9jb25maWcvQ29uZmlnLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9kb20vRE9NTWFwcGVyLnRzIiwid2VicGFjazovL2FjZS8uL3NyYy92Mi9kb20vRE9NVXRpbC50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvZG9tL0RPTVdhbGtlci50cyIsIndlYnBhY2s6Ly9hY2UvLi9zcmMvdjIvc3R5bGUvU3R5bGVNYXBwZXIudHMiLCJ3ZWJwYWNrOi8vYWNlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2FjZS93ZWJwYWNrL2JlZm9yZS1zdGFydHVwIiwid2VicGFjazovL2FjZS93ZWJwYWNrL3N0YXJ0dXAiLCJ3ZWJwYWNrOi8vYWNlL3dlYnBhY2svYWZ0ZXItc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiLi92Mi9jb21tb24vQ29udGV4dFwiXG4vLyBpbXBvcnQgeyBTaW11bGF0b3IgfSBmcm9tIFwiLi92Mi9zaW11bGF0b3JcIlxuaW1wb3J0IHsgQ2hlY2tlciB9IGZyb20gXCIuL3YyL2NoZWNrZXJcIlxuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuL3YyL2FyaWEvQVJJQU1hcHBlclwiO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSBcIi4vdjIvY29uZmlnL0NvbmZpZ1wiO1xuaW1wb3J0IHsgRE9NV2Fsa2VyIH0gZnJvbSBcIi4vdjIvZG9tL0RPTVdhbGtlclwiO1xuXG5TdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggPSBTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGggfHwgZnVuY3Rpb24gKHN0cikge1xuICAgIHJldHVybiB0aGlzLmluZGV4T2Yoc3RyKSA9PT0gMDtcbn1cblN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgPSBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzIHx8IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN0cikgIT09IC0xO1xufVxuQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzID0gQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzIHx8IGZ1bmN0aW9uIChzdHIpIHtcbiAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN0cikgIT09IC0xO1xufVxuLypcbmZ1bmN0aW9uIHNpbURlbW8odGltZW91dD86IG51bWJlcikge1xuICAgIGlmICghdGltZW91dCkgdGltZW91dCA9IDA7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgbGV0IHNpbSA9IG5ldyBTaW11bGF0b3IoKTtcbiAgICAgICAgbGV0IHMgPSBzaW0ucmVuZGVySXRlbShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuICAgICAgICBjb25zb2xlLmdyb3VwKFwiLS0tIEl0ZW0gVmlldyAtLS1cIik7XG4gICAgICAgIGNvbnNvbGUubG9nKHMpO1xuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoXCItLS0gTGluayBWaWV3IC0tLVwiKTtcbiAgICAgICAgcyA9IHNpbS5yZW5kZXJMaW5rKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG4gICAgICAgIGNvbnNvbGUubG9nKHMpO1xuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgfSwgdGltZW91dCk7XG59XG4qL1xuZnVuY3Rpb24gY2hlY2tEZW1vKHRpbWVvdXQ/OiBudW1iZXIpIHtcbiAgICBpZiAoIXRpbWVvdXQpIHRpbWVvdXQgPSAwO1xuICAgIGxldCBjaGVja2VyID0gbmV3IENoZWNrZXIoKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICBjaGVja2VyLmNoZWNrKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgW1wiSUJNX0FjY2Vzc2liaWxpdHlcIiwgXCJJQk1fRGVzaWduXCJdKVxuICAgICAgICAudGhlbihmdW5jdGlvbihyZXBvcnQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcG9ydCk7XG4gICAgICAgICAgICBjb25zdCB2YWxzID0ge1xuICAgICAgICAgICAgICAgIFwiRkFJTFwiOiAwLFxuICAgICAgICAgICAgICAgIFwiUE9URU5USUFMXCI6IDEsXG4gICAgICAgICAgICAgICAgXCJNQU5VQUxcIjogMixcbiAgICAgICAgICAgICAgICBcIlBBU1NcIjogM1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaWR4PTA7IGlkeDxyZXBvcnQucmVzdWx0cy5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcG9ydC5yZXN1bHRzW2lkeF0udmFsdWVbMV0gPT09IFwiUEFTU1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydC5yZXN1bHRzLnNwbGljZShpZHgtLSwxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXBvcnQucmVzdWx0cy5zb3J0KChhLGIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYS5jYXRlZ29yeSAhPSBiLmNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNhdGVnb3J5LmxvY2FsZUNvbXBhcmUoYi5jYXRlZ29yeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhLnBhdGhbXCJhcmlhXCJdID09PSBiLnBhdGhbXCJhcmlhXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxzW2EudmFsdWVbMV1dLXZhbHNbYi52YWx1ZVsxXV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhLnBhdGhbXCJhcmlhXCJdLmxvY2FsZUNvbXBhcmUoYi5wYXRoW1wiYXJpYVwiXSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgbGV0IGxhc3RQYXRoID0gbnVsbDtcbiAgICAgICAgICAgIGxldCBjYXRlZ29yeSA9IG51bGw7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXBvcnQucmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeSAhPT0gcmVzdWx0LmNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFBhdGggPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gcmVzdWx0LmNhdGVnb3J5O1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwKHJlc3VsdC5jYXRlZ29yeSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5wYXRoW1wiYXJpYVwiXSAhPSBsYXN0UGF0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFBhdGggIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsYXN0UGF0aCA9IHJlc3VsdC5wYXRoW1wiYXJpYVwiXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RQYXRoID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmdyb3VwKFwicGFnZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXAobGFzdFBhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC52YWx1ZSwgcmVzdWx0Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICB9KTtcbiAgICB9LCB0aW1lb3V0KTtcbn1cblxuZXhwb3J0IHsgQ2hlY2tlciwgQ29udGV4dCwgQVJJQU1hcHBlciwgY2hlY2tEZW1vLCBDb25maWcvKiwgc2ltRGVtbyovLCBET01XYWxrZXIgfTsiLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IElNYXBSZXN1bHQgfSBmcm9tIFwiLi9JTWFwcGVyXCI7XG5cbmV4cG9ydCBlbnVtIGVSdWxlQ29uZmlkZW5jZSB7XG4gICAgUEFTUyA9IFwiUEFTU1wiLFxuICAgIEZBSUwgPSBcIkZBSUxcIixcbiAgICBQT1RFTlRJQUwgPSBcIlBPVEVOVElBTFwiLFxuICAgIE1BTlVBTCA9IFwiTUFOVUFMXCJcbn1cblxuZXhwb3J0IGVudW0gZVJ1bGVQb2xpY3kge1xuICAgIFZJT0xBVElPTiA9IFwiVklPTEFUSU9OXCIsXG4gICAgUkVDT01NRU5EQVRJT04gPSBcIlJFQ09NTUVOREFUSU9OXCIsXG4gICAgSU5GT1JNQVRJT04gPSBcIklORk9STUFUSU9OXCJcbn1cblxuZXhwb3J0IGVudW0gZVRvb2xraXRMZXZlbCB7XG4gICAgTEVWRUxfT05FID0gXCIxXCIsXG4gICAgTEVWRUxfVFdPID0gXCIyXCIsXG4gICAgTEVWRUxfVEhSRUUgPSBcIjNcIixcbiAgICBMRVZFTF9GT1VSID0gXCI0XCJcbn1cblxuZXhwb3J0IGVudW0gZVJ1bGVDYXRlZ29yeSB7XG4gICAgQUNDRVNTSUJJTElUWSA9IFwiQWNjZXNzaWJpbGl0eVwiLFxuICAgIERFU0lHTiA9IFwiRGVzaWduXCIsXG4gICAgT1RIRVIgPSBcIk90aGVyXCJcbn1cblxuZXhwb3J0IGVudW0gZVJ1bGVzZXRUeXBlIHtcbiAgICBERUZBVUxUID0gXCJkZWZhdWx0XCIsXG4gICAgRVhURU5TSU9OID0gXCJleHRlbnNpb25cIlxufVxuXG5leHBvcnQgZnVuY3Rpb24gUnVsZVBhc3MocmVhc29uSWQ6IG51bWJlciB8IHN0cmluZywgbWVzc2FnZUFyZ3M/IDogc3RyaW5nW10sIGFwaUFyZ3M/IDogYW55W10pIDogUnVsZVJlc3VsdCB7XG4gICAgaWYgKHR5cGVvZiByZWFzb25JZCA9PT0gXCJ1bmRlZmluZWRcIiB8fCByZWFzb25JZCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiUmVhc29uIElEIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogW2VSdWxlUG9saWN5LklORk9STUFUSU9OLCBlUnVsZUNvbmZpZGVuY2UuUEFTU10sXG4gICAgICAgIHJlYXNvbklkOiByZWFzb25JZCxcbiAgICAgICAgbWVzc2FnZUFyZ3M6IG1lc3NhZ2VBcmdzIHx8IFtdLFxuICAgICAgICBhcGlBcmdzOiBhcGlBcmdzIHx8IFtdXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUnVsZVJlbmRlcihyZWFzb25JZDogbnVtYmVyIHwgc3RyaW5nLCBtZXNzYWdlQXJncz8gOiBzdHJpbmdbXSwgYXBpQXJncz8gOiBhbnlbXSkgOiBSdWxlUmVzdWx0IHtcbiAgICBpZiAodHlwZW9mIHJlYXNvbklkID09PSBcInVuZGVmaW5lZFwiIHx8IHJlYXNvbklkID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFzb24gSUQgbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBbZVJ1bGVQb2xpY3kuSU5GT1JNQVRJT04sIGVSdWxlQ29uZmlkZW5jZS5QQVNTXSxcbiAgICAgICAgcmVhc29uSWQ6IDAsXG4gICAgICAgIG1lc3NhZ2VBcmdzOiBtZXNzYWdlQXJncyB8fCBbXSxcbiAgICAgICAgYXBpQXJnczogYXBpQXJncyB8fCBbXVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBSdWxlRmFpbChyZWFzb25JZDogbnVtYmVyIHwgc3RyaW5nLCBtZXNzYWdlQXJncz8gOiBzdHJpbmdbXSwgYXBpQXJncz8gOiBhbnlbXSkgOiBSdWxlUmVzdWx0IHtcbiAgICBpZiAodHlwZW9mIHJlYXNvbklkID09PSBcInVuZGVmaW5lZFwiIHx8IHJlYXNvbklkID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFzb24gSUQgbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBbZVJ1bGVQb2xpY3kuSU5GT1JNQVRJT04sIGVSdWxlQ29uZmlkZW5jZS5GQUlMXSxcbiAgICAgICAgcmVhc29uSWQ6IHJlYXNvbklkLFxuICAgICAgICBtZXNzYWdlQXJnczogbWVzc2FnZUFyZ3MgfHwgW10sXG4gICAgICAgIGFwaUFyZ3M6IGFwaUFyZ3MgfHwgW11cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSdWxlUG90ZW50aWFsKHJlYXNvbklkOiBudW1iZXIgfCBzdHJpbmcsIG1lc3NhZ2VBcmdzPyA6IHN0cmluZ1tdLCBhcGlBcmdzPyA6IGFueVtdKSA6IFJ1bGVSZXN1bHQge1xuICAgIGlmICh0eXBlb2YgcmVhc29uSWQgPT09IFwidW5kZWZpbmVkXCIgfHwgcmVhc29uSWQgPT09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIlJlYXNvbiBJRCBtdXN0IGJlIGRlZmluZWRcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFtlUnVsZVBvbGljeS5JTkZPUk1BVElPTiwgZVJ1bGVDb25maWRlbmNlLlBPVEVOVElBTF0sXG4gICAgICAgIHJlYXNvbklkOiByZWFzb25JZCxcbiAgICAgICAgbWVzc2FnZUFyZ3M6IG1lc3NhZ2VBcmdzIHx8IFtdLFxuICAgICAgICBhcGlBcmdzOiBhcGlBcmdzIHx8IFtdXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUnVsZU1hbnVhbChyZWFzb25JZDogbnVtYmVyIHwgc3RyaW5nLCBtZXNzYWdlQXJncz8gOiBzdHJpbmdbXSwgYXBpQXJncz8gOiBhbnlbXSkgOiBSdWxlUmVzdWx0IHtcbiAgICBpZiAodHlwZW9mIHJlYXNvbklkID09PSBcInVuZGVmaW5lZFwiIHx8IHJlYXNvbklkID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFzb24gSUQgbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBbZVJ1bGVQb2xpY3kuSU5GT1JNQVRJT04sIGVSdWxlQ29uZmlkZW5jZS5NQU5VQUxdLFxuICAgICAgICByZWFzb25JZDogcmVhc29uSWQsXG4gICAgICAgIG1lc3NhZ2VBcmdzOiBtZXNzYWdlQXJncyB8fCBbXSxcbiAgICAgICAgYXBpQXJnczogYXBpQXJncyB8fCBbXVxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUnVsZVJlc3VsdCA9IHtcbiAgICB2YWx1ZTogW2VSdWxlUG9saWN5LCBlUnVsZUNvbmZpZGVuY2VdLFxuICAgIHJlYXNvbklkPzogbnVtYmVyIHwgc3RyaW5nLFxuICAgIG1lc3NhZ2VBcmdzPzogc3RyaW5nW10sXG4gICAgYXBpQXJncz86IGFueVtdXG59XG5cbmV4cG9ydCB0eXBlIFJ1bGVEZXRhaWxzID0gUnVsZVJlc3VsdCAmIHtcbiAgICBydWxlSWQ6IHN0cmluZyxcblxuICAgIG5vZGU6IE5vZGUsXG4gICAgLy8gbmFtZXNwYWNlOiBzdHJpbmcsXG4gICAgY2F0ZWdvcnk/OiBlUnVsZUNhdGVnb3J5LFxuICAgIHBhdGg6IHsgW25zOiBzdHJpbmddIDogc3RyaW5nIH0sXG5cbiAgICBydWxlVGltZTogbnVtYmVyLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBib3VuZHM/OiB7XG4gICAgICAgIHRvcDogbnVtYmVyLFxuICAgICAgICBsZWZ0OiBudW1iZXIsXG4gICAgICAgIHdpZHRoOiBudW1iZXIsXG4gICAgICAgIGhlaWdodDogbnVtYmVyXG4gICAgfSxcbiAgICBzbmlwcGV0OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgUnVsZUNvbnRleHRIaWVyYXJjaHkgPSB7IFtuYW1lc3BhY2U6IHN0cmluZ10gOiBJTWFwUmVzdWx0W10gfTtcblxuZXhwb3J0IHR5cGUgUnVsZUNvbnRleHQgPSB7XG4gICAgW25hbWVzcGFjZTogc3RyaW5nXSA6IElNYXBSZXN1bHRcbn1cblxuZXhwb3J0IHR5cGUgUnVsZSA9IHtcbiAgICAvLyBVbmlxdWUgc3RyaW5nIGlkZW50aWZpZXIgZm9yIHRoaXMgcnVsZSAoc2hvdWxkIGJlIGh1bWFuIHVuZGVyc3RhbmRhYmxlKVxuICAgIC8vIE5MUyBjb2RlcyBhbmQgaGVscCBzb3VyY2VzIHdpbGwgYmUgYmFzZWQgb2ZmIG9mIHRoaXMgaWRcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLy8gU2VlIHNyYy92Mi9jb21tb24vQ29udGV4dC50cyBmb3IgdmFsaWQgY29udGV4dHNcbiAgICBjb250ZXh0OiBzdHJpbmc7XG5cbiAgICAvLyBBcnJheSBvZiBydWxlcyB0aGF0IG11c3QgcGFzcyB0byBhbGxvdyB0aGlzIHZhbGlkYXRlIHRvIHJ1biAtIHRoZXkgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbnRleHQgcHJvcGVydHlcbiAgICBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXVxuXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSwgY29udGV4dEhpZXJhcmNoaWVzPzogUnVsZUNvbnRleHRIaWVyYXJjaHkpID0+IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W11cblxuICAgIGVuYWJsZWQ/OiBib29sZWFuXG59XG5cblxuZXhwb3J0IHR5cGUgUmVwb3J0ID0ge1xuICAgIHJlc3VsdHM6IFJ1bGVEZXRhaWxzW10sXG4gICAgbnVtRXhlY3V0ZWQ6IG51bWJlcixcbiAgICBydWxlVGltZTogbnVtYmVyLFxuICAgIC8vIFRoaXMgbWF5IGJlIHVuZGVmaW5lZCBmb3IgYSBmaWx0ZXJlZCByZXBvcnRcbiAgICB0b3RhbFRpbWU/OiBudW1iZXIsXG4gICAgbmxzPzoge1xuICAgICAgICBbcnVsZUlkOiBzdHJpbmddOiB7XG4gICAgICAgICAgICBbcmVhc29uSWQ6IHN0cmluZ106IHN0cmluZ1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBObHNNYXAgPSB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nW11cbn1cblxuZXhwb3J0IHR5cGUgSGVscE1hcCA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFbmdpbmUge1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm0gYSBzY2FuIG9uIGEgZG9jdW1lbnQgb3Igc3VidHJlZVxuICAgICAqIEBwYXJhbSBydWxlc2V0SWRzIEFycmF5IG9mIHJ1bGVzZXQgaWRzIG9mIHJ1bGVzZXRzIHRvIHVzZSBmb3IgdGhpcyBzY2FuXG4gICAgICogQHBhcmFtIHJvb3QgRG9jdW1lbnQgb3Igc3VidHJlZSB0byBzY2FuXG4gICAgICovXG4gICAgcnVuKHJvb3Q6IERvY3VtZW50IHwgTm9kZSwgb3B0aW9ucz86IHt9KSA6IFByb21pc2U8UmVwb3J0PjtcblxuICAgIGVuYWJsZVJ1bGVzKHJ1bGVJZHM6IHN0cmluZ1tdKTtcblxuICAgIGdldFJ1bGUocnVsZUlkOiBzdHJpbmcpOiBSdWxlO1xuXG4gICAgZ2V0UnVsZXNJZHMoKSA6IHN0cmluZ1tdO1xuXG4gICAgZ2V0TWVzc2FnZShydWxlSWQ6IHN0cmluZywgcnVsZUlkeDogbnVtYmVyIHwgc3RyaW5nLCBtc2dBcmdzPzogc3RyaW5nW10pOiBzdHJpbmc7XG5cbiAgICBnZXRIZWxwKHJ1bGVJZDogc3RyaW5nLCBydWxlSWR4OiBudW1iZXIgfCBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgICBhZGRSdWxlcyhydWxlOiBSdWxlW10pO1xuXG4gICAgYWRkUnVsZShydWxlOiBSdWxlKTtcblxuICAgIGFkZE5sc01hcChtYXA6IE5sc01hcCk7XG5cbiAgICBhZGRIZWxwTWFwKG1hcDogTmxzTWFwKTtcbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qZ2xvYmFsIE9wZW5BamF4Ki9cbi8vIGFsbCByZWZlcmVuY2VzIHRvIFdBSS1BUklBIHNwZWNpZmljYXRpb24gaXMgdGhlIFdBSS1BUklBIDEuMlxuLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMi9cblxuZXhwb3J0IGludGVyZmFjZSBJRG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50IHtcbiAgICBpbXBsaWNpdFJvbGU6IHN0cmluZ1tdLFxuICAgIHZhbGlkUm9sZXM6IHN0cmluZ1tdLFxuICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNsYXNzIEFSSUFEZWZpbml0aW9ucyB7XG4gICAgc3RhdGljIG5hbWVGcm9tQ29udGVudChyb2xlOiBzdHJpbmcpIDogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAocm9sZSBpbiBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnMpIFxuICAgICAgICAgICAgJiYgQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVdLm5hbWVGcm9tIFxuICAgICAgICAgICAgJiYgQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVdLm5hbWVGcm9tLmluY2x1ZGVzKFwiY29udGVudHNcIik7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBhcnJheSBvZiBXQUktQVJJQSBnbG9iYWwgc3RhdGVzIGFuZCBwcm9wZXJ0aWVzXG4gICAgICogQHNlZSBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4yLyNnbG9iYWxfc3RhdGVzXG4gICAgICovXG4gICAgc3RhdGljIGdsb2JhbFByb3BlcnRpZXMgOiBzdHJpbmdbXSA9IFtcImFyaWEtYXRvbWljXCIsIFwiYXJpYS1idXN5XCIsIFwiYXJpYS1jb250cm9sc1wiLCBcImFyaWEtY3VycmVudFwiLCBcImFyaWEtZGVzY3JpYmVkYnlcIiwgXG4gICAgICAgIFwiYXJpYS1kZXRhaWxzXCIsIFwiYXJpYS1kcm9wZWZmZWN0XCIsIFwiYXJpYS1mbG93dG9cIiwgXCJhcmlhLWdyYWJiZWRcIiwgXCJhcmlhLWhpZGRlblwiLCBcImFyaWEta2V5c2hvcnRjdXRzXCIsXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiLCBcImFyaWEtbGFiZWxsZWRieVwiLCBcImFyaWEtbGl2ZVwiLCBcImFyaWEtb3duc1wiLCBcImFyaWEtcmVsZXZhbnRcIiwgXCJhcmlhLXJvbGVkZXNjcmlwdGlvblwiXTtcblxuICAgIC8qXG4gICAgICogWFNEIGRhdGEgdHlwZXMgZm9yIGFsbCBXQUktQVJJQSBwcm9wZXJ0aWVzXG4gICAgICogYWxvbmcgd2l0aCB2YWxpZCB2YWx1ZXMgd2hlbiB0aGUgZGF0YSB0eXBlIGlzIE5NVE9LRU5cbiAgICAgKiBXQUktQVJJQSBwcm9wZXJ0aWVzIGRhdGEgdHlwZXMgZXhwbGFuZWQ6XG4gICAgICogIHR5cGU6IFVzZWQgdG8gaWRlbnRpZnkgdGhlIHR5cGUgb2YgdmFsdWVzIGFsbG93ZWQgZm9yIHRoZSBXQUktQVJJQSBwcm9wZXJ0eVxuICAgICAqICB2YWx1ZXM6IFVzZWQgdG8gaWRlbnRpZnkgc3BlY2lmaWMgdmFsdWVzIG9mIGFuIFdBSS1BUklBIHByb3BlcnR5IHdoZW4gdHlwZSBpcyBubXRva2VuXG4gICAgICogIGhpZGRlbklEUmVmU3VwcG9ydGVkOiBVc2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBXQUktQVJJQSBwcm9wZXJ0eSBzdXBwb3J0cyByZWZlcmVuY2luZyBoaWRkZW4gSURcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZTogcmVmZXJzIHRvIFdBSS1BUklBIHByb3BlcnR5IHN1cHBvcnRzIGhpZGRlbiBJRCByZWZlcmVuY2VzXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlOiByZWZlcnMgdG8gV0FJLUFSSUEgcHJvcGVydHkgZG9lcyBub3Qgc3VwcG9ydCBoaWRkZW4gSUQgcmVmZXJlbmNlc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHNldCB0byBmYWxzZSwgaWYgbm90IHNwZWNpZmllZC5cbiAgICAgKi9cbiAgICBzdGF0aWMgcHJvcGVydHlEYXRhVHlwZXMgOiB7IFxuICAgICAgICBbcHJvcDogc3RyaW5nXSA6IHsgXG4gICAgICAgICAgICB0eXBlOiBzdHJpbmcsIFxuICAgICAgICAgICAgaGlkZGVuSURSZWZTdXBwb3J0ZWQ/OiBib29sZWFuLFxuICAgICAgICAgICAgdmFsdWVzPzogc3RyaW5nW10gXG4gICAgICAgIH1cbiAgICB9ID0ge1xuICAgICAgICBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2lkcmVmXCIsXG4gICAgICAgICAgICBoaWRkZW5JRFJlZlN1cHBvcnRlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtYXRvbWljXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYm9vbGVhblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1hdXRvY29tcGxldGVcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2VuXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IFtcImlubGluZVwiLCBcImxpc3RcIiwgXCJib3RoXCIsIFwibm9uZVwiLCBcInVuZGVmaW5lZFwiXSAvL2FkZCB1bmRlZmluZWQgdG8gaGFuZGxlIHZhbHVlIGVtcHR5XG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1idXN5XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYm9vbGVhblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJtaXhlZFwiLCBcInVuZGVmaW5lZFwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtY29sY291bnRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtY29saW5kZXhcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtY29sc3BhblwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2ludFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2lkcmVmc1wiLFxuICAgICAgICAgICAgaGlkZGVuSURSZWZTdXBwb3J0ZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWN1cnJlbnRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2VuXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IFtcInBhZ2VcIiwgXCJzdGVwXCIsIFwibG9jYXRpb25cIiwgXCJkYXRlXCIsIFwidGltZVwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcInVuZGVmaW5lZFwiXSAvL2FkZCB1bmRlZmluZWQgZm9yIGVtcHR5IHZhbHVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2lkcmVmc1wiLFxuICAgICAgICAgICAgaGlkZGVuSURSZWZTdXBwb3J0ZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWRldGFpbHNcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpZHJlZnNcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNib29sZWFuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWRyb3BlZmZlY3RcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2Vuc1wiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJjb3B5XCIsIFwibW92ZVwiLCBcImxpbmtcIiwgXCJleGVjdXRlXCIsIFwicG9wdXBcIiwgXCJub25lXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpZHJlZlwiLFxuICAgICAgICAgICAgaGlkZGVuSURSZWZTdXBwb3J0ZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJ1bmRlZmluZWRcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWZsb3d0b1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2lkcmVmc1wiLFxuICAgICAgICAgICAgaGlkZGVuSURSZWZTdXBwb3J0ZWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1ncmFiYmVkXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJ1bmRlZmluZWRcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJtZW51XCIsIFwibGlzdGJveFwiLCBcInRyZWVcIiwgXCJncmlkXCIsIFwiZGlhbG9nXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2VuXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IFtcInRydWVcIiwgXCJmYWxzZVwiLCBcInVuZGVmaW5lZFwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtaW52YWxpZFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1widHJ1ZVwiLCBcImZhbHNlXCIsIFwic3BlbGxpbmdcIiwgXCJncmFtbWFyXCIsIFwidW5kZWZpbmVkXCJdIC8vYWRkIHVuZGVmaW5lZCBmb3IgZW1wdHkgdmFsdWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWtleXNob3J0Y3V0c1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaWRyZWZzXCIsXG4gICAgICAgICAgICBoaWRkZW5JRFJlZlN1cHBvcnRlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbGV2ZWxcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbGl2ZVwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI25tdG9rZW5cIixcbiAgICAgICAgICAgIHZhbHVlczogW1wib2ZmXCIsIFwicG9saXRlXCIsIFwiYXNzZXJ0aXZlXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1tb2RhbFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2Jvb2xlYW5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbXVsdGlsaW5lXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYm9vbGVhblwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNib29sZWFuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJob3Jpem9udGFsXCIsIFwidmVydGljYWxcIiwgXCJ1bmRlZmluZWRcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLW93bnNcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpZHJlZnNcIixcbiAgICAgICAgICAgIGhpZGRlbklEUmVmU3VwcG9ydGVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1wb3NpbnNldFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2ludFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1wcmVzc2VkXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJtaXhlZFwiLCBcInVuZGVmaW5lZFwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtcmVhZG9ubHlcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNib29sZWFuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXJlbGV2YW50XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlbnNcIixcbiAgICAgICAgICAgIHZhbHVlczogW1wiYWRkaXRpb25zXCIsIFwicmVtb3ZhbHNcIiwgXCJ0ZXh0XCIsIFwiYWxsXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2Jvb2xlYW5cIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtcm9sZWRlc2NyaXB0aW9uXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjc3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXJvd2NvdW50XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXJvd2luZGV4XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjaW50XCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXJvd3NwYW5cIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNpbnRcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNubXRva2VuXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IFtcInRydWVcIiwgXCJmYWxzZVwiLCBcInVuZGVmaW5lZFwiXVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtc2V0c2l6ZVwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2ludFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1zb3J0XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlblwiLFxuICAgICAgICAgICAgdmFsdWVzOiBbXCJhc2NlbmRpbmdcIiwgXCJkZXNjZW5kaW5nXCIsIFwib3RoZXJcIiwgXCJub25lXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2RlY2ltYWxcIlxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNkZWNpbWFsXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjZGVjaW1hbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS12YWx1ZXRleHRcIjoge1xuICAgICAgICAgICAgdHlwZTogXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNzdHJpbmdcIlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBkZXNpZ24gcGF0dGVybnMgZm9yIGNvbmNyZXRlIFdBSS1BUklBIHJvbGVzXG4gICAgICogbGVnaXRpbWF0ZSBrZXlzIGZvciBlYWNoIHJvbGUgaW5jbHVkZTpcbiAgICAgKlxuICAgICAqIC0gY29udGFpbmVyOiBhcHByb3ByaWF0ZSBjb250YWluZXIocykgZm9yIHRoYXQgcm9sZVxuICAgICAqIC0gcHJvcHM6IHN0YXRlcyBhbmQgcHJvcGVydGllcyB0aGF0IG1heSBiZSBhc3NvY2lhdGVkIHdpdGggdGhpcyByb2xlIChpbiBhZGRpdGlvbiB0byB0aGUgZ2xvYmFsIHN0YXRlcyBhbmQgcHJvcGVydGllcyBsaXN0ZWQgYWJvdmUpXG4gICAgICogLSByZXFQcm9wczogcmVxdWlyZWQgc3RhdGVzIG9yIHByb3BlcnRpZXMgZm9yIHRoaXMgcm9sZVxuICAgICAqIC0gcmVxQ2hpbGRyZW46IHJlcXVpcmVkIGNoaWxkcmVuIGZvciB0aGlzIHJvbGVcbiAgICAgKiAtIGh0bWxFcXVpdjogSFRNTCBlcXVpdmFsZW50IGZvciB0aGlzIHJvbGVcbiAgICAgKiAtIHJvbGVUeXBlOiBvbmUgb2Ygd2lkZ2V0LCBzdHJ1Y3R1cmUsIGxhbmRtYXJrLCBsaXZlUmVnaW9uLCB3aW5kb3cgKGFzIHNlZW4gaW4gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMi8jcm9sZXNfY2F0ZWdvcml6YXRpb24pXG4gICAgICogLSBuYW1lUmVxdWlyZWQ6IGRldGVybWluZXMgd2hldGhlciBhbiBhY2Nlc3NpYmxlIG5hbWUgaXMgcmVxdWlyZWQgZm9yIGEgd2lkZ2V0IChzZWUgQVJJQSBzcGVjLilcbiAgICAgKiAtIG5hbWVGcm9tOiBkZXRlcm1pbmVzIGhvdyBhbiBhY2Nlc3NpYmxlIG5hbWUgaXMgc3VwcGxpZWQgKGF1dGhvciBvciBjb250ZW50IC0gc2VlIEFSSUEgc3BlYy4pXG4gICAgICogLSBkZXByZWNhdGVkOiBpZiBwcmVzZW50LCBpbmRpY2F0ZXMgdGhhdCB0aGUgcm9sZSBpcyBkZXByZWNhdGVkLCBhbmQgcHJvdmlkZXMgYSBsaXN0IG9mIGFsdGVybmF0aXZlIHJvbGUocylcbiAgICAgKi9cbiAgICBzdGF0aWMgZGVzaWduUGF0dGVybnMgOiB7XG4gICAgICAgIFtyb2xlOiBzdHJpbmddOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IHN0cmluZ1tdLFxuICAgICAgICAgICAgcHJvcHM6IHN0cmluZ1tdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IHN0cmluZ1tdLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IHN0cmluZ1tdLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBzdHJpbmcsXG4gICAgICAgICAgICByb2xlVHlwZT86IHN0cmluZyxcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZD86IGJvb2xlYW4sXG4gICAgICAgICAgICBuYW1lRnJvbT86IHN0cmluZ1tdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbj86IGJvb2xlYW4sXG4gICAgICAgICAgICBkZXByZWNhdGVkPzogc3RyaW5nW11cbiAgICAgICAgfVxuICAgIH0gPSB7XG4gICAgICAgIFwiYWxlcnRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGl2ZVJlZ2lvblwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImFsZXJ0ZGlhbG9nXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLW1vZGFsXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpbmRvd1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiYXBwbGljYXRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1pbnZhbGlkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLCAvLyBvciBjYW4gYmUgXCJ3aWRnZXRcIlxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiYXJ0aWNsZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImJhbm5lclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiYmxvY2txdW90ZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImJ1dHRvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1wcmVzc2VkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJidXR0b24gfCBpbnB1dFtAdHlwZT0nYnV0dG9uJ11cIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiY2FwdGlvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImZpZ3VyZVwiLCBcImdyaWRcIiwgXCJ0YWJsZVwiLCBcInRyZWVncmlkXCJdLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wicHJvaGliaXRlZFwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiY2VsbFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcInJvd1wiXSxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWNvbGluZGV4XCIsIFwiYXJpYS1jb2xzcGFuXCIsIFwiYXJpYS1yb3dpbmRleFwiLCBcImFyaWEtcm93c3BhblwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwidGRcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjaGVja2JveFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtY2hlY2tlZFwiXSxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImlucHV0W0B0eXBlPSdjaGVja2JveCddXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcImNvZGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wicHJvaGliaXRlZFwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiY29sdW1uaGVhZGVyXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wicm93XCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtY29saW5kZXhcIiwgXCJhcmlhLWNvbHNwYW5cIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCIsIFwiYXJpYS1yb3dpbmRleFwiLCBcImFyaWEtcm93c3BhblwiLCBcImFyaWEtc2VsZWN0ZWRcIiwgXCJhcmlhLXNvcnRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcInRoW0BzY29wZT0nY29sJ11cIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjb21ib2JveFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1jb250cm9sc1wiLCBcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtYXV0b2NvbXBsZXRlXCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtcmVhZG9ubHlcIiwgXCJhcmlhLXJlcXVpcmVkXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtZXhwYW5kZWRcIl0sIC8vIGFyaWEtY29udHJvbHMgaXNuJ3QgYWN0dWFsbHkgcmVxdWlyZWQgd2hlbiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjb21wbGVtZW50YXJ5XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjb250ZW50aW5mb1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiZGVmaW5pdGlvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImRlbGV0aW9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImRpYWxvZ1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1tb2RhbFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aW5kb3dcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImRpcmVjdG9yeVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBkZXByZWNhdGVkOiBbXCJsaXN0XCJdIC8vIFRPRE9cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtYWJzdHJhY3RcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtYWNrbm93bGVkZ21lbnRzXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWFmdGVyd29yZFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1hcHBlbmRpeFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1iYWNrbGlua1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJhIHwgbGlua1wiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtYmlibGlvZW50cnlcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJkaXJlY3RvcnlcIiwgXCJsaXN0XCJdLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtbGV2ZWxcIiwgXCJhcmlhLXBvc2luc2V0XCIsIFwiYXJpYS1zZXRzaXplXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJsaVwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWJpYmxpb2dyYXBoeVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1iaWJsaW9yZWZcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiYSB8IGxpbmtcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWNoYXB0ZXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtY29sb3Bob25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtY29uY2x1c2lvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1jb3ZlclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiaW1nXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWNyZWRpdFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1jcmVkaXRzXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWRlZGljYXRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZW5kbm90ZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImRpcmVjdG9yeVwiLCBcImxpc3RcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1sZXZlbFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImxpXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZW5kbm90ZXNcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZXBpZ3JhcGhcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZXBpbG9ndWVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZXJyYXRhXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWV4YW1wbGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZm9vdG5vdGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZm9yZXdvcmRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZ2xvc3NhcnlcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtZ2xvc3NyZWZcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiYSB8IGxpbmtcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWluZGV4XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLWludHJvZHVjdGlvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1ub3RlcmVmXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaGFzcG9wdXBcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImEgfCBsaW5rXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1ub3RpY2VcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLXBhZ2VicmVha1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1vcmllbnRhdGlvblwiXSwgLy8gYXJpYS1kaXNhYmxlZCwgYXJpYS12YWx1ZW1heCwgYXJpYS12YWx1ZW1pbiwgYXJpYS12YWx1ZXRleHQgYXJlIHZhbGlkIGlmIGZvY3VzYWJsZS4gVGhpcyBpcyBoYW5kbGVkIGluIHRoZSBjb2RlLlxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsIC8vIGFyaWEtdmFsdWVub3cgaXMgcmVxdWlyZWQgaWYgZm9jdXNhYmxlLiBUaGlzIGlzIGhhbmRsZWQgaW4gdGhlIGNvZGUuXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLCAvLyBvciB3aWRnZXQgaWYgZm9jdXNhYmxlXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1wYWdlbGlzdFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJsYW5kbWFya1wiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1wYXJ0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLXByZWZhY2VcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtcHJvbG9ndWVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtcHVsbHF1b3RlXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuICAgICAgICBcImRvYy1xbmFcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2Mtc3VidGl0bGVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jLXRpcFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb2MtdG9jXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZG9jdW1lbnRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiZW1waGFzaXNcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wicHJvaGliaXRlZFwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiZmVlZFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtcImFydGljbGVcIl0sXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImZpZ3VyZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImZvcm1cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImZvcm1cIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxhbmRtYXJrXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJnZW5lcmljXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImdyYXBoaWNzLWRvY3VtZW50XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXG4gICAgICAgIFwiZ3JhcGhpY3Mtb2JqZWN0XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogZmFsc2UsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiY29udGVudHNcIiwgXCJhdXRob3JcIl1cbiAgICAgICAgfSxcbiAgICAgICAgXG4gICAgICAgIFwiZ3JhcGhpY3Mtc3ltYm9sXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFxuICAgICAgICBcImdyaWRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtY29sY291bnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yb3djb3VudFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtcInJvd1wiLCBcInJvd2dyb3VwXCJdLCAvLyByb3dncm91cCBpcyBub3QgcmVxdWlyZWQsIGJ1dCBpdCBpcyBhbGxvd2VkXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwidGFibGVcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwiZ3JpZGNlbGxcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJyb3dcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1jb2xpbmRleFwiLCBcImFyaWEtY29sc3BhblwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIiwgXCJhcmlhLXJvd2luZGV4XCIsIFwiYXJpYS1yb3dzcGFuXCIsIFwiYXJpYS1zZWxlY3RlZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwidGRcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJncm91cFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1kaXNhYmxlZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImhlYWRpbmdcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogW1wiYXJpYS1sZXZlbFwiXSxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImgxIHwgaDIgfCBoMyB8IGg0IHwgaDUgfCBoNlwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImltZ1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwiaW1nXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJpbnNlcnRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wicHJvaGliaXRlZFwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwibGlua1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJhIHwgbGlua1wiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImxpc3RcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJsaXN0aXRlbVwiXSxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJvbCB8IHVsXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImxpc3Rib3hcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiLCBcImFyaWEtb3JpZW50YXRpb25cIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yZXF1aXJlZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtcImdyb3VwXCIsIFwib3B0aW9uXCJdLCAvLyBncm91cCBpcyBub3QgcmVxdWlyZWQsIGJ1dCBpdCBpcyBhbGxvd2VkXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcImxpc3RpdGVtXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wiZGlyZWN0b3J5XCIsIFwibGlzdFwiXSxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWxldmVsXCIsIFwiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwibGlcIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwibG9nXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxpdmVSZWdpb25cIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcIm1haW5cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcIm1hcnF1ZWVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGl2ZVJlZ2lvblwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwibWF0aFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwibWVudVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtb3JpZW50YXRpb25cIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJncm91cFwiLCBcIm1lbnVpdGVtXCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIl0sIC8vIGdyb3VwIGlzIG5vdCByZXF1aXJlZCwgYnV0IGl0IGlzIGFsbG93ZWRcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcIm1lbnViYXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1wiZ3JvdXBcIiwgXCJtZW51aXRlbVwiLCBcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJtZW51aXRlbXJhZGlvXCJdLCAvLyBncm91cCBpcyBub3QgcmVxdWlyZWQsIGJ1dCBpdCBpcyBhbGxvd2VkXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogZmFsc2UsIFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwibWVudWl0ZW1cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJncm91cFwiLCBcIm1lbnVcIiwgXCJtZW51YmFyXCJdLCAvLyBncm91cCBvbmx5IGNvdW50cyBhcyBhIHZhbGlkIGNvbnRhaW5lciBpZiBpdCBpcyBjb250YWluZWQgaW4gYSBtZW51IG9yIG1lbnViYXJcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaGFzcG9wdXBcIiwgXCJhcmlhLXBvc2luc2V0XCIsIFwiYXJpYS1zZXRzaXplXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJtZW51aXRlbWNoZWNrYm94XCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wiZ3JvdXBcIiwgXCJtZW51XCIsIFwibWVudWJhclwiXSwgLy8gZ3JvdXAgb25seSBjb3VudHMgYXMgYSB2YWxpZCBjb250YWluZXIgaWYgaXQgaXMgY29udGFpbmVkIGluIGEgbWVudSBvciBtZW51YmFyXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBbXCJhcmlhLWNoZWNrZWRcIl0sXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwibWVudWl0ZW1yYWRpb1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImdyb3VwXCIsIFwibWVudVwiLCBcIm1lbnViYXJcIl0sIC8vIGdyb3VwIG9ubHkgY291bnRzIGFzIGEgdmFsaWQgY29udGFpbmVyIGlmIGl0IGlzIGNvbnRhaW5lZCBpbiBhIG1lbnUgb3IgbWVudWJhclxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogW1wiYXJpYS1jaGVja2VkXCJdLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcIm1ldGVyXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLXZhbHVlbWF4XCIsIFwiYXJpYS12YWx1ZW1pblwiLCBcImFyaWEtdmFsdWV0ZXh0XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtdmFsdWVub3dcIl0sXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcIm5hdmlnYXRpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcIm5vbmVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICB9LFxuXG4gICAgICAgIFwibm90ZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcIm9wdGlvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImdyb3VwXCIsIFwibGlzdGJveFwiXSwgLy8gZ3JvdXAgb25seSBjb3VudHMgYXMgYSB2YWxpZCBjb250YWluZXIgaWYgaXQgaXMgY29udGFpbmVkIGluIGEgbGlzdGJveFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtc2VsZWN0ZWRcIiwgXCJhcmlhLWNoZWNrZWRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLCAvLyBcImFyaWEtc2VsZWN0ZWRcIiBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJvcHRpb25cIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwicGFyYWdyYXBoXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcInByb2hpYml0ZWRcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInByZXNlbnRhdGlvblwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW10sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJwcm9ncmVzc2JhclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS12YWx1ZW1heFwiLCBcImFyaWEtdmFsdWVtaW5cIiwgXCJhcmlhLXZhbHVlbm93XCIsIFwiYXJpYS12YWx1ZXRleHRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdLFxuICAgICAgICAgICAgcHJlc2VudGF0aW9uYWxDaGlsZHJlbjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIFwicmFkaW9cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLXBvc2luc2V0XCIsIFwiYXJpYS1zZXRzaXplXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IFtcImFyaWEtY2hlY2tlZFwiXSxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImlucHV0W0B0eXBlPSdyYWRpbyddXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcInJhZGlvZ3JvdXBcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtb3JpZW50YXRpb25cIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yZXF1aXJlZFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtcInJhZGlvXCJdLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJyZWdpb25cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInJvd1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcImdyaWRcIiwgXCJyb3dncm91cFwiLCBcInRhYmxlXCIsIFwidHJlZWdyaWRcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1jb2xpbmRleFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1sZXZlbFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXJvd2luZGV4XCIsIFwiYXJpYS1zZWxlY3RlZFwiLCBcImFyaWEtc2V0c2l6ZVwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IFtcImNlbGxcIiwgXCJjb2x1bW5oZWFkZXJcIiwgXCJncmlkY2VsbFwiLCBcInJvd2hlYWRlclwiXSxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJ0clwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInJvd2dyb3VwXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogW1wiZ3JpZFwiLCBcInRhYmxlXCIsIFwidHJlZWdyaWRcIl0sXG4gICAgICAgICAgICBwcm9wczogW10sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJyb3dcIl0sXG4gICAgICAgICAgICBodG1sRXF1aXY6IFwidGJvZHkgfCB0Zm9vdCB8IHRoZWFkXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInJvd2hlYWRlclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcInJvd1wiXSxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWNvbGluZGV4XCIsIFwiYXJpYS1jb2xzcGFuXCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1leHBhbmRlZFwiLCBcImFyaWEtaGFzcG9wdXBcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yZXF1aXJlZFwiLCBcImFyaWEtcm93aW5kZXhcIiwgXCJhcmlhLXJvd3NwYW5cIiwgXCJhcmlhLXNlbGVjdGVkXCIsIFwiYXJpYS1zb3J0XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJ0aFtAc2NvcGU9J3JvdyddXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic2Nyb2xsYmFyXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1vcmllbnRhdGlvblwiLCBcImFyaWEtdmFsdWVtYXhcIiwgXCJhcmlhLXZhbHVlbWluXCIsIFwiYXJpYS12YWx1ZXRleHRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogW1wiYXJpYS1jb250cm9sc1wiLCBcImFyaWEtdmFsdWVub3dcIl0sXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwibGFuZG1hcmtcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInNlYXJjaGJveFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1hdXRvY29tcGxldGVcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1tdWx0aWxpbmVcIiwgXCJhcmlhLXBsYWNlaG9sZGVyXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImlucHV0W0B0eXBlPSdzZWFyY2gnXVwiLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJzZXBhcmF0b3JcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtb3JpZW50YXRpb25cIl0sIC8vIGFyaWEtZGlzYWJsZWQsIGFyaWEtdmFsdWVtYXgsIGFyaWEtdmFsdWVtaW4sIGFyaWEtdmFsdWV0ZXh0IGFyZSB2YWxpZCBpZiBmb2N1c2FibGUuIFRoaXMgaXMgaGFuZGxlZCBpbiB0aGUgY29kZS5cbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLCAvLyBhcmlhLXZhbHVlbm93IGlzIHJlcXVpcmVkIGlmIGZvY3VzYWJsZS4gVGhpcyBpcyBoYW5kbGVkIGluIHRoZSBjb2RlLlxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIiwgLy8gb3Igd2lkZ2V0IGlmIGZvY3VzYWJsZVxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcInNsaWRlclwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1oYXNwb3B1cFwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtb3JpZW50YXRpb25cIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS12YWx1ZW1heFwiLCBcImFyaWEtdmFsdWVtaW5cIiwgXCJhcmlhLXZhbHVldGV4dFwiXSxcbiAgICAgICAgICAgIHJlcVByb3BzOiBbXCJhcmlhLXZhbHVlbm93XCJdLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJzcGluYnV0dG9uXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWludmFsaWRcIiwgXCJhcmlhLXJlYWRvbmx5XCIsIFwiYXJpYS1yZXF1aXJlZFwiLCBcImFyaWEtdmFsdWVtYXhcIiwgXCJhcmlhLXZhbHVlbWluXCIsIFwiYXJpYS12YWx1ZW5vd1wiLCBcImFyaWEtdmFsdWV0ZXh0XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic3RhdHVzXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxpdmVSZWdpb25cIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInN0cm9uZ1wiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJwcm9oaWJpdGVkXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJzdWJzY3JpcHRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wicHJvaGliaXRlZFwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic3VwZXJzY3JpcHRcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwic3RydWN0dXJlXCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wicHJvaGliaXRlZFwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwic3dpdGNoXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWV4cGFuZGVkXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogW1wiYXJpYS1jaGVja2VkXCJdLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIiwgXCJjb250ZW50c1wiXSxcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbmFsQ2hpbGRyZW46IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBcInRhYlwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IFtcInRhYmxpc3RcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1wb3NpbnNldFwiLCBcImFyaWEtc2VsZWN0ZWRcIiwgXCJhcmlhLXNldHNpemVcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl0sXG4gICAgICAgICAgICBwcmVzZW50YXRpb25hbENoaWxkcmVuOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0YWJsZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1jb2xjb3VudFwiLCBcImFyaWEtcm93Y291bnRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJyb3dcIiwgXCJyb3dncm91cFwiXSwgLy8gcm93Z3JvdXAgaXMgbm90IHJlcXVpcmVkLCBidXQgaXQgaXMgYWxsb3dlZFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcInRhYmxlXCIsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRhYmxpc3RcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLW11bHRpc2VsZWN0YWJsZVwiLCBcImFyaWEtb3JpZW50YXRpb25cIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJ0YWJcIl0sXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogZmFsc2UsIFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwidGFicGFuZWxcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBudWxsLFxuICAgICAgICAgICAgcm9sZVR5cGU6IFwid2lkZ2V0XCIsXG4gICAgICAgICAgICBuYW1lUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCJdXG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJ0ZXJtXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogXCJkZm5cIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwidGV4dGJveFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIsIFwiYXJpYS1hdXRvY29tcGxldGVcIiwgXCJhcmlhLWRpc2FibGVkXCIsIFwiYXJpYS1lcnJvcm1lc3NhZ2VcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1tdWx0aWxpbmVcIiwgXCJhcmlhLXBsYWNlaG9sZGVyXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBudWxsLFxuICAgICAgICAgICAgaHRtbEVxdWl2OiBcImlucHV0W0B0eXBlPSd0ZXh0J11cIixcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwidGltZVwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRpbWVyXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcImxpdmVSZWdpb25cIixcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRvb2xiYXJcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcInN0cnVjdHVyZVwiLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwidG9vbHRpcFwiOiB7XG4gICAgICAgICAgICBjb250YWluZXI6IG51bGwsXG4gICAgICAgICAgICBwcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcVByb3BzOiBudWxsLFxuICAgICAgICAgICAgcmVxQ2hpbGRyZW46IG51bGwsXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJzdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogZmFsc2UsIC8vIEFSSUEgMS4yIGhhcyB0aGlzIGFzIG5hbWVSZXF1aXJlZDogdHJ1ZSwgYnV0IEFSSUEgMS4zIHJlbW92ZWQgaXQgYmVjYXVzZSBpdCBtYWtlcyBubyBzZW5zZSB0byByZXF1aXJlIGEgbmFtZSBvbiBhIHRvb2x0aXAuXG4gICAgICAgICAgICBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRyZWVcIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBudWxsLFxuICAgICAgICAgICAgcHJvcHM6IFtcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLCBcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLWVycm9ybWVzc2FnZVwiLCBcImFyaWEtaW52YWxpZFwiLCBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCIsIFwiYXJpYS1vcmllbnRhdGlvblwiLCBcImFyaWEtcmVxdWlyZWRcIl0sXG4gICAgICAgICAgICByZXFQcm9wczogbnVsbCxcbiAgICAgICAgICAgIHJlcUNoaWxkcmVuOiBbXCJncm91cFwiLCBcInRyZWVpdGVtXCJdLCAvLyBncm91cCBpcyBub3QgcmVxdWlyZWQsIGJ1dCBpdCBpcyBhbGxvd2VkXG4gICAgICAgICAgICBodG1sRXF1aXY6IG51bGwsXG4gICAgICAgICAgICByb2xlVHlwZTogXCJ3aWRnZXRcIixcbiAgICAgICAgICAgIG5hbWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIG5hbWVGcm9tOiBbXCJhdXRob3JcIl1cbiAgICAgICAgfSxcblxuICAgICAgICBcInRyZWVncmlkXCI6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjogbnVsbCxcbiAgICAgICAgICAgIHByb3BzOiBbXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIiwgXCJhcmlhLWNvbGNvdW50XCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXJyb3JtZXNzYWdlXCIsIFwiYXJpYS1pbnZhbGlkXCIsIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIiwgXCJhcmlhLW9yaWVudGF0aW9uXCIsIFwiYXJpYS1yZWFkb25seVwiLCBcImFyaWEtcmVxdWlyZWRcIiwgXCJhcmlhLXJvd2NvdW50XCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogW1wicm93XCIsIFwicm93Z3JvdXBcIl0sIC8vIHJvd2dyb3VwIGlzIG5vdCByZXF1aXJlZCwgYnV0IGl0IGlzIGFsbG93ZWRcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiXVxuICAgICAgICB9LFxuXG4gICAgICAgIFwidHJlZWl0ZW1cIjoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBbXCJncm91cFwiLCBcInRyZWVcIl0sXG4gICAgICAgICAgICBwcm9wczogW1wiYXJpYS1jaGVja2VkXCIsIFwiYXJpYS1kaXNhYmxlZFwiLCBcImFyaWEtZXhwYW5kZWRcIiwgXCJhcmlhLWhhc3BvcHVwXCIsIFwiYXJpYS1sZXZlbFwiLCBcImFyaWEtcG9zaW5zZXRcIiwgXCJhcmlhLXNlbGVjdGVkXCIsIFwiYXJpYS1zZXRzaXplXCJdLFxuICAgICAgICAgICAgcmVxUHJvcHM6IG51bGwsXG4gICAgICAgICAgICByZXFDaGlsZHJlbjogbnVsbCxcbiAgICAgICAgICAgIGh0bWxFcXVpdjogbnVsbCxcbiAgICAgICAgICAgIHJvbGVUeXBlOiBcIndpZGdldFwiLFxuICAgICAgICAgICAgbmFtZVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgbmFtZUZyb206IFtcImF1dGhvclwiLCBcImNvbnRlbnRzXCJdXG4gICAgICAgIH0sXG4gICAgfSAvLyBlbmQgZGVzaWduUGF0dGVybnNcblxuICAgIC8vIGNvcGllZCBmcm9tIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy1vdGhlci5odG1sI2Rpc2FibGVkLWVsZW1lbnRzXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5wdXQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeVxuICAgIHN0YXRpYyBlbGVtZW50c0FsbG93ZWREaXNhYmxlZCA9IFtcImJ1dHRvblwiLCBcImlucHV0XCIsIFwic2VsZWN0XCIsIFwidGV4dGFyZWFcIiwgXCJvcHRncm91cFwiLCBcIm9wdGlvblwiLCBcImZpZWxkc2V0XCJdOyAvLyBhbHNvIGZvcm0tYXNzb2NpYXRlZCBjdXN0b20gZWxlbWVudFxuICAgIHN0YXRpYyBlbGVtZW50c0FsbG93ZWRSZXF1aXJlZCA9IFtcImlucHV0XCIsIFwic2VsZWN0XCIsIFwidGV4dGFyZWFcIl07IC8vIHJlcXVpcmVkIGlzIG5vdCBzdXBwb3J0ZWQgb24gaW5wdXRAdHlwZT1cInJhbmdlXCIsIFwiY29sb3JcIiwgXCJoaWRkZW5cIiBvciBhbnkgYnV0dG9uIHR5cGVzXG4gICAgc3RhdGljIGVsZW1lbnRzQWxsb3dlZFJlYWRPbmx5ID0gW1wiaW5wdXRcIiwgXCJ0ZXh0YXJlYVwiXTsgLy8gcmVhZG9ubHkgaXMgbm90IHN1cHBvcnRlZCBvbiBpbnB1dEB0eXBlPVwiY2hlY2tib3hcIiwgXCJyYWRpb1wiLCBcInJhbmdlXCIsIFwiY29sb3JcIiwgXCJmaWxlXCIsIGhpZGRlblwiIG9yIGFueSBidXR0b24gdHlwZXNcblxuXG4gICAgLyogaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwtYXJpYS8jZG9jY29uZm9ybWFuY2VcbiAgICAgICAgKiBkb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnQgY29udGFpbnMgcHJvcGVydGllcyBvZiB0aGUgdGFncyByZWxhdGVkIHRvIHJvbGUgd2l0aG91dCBhbnkgYWRkaXRpb25hbCBhdHRyaWJ1dGUgdmFsdWVcbiAgICAgICAgKiBkb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRTcGVjaWFsVGFncyBjb250YWlucyB0aG9zZSB0YWdzIHRoYXQgcmVxdWlyZSBzcGVjaWFsIGNvbnNpZGVyYXRpb25zXG4gICAgICAgICovXG4gICAgc3RhdGljIGRvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudDogeyBcbiAgICAgICAgW3JvbGU6IHN0cmluZ106IElEb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRcbiAgICB9ID0ge1xuICAgICAgICBcImFiYnJcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImFkZHJlc3NcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImFydGljbGVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJhcnRpY2xlXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYXBwbGljYXRpb25cIiwgXCJkb2N1bWVudFwiLCBcImZlZWRcIiwgXCJtYWluXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInJlZ2lvblwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJhc2lkZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNvbXBsZW1lbnRhcnlcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2MtZGVkaWNhdGlvblwiLCBcImRvYy1leGFtcGxlXCIsIFwiZG9jLWZvb3Rub3RlXCIsIFwiZG9jLXB1bGxxdW90ZVwiLCBcImRvYy10aXBcIiwgXCJmZWVkXCIsIFwibm9uZVwiLCBcIm5vdGVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJyZWdpb25cIiwgXCJzZWFyY2hcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXVkaW9cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYXBwbGljYXRpb25cIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYlwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYmFzZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJiZGlcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImJkb1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYmxvY2txdW90ZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiYm9keVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImRvY3VtZW50XCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJiclwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImJ1dHRvblwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImJ1dHRvblwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImNoZWNrYm94XCIsIFwibGlua1wiLCBcIm1lbnVpdGVtXCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIiwgXCJvcHRpb25cIiwgXCJyYWRpb1wiLCBcInN3aXRjaFwiLCBcInRhYlwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJjYW52YXNcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImNhcHRpb25cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJjaXRlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2RlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJjb2xcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiY29sZ3JvdXBcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGF0YVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGF0YWxpc3RcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJsaXN0Ym94XCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImRlZmluaXRpb25cIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRlbFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGV0YWlsc1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImdyb3VwXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJkZm5cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0ZXJtXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRpYWxvZ1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImRpYWxvZ1wiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFsZXJ0ZGlhbG9nXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImRpdlwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZGxcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZ3JvdXBcIiwgXCJsaXN0XCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJkdFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInRlcm1cIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJsaXN0aXRlbVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJlbVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZW1iZWRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYXBwbGljYXRpb25cIiwgXCJkb2N1bWVudFwiLCBcImltZ1wiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmllbGRzZXRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJncm91cFwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJyYWRpb2dyb3VwXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImZpZ2NhcHRpb25cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZ3JvdXBcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImhlYWRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaDFcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJoZWFkaW5nXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLXN1YnRpdGxlXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInRhYlwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJoMlwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImhlYWRpbmdcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2Mtc3VidGl0bGVcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwidGFiXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImgzXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiaGVhZGluZ1wiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRvYy1zdWJ0aXRsZVwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJ0YWJcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaDRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJoZWFkaW5nXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZG9jLXN1YnRpdGxlXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInRhYlwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJoNVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImhlYWRpbmdcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2Mtc3VidGl0bGVcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwidGFiXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImg2XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiaGVhZGluZ1wiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRvYy1zdWJ0aXRsZVwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIiwgXCJ0YWJcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaGdyb3VwXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJoclwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInNlcGFyYXRvclwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRvYy1wYWdlYnJlYWtcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImh0bWxcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwiaWZyYW1lXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFwcGxpY2F0aW9uXCIsIFwiZG9jdW1lbnRcIiwgXCJpbWdcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImluc1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwia2JkXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJsYWJlbFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImxlZ2VuZFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcImxpXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlzdGl0ZW1cIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2MtYmlibGlvZW50cnlcIiwgXCJkb2MtZW5kbm90ZVwiLCBcIm1lbnVpdGVtXCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIiwgXCJub25lXCIsIFwib3B0aW9uXCIsIFwicHJlc2VudGF0aW9uXCIsIFwicmFkaW9cIiwgXCJzZXBhcmF0b3JcIiwgXCJ0YWJcIiwgXCJ0cmVlaXRlbVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJsaW5rXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcIm1haW5cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJtYWluXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJtYXBcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwibWFya1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibWF0aFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcIm1hdGhcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcIm1lbnVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJsaXN0XCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZGlyZWN0b3J5XCIsIFwiZ3JvdXBcIiwgXCJsaXN0Ym94XCIsIFwibWVudVwiLCBcIm1lbnViYXJcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwicmFkaW9ncm91cFwiLCBcInRhYmxpc3RcIiwgXCJ0b29sYmFyXCIsIFwidHJlZVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJtZXRhXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcIm1ldGVyXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibmF2XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibmF2aWdhdGlvblwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImRvYy1pbmRleFwiLCBcImRvYy1wYWdlbGlzdFwiLCBcImRvYy10b2NcIiwgXCJtZW51XCIsIFwibWVudWJhclwiLCBcInRhYmxpc3RcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwibm9zY3JpcHRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwib2JqZWN0XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFwcGxpY2F0aW9uXCIsIFwiZG9jdW1lbnRcIiwgXCJpbWdcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwib2xcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJsaXN0XCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZGlyZWN0b3J5XCIsIFwiZ3JvdXBcIiwgXCJsaXN0Ym94XCIsIFwibWVudVwiLCBcIm1lbnViYXJcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwicmFkaW9ncm91cFwiLCBcInRhYmxpc3RcIiwgXCJ0b29sYmFyXCIsIFwidHJlZVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJvcHRncm91cFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImdyb3VwXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJvcHRpb25cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJvcHRpb25cIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcIm91dHB1dFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInN0YXR1c1wiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJwXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJwYXJhbVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJwaWN0dXJlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInByZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwicHJvZ3Jlc3NcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJwcm9ncmVzc2JhclwiXSxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwicVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwicnBcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInJ0XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJydWJ5XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzYW1wXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzY3JpcHRcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwic2xvdFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgXCJzbWFsbFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic291cmNlXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBcInNwYW5cIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInN0cm9uZ1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwic3R5bGVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwic3ViXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzdW1tYXJ5XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiYnV0dG9uXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJzdXBcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInN2Z1wiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImdyYXBoaWNzLWRvY3VtZW50XCJdLCAvLyBhcyBkZWZpbmVkIGJ5IFNWRyBBQU1cbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0YWJsZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInRhYmxlXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInRib2R5XCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicm93Z3JvdXBcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidGVtcGxhdGVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4dGFyZWFcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0ZXh0Ym94XCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0Zm9vdFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInJvd2dyb3VwXCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInRoZWFkXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicm93Z3JvdXBcIl0sXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidGltZVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidGl0bGVcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwidHJhY2tcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIFwidVwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIFwidWxcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJsaXN0XCJdLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiZGlyZWN0b3J5XCIsIFwiZ3JvdXBcIiwgXCJsaXN0Ym94XCIsIFwibWVudVwiLCBcIm1lbnViYXJcIiwgXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwicmFkaW9ncm91cFwiLCBcInRhYmxpc3RcIiwgXCJ0b29sYmFyXCIsIFwidHJlZVwiXSxcbiAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgXCJ2YXJcIjoge1xuICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcInZpZGVvXCI6IHtcbiAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFwcGxpY2F0aW9uXCJdLFxuICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBcIndiclwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH1cbiAgICB9IC8vIGVuZCBkb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRcblxuICAgIHN0YXRpYyBkb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRTcGVjaWFsVGFnczoge1xuICAgICAgICBbcm9sZTogc3RyaW5nXToge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXSA6IElEb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRcbiAgICAgICAgfSB8IElEb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRcbiAgICB9ID0ge1xuICAgICAgICBcImFcIjoge1xuICAgICAgICAgICAgXCJ3aXRoLWhyZWZcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wibGlua1wiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gbm9uLWVtcHR5IGhyZWYgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJidXR0b25cIiwgXCJjaGVja2JveFwiLCBcImRvYy1iYWNrbGlua1wiLCBcImRvYy1iaWJsaW9yZWZcIiwgXCJkb2MtZ2xvc3NyZWZcIiwgXCJkb2Mtbm90ZXJlZlwiLCBcIm1lbnVpdGVtXCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIiwgXCJvcHRpb25cIiwgXCJyYWRpb1wiLCBcInN3aXRjaFwiLCBcInRhYlwiLCBcInRyZWVpdGVtXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIndpdGhvdXQtaHJlZlwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBocmVmIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJlYVwiOiB7XG4gICAgICAgICAgICBcIndpdGgtaHJlZlwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJsaW5rXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBub24tZW1wdHkgaHJlZiBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwid2l0aG91dC1ocmVmXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIGhyZWYgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4vLyBUT0RPXG4vLyAgICAgICAgXCJhdXRvbm9tb3VzIGN1c3RvbSBlbGVtZW50XCI6IHtcbi8vICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJSb2xlIGV4cG9zZWQgZnJvbSBhdXRob3IgZGVmaW5lZCBFbGVtZW50SW50ZXJuYWxzLiBPdGhlcndpc2Ugbm8gY29ycmVzcG9uZGluZyByb2xlLlwiXSxcbi8vICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiSWYgcm9sZSBkZWZpbmVkIGJ5IEVsZW1lbnRJbnRlcm5hbHNcIiwgXCJhbnkgcm9sZVwiLCBcIm5vIHJvbGUgT3RoZXJ3aXNlXCJdLFxuLy8gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4vLyAgICAgICAgfSxcblxuICAgICAgICBcImZpZ3VyZVwiOiB7XG4gICAgICAgICAgICBcImNoaWxkLWZpZ2NhcHRpb25cIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiZmlndXJlXCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibm8tY2hpbGQtZmlnY2FwdGlvblwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJmaWd1cmVcIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJmb290ZXJcIjoge1xuICAgICAgICAgICAgXCJkZXMtc2VjdGlvbi1hcnRpY2xlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIGRlc2NlbmRhbnQgb2YgYW4gYXJ0aWNsZSwgYXNpZGUsIG1haW4sIG5hdiBvciBzZWN0aW9uIGVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2MtZm9vdG5vdGVcIiwgXCJncm91cFwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibm90LWRlcy1zZWN0aW9uLWFydGljbGVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29udGVudGluZm9cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIG5vdCBhIGRlc2NlbmRhbnQgb2YgYW4gYXJ0aWNsZSwgYXNpZGUsIG1haW4sIG5hdiBvciBzZWN0aW9uIGVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJkb2MtZm9vdG5vdGVcIiwgXCJncm91cFwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImZvcm1cIjoge1xuICAgICAgICAgICAgXCJ3aXRoLW5hbWVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiZm9ybVwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gYWNjZXNzaWJsZSBuYW1lIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwic2VhcmNoXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIndpdGhvdXQtbmFtZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBhY2Nlc3NpYmxlIG5hbWUgaXMgbm90IHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJub25lXCIsIFwicHJlc2VudGF0aW9uXCIsIFwic2VhcmNoXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbi8vIFRPRE9cbi8vICAgICAgICBcImZvcm0tYXNzb2NpYXRlZCBjdXN0b20gZWxlbWVudFwiOiB7XG4vLyAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiUm9sZSBleHBvc2VkIGZyb20gYXV0aG9yIGRlZmluZWQgRWxlbWVudEludGVybmFscy4gT3RoZXJ3aXNlIG5vIGNvcnJlc3BvbmRpbmcgcm9sZS5cIl0sXG4vLyAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcIklmIHJvbGUgZGVmaW5lZCBieSBFbGVtZW50SW50ZXJuYWxzXCIsIFwiZm9ybS1yZWxhdGVkIHJvbGVzOiBidXR0b25cIiwgXCJjaGVja2JveFwiLCBcImNvbWJvYm94XCIsIFwiZ3JvdXBcIiwgXCJsaXN0Ym94XCIsIFwicHJvZ3Jlc3NiYXJcIiwgXCJyYWRpb1wiLCBcInJhZGlvZ3JvdXBcIiwgXCJzZWFyY2hib3hcIiwgXCJzbGlkZXJcIiwgXCJzcGluYnV0dG9uXCIsIFwic3dpdGNoXCIsIFwidGV4dGJveFwiLCBcIm5vIHJvbGUgT3RoZXJ3aXNlXCJdLFxuLy8gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4vLyAgICAgICAgfSxcblxuICAgICAgICBcImhlYWRlclwiOiB7XG4gICAgICAgICAgICBcImRlcy1zZWN0aW9uLWFydGljbGVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gZGVzY2VuZGFudCBvZiBhbiBhcnRpY2xlLCBhc2lkZSwgbWFpbiwgbmF2IG9yIHNlY3Rpb24gZWxlbWVudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImdyb3VwXCIsIFwibm9uZVwiLCBcInByZXNlbnRhdGlvblwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJub3QtZGVzLXNlY3Rpb24tYXJ0aWNsZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJiYW5uZXJcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIG5vdCBhIGRlc2NlbmRhbnQgb2YgYW4gYXJ0aWNsZSwgYXNpZGUsIG1haW4sIG5hdiBvciBzZWN0aW9uIGVsZW1lbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJncm91cFwiLCBcIm5vbmVcIiwgXCJwcmVzZW50YXRpb25cIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG4gICAgICAgIFwiaW1nXCI6IHtcbiAgICAgICAgICAgIFwiaW1nLXdpdGgtYWx0LXRleHRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiaW1nXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBhbHQgYXR0cmlidXRlIGhhcyB0ZXh0IChpcyBub3QgZW1wdHkpXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYnV0dG9uXCIsIFwiY2hlY2tib3hcIiwgXCJkb2MtY292ZXJcIiwgXCJsaW5rXCIsIFwibWVudWl0ZW1cIiwgXCJtZW51aXRlbWNoZWNrYm94XCIsIFwibWVudWl0ZW1yYWRpb1wiLCBcIm9wdGlvblwiLCBcInByb2dyZXNzYmFyXCIsIFwic2Nyb2xsYmFyXCIsIFwic2VwYXJhdG9yXCIsIFwic2xpZGVyXCIsIFwic3dpdGNoXCIsIFwidGFiXCIsIFwidHJlZWl0ZW1cIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiaW1nLXdpdGgtZW1wdHktYWx0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInByZXNlbnRhdGlvblwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdoZW4gYWx0IGF0dHJpYnV0ZSBpcyBlbXB0eVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2UgLy8gVE9ETyBhcmlhLWhpZGRlbj1cInRydWVcIiBpcyBhbGxvd2VkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJpbWctd2l0aG91dC1hbHRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiaW1nXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBhbHQgYXR0cmlidXRlLCBhcmlhLWxhYmVsLCBvciBhcmlhLWxhYmVsbGVkYnkgYXJlIG5vdCBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiBmYWxzZSAvLyBUT0RPIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGlzIGFsbG93ZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpbnB1dFwiOiB7XG4gICAgICAgICAgICBcImJ1dHRvblwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJidXR0b25cIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wibGlua1wiLCBcIm1lbnVpdGVtXCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIiwgXCJvcHRpb25cIiwgXCJyYWRpb1wiLCBcInN3aXRjaFwiLCBcInRhYlwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJjaGVja2JveC13aXRoLWFyaWEtcHJlc3NlZFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjaGVja2JveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1jaGVja2JveCBhbmQgYXJpYS1wcmVzc2VkIGF0dHJpYnV0ZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYnV0dG9uXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImNoZWNrYm94LXdpdGhvdXQtYXJpYS1wcmVzc2VkXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNoZWNrYm94XCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPWNoZWNrYm94IGFuZCBhcmlhLXByZXNzZWQgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wibWVudWl0ZW1jaGVja2JveFwiLCBcIm9wdGlvblwiLCBcInN3aXRjaFwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJjb2xvclwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPWNvbG9yXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkYXRlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9ZGF0ZVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZGF0ZXRpbWUtbG9jYWxcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1kYXRldGltZVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZW1haWwtbm8tbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0ZXh0Ym94XCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPWVtYWlsIGFuZCBubyBsaXN0IGF0dHJpYnV0ZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJlbWFpbC13aXRoLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29tYm9ib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9ZW1haWwgYW5kIGEgbGlzdCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZmlsZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPWZpbGVcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImhpZGRlblwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPWhpZGRlblwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogZmFsc2VcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImltYWdlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImJ1dHRvblwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1pbWFnZVwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImxpbmtcIiwgXCJtZW51aXRlbVwiLCBcIm1lbnVpdGVtY2hlY2tib3hcIiwgXCJtZW51aXRlbXJhZGlvXCIsIFwicmFkaW9cIiwgXCJzd2l0Y2hcIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibW9udGhcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1tb250aFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwibnVtYmVyXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInNwaW5idXR0b25cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9bnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJwYXNzd29yZFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJyYWRpb1wiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJyYWRpb1wiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1yYWRpb1wiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcIm1lbnVpdGVtcmFkaW9cIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicmFuZ2VcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wic2xpZGVyXCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXJhZGlvXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJyZXNldFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJidXR0b25cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9cmVzZXRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInNlYXJjaC1uby1saXN0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInNlYXJjaGJveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT1zZWFyY2ggYW5kIG5vIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInNlYXJjaC13aXRoLWxpc3RcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29tYm9ib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9c2VhcmNoIGFuZCBhIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInN1Ym1pdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJidXR0b25cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9c3VibWl0XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0ZWwtbm8tbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0ZXh0Ym94XCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXRlbCBhbmQgbm8gbGlzdCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGVsLXdpdGgtbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjb21ib2JveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT10ZWwgYW5kIGEgbGlzdCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGV4dC1uby1saXN0XCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcInRleHRib3hcIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aXRoIHR5cGU9dGV4dCBhbmQgbm8gbGlzdCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImNvbWJvYm94XCIsIFwic2VhcmNoYm94XCIsIFwic3BpbmJ1dHRvblwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0ZXh0LXdpdGgtbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjb21ib2JveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT10ZXh0IGFuZCBhIGxpc3QgYXR0cmlidXRlIGlzIHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRpbWVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT10aW1lXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ1cmwtbm8tbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJ0ZXh0Ym94XCJdLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXVybCBhbmQgbm8gbGlzdCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidXJsLXdpdGgtbGlzdFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjb21ib2JveFwiXSxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiIHdpdGggdHlwZT11cmwgYW5kIGEgbGlzdCBhdHRyaWJ1dGUgaXMgcHJlc2VudFwiLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwid2Vla1wiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCB0eXBlPXdlZWtcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImRlZmF1bHRcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogbnVsbCxcbiAgICAgICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiXCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwic2VjdGlvblwiOiB7XG4gICAgICAgICAgICBcIndpdGgtbmFtZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJyZWdpb25cIl0sXG4gICAgICAgICAgICAgICAgLy9yb2xlQ29uZGl0aW9uOiBcIiB3aGVuIGFjY2Vzc2libGUgbmFtZSBpcyBwcmVzZW50XCIsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYWxlcnRcIiwgXCJhbGVydGRpYWxvZ1wiLCBcImFwcGxpY2F0aW9uXCIsIFwiYmFubmVyXCIsIFwiY29tcGxlbWVudGFyeVwiLCBcImNvbnRlbnRpbmZvXCIsIFwiZGlhbG9nXCIsIFwiZG9jLWFic3RyYWN0XCIsIFwiZG9jLWFja25vd2xlZGdtZW50c1wiLCBcImRvYy1hZnRlcndvcmRcIiwgXCJkb2MtYXBwZW5kaXhcIiwgXCJkb2MtYmlibGlvZ3JhcGh5XCIsIFwiZG9jLWNoYXB0ZXJcIiwgXCJkb2MtY29sb3Bob25cIiwgXCJkb2MtY29uY2x1c2lvblwiLCBcImRvYy1jcmVkaXRcIiwgXCJkb2MtY3JlZGl0c1wiLCBcImRvYy1kZWRpY2F0aW9uXCIsIFwiZG9jLWVuZG5vdGVzXCIsIFwiZG9jLWVwaWdyYXBoXCIsIFwiZG9jLWVwaWxvZ3VlXCIsIFwiZG9jLWVycmF0YVwiLCBcImRvYy1leGFtcGxlXCIsIFwiZG9jLWZvcmV3b3JkXCIsIFwiZG9jLWdsb3NzYXJ5XCIsIFwiZG9jLWluZGV4XCIsIFwiZG9jLWludHJvZHVjdGlvblwiLCBcImRvYy1ub3RpY2VcIiwgXCJkb2MtcGFnZWxpc3RcIiwgXCJkb2MtcGFydFwiLCBcImRvYy1wcmVmYWNlXCIsIFwiZG9jLXByb2xvZ3VlXCIsIFwiZG9jLXB1bGxxdW90ZVwiLCBcImRvYy1xbmFcIiwgXCJkb2MtdG9jXCIsIFwiZG9jdW1lbnRcIiwgXCJmZWVkXCIsIFwiZ3JvdXBcIiwgXCJsb2dcIiwgXCJtYWluXCIsIFwibWFycXVlZVwiLCBcIm5hdmlnYXRpb25cIiwgXCJub25lXCIsIFwibm90ZVwiLCBcInByZXNlbnRhdGlvblwiLCBcInNlYXJjaFwiLCBcInN0YXR1c1wiLCBcInRhYnBhbmVsXCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIndpdGhvdXQtbmFtZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2hlbiBhY2Nlc3NpYmxlIG5hbWUgaXMgbm90IHByZXNlbnRcIixcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbGVydFwiLCBcImFsZXJ0ZGlhbG9nXCIsIFwiYXBwbGljYXRpb25cIiwgXCJiYW5uZXJcIiwgXCJjb21wbGVtZW50YXJ5XCIsIFwiY29udGVudGluZm9cIiwgXCJkaWFsb2dcIiwgXCJkb2MtYWJzdHJhY3RcIiwgXCJkb2MtYWNrbm93bGVkZ21lbnRzXCIsIFwiZG9jLWFmdGVyd29yZFwiLCBcImRvYy1hcHBlbmRpeFwiLCBcImRvYy1iaWJsaW9ncmFwaHlcIiwgXCJkb2MtY2hhcHRlclwiLCBcImRvYy1jb2xvcGhvblwiLCBcImRvYy1jb25jbHVzaW9uXCIsIFwiZG9jLWNyZWRpdFwiLCBcImRvYy1jcmVkaXRzXCIsIFwiZG9jLWRlZGljYXRpb25cIiwgXCJkb2MtZW5kbm90ZXNcIiwgXCJkb2MtZXBpZ3JhcGhcIiwgXCJkb2MtZXBpbG9ndWVcIiwgXCJkb2MtZXJyYXRhXCIsIFwiZG9jLWV4YW1wbGVcIiwgXCJkb2MtZm9yZXdvcmRcIiwgXCJkb2MtZ2xvc3NhcnlcIiwgXCJkb2MtaW5kZXhcIiwgXCJkb2MtaW50cm9kdWN0aW9uXCIsIFwiZG9jLW5vdGljZVwiLCBcImRvYy1wYWdlbGlzdFwiLCBcImRvYy1wYXJ0XCIsIFwiZG9jLXByZWZhY2VcIiwgXCJkb2MtcHJvbG9ndWVcIiwgXCJkb2MtcHVsbHF1b3RlXCIsIFwiZG9jLXFuYVwiLCBcImRvYy10b2NcIiwgXCJkb2N1bWVudFwiLCBcImZlZWRcIiwgXCJncm91cFwiLCBcImxvZ1wiLCBcIm1haW5cIiwgXCJtYXJxdWVlXCIsIFwibmF2aWdhdGlvblwiLCBcIm5vbmVcIiwgXCJub3RlXCIsIFwicHJlc2VudGF0aW9uXCIsIFwic2VhcmNoXCIsIFwic3RhdHVzXCIsIFwidGFicGFuZWxcIl0sXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInNlbGVjdFwiOiB7XG4gICAgICAgICAgICBcIm5vLW11bHRpcGxlLWF0dHItc2l6ZS1ndDFcIjoge1xuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCBhIG11bHRpcGxlIGF0dHJpYnV0ZSBvciBhIHNpemUgYXR0cmlidXRlIGhhdmluZyB2YWx1ZSBncmVhdGVyIHRoYW4gMVwiXG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJjb21ib2JveFwiXSxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJtZW51XCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm11bHRpcGxlLWF0dHItc2l6ZS1ndDFcIjoge1xuICAgICAgICAgICAgICAgIC8vcm9sZUNvbmRpdGlvbjogXCIgd2l0aCBubyBtdWx0aXBsZSBhdHRyaWJ1dGUgYW5kIG5vIHNpemUgYXR0cmlidXRlIGhhdmluZyB2YWx1ZSBncmVhdGVyIHRoYW4gMVwiXG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJsaXN0Ym94XCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRkXCI6IHtcbiAgICAgICAgICAgIFwiZGVzLXRhYmxlXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNlbGxcIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkZXMtZ3JpZFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJncmlkY2VsbFwiXSxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImRlcy1vdGhlclwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBudWxsLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwidGhcIjoge1xuICAgICAgICAgICAgXCJkZXMtdGFibGVcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wiY29sdW1uaGVhZGVyXCIsIFwicm93aGVhZGVyXCIsIFwiY2VsbFwiXSxcbiAgICAgICAgICAgICAgICB2YWxpZFJvbGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImRlcy1ncmlkXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IFtcImNvbHVtbmhlYWRlclwiLCBcInJvd2hlYWRlclwiLCBcImdyaWRjZWxsXCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgZ2xvYmFsQXJpYUF0dHJpYnV0ZXNWYWxpZDogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZGVzLW90aGVyXCI6IHtcbiAgICAgICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogW1wiYW55XCJdLFxuICAgICAgICAgICAgICAgIGdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQ6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ0clwiOiB7XG4gICAgICAgICAgICBcImRlcy10YWJsZVwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJyb3dcIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkZXMtZ3JpZFwiOiB7XG4gICAgICAgICAgICAgICAgaW1wbGljaXRSb2xlOiBbXCJyb3dcIl0sXG4gICAgICAgICAgICAgICAgdmFsaWRSb2xlczogbnVsbCxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJkZXMtb3RoZXJcIjoge1xuICAgICAgICAgICAgICAgIGltcGxpY2l0Um9sZTogW1wicm93XCJdLFxuICAgICAgICAgICAgICAgIHZhbGlkUm9sZXM6IFtcImFueVwiXSxcbiAgICAgICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgICBpbXBsaWNpdFJvbGU6IG51bGwsXG4gICAgICAgICAgICAvL3JvbGVDb25kaXRpb246IFwiXCIsXG4gICAgICAgICAgICB2YWxpZFJvbGVzOiBbXCJhbnlcIl0sXG4gICAgICAgICAgICBnbG9iYWxBcmlhQXR0cmlidXRlc1ZhbGlkOiB0cnVlXG4gICAgICAgIH1cbiAgICB9IC8vIGVuZCBvZiBkb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRTcGVjaWFsVGFnc1xuXG4gICAgc3RhdGljIGNvbnRhaW5lcnMgPSBbXVxufTtcblxubGV0IGNvbnRhaW5lckFycmF5ID0gW107XG5cbmZvciAoY29uc3Qgcm9sZURlc2lnbiBpbiBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnMpIHtcbiAgICBjb25zdCBjb250YWluZXJzID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVEZXNpZ25dLmNvbnRhaW5lcjtcbiAgICBpZiAoY29udGFpbmVycyAhPT0gbnVsbCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbnRhaW5lciBvZiBjb250YWluZXJzKSB7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyQXJyYXkuaW5kZXhPZihjb250YWluZXIpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyQXJyYXkucHVzaChjb250YWluZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuQVJJQURlZmluaXRpb25zLmNvbnRhaW5lcnMgPSBjb250YWluZXJBcnJheTtcbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQVJJQURlZmluaXRpb25zIH0gZnJvbSBcIi4vQVJJQURlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBDb21tb25NYXBwZXIgfSBmcm9tIFwiLi4vY29tbW9uL0NvbW1vbk1hcHBlclwiO1xuaW1wb3J0IHsgSU1hcFJlc3VsdH0gZnJvbSBcIi4uL2FwaS9JTWFwcGVyXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL2NoZWNrZXIvYWNjZXNzaWJpbGl0eS91dGlsL2xlZ2FjeVwiXG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vY2hlY2tlci9hY2Nlc3NpYmlsaXR5L3V0aWwvZnJhZ21lbnRcIjtcbnR5cGUgRWxlbUNhbGMgPSAoZWxlbTogRWxlbWVudCkgPT4gc3RyaW5nO1xudHlwZSBOb2RlQ2FsYyA9IChub2RlOiBOb2RlKSA9PiBzdHJpbmc7XG5cbmV4cG9ydCBjbGFzcyBBUklBTWFwcGVyIGV4dGVuZHMgQ29tbW9uTWFwcGVyIHtcbiAgICAvL2RvbS1kZWZpbmVkIHJlbGF0aW9uc2hpcCBvdmVycmlkZGVuIGJ5IGFyaWEtb3duczogZWxlbUlkIDogcGFyZW50Um9sZVBhdGhcbiAgICBwcml2YXRlIGFyaWFIaWVyYXJjaHk6IEFycmF5PHtcbiAgICAgICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgICAgICBoaWVyYXJjaHlSb2xlIDogc3RyaW5nW10sXG4gICAgICAgICAgICBoaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlOiBib29sZWFuW10sXG4gICAgICAgICAgICBoaWVyYXJjaHlQYXRoOiBBcnJheTx7XG4gICAgICAgICAgICAgICAgcm9sZVBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICByb2xlQ291bnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgW3JvbGU6IHN0cmluZ106IG51bWJlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0+LFxuICAgICAgICAgICAgaGllcmFyY2h5UmVzdWx0czogSU1hcFJlc3VsdFtdLFxuICAgICAgICAgICAgbm9kZTpOb2RlIHwgbnVsbCxcbiAgICAgICAgICAgIHNoYWRvd1Jvb3Q6IE5vZGUgfCBudWxsXG4gICAgfT4gPSBudWxsO1xuICAgICAgICBcbiAgICBwcml2YXRlIGhpZXJhcmNoeUNhY2hlOiB7ICBcbiAgICAgICAgaGllcmFyY2h5Um9sZSA6IHN0cmluZ1tdLFxuICAgICAgICBoaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlOiBib29sZWFuW10sXG4gICAgICAgIGhpZXJhcmNoeVBhdGg6IEFycmF5PHtcbiAgICAgICAgICAgIHJvbGVQYXRoOiBzdHJpbmcsXG4gICAgICAgICAgICByb2xlQ291bnQ6IHtcbiAgICAgICAgICAgICAgICBbcm9sZTogc3RyaW5nXTogbnVtYmVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH0+LFxuICAgICAgICBoaWVyYXJjaHlSZXN1bHRzOiBJTWFwUmVzdWx0W11cbiAgICB9OyBcbiAgICBjaGlsZHJlbkhhdmVSb2xlKG5vZGU6IE5vZGUsIHJvbGU6IHN0cmluZykgOiBib29sZWFuIHtcbiAgICAgICAgLy8gaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8pIHtcbiAgICAgICAgLy8gICAgIGNvbnN0IGVsZW0gPSBub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIC8vICAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuICEocm9sZSBpbiBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnMgJiYgQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVdLnByZXNlbnRhdGlvbmFsQ2hpbGRyZW4pO1xuICAgIH1cbiAgICBnZXRSb2xlKG5vZGU6IE5vZGUpIDogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgcm9sZSA9IEFSSUFNYXBwZXIubm9kZVRvUm9sZShub2RlKTtcbiAgICAgICAgcmV0dXJuIHJvbGU7XG4gICAgfVxuICAgIGdldE5hbWVzcGFjZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJhcmlhXCJcbiAgICB9XG4gICAgZ2V0QXR0cmlidXRlcyhub2RlOiBOb2RlKSA6IHsgW2tleTpzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgICAgIGxldCByZXRWYWwgPSB7fTtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW0gPSBub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4PGVsZW0uYXR0cmlidXRlcy5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ckluZm8gPSBlbGVtLmF0dHJpYnV0ZXNbaWR4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gYXR0ckluZm8ubmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJhcmlhLVwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWxbbmFtZS5zdWJzdHJpbmcoNSldID0gYXR0ckluZm8ubm9kZVZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGFwcGx5QXR0clJvbGU9IGZ1bmN0aW9uKG5vZGVOYW1lOnN0cmluZykge1xuICAgICAgICAgICAgICAgIGlmICghKG5vZGVOYW1lIGluIEFSSUFNYXBwZXIuZWxlbUF0dHJWYWx1ZUNhbGN1bGF0b3JzKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXR0ciBpbiBBUklBTWFwcGVyLmVsZW1BdHRyVmFsdWVDYWxjdWxhdG9yc1tub2RlTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoYXR0ciBpbiByZXRWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBBUklBTWFwcGVyLmVsZW1BdHRyVmFsdWVDYWxjdWxhdG9yc1tub2RlTmFtZV1bYXR0cl07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9IFwidW5kZWZpbmVkXCIgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSB0eXBlb2YgXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSBhcyBOb2RlQ2FsYykoZWxlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbFthdHRyXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcGx5QXR0clJvbGUoXCJnbG9iYWxcIik7XG4gICAgICAgICAgICBhcHBseUF0dHJSb2xlKG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMyAvKiBOb2RlLlRFWFRfTk9ERSAqLykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyIGluIEFSSUFNYXBwZXIudGV4dEF0dHJWYWx1ZUNhbGN1bGF0b3JzKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IEFSSUFNYXBwZXIudGV4dEF0dHJWYWx1ZUNhbGN1bGF0b3JzW2F0dHJdKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsICE9IFwidW5kZWZpbmVkXCIgJiYgdmFsICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbFthdHRyXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICByZXNldChub2RlOiBOb2RlKSB7XG4gICAgICAgIGlmICh0aGlzLmFyaWFIaWVyYXJjaHkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUobm9kZSk7XG4gICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gOSAvKiBOb2RlLkRPQ1VNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgICAgICBsZXQgdG9wID0gKHBhcmVudCBhcyBEb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gdG9wLnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLW93bnNdJyk7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3QgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcmlhSGllcmFyY2h5ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaCgoZWxlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhpZXJhcmNoaWVzIDogSU1hcFJlc3VsdFtdID0gdGhpcy5vcGVuU2NvcGUoZWxlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGllcmFyY2h5Um9sZSA6IHN0cmluZ1tdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeVJvbGUpKTsgXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZTogYm9vbGVhbltdID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoaWVyYXJjaHlQYXRoOiBBcnJheTx7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZVBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlQ291bnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvbGU6IHN0cmluZ106IG51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0+ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeVBhdGgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoaWVyYXJjaHlSZXN1bHRzOiBJTWFwUmVzdWx0W10gPSBET01VdGlsLm9iamVjdENvcHlXaXRoTm9kZVJlZnModGhpcy5oaWVyYXJjaHlSZXN1bHRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhdHRyVmFsdWUgPSBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtb3duc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZHMgPSBhdHRyVmFsdWUudHJpbSgpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJpYUhpZXJhcmNoeS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGlkLnRyaW0oKSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeVJvbGU6IGhpZXJhcmNoeVJvbGUsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlOiBoaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlQYXRoOiBoaWVyYXJjaHlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlSZXN1bHRzOiBoaWVyYXJjaHlSZXN1bHRzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93Um9vdDogRE9NVXRpbC5zaGFkb3dSb290Tm9kZShlbGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NsZWFyIHRoZSBoaWVyYXJjaGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlSb2xlID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlQYXRoID0gW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlUGF0aDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlQ291bnQ6IHt9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XTsgXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9IFxuICAgICAgICB9ICAgIFxuICAgICAgICBBUklBTWFwcGVyLm5hbWVDb21wdXRhdGlvbklkID0gMDtcbiAgICAgICAgc3VwZXIucmVzZXQobm9kZSk7IFxuICAgIH1cblxuICAgIHB1c2hIaWVyYXJjaHkobm9kZTogTm9kZSkge1xuICAgICAgICBpZiAodGhpcy5zd2l0Y2hQYXJlbnRIaWVyYXJjaGllcyhub2RlKSkge1xuICAgICAgICAgICAgLy9jYWNoZSB0aGUgb3JpZ2luYWwgaGllcmFyY2hpZXNcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Q2FjaGUgPSB7XG4gICAgICAgICAgICAgICAgaGllcmFyY2h5Um9sZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeVJvbGUpKSwgXG4gICAgICAgICAgICAgICAgaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGUpKSxcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlQYXRoOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuaGllcmFyY2h5UGF0aCkpLFxuICAgICAgICAgICAgICAgIGhpZXJhcmNoeVJlc3VsdHM6IERPTVV0aWwub2JqZWN0Q29weVdpdGhOb2RlUmVmcyh0aGlzLmhpZXJhcmNoeVJlc3VsdHMpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvL3Jld3JpdGUgcGFyZW50IGhpZXJhcmNoeSB0byB0aGUgZWxlbWVudCB3aXRoIGFyaWEtb3duc1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAobm9kZSBhcyBFbGVtZW50KS5nZXRBdHRyaWJ1dGUoXCJpZFwiKTtcbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeUl0ZW0gPSB0aGlzLmFyaWFIaWVyYXJjaHkuZmluZChhcmlhID0+IGFyaWEuaWQgPT09IHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Um9sZSA9IGhpZXJhcmNoeUl0ZW0uaGllcmFyY2h5Um9sZTsgXG4gICAgICAgICAgICB0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGUgPSBoaWVyYXJjaHlJdGVtLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGU7XG4gICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVBhdGggPSBoaWVyYXJjaHlJdGVtLmhpZXJhcmNoeVBhdGg7XG4gICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVJlc3VsdHMgPSBoaWVyYXJjaHlJdGVtLmhpZXJhcmNoeVJlc3VsdHM7ICBcbiAgICAgICAgICAgIC8vc2V0IHRoZSBjdXJyZW50IG5vZGUgXG4gICAgICAgICAgICBoaWVyYXJjaHlJdGVtLm5vZGUgPSBub2RlO1xuICAgICAgICB9IFxuICAgICAgICBzdXBlci5wdXNoSGllcmFyY2h5KG5vZGUpO1xuICAgIH0gICAgXG5cbiAgICBjbG9zZVNjb3BlKG5vZGU6IE5vZGUpOiBJTWFwUmVzdWx0W10ge1xuICAgICAgICBjb25zdCByZXN1bHRzIDogSU1hcFJlc3VsdFtdID0gc3VwZXIuY2xvc2VTY29wZShub2RlKTtcblxuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiYgdGhpcy5hcmlhSGllcmFyY2h5ICE9IG51bGwgJiYgdGhpcy5hcmlhSGllcmFyY2h5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKG5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwiaWRcIik7XG4gICAgICAgICAgICBsZXQgaGllcmFyY2h5SXRlbSA9IHRoaXMuYXJpYUhpZXJhcmNoeS5maW5kKGFyaWEgPT4gYXJpYS5pZCA9PT0gdmFsdWUpO1xuICAgICAgICAgICAgaWYgKGhpZXJhcmNoeUl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoRE9NVXRpbC5zYW1lTm9kZShub2RlLCBoaWVyYXJjaHlJdGVtLm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vcmV3cml0ZSBjb21wZXRlZCwgcmVzdG9yZSBvcmlnaW5hbCBoaWVyYXJjaGllc1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVJvbGUgPSB0aGlzLmhpZXJhcmNoeUNhY2hlLmhpZXJhcmNoeVJvbGU7IFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGUgPSB0aGlzLmhpZXJhcmNoeUNhY2hlLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5UGF0aCA9IHRoaXMuaGllcmFyY2h5Q2FjaGUuaGllcmFyY2h5UGF0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlSZXN1bHRzID0gdGhpcy5oaWVyYXJjaHlDYWNoZS5oaWVyYXJjaHlSZXN1bHRzOyBcblxuICAgICAgICAgICAgICAgICAgICAvL3NldCByZXdyaXRlIHBhcmVudCBub2RlIHRvIG51bGxcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5SXRlbS5ub2RlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuXG4gICAgLy9yZXdyaXRlIGFyaWEgcm9sZSBwYXRoIGZvciBhcmlhLW93bnNcbiAgICBzd2l0Y2hQYXJlbnRIaWVyYXJjaGllcyhub2RlIDogTm9kZSkgOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuYXJpYUhpZXJhcmNoeSA9PT0gbnVsbCB8fCB0aGlzLmFyaWFIaWVyYXJjaHkubGVuZ3RoID09PSAwIHx8IG5vZGUubm9kZVR5cGUgIT09IG5vZGUuRUxFTUVOVF9OT0RFKSByZXR1cm4gZmFsc2U7IFxuICAgICAgICBjb25zdCB2YWx1ZSA6IHN0cmluZyA9IChub2RlIGFzIEVsZW1lbnQpLmdldEF0dHJpYnV0ZShcImlkXCIpOyBcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IGFyaWFNYXAgPSB0aGlzLmFyaWFIaWVyYXJjaHkuZmluZChhcmlhID0+IGFyaWEuaWQgPT09IHZhbHVlKTtcbiAgICAgICAgaWYgKCFhcmlhTWFwKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vYXJpYS1vd25zIGRvZXNuJ3QgY3Jvc3MgZG9tc1xuICAgICAgICBjb25zdCBzaGFkb3dSb290ID0gRE9NVXRpbC5zaGFkb3dSb290Tm9kZShub2RlKTtcbiAgICAgICAgaWYgKChzaGFkb3dSb290ICYmICFhcmlhTWFwLnNoYWRvd1Jvb3QpIFxuICAgICAgICAgICAgfHwgKCFzaGFkb3dSb290ICYmIGFyaWFNYXAuc2hhZG93Um9vdCkgXG4gICAgICAgICAgICB8fCAoc2hhZG93Um9vdCAmJiBhcmlhTWFwLnNoYWRvd1Jvb3QgJiYgIURPTVV0aWwuc2FtZU5vZGUoc2hhZG93Um9vdCwgYXJpYU1hcC5zaGFkb3dSb290KSkpIFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyBcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBIZWxwZXIgZnVuY3Rpb25zXG4gICAgLy8vL1xuXG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwtYWFtLTEuMC8jbWFwcGluZy1odG1sLXRvLWFjY2Vzc2liaWxpdHktYXBpc1xuICAgIHB1YmxpYyBzdGF0aWMgZWxlbUF0dHJWYWx1ZUNhbGN1bGF0b3JzOiB7IFtub2RlTmFtZTpzdHJpbmddOiB7IFthdHRyOnN0cmluZ106IHN0cmluZyB8IEVsZW1DYWxjIH19ID0ge1xuICAgICAgICBcImdsb2JhbFwiOiB7XG4gICAgICAgICAgICBcIm5hbWVcIjogQVJJQU1hcHBlci5jb21wdXRlTmFtZVxuICAgICAgICB9XG4gICAgICAgICwgXCJkYXRhbGlzdFwiOiB7XG4gICAgICAgICAgICAvLyBzZXQgdG8gXCJ0cnVlXCIgaWYgdGhlIGRhdGFsaXN0J3Mgc2VsZWN0aW9uIG1vZGVsIGFsbG93cyBtdWx0aXBsZSBvcHRpb24gZWxlbWVudHMgdG8gYmVcbiAgICAgICAgICAgIC8vIHNlbGVjdGVkIGF0IGEgdGltZSwgYW5kIFwiZmFsc2VcIiBvdGhlcndpc2VcbiAgICAgICAgICAgIFwibXVsdGlzZWxlY3RhYmxlXCI6IGVsZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKTtcbiAgICAgICAgICAgICAgICBpZiAoaWQgJiYgaWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgaW5wdXQgPSBlbGVtLm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImlucHV0W2xpc3Q9J1wiK2lkK1wiJ11cIik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlwiKyhlbGVtLmdldEF0dHJpYnV0ZShcIm11bHRpcGxlXCIpIFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGVsZW0uZ2V0QXR0cmlidXRlKFwibXVsdGlwbGVcIik9PVwidHJ1ZVwiIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwibXVsdGlwbGVcIik9PVwiXCIpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAsIFwiaDFcIjoge1xuICAgICAgICAgICAgXCJsZXZlbFwiOiBcIjFcIlxuICAgICAgICB9XG4gICAgICAgICwgXCJoMlwiOiB7XG4gICAgICAgICAgICBcImxldmVsXCI6IFwiMlwiXG4gICAgICAgIH1cbiAgICAgICAgLCBcImgzXCI6IHtcbiAgICAgICAgICAgIFwibGV2ZWxcIjogXCIzXCJcbiAgICAgICAgfVxuICAgICAgICAsIFwiaDRcIjoge1xuICAgICAgICAgICAgXCJsZXZlbFwiOiBcIjRcIlxuICAgICAgICB9XG4gICAgICAgICwgXCJoNVwiOiB7XG4gICAgICAgICAgICBcImxldmVsXCI6IFwiNVwiXG4gICAgICAgIH1cbiAgICAgICAgLCBcImg2XCI6IHtcbiAgICAgICAgICAgIFwibGV2ZWxcIjogXCI2XCJcbiAgICAgICAgfVxuICAgICAgICAsIFwiaW5wdXRcIjoge1xuICAgICAgICAgICAgLy8gLSB0eXBlPVwiY2hlY2tib3hcIiBzdGF0ZSBzZXQgdG8gXCJtaXhlZFwiIGlmIHRoZSBlbGVtZW50J3MgaW5kZXRlcm1pbmF0ZSBJREwgYXR0cmlidXRlIFxuICAgICAgICAgICAgLy8gaXMgdHJ1ZSwgb3IgXCJ0cnVlXCIgaWYgdGhlIGVsZW1lbnQncyBjaGVja2VkbmVzcyBpcyB0cnVlLCBvciBcImZhbHNlXCIgb3RoZXJ3aXNlXG4gICAgICAgICAgICAvLyAtIHR5cGU9XCJyYWRpb1wiIHN0YXRlIHNldCB0byBcInRydWVcIiBpZiB0aGUgZWxlbWVudCdzIGNoZWNrZWRuZXNzIGlzIHRydWUsIG9yIFwiZmFsc2VcIiBcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZS4gXG4gICAgICAgICAgICBcImNoZWNrZWRcIjogZWxlbSA9PiB7IFxuICAgICAgICAgICAgICAgIGlmIChlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikgPT09IFwiY2hlY2tib3hcIiB8fCBlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikgPT09IFwicmFkaW9cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIisoZWxlbSBhcyBIVE1MSW5wdXRFbGVtZW50KS5jaGVja2VkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIC0gdHlwZT1cInJhZGlvXCIgYW5kIG5vdCBpbiBtZW51IHJlZmxlY3RpbmcgbnVtYmVyIG9mIHR5cGU9cmFkaW8gaW5wdXQgZWxlbWVudHMgXG4gICAgICAgICAgICAvLyB3aXRoaW4gdGhlIHJhZGlvIGJ1dHRvbiBncm91cFxuICAgICAgICAgICAgLCBcInNldHNpemVcIjogZWxlbSA9PiB7IHJldHVybiBudWxsOyB0aHJvdyBuZXcgRXJyb3IoXCJOT1QgSU1QTEVNRU5URURcIik7IH1cbiAgICAgICAgICAgIC8vIC0gdHlwZT1cInJhZGlvXCIgYW5kIG5vdCBpbiBtZW51IHZhbHVlIHJlZmxlY3RpbmcgdGhlIGVsZW1lbnRzIHBvc2l0aW9uIFxuICAgICAgICAgICAgLy8gd2l0aGluIHRoZSByYWRpbyBidXR0b24gZ3JvdXAuXCJcbiAgICAgICAgICAgICwgXCJwb3NpbnNldFwiOiBlbGVtID0+IHsgcmV0dXJuIG51bGw7IHRocm93IG5ldyBFcnJvcihcIk5PVCBJTVBMRU1FTlRFRFwiKTsgfVxuICAgICAgICAgICAgLy8gaW5wdXQgKHR5cGUgYXR0cmlidXRlIGluIHRoZSBUZXh0LCBTZWFyY2gsIFRlbGVwaG9uZSwgVVJMLCBvciBFLW1haWwgc3RhdGVzIHdpdGggYSBcbiAgICAgICAgICAgIC8vIHN1Z2dlc3Rpb25zIHNvdXJjZSBlbGVtZW50KSBjb21ib2JveCByb2xlLCB3aXRoIHRoZSBhcmlhLW93bnMgcHJvcGVydHkgc2V0IHRvIHRoZSBzYW1lXG4gICAgICAgICAgICAvLyB2YWx1ZSBhcyB0aGUgbGlzdCBhdHRyaWJ1dGVcbiAgICAgICAgICAgICwgXCJvd25zXCI6IGVsZW0gPT4geyByZXR1cm4gbnVsbDsgdGhyb3cgbmV3IEVycm9yKFwiTk9UIElNUExFTUVOVEVEXCIpOyB9XG4gICAgICAgIH1cbiAgICAgICAgLCBcImtleWdlblwiOiB7XG4gICAgICAgICAgICBcIm11bHRpc2VsZWN0YWJsZVwiOiBcImZhbHNlXCJcbiAgICAgICAgfVxuICAgICAgICAsIFwibGlcIjoge1xuICAgICAgICAgICAgLy8gTnVtYmVyIG9mIGxpIGVsZW1lbnRzIHdpdGhpbiB0aGUgb2wsIHVsLCBtZW51XG4gICAgICAgICAgICBcInNldHNpemVcIjogZWxlbSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwuZ2V0QW5jZXN0b3IoZWxlbSwgW1wib2xcIiwgXCJ1bFwiLCBcIm1lbnVcIl0pO1xuICAgICAgICAgICAgICAgIGlmICghcGFyZW50KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgbGlzID0gcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaVwiKTtcbiAgICAgICAgICAgICAgICBsZXQgb3RoZXJsaXMgPSBwYXJlbnQucXVlcnlTZWxlY3RvckFsbChcIm9sIGxpLCB1bCBsaSwgbWVudSBsaVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIisobGlzLmxlbmd0aC1vdGhlcmxpcy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUG9zaXRpb24gb2YgbGkgZWxlbWVudCB3aXRoaW4gdGhlIG9sLCB1bCwgbWVudVxuICAgICAgICAgICAgLCBcInBvc2luc2V0XCI6IGVsZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBET01VdGlsLmdldEFuY2VzdG9yKGVsZW0sIFtcIm9sXCIsIFwidWxcIiwgXCJtZW51XCJdKVxuICAgICAgICAgICAgICAgIGlmICghcGFyZW50KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgbGlzID0gcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaVwiKTtcbiAgICAgICAgICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4PGxpcy5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpID0gbGlzW2lkeF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChET01VdGlsLnNhbWVOb2RlKHBhcmVudCwgRE9NVXRpbC5nZXRBbmNlc3RvcihsaSwgW1wib2xcIiwgXCJ1bFwiLCBcIm1lbnVcIl0pKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIrbnVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICsrbnVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAsIFwibWVudWl0ZW1cIjoge1xuICAgICAgICAgICAgLy8gdHlwZSA9IGNoZWNrYm94IG9yIHJhZGlvLCBzZXQgdG8gXCJ0cnVlXCIgaWYgdGhlIGNoZWNrZWQgYXR0cmlidXRlIFxuICAgICAgICAgICAgLy8gaXMgcHJlc2VudCwgYW5kIFwiZmFsc2VcIiBvdGhlcndpc2VcbiAgICAgICAgICAgIFwiY2hlY2tlZFwiOiBlbGVtID0+IFwiXCIrISEoZWxlbS5nZXRBdHRyaWJ1dGUoXCJjaGVja2VkXCIpIFxuICAgICAgICAgICAgICAgICYmIChlbGVtLmdldEF0dHJpYnV0ZShcImNoZWNrZWRcIik9PVwidHJ1ZVwiIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwiY2hlY2tlZFwiKT09XCJcIikpXG4gICAgICAgIH1cbiAgICAgICAgLCBcIm9wdGlvblwiOiB7XG4gICAgICAgICAgICAvLyBzZXQgdG8gXCJ0cnVlXCIgaWYgdGhlIGVsZW1lbnQncyBzZWxlY3RlZG5lc3MgaXMgdHJ1ZSwgb3IgXCJmYWxzZVwiIG90aGVyd2lzZS5cbiAgICAgICAgICAgIFwic2VsZWN0ZWRcIjogZWxlbSA9PiBcIlwiKyEhKGVsZW0uZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIikgXG4gICAgICAgICAgICAgICAgJiYgKGVsZW0uZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIik9PVwidHJ1ZVwiIHx8IGVsZW0uZ2V0QXR0cmlidXRlKFwic2VsZWN0ZWRcIik9PVwiXCIpKVxuICAgICAgICB9XG4gICAgICAgICwgXCJwcm9ncmVzc1wiOiB7XG4gICAgICAgICAgICBcInZhbHVlbWF4XCI6IGVsZW0gPT4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJtYXhcIikgfHwgXCIxXCJcbiAgICAgICAgICAgICwgXCJ2YWx1ZW1pblwiOiBlbGVtID0+IFwiMFwiXG4gICAgICAgICAgICAsIFwidmFsdWVub3dcIjogZWxlbSA9PiBlbGVtLmdldEF0dHJpYnV0ZShcInZhbHVlXCIpXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgdGV4dEF0dHJWYWx1ZUNhbGN1bGF0b3JzOiB7IFthdHRyOnN0cmluZ106IE5vZGVDYWxjIH0gPSB7XG4gICAgICAgIFwibmFtZVwiOiBub2RlID0+IG5vZGUubm9kZVZhbHVlXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgbmFtZUNvbXB1dGF0aW9uSWQgPSAwO1xuICAgIHB1YmxpYyBzdGF0aWMgY29tcHV0ZU5hbWUoY3VyOiBOb2RlKSA6IHN0cmluZyB7XG4gICAgICAgICsrQVJJQU1hcHBlci5uYW1lQ29tcHV0YXRpb25JZDtcbiAgICAgICAgcmV0dXJuIEFSSUFNYXBwZXIuY29tcHV0ZU5hbWVIZWxwKEFSSUFNYXBwZXIubmFtZUNvbXB1dGF0aW9uSWQsIGN1ciwgZmFsc2UsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbXB1dGVOYW1lSGVscCh3YWxrSWQ6IG51bWJlciwgY3VyOiBOb2RlLCBsYWJlbGxlZGJ5VHJhdmVyc2U6IGJvb2xlYW4sIHdhbGtUcmF2ZXJzZTogYm9vbGVhbikgOiBzdHJpbmcge1xuICAgICAgICAvLyAyZy4gTm9uZSBvZiB0aGUgb3RoZXIgY29udGVudCBhcHBsaWVzIHRvIHRleHQgbm9kZXMsIHNvIGp1c3QgZG8gdGhpcyBmaXJzdFxuICAgICAgICBpZiAoY3VyLm5vZGVUeXBlID09PSAzIC8qIE5vZGUuVEVYVF9OT0RFICovKSByZXR1cm4gY3VyLm5vZGVWYWx1ZTtcbiAgICAgICAgaWYgKGN1ci5ub2RlVHlwZSA9PT0gMTEpIHJldHVybiBcIlwiO1xuICAgICAgICBpZiAoY3VyLm5vZGVUeXBlICE9PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICBpZiAod2Fsa1RyYXZlcnNlIHx8IGxhYmVsbGVkYnlUcmF2ZXJzZSkgcmV0dXJuIFwiXCI7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IgKFwiQ2FuIG9ubHkgY29tcHV0ZSBuYW1lIG9uIEVsZW1lbnQgYW5kIFRleHRcIiArIGN1ci5ub2RlVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbGVtID0gY3VyIGFzIEVsZW1lbnQ7XG4gICAgICAgIC8vIFdlJ3ZlIGJlZW4gaGVyZSBiZWZvcmUgLSBwcmV2ZW50IHJlY3Vyc2lvblxuICAgICAgICBpZiAoUlBUVXRpbC5nZXRDYWNoZShlbGVtLCBcImRhdGEtbmFtZXdhbGtcIiwgbnVsbCkgPT09IFwiXCIrd2Fsa0lkKSByZXR1cm4gXCJcIjtcbiAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShlbGVtLCBcImRhdGEtbmFtZXdhbGtcIiwgXCJcIit3YWxrSWQpO1xuICAgICAgICAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwtYWFtLTEuMC8jaW5wdXQtdHlwZS10ZXh0LWlucHV0LXR5cGUtcGFzc3dvcmQtaW5wdXQtdHlwZS1zZWFyY2gtaW5wdXQtdHlwZS10ZWwtaW5wdXQtdHlwZS11cmwtYW5kLXRleHRhcmVhLWVsZW1lbnRcblxuICAgICAgICAvLyAyYS4gT25seSBzaG93IGhpZGRlbiBjb250ZW50IGlmIGl0J3MgcmVmZXJlbmNlZCBieSBhIGxhYmVsbGVkYnlcbiAgICAgICAgaWYgKCFsYWJlbGxlZGJ5VHJhdmVyc2UgJiYgIURPTVV0aWwuaXNOb2RlVmlzaWJsZShjdXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDJiLiBjb2xsZWN0IHZhbGlkIGlkIHJlZmVyZW5jZXNcbiAgICAgICAgaWYgKCFsYWJlbGxlZGJ5VHJhdmVyc2UgJiYgZWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcbiAgICAgICAgICAgIGxldCBsYWJlbGxlZGJ5ID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgbGV0IHZhbGlkRWxlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVmIG9mIGxhYmVsbGVkYnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWZFbGVtID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQoY3VyLCByZWYpO1xuICAgICAgICAgICAgICAgIGlmIChyZWZFbGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkRWxlbXMucHVzaChyZWZFbGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmFsaWRFbGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFjY3VtdWxhdGVkID0gXCJcIjtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVsZW0gb2YgdmFsaWRFbGVtcykge1xuICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlZCArPSBcIiBcIiArIHRoaXMuY29tcHV0ZU5hbWVIZWxwKHdhbGtJZCwgZWxlbSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0ZWQudHJpbSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2luY2Ugbm9kZVRvUm9sZSBjYWxscyBiYWNrIGhlcmUgZm9yIGZvcm0gYW5kIHNlY3Rpb24sIHdlIG5lZWQgc3BlY2lhbCBjYXNpbmcgaGVyZSB0byBoYW5kbGUgdGhvc2UgdHdvIGNhc2VzXG4gICAgICAgIGlmIChbXCJzZWN0aW9uXCIsIFwiZm9ybVwiXS5pbmNsdWRlcyhjdXIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgSSdtIG5vdCBhbiBlbWJlZGRlZCBjb250cm9sIG9yIEknbSBub3QgcmVjdXJzaW5nLCByZXR1cm4gdGhlIGFyaWEtbGFiZWxcbiAgICAgICAgICAgICAgICBpZiAoIWxhYmVsbGVkYnlUcmF2ZXJzZSAmJiAhd2Fsa1RyYXZlcnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikudHJpbSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcInRpdGxlXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwidGl0bGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDJjLiBJZiBsYWJlbCBvciB3YWxrLCBhbmQgdGhpcyBpcyBhIGNvbnRyb2wsIHNraXAgdG8gdGhlIHZhbHVlLCBvdGhlcndpc2UgcHJvdmlkZSB0aGUgbGFiZWxcbiAgICAgICAgY29uc3Qgcm9sZSA9IEFSSUFNYXBwZXIubm9kZVRvUm9sZShjdXIpO1xuICAgICAgICBsZXQgaXNFbWJlZGRlZENvbnRyb2wgPSBbXG4gICAgICAgICAgICBcInRleHRib3hcIiwgXCJidXR0b25cIiwgXCJjb21ib2JveFwiLCBcImxpc3Rib3hcIiwgXG4gICAgICAgICAgICBcInByb2dyZXNzYmFyXCIsIFwic2Nyb2xsYmFyXCIsIFwic2xpZGVyXCIsIFwic3BpbmJ1dHRvblwiXG4gICAgICAgIF0uaW5jbHVkZXMocm9sZSk7XG4gICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBJZiBJJ20gbm90IGFuIGVtYmVkZGVkIGNvbnRyb2wgb3IgSSdtIG5vdCByZWN1cnNpbmcsIHJldHVybiB0aGUgYXJpYS1sYWJlbFxuICAgICAgICAgICAgaWYgKCFsYWJlbGxlZGJ5VHJhdmVyc2UgJiYgIXdhbGtUcmF2ZXJzZSB8fCAhaXNFbWJlZGRlZENvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDJkLiBcbiAgICAgICAgaWYgKHJvbGUgIT09IFwicHJlc2VudGF0aW9uXCIgJiYgcm9sZSAhPT0gXCJub25lXCIpIHtcbiAgICAgICAgICAgIGlmICgoY3VyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW1nXCIgfHwgY3VyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYXJlYVwiKSAmJiBlbGVtLmhhc0F0dHJpYnV0ZShcImFsdFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBET01VdGlsLmNsZWFuV2hpdGVzcGFjZShlbGVtLmdldEF0dHJpYnV0ZShcImFsdFwiKSkudHJpbSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIiAmJiBlbGVtLmhhc0F0dHJpYnV0ZShcImlkXCIpICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9IGVsZW0ub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibGFiZWxbZm9yPSdcIitlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpK1wiJ11cIik7XG4gICAgICAgICAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVOYW1lSGVscCh3YWxrSWQsIGxhYmVsLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDJlLlxuICAgICAgICBpZiAoKHdhbGtUcmF2ZXJzZSB8fCBsYWJlbGxlZGJ5VHJhdmVyc2UpICYmIGlzRW1iZWRkZWRDb250cm9sKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZW1iZWRkZWQgY29udHJvbCBoYXMgcm9sZSB0ZXh0Ym94LCByZXR1cm4gaXRzIHZhbHVlLlxuICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwidGV4dGJveFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcInZhbHVlXCIpKSByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3YWxrVHJhdmVyc2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZSBlbWJlZGRlZCBjb250cm9sIGhhcyByb2xlIGJ1dHRvbiwgcmV0dXJuIHRoZSB0ZXh0IGFsdGVybmF0aXZlIG9mIHRoZSBidXR0b24uXG4gICAgICAgICAgICBpZiAocm9sZSA9PT0gXCJidXR0b25cIikge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoW1wiYnV0dG9uXCIsIFwic3VibWl0XCIsIFwicmVzZXRcIl0uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcInZhbHVlXCIpKSByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBcInN1Ym1pdFwiKSByZXR1cm4gXCJTdWJtaXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBcInJlc2V0XCIpIHJldHVybiBcIlJlc2V0XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3YWxrVHJhdmVyc2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRPRE86IElmIHRoZSBlbWJlZGRlZCBjb250cm9sIGhhcyByb2xlIGNvbWJvYm94IG9yIGxpc3Rib3gsIHJldHVybiB0aGUgdGV4dCBhbHRlcm5hdGl2ZSBvZiB0aGUgY2hvc2VuIG9wdGlvbi5cbiAgICAgICAgICAgIGlmIChyb2xlID09PSBcImNvbWJvYm94XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQoZWxlbSwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFSSUFNYXBwZXIuY29tcHV0ZU5hbWVIZWxwKHdhbGtJZCwgc2VsZWN0ZWQsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZSBlbWJlZGRlZCBjb250cm9sIGhhcyByb2xlIHJhbmdlIChlLmcuLCBhIHNwaW5idXR0b24gb3Igc2xpZGVyKTpcbiAgICAgICAgICAgIGlmIChbXCJwcm9ncmVzc2JhclwiLCBcInNjcm9sbGJhclwiLCBcInNsaWRlclwiLCBcInNwaW5idXR0b25cIl0uaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYXJpYS12YWx1ZXRleHQgcHJvcGVydHkgaXMgcHJlc2VudCwgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgICAgICAgICAgICBpZiAoZWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLXZhbHVldGV4dFwiKSkgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS12YWx1ZXRleHRcIik7XG4gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0aGUgYXJpYS12YWx1ZW5vdyBwcm9wZXJ0eSBpcyBwcmVzZW50LCByZXR1cm4gaXRzIHZhbHVlLFxuICAgICAgICAgICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtdmFsdWVub3dcIikpIHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtdmFsdWVub3dcIik7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogT3RoZXJ3aXNlLCB1c2UgdGhlIHZhbHVlIGFzIHNwZWNpZmllZCBieSBhIGhvc3QgbGFuZ3VhZ2UgYXR0cmlidXRlLlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMmYuIDJoLlxuICAgICAgICBpZiAod2Fsa1RyYXZlcnNlIHx8IEFSSUFEZWZpbml0aW9ucy5uYW1lRnJvbUNvbnRlbnQocm9sZSkgfHwgbGFiZWxsZWRieVRyYXZlcnNlKSB7XG4gICAgICAgICAgICAvLyAyZmkuIFNldCB0aGUgYWNjdW11bGF0ZWQgdGV4dCB0byB0aGUgZW1wdHkgc3RyaW5nLlxuICAgICAgICAgICAgbGV0IGFjY3VtdWxhdGVkID0gXCJcIjtcbiAgICAgICAgICAgIC8vIDJmaWkuIENoZWNrIGZvciBDU1MgZ2VuZXJhdGVkIHRleHR1YWwgY29udGVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgbm9kZSBhbmQgXG4gICAgICAgICAgICAvLyBpbmNsdWRlIGl0IGluIHRoZSBhY2N1bXVsYXRlZCB0ZXh0LiBUaGUgQ1NTIDpiZWZvcmUgYW5kIDphZnRlciBwc2V1ZG8gZWxlbWVudHMgW0NTUzJdIFxuICAgICAgICAgICAgLy8gY2FuIHByb3ZpZGUgdGV4dHVhbCBjb250ZW50IGZvciBlbGVtZW50cyB0aGF0IGhhdmUgYSBjb250ZW50IG1vZGVsLlxuICAgICAgICAgICAgLy8gICBGb3IgOmJlZm9yZSBwc2V1ZG8gZWxlbWVudHMsIFVzZXIgYWdlbnRzIE1VU1QgcHJlcGVuZCBDU1MgdGV4dHVhbCBjb250ZW50LCB3aXRob3V0IFxuICAgICAgICAgICAgLy8gICAgIGEgc3BhY2UsIHRvIHRoZSB0ZXh0dWFsIGNvbnRlbnQgb2YgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgICAgICAgIC8vICAgRm9yIDphZnRlciBwc2V1ZG8gZWxlbWVudHMsIFVzZXIgYWdlbnRzIE1VU1QgYXBwZW5kIENTUyB0ZXh0dWFsIGNvbnRlbnQsIHdpdGhvdXQgYSBcbiAgICAgICAgICAgIC8vICAgICBzcGFjZSwgdG8gdGhlIHRleHR1YWwgY29udGVudCBvZiB0aGUgY3VycmVudCBub2RlLlxuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IG51bGw7XG4gICAgICAgICAgICBiZWZvcmUgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtLFwiYmVmb3JlXCIpLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGlmIChiZWZvcmUgJiYgYmVmb3JlICE9PSBcIm5vbmVcIikge1xuICAgICAgICAgICAgICAgIGJlZm9yZSA9IGJlZm9yZS5yZXBsYWNlKC9eXCIvLFwiXCIpLnJlcGxhY2UoL1wiJC8sXCJcIik7XG4gICAgICAgICAgICAgICAgYWNjdW11bGF0ZWQgKz0gYmVmb3JlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMmZpaWkuIEZvciBlYWNoIGNoaWxkIG5vZGUgb2YgdGhlIGN1cnJlbnQgbm9kZTpcbiAgICAgICAgICAgIC8vICAgU2V0IHRoZSBjdXJyZW50IG5vZGUgdG8gdGhlIGNoaWxkIG5vZGUuXG4gICAgICAgICAgICAvLyAgIENvbXB1dGUgdGhlIHRleHQgYWx0ZXJuYXRpdmUgb2YgdGhlIGN1cnJlbnQgbm9kZSBiZWdpbm5pbmcgd2l0aCBzdGVwIDIuIFNldCB0aGUgcmVzdWx0IFxuICAgICAgICAgICAgLy8gICAgIHRvIHRoYXQgdGV4dCBhbHRlcm5hdGl2ZS5cbiAgICAgICAgICAgIC8vICAgQXBwZW5kIHRoZSByZXN1bHQgdG8gdGhlIGFjY3VtdWxhdGVkIHRleHQuXG4gICAgICAgICAgICBsZXQgd2Fsa0NoaWxkID0gZWxlbS5maXJzdENoaWxkO1xuICAgICAgICAgICAgd2hpbGUgKHdhbGtDaGlsZCkge1xuICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkICs9IFwiIFwiICsgQVJJQU1hcHBlci5jb21wdXRlTmFtZUhlbHAod2Fsa0lkLCB3YWxrQ2hpbGQsIGxhYmVsbGVkYnlUcmF2ZXJzZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgd2Fsa0NoaWxkID0gd2Fsa0NoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgYWZ0ZXIgPSBudWxsO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhZnRlciA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW0sXCJhZnRlclwiKS5jb250ZW50O1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgICAgICAgaWYgKGFmdGVyICYmIGFmdGVyICE9PSBcIm5vbmVcIikge1xuICAgICAgICAgICAgICAgIGFmdGVyID0gYWZ0ZXIucmVwbGFjZSgvXlwiLyxcIlwiKS5yZXBsYWNlKC9cIiQvLFwiXCIpO1xuICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkICs9IGFmdGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gMmZpdi4gUmV0dXJuIHRoZSBhY2N1bXVsYXRlZCB0ZXh0LlxuICAgICAgICAgICAgYWNjdW11bGF0ZWQgPSBhY2N1bXVsYXRlZC5yZXBsYWNlKC9cXHMrL2csXCIgXCIpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChhY2N1bXVsYXRlZC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2N1bXVsYXRlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDJpLiBPdGhlcndpc2UsIGlmIHRoZSBjdXJyZW50IG5vZGUgaGFzIGEgVG9vbHRpcCBhdHRyaWJ1dGUsIHJldHVybiBpdHMgdmFsdWUuXG4gICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcInRpdGxlXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic3ZnXCIpIHtcbiAgICAgICAgICAgIGxldCB0aXRsZSA9IGVsZW0ucXVlcnlTZWxlY3RvcihcInRpdGxlXCIpO1xuICAgICAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRpdGxlLnRleHRDb250ZW50IHx8IHRpdGxlLmlubmVyVGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuLyogICAgICAgIGlmIChyb2xlIGluIEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1xuICAgICAgICAgICAgJiYgQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVdLm5hbWVGcm9tIFxuICAgICAgICAgICAgJiYgQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVdLm5hbWVGcm9tLmluY2x1ZGVzKFwiY29udGVudHNcIikpIFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lID0gZWxlbS50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgJiYgZWxlbS5oYXNBdHRyaWJ1dGUoXCJpZFwiKSAmJiBlbGVtLmdldEF0dHJpYnV0ZShcImlkXCIpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBuYW1lID0gZWxlbS5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJsYWJlbFtmb3I9J1wiK2VsZW0uZ2V0QXR0cmlidXRlKFwiaWRcIikudHJpbSgpK1wiJ11cIikudGV4dENvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSkge1xuICAgICAgICAgICAgbmFtZSA9IGVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcbiAgICAgICAgICAgIG5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgY29uc3QgaWRzID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZCBvZiBpZHMpIHtcbiAgICAgICAgICAgICAgICBuYW1lICs9IEZyYWdtZW50VXRpbC5nZXRCeUlkKGVsZW0sIGlkKS50ZXh0Q29udGVudCArIFwiIFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmFtZSA9IG5hbWUudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYW1lO1xuICAgIH0qL1xuXG4gICAgcHVibGljIHN0YXRpYyBub2RlVG9Sb2xlKG5vZGUgOiBOb2RlKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzIC8qIE5vZGUuVEVYVF9OT0RFICovKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSAhPT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWxlbSA9IG5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgaWYgKCFlbGVtIHx8IGVsZW0ubm9kZVR5cGUgIT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtLmhhc0F0dHJpYnV0ZShcInJvbGVcIikgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgcm9sZVN0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCk7XG4gICAgICAgICAgICBsZXQgcm9sZXMgPSByb2xlU3RyLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiByb2xlcykge1xuICAgICAgICAgICAgICAgIGlmIChyb2xlID09PSBcInByZXNlbnRhdGlvblwiIHx8IHJvbGUgPT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGVsZW1lbnQgaXMgZm9jdXNhYmxlLCB0aGVuIHByZXNlbnRhdGlvbiByb2xlcyBhcmUgdG8gYmUgaWdub3JlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNGb2N1c2FibGUoZWxlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyb2xlIGluIEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJucykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm9sZTtcbiAgICAgICAgICAgICAgICB9ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1Ub0ltcGxpY2l0Um9sZShlbGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGVsZW1Ub0ltcGxpY2l0Um9sZShlbGVtIDogRWxlbWVudCkge1xuICAgICAgICBsZXQgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgaWYgKCEobm9kZU5hbWUgaW4gQVJJQU1hcHBlci5lbGVtVG9Sb2xlTWFwKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJvbGUgPSBBUklBTWFwcGVyLmVsZW1Ub1JvbGVNYXBbbm9kZU5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHJvbGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByb2xlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByb2xlKGVsZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc1BhcmVudFJvbGUoZWxlbWVudCwgcm9sZSkgOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICAgICAgLy8gSWYgbGluayBpcyBpbiBhIG1lbnUsIGl0J3MgYSBtZW51aXRlbVxuICAgICAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgICAgICBpZiAoQVJJQU1hcHBlci5ub2RlVG9Sb2xlKHBhcmVudCkgPT09IHJvbGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUocGFyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgc3RhdGljIGlucHV0VG9Sb2xlTWFwID0gKGZ1bmN0aW9uKCkge1xuICAgICAgICBsZXQgaGFzTGlzdCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImxpc3RcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgaWQgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShcImxpc3RcIik7XG4gICAgICAgICAgICAgICAgbGV0IGlkUmVmID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQoZWxlbWVudCwgaWQpO1xuICAgICAgICAgICAgICAgIGlmIChpZFJlZiAmJiBpZFJlZi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImRhdGFsaXN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgdGV4dFN1Z2dlc3Rpb25zID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhc0xpc3QoZWxlbWVudCkgPyBcImNvbWJvYm94XCIgOiBcInRleHRib3hcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgXCJidXR0b25cIjogXCJidXR0b25cIixcbiAgICAgICAgICAgIFwiaW1hZ2VcIjogXCJidXR0b25cIixcbiAgICAgICAgICAgIFwiY2hlY2tib3hcIjogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgXCJyYWRpb1wiOiBcInJhZGlvXCIsXG4gICAgICAgICAgICBcImVtYWlsXCI6IHRleHRTdWdnZXN0aW9ucyxcbiAgICAgICAgICAgIFwic2VhcmNoXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzTGlzdChlbGVtZW50KSA/IFwiY29tYm9ib3hcIiA6IFwic2VhcmNoYm94XCI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0ZWxcIjogdGV4dFN1Z2dlc3Rpb25zLFxuICAgICAgICAgICAgXCJ0ZXh0XCI6IHRleHRTdWdnZXN0aW9ucyxcbiAgICAgICAgICAgIFwidXJsXCI6IHRleHRTdWdnZXN0aW9ucyxcbiAgICAgICAgICAgIFwibnVtYmVyXCI6IFwic3BpbmJ1dHRvblwiLFxuICAgICAgICAgICAgXCJyYW5nZVwiOiBcInNsaWRlclwiLFxuICAgICAgICAgICAgXCJyZXNldFwiOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgXCJzdWJtaXRcIjogXCJidXR0b25cIlxuICAgICAgICB9XG4gICAgfSkoKTtcblxuICAgIHByaXZhdGUgc3RhdGljIGlucHV0VG9Sb2xlKGVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlVHlwZSA9IFwidGV4dFwiO1xuICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlVHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKGVUeXBlIGluIEFSSUFNYXBwZXIuaW5wdXRUb1JvbGVNYXApKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcm9sZSA9IEFSSUFNYXBwZXIuaW5wdXRUb1JvbGVNYXBbZVR5cGVdO1xuICAgICAgICBpZiAodHlwZW9mIHJvbGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByb2xlO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByb2xlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByb2xlKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBlbGVtVG9Sb2xlTWFwID0gKGZ1bmN0aW9uKCkge1xuICAgICAgICBsZXQgc2VjdGlvbmluZ1Jvb3RzID0ge1xuICAgICAgICAgICAgXCJibG9ja3F1b3RlXCI6IHRydWUsXG4gICAgICAgICAgICBcImJvZHlcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiZGV0YWlsc1wiOiB0cnVlLFxuICAgICAgICAgICAgXCJkaWFsb2dcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiZmllbGRzZXRcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiZmlndXJlXCI6IHRydWUsXG4gICAgICAgICAgICBcInRkXCI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHNlY3Rpb25pbmdDb250ZW50ID0ge1xuICAgICAgICAgICAgXCJhcnRpY2xlXCI6IHRydWUsXG4gICAgICAgICAgICBcImFzaWRlXCI6IHRydWUsXG4gICAgICAgICAgICBcIm5hdlwiOiB0cnVlLFxuICAgICAgICAgICAgXCJzZWN0aW9uXCI6IHRydWUsXG4gICAgICAgICAgICBcIm1haW5cIjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBsZXQgc2VjdGlvbmluZ1JvbGUgPSB7XG4gICAgICAgICAgICBcImFydGljbGVcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiY29tcGxlbWVudGFyeVwiOiB0cnVlLFxuICAgICAgICAgICAgXCJuYXZpZ2F0aW9uXCI6IHRydWUsXG4gICAgICAgICAgICBcInJlZ2lvblwiOiB0cnVlLFxuICAgICAgICAgICAgXCJtYWluXCI6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGlucHV0VG9Sb2xlID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIEFSSUFNYXBwZXIuaW5wdXRUb1JvbGUoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIFwiYVwiOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgaXQgZG9lc24ndCByZXByZXNlbnQgYSBoeXBlcmxpbmssIG5vIGNvcnJlc3BvbmRpbmcgcm9sZVxuICAgICAgICAgICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJsaW5rXCI7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJhcmVhXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBpdCBkb2Vzbid0IHJlcHJlc2VudCBhIGh5cGVybGluaywgbm8gY29ycmVzcG9uZGluZyByb2xlXG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImhyZWZcIikpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiBcImxpbmtcIjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImFydGljbGVcIjogXCJhcnRpY2xlXCIsXG4gICAgICAgICAgICBcImFzaWRlXCI6IFwiY29tcGxlbWVudGFyeVwiLFxuICAgICAgICAgICAgXCJidXR0b25cIjogXCJidXR0b25cIixcbiAgICAgICAgICAgIFwiZGF0YWxpc3RcIjogXCJsaXN0Ym94XCIsXG4gICAgICAgICAgICBcImRkXCI6IFwiZGVmaW5pdGlvblwiLFxuICAgICAgICAgICAgXCJkZXRhaWxzXCI6IFwiZ3JvdXBcIixcbiAgICAgICAgICAgIFwiZGZuXCI6IFwidGVybVwiLFxuICAgICAgICAgICAgXCJkaWFsb2dcIjogXCJkaWFsb2dcIixcbiAgICAgICAgICAgIFwiZHRcIjogXCJ0ZXJtXCIsXG4gICAgICAgICAgICBcImZpZWxkc2V0XCI6IFwiZ3JvdXBcIixcbiAgICAgICAgICAgIFwiZmlndXJlXCI6IFwiZmlndXJlXCIsXG4gICAgICAgICAgICBcImZvb3RlclwiOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAvLyBJZiBuZWFyZXN0IHNlY3Rpb25pbmdSb290IG9yIHNlY3Rpb25pbmdDb250ZW50IGlzIGJvZHlcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm9sZSA9IChwYXJlbnQubm9kZVR5cGUgPT09IDEgJiYgKHBhcmVudCBhcyBIVE1MRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSkgfHwgXCJcIlxuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBwYXJlbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rpb25pbmdSb290c1tub2RlTmFtZV0gfHwgc2VjdGlvbmluZ0NvbnRlbnRbbm9kZU5hbWVdIHx8IHNlY3Rpb25pbmdSb2xlW3JvbGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG5vZGVOYW1lID09PSBcImJvZHlcIikgPyBcImNvbnRlbnRpbmZvXCIgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShwYXJlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImZvcm1cIjogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gQVJJQU1hcHBlci5jb21wdXRlTmFtZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKG5hbWUgJiYgbmFtZS50cmltKCkubGVuZ3RoID4gMCkgPyBcImZvcm1cIiA6IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gVE9ETyBcImZvcm0tYXNzb2NpYXRlZCBjdXN0b20gZWxlbWVudFwiXG4gICAgICAgICAgICBcImgxXCI6IFwiaGVhZGluZ1wiLFxuICAgICAgICAgICAgXCJoMlwiOiBcImhlYWRpbmdcIixcbiAgICAgICAgICAgIFwiaDNcIjogXCJoZWFkaW5nXCIsXG4gICAgICAgICAgICBcImg0XCI6IFwiaGVhZGluZ1wiLFxuICAgICAgICAgICAgXCJoNVwiOiBcImhlYWRpbmdcIixcbiAgICAgICAgICAgIFwiaDZcIjogXCJoZWFkaW5nXCIsXG4gICAgICAgICAgICBcImhlYWRlclwiOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAvLyBJZiBuZWFyZXN0IHNlY3Rpb25pbmdSb290IG9yIHNlY3Rpb25pbmdDb250ZW50IGlzIGJvZHlcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBwYXJlbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvbGUgPSAocGFyZW50Lm5vZGVUeXBlID09PSAxICYmIChwYXJlbnQgYXMgSFRNTEVsZW1lbnQpLmdldEF0dHJpYnV0ZShcInJvbGVcIikpIHx8IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rpb25pbmdSb290c1tub2RlTmFtZV0gfHwgc2VjdGlvbmluZ0NvbnRlbnRbbm9kZU5hbWVdIHx8IHNlY3Rpb25pbmdSb2xlW3JvbGVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG5vZGVOYW1lID09PSBcImJvZHlcIikgPyBcImJhbm5lclwiIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUocGFyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJoclwiOiBcInNlcGFyYXRvclwiLFxuICAgICAgICAgICAgXCJodG1sXCI6IFwiZG9jdW1lbnRcIixcbiAgICAgICAgICAgIFwiaW1nXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJhbHRcIikgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcInByZXNlbnRhdGlvblwiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImltZ1wiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImlucHV0XCI6IGlucHV0VG9Sb2xlLFxuICAgICAgICAgICAgXCJrZXlnZW5cIjogXCJsaXN0Ym94XCIsIC8vIGRlcHJlY2F0ZWQsIGJ1dCBrZWVwIGZvciBiYWNrd2FyZCBjb21wYXRcbiAgICAgICAgICAgIFwibGlcIjogXCJsaXN0aXRlbVwiLFxuICAgICAgICAgICAgXCJtYWluXCI6IFwibWFpblwiLFxuICAgICAgICAgICAgXCJtYXRoXCI6IFwibWF0aFwiLFxuICAgICAgICAgICAgXCJtZW51XCI6IFwibGlzdFwiLFxuICAgICAgICAgICAgXCJuYXZcIjogXCJuYXZpZ2F0aW9uXCIsXG4gICAgICAgICAgICBcIm9sXCI6IFwibGlzdFwiLFxuICAgICAgICAgICAgXCJvcHRncm91cFwiOiBcImdyb3VwXCIsXG4gICAgICAgICAgICBcIm9wdGlvblwiOiBcIm9wdGlvblwiLFxuICAgICAgICAgICAgXCJvdXRwdXRcIjogXCJzdGF0dXNcIixcbiAgICAgICAgICAgIFwicHJvZ3Jlc3NcIjogXCJwcm9ncmVzc2JhclwiLFxuICAgICAgICAgICAgXCJzZWN0aW9uXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IEFSSUFNYXBwZXIuY29tcHV0ZU5hbWUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChuYW1lICYmIG5hbWUudHJpbSgpLmxlbmd0aCA+IDApID8gXCJyZWdpb25cIiA6IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZWxlY3RcIjogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShcIm11bHRpcGxlXCIpIHx8IChSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGVsZW1lbnQsIFwic2l6ZVwiKSAmJiBwYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZShcInNpemVcIikpID4gMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwibGlzdGJveFwiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImNvbWJvYm94XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgXCJzdmdcIjogXCJncmFwaGljcy1kb2N1bWVudFwiLFxuICAgICAgICAgICAgXCJ0YWJsZVwiOiBcInRhYmxlXCIsXG4gICAgICAgICAgICBcInRib2R5XCI6IFwicm93Z3JvdXBcIixcbiAgICAgICAgICAgIFwidGV4dGFyZWFcIjogXCJ0ZXh0Ym94XCIsXG4gICAgICAgICAgICBcInRkXCI6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJvbGUgPSBBUklBTWFwcGVyLm5vZGVUb1JvbGUocGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwidGFibGVcIikgcmV0dXJuIFwiY2VsbFwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAocm9sZSA9PT0gXCJncmlkXCIgfHwgcm9sZSA9PT0gXCJ0cmVlZ3JpZFwiKSByZXR1cm4gXCJncmlkY2VsbFwiO1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUocGFyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJ0aFwiOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgLyoqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sNS90YWJ1bGFyLWRhdGEuaHRtbCNoZWFkZXItYW5kLWRhdGEtY2VsbC1zZW1hbnRpY3NcbiAgICAgICAgICAgICAgICAgKiBBIGhlYWRlciBjZWxsIGFuY2hvcmVkIGF0IHRoZSBzbG90IHdpdGggY29vcmRpbmF0ZSAoeCwgeSkgd2l0aCB3aWR0aCB3aWR0aCBhbmQgaGVpZ2h0IGhlaWdodCBpcyBcbiAgICAgICAgICAgICAgICAgKiBzYWlkIHRvIGJlIGEgY29sdW1uIGhlYWRlciBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB0cnVlOlxuICAgICAgICAgICAgICAgICAqICogVGhlIGNlbGwncyBzY29wZSBhdHRyaWJ1dGUgaXMgaW4gdGhlIGNvbHVtbiBzdGF0ZSwgb3JcbiAgICAgICAgICAgICAgICAgKiAqIFRoZSBjZWxsJ3Mgc2NvcGUgYXR0cmlidXRlIGlzIGluIHRoZSBhdXRvIHN0YXRlLCBhbmQgdGhlcmUgYXJlIG5vIGRhdGEgY2VsbHMgaW4gYW55IG9mIFxuICAgICAgICAgICAgICAgICAqICAgdGhlIGNlbGxzIGNvdmVyaW5nIHNsb3RzIHdpdGggeS1jb29yZGluYXRlcyB5IC4uIHkraGVpZ2h0LTEuXG4gICAgICAgICAgICAgICAgICogQSBoZWFkZXIgY2VsbCBhbmNob3JlZCBhdCB0aGUgc2xvdCB3aXRoIGNvb3JkaW5hdGUgKHgsIHkpIHdpdGggd2lkdGggd2lkdGggYW5kIGhlaWdodCBoZWlnaHQgaXNcbiAgICAgICAgICAgICAgICAgKiBzYWlkIHRvIGJlIGEgcm93IGhlYWRlciBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB0cnVlOlxuICAgICAgICAgICAgICAgICAqICogVGhlIGNlbGwncyBzY29wZSBhdHRyaWJ1dGUgaXMgaW4gdGhlIHJvdyBzdGF0ZSwgb3JcbiAgICAgICAgICAgICAgICAgKiAqIFRoZSBjZWxsJ3Mgc2NvcGUgYXR0cmlidXRlIGlzIGluIHRoZSBhdXRvIHN0YXRlLCB0aGUgY2VsbCBpcyBub3QgYSBjb2x1bW4gaGVhZGVyLCBhbmQgdGhlcmUgYXJlXG4gICAgICAgICAgICAgICAgICogICBubyBkYXRhIGNlbGxzIGluIGFueSBvZiB0aGUgY2VsbHMgY292ZXJpbmcgc2xvdHMgd2l0aCB4LWNvb3JkaW5hdGVzIHggLi4geCt3aWR0aC0xLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIC8vIE5vdGU6IGF1dG8gaXMgZGVmYXVsdCBzY29wZVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm9sZSA9IEFSSUFNYXBwZXIubm9kZVRvUm9sZShwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvbGUgIT09IFwidGFibGVcIiAmJiByb2xlICE9PSBcImdyaWRcIiAmJiByb2xlICE9PSBcInRyZWVncmlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUocGFyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgXG4gICAgICAgICAgICAgICAgICAgIH0gICAgIFxuICAgICAgICAgICAgICAgICAgICAvLyBFYXNpZXN0IGFuc3dlciBpcyBpZiBzY29wZSBpcyBzcGVjaWZpZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKFwic2NvcGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY29wZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwic2NvcGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY29wZSA9PT0gXCJyb3dcIiB8fCBzY29wZSA9PT0gJ3Jvd2dyb3VwJykgcmV0dXJuIFwicm93aGVhZGVyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NvcGUgPT09IFwiY29sXCIgfHwgc2NvcGUgPT09ICdjb2xncm91cCcpIHJldHVybiBcImNvbHVtbmhlYWRlclwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAvLyBzY29wZSBpcyBhdXRvLCBkZWZhdWx0ICh3aXRob3V0IGEgc2NvcGUpIG9yIGludmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFsbCB0aGUgc2libGluZyBlbGVtZW50cyBhcmUgdGgsIHRoZW4gcmV0dXJuIFwiY29sdW1uaGVhZGVyXCIgXG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWJsaW5ncyA9IGVsZW1lbnQgPT4gWy4uLmVsZW1lbnQucGFyZW50RWxlbWVudC5jaGlsZHJlbl0uZmlsdGVyKG5vZGU9Pm5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS50YWdOYW1lICE9IFwiVEhcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5ncyA9PT0gbnVsbCB8fCBzaWJsaW5ncy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb2x1bW5oZWFkZXJcIjsgXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIFwicm93aGVhZGVyXCI7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogIGRlYWQgY29kZSBoZXJlIFxuICAgICAgICAgICAgICAgICAgICBpZiAocm9sZSA9PT0gXCJ0YWJsZVwiKSByZXR1cm4gXCJjZWxsXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyb2xlID09PSBcImdyaWRcIiB8fCByb2xlID09PSBcInRyZWVncmlkXCIpIHJldHVybiBcImdyaWRjZWxsXCI7XG4gICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidGZvb3RcIjogXCJyb3dncm91cFwiLFxuICAgICAgICAgICAgXCJ0aGVhZFwiOiBcInJvd2dyb3VwXCIsXG4gICAgICAgICAgICBcInRyXCI6IFwicm93XCIsXG4gICAgICAgICAgICBcInVsXCI6IFwibGlzdFwiXG4gICAgICAgIH1cbiAgICB9KSgpXG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IElFbmdpbmUsIGVSdWxlUG9saWN5LCBSZXBvcnQsIGVSdWxlQ2F0ZWdvcnksIGVUb29sa2l0TGV2ZWwsIGVSdWxlc2V0VHlwZSB9IGZyb20gXCIuLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgRW5naW5lIH0gZnJvbSBcIi4uL2NvbW1vbi9FbmdpbmVcIjtcbmltcG9ydCB7IEFSSUFNYXBwZXIgfSBmcm9tIFwiLi4vYXJpYS9BUklBTWFwcGVyXCI7XG5pbXBvcnQgeyBTdHlsZU1hcHBlciB9IGZyb20gXCIuLi9zdHlsZS9TdHlsZU1hcHBlclwiO1xuaW1wb3J0IHsgY2hlY2tSdWxlcyB9IGZyb20gXCIuL3J1bGVzXCI7XG5pbXBvcnQgeyBjaGVja05scyB9IGZyb20gXCIuL25sc1wiO1xuaW1wb3J0IHsgY2hlY2tIZWxwIH0gZnJvbSBcIi4vaGVscFwiO1xuaW1wb3J0IHsgY2hlY2tSdWxlc2V0cyB9IGZyb20gXCIuL3J1bGVzZXRzXCI7XG5cbmV4cG9ydCB0eXBlIFJ1bGVzZXQgPSB7XG4gICAgaWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgY2F0ZWdvcnk6IGVSdWxlQ2F0ZWdvcnksXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICB0eXBlPzogZVJ1bGVzZXRUeXBlLFxuICAgIGNoZWNrcG9pbnRzOiBBcnJheTx7XG4gICAgICAgIG51bTogc3RyaW5nLFxuICAgICAgICAvLyBKQ0g6IGFkZCBuYW1lIG9mIGNoZWNrcG9pbnQgYW5kIHN1bW1hcnkgZGVzY3JpcHRpb25cbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB3Y2FnTGV2ZWw6IHN0cmluZyxcbiAgICAgICAgc3VtbWFyeTogc3RyaW5nLFxuICAgICAgICBydWxlczogQXJyYXk8e2lkOiBzdHJpbmcsIGxldmVsOiBlUnVsZVBvbGljeSwgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsfT5cbiAgICB9PlxufVxuXG5leHBvcnQgY2xhc3MgQ2hlY2tlciB7XG4gICAgZW5naW5lOiBJRW5naW5lO1xuICAgIHJ1bGVzZXRzOiBSdWxlc2V0W10gPSBbXTtcbiAgICBydWxlc2V0SWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHJ1bGVzZXRSdWxlczogeyBbcnNJZDogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICAgIHJ1bGVMZXZlbHMgOiB7IFtydWxlSWQ6IHN0cmluZ106IHsgW3JzSWQ6IHN0cmluZ10gOiBlUnVsZVBvbGljeSB9fSA9IHt9O1xuICAgIHJ1bGVDYXRlZ29yeSA6IHsgW3J1bGVJZDogc3RyaW5nXTogeyBbcnNJZDogc3RyaW5nXSA6IGVSdWxlQ2F0ZWdvcnkgfX0gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBsZXQgZW5naW5lID0gdGhpcy5lbmdpbmUgPSBuZXcgRW5naW5lKCk7XG4gICAgICAgIGVuZ2luZS5hZGRNYXBwZXIobmV3IEFSSUFNYXBwZXIoKSk7XG4gICAgICAgIGVuZ2luZS5hZGRNYXBwZXIobmV3IFN0eWxlTWFwcGVyKCkpO1xuICAgICAgICBlbmdpbmUuYWRkUnVsZXMoY2hlY2tSdWxlcyk7XG4gICAgICAgIGVuZ2luZS5hZGRObHNNYXAoY2hlY2tObHMpO1xuICAgICAgICBlbmdpbmUuYWRkSGVscE1hcChjaGVja0hlbHApO1xuICAgICAgICBmb3IgKGNvbnN0IHJzIG9mIGNoZWNrUnVsZXNldHMpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkUnVsZXNldChycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRSdWxlc2V0KHJzOiBSdWxlc2V0KSB7XG4gICAgICAgIHRoaXMucnVsZXNldHMucHVzaChycyk7XG4gICAgICAgIHRoaXMucnVsZXNldElkcy5wdXNoKHJzLmlkKTtcbiAgICAgICAgY29uc3QgcnVsZUlkcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGNwIG9mIHJzLmNoZWNrcG9pbnRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgY3AucnVsZXMpIHtcbiAgICAgICAgICAgICAgICBydWxlSWRzLnB1c2gocnVsZS5pZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlTGV2ZWxzW3J1bGUuaWRdID0gdGhpcy5ydWxlTGV2ZWxzW3J1bGUuaWRdIHx8IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMucnVsZUxldmVsc1tydWxlLmlkXVtycy5pZF0gPSBydWxlLmxldmVsO1xuICAgICAgICAgICAgICAgIHRoaXMucnVsZUNhdGVnb3J5W3J1bGUuaWRdID0gdGhpcy5ydWxlQ2F0ZWdvcnlbcnVsZS5pZF0gfHwge307XG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlQ2F0ZWdvcnlbcnVsZS5pZF1bcnMuaWRdID0gcnMuY2F0ZWdvcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydWxlc2V0UnVsZXNbcnMuaWRdID0gcnVsZUlkcztcbiAgICB9XG5cbiAgICBjaGVjayhub2RlOiBOb2RlIHwgRG9jdW1lbnQsIHJzSWRzPzogc3RyaW5nIHwgc3RyaW5nW10pIDogUHJvbWlzZTxSZXBvcnQ+IHtcbiAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIHJ1bGVzIHRvIHJ1blxuICAgICAgICBsZXQgcnVsZUlkcyA6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgLy8gRml4IHRoZSBpbnB1dFxuICAgICAgICBpZiAoIXJzSWRzKSB7XG4gICAgICAgICAgICBydWxlSWRzID0gdGhpcy5lbmdpbmUuZ2V0UnVsZXNJZHMoKTtcbiAgICAgICAgfSBlbHNle1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByc0lkcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJzSWRzID0gW3JzSWRzXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCByc0lkIG9mIHJzSWRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJzSWQgaW4gdGhpcy5ydWxlc2V0UnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcnVsZUlkcyA9IHJ1bGVJZHMuY29uY2F0KHRoaXMucnVsZXNldFJ1bGVzW3JzSWRdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVuZ2luZS5lbmFibGVSdWxlcyhydWxlSWRzKTtcblxuICAgICAgICAvLyBBZGQgdGhlIHJlcG9ydCBsZXZlbHNcbiAgICAgICAgbGV0IG15VGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiB0aGlzLmVuZ2luZS5ydW4obm9kZSlcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXBvcnQpIHtcbiAgICAgICAgICAgICAgICByZXBvcnQubmxzID0ge31cblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlcG9ydC5yZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucnVsZUlkIGluIGNoZWNrTmxzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQubmxzW3Jlc3VsdC5ydWxlSWRdID0gcmVwb3J0Lm5sc1tyZXN1bHQucnVsZUlkXSB8fCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMDogY2hlY2tObHNbcmVzdWx0LnJ1bGVJZF1bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVhc29uSWQgaW4gY2hlY2tObHNbcmVzdWx0LnJ1bGVJZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQubmxzW3Jlc3VsdC5ydWxlSWRdW3Jlc3VsdC5yZWFzb25JZF0gPSBjaGVja05sc1tyZXN1bHQucnVsZUlkXVtyZXN1bHQucmVhc29uSWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC52YWx1ZVswXSA9IG15VGhpcy5nZXRMZXZlbChyc0lkcyBhcyBzdHJpbmdbXSwgcmVzdWx0LnJ1bGVJZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jYXRlZ29yeSA9IG15VGhpcy5nZXRDYXRlZ29yeShyc0lkcyBhcyBzdHJpbmdbXSwgcmVzdWx0LnJ1bGVJZCk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQucGF0aC5jc3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXBvcnQ7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRMZXZlbChyc0lkczogc3RyaW5nW10sIHJ1bGVJZDogc3RyaW5nKSA6IGVSdWxlUG9saWN5IHtcbiAgICAgICAgaWYgKCFyc0lkcykgcmV0dXJuIGVSdWxlUG9saWN5LklORk9STUFUSU9OO1xuICAgICAgICBsZXQgcnNJbmZvID0gdGhpcy5ydWxlTGV2ZWxzW3J1bGVJZF07XG4gICAgICAgIGxldCByZXRWYWwgPSBudWxsO1xuICAgICAgICBpZiAocnNJZHMpIHtcbiAgICAgICAgICAgIGlmICghKHJ1bGVJZCBpbiB0aGlzLnJ1bGVMZXZlbHMpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUnVsZSB0cmlnZ2VyZWQgZm9yIHdoaWNoIHdlIGhhdmUgbm8gcnVsZSBsZXZlbCBpbmZvcm1hdGlvbjogXCIrcnVsZUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgcnNJZCBvZiByc0lkcykge1xuICAgICAgICAgICAgICAgIGlmIChyc0lkIGluIHJzSW5mbykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocnNJbmZvW3JzSWRdID09PSBlUnVsZVBvbGljeS5WSU9MQVRJT04pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGVSdWxlUG9saWN5LlZJT0xBVElPTjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyc0luZm9bcnNJZF0gPT09IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OICYmIHJldFZhbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT047XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0VmFsID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBlUnVsZVBvbGljeS5JTkZPUk1BVElPTjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmV0VmFsID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSdWxlIHRyaWdnZXJlZCBmb3Igd2hpY2ggd2UgaGF2ZSBubyBydWxlIGxldmVsIGluZm9ybWF0aW9uOiBcIitydWxlSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgZ2V0Q2F0ZWdvcnkocnNJZHM6IHN0cmluZ1tdLCBydWxlSWQ6IHN0cmluZykgOiBlUnVsZUNhdGVnb3J5IHtcbiAgICAgICAgbGV0IHJzSW5mbyA9IHRoaXMucnVsZUNhdGVnb3J5W3J1bGVJZF07XG4gICAgICAgIGxldCByZXRWYWwgPSBcIlwiO1xuXG4gICAgICAgIGlmICghKHJ1bGVJZCBpbiB0aGlzLnJ1bGVDYXRlZ29yeSkpIHtcbiAgICAgICAgICAgIHJldHVybiBlUnVsZUNhdGVnb3J5Lk9USEVSO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcnNJZHMpIHtcbiAgICAgICAgICAgIHJzSWRzID0gdGhpcy5ydWxlc2V0SWRzO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcnNJZCBvZiByc0lkcykge1xuICAgICAgICAgICAgaWYgKHJzSWQgaW4gcnNJbmZvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJzSW5mb1tyc0lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZVJ1bGVDYXRlZ29yeS5PVEhFUjtcbiAgICB9XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi4vLi4vLi4vY29uZmlnL0NvbmZpZ1wiO1xuXG5sZXQgYTExeUhlbHAgPSB7XG4gICAgXCJsYW5kbWFya19uYW1lX3VuaXF1ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vbGFuZG1hcmtfbmFtZV91bmlxdWVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2xhbmRtYXJrX25hbWVfdW5pcXVlYCxcbiAgICAgICAgXCJGYWlsXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9sYW5kbWFya19uYW1lX3VuaXF1ZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9MaXN0X01pc3VzZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xpc3RfTWlzdXNlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTGlzdF9NaXN1c2VgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xpc3RfTWlzdXNlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01hcnF1ZWVfVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01hcnF1ZWVfVHJpZ2dlcmAsXG4gICAgICAgIFwiUGFzc2VkXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWFycXVlZV9UcmlnZ2VyYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWFycXVlZV9UcmlnZ2VyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0hlYWRlcnNfRmV3V29yZHNcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IZWFkZXJzX0Zld1dvcmRzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSGVhZGVyc19GZXdXb3Jkc2AsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSGVhZGVyc19GZXdXb3Jkc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VgLFxuICAgICAgICBcIlBhc3NfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VgLFxuICAgICAgICBcIlBhc3NfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VgLFxuICAgICAgICBcIkZhaWxcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbEltYWdlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0ltZ19Vc2VtYXBWYWxpZFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ltZ19Vc2VtYXBWYWxpZGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ltZ19Vc2VtYXBWYWxpZGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSW1nX1VzZW1hcFZhbGlkYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX09iamVjdF9IYXNUZXh0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfT2JqZWN0X0hhc1RleHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9PYmplY3RfSGFzVGV4dGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX09iamVjdF9IYXNUZXh0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0FwcGxldF9IYXNBbHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9BcHBsZXRfSGFzQWx0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQXBwbGV0X0hhc0FsdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FwcGxldF9IYXNBbHRgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9BcHBsZXRfSGFzQWx0YCxcbiAgICAgICAgXCJGYWlsXzNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQXBwbGV0X0hhc0FsdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZWRpYV9BdWRpb1RyaWdnZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9BdWRpb1RyaWdnZXJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9BdWRpb1RyaWdnZXJgLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0F1ZGlvVHJpZ2dlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9CbG9ja3F1b3RlX0hhc0NpdGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbG9ja3F1b3RlX0hhc0NpdGVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbG9ja3F1b3RlX0hhc0NpdGVgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrcXVvdGVfSGFzQ2l0ZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZXRhX1JlZnJlc2hcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZXRhX1JlZnJlc2hgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZXRhX1JlZnJlc2hgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01ldGFfUmVmcmVzaGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9GcmFtZV9IYXNUaXRsZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ZyYW1lX0hhc1RpdGxlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRnJhbWVfSGFzVGl0bGVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9GcmFtZV9IYXNUaXRsZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZWRpYV9BbHRCcmllZlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0FsdEJyaWVmYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfQWx0QnJpZWZgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0FsdEJyaWVmYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQV9UYXJnZXRBbmRUZXh0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0FyZWFfSGFzQWx0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQXJlYV9IYXNBbHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9BcmVhX0hhc0FsdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FyZWFfSGFzQWx0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX0ltZ0NvbG9yVXNhZ2VcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9JbWdDb2xvclVzYWdlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfSW1nQ29sb3JVc2FnZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfSW1nQ29sb3JVc2FnZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9NZXRhX1JlZGlyZWN0WmVyb1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX01ldGFfUmVkaXJlY3RaZXJvYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX01ldGFfUmVkaXJlY3RaZXJvYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9gXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRWxlbV9EZXByZWNhdGVkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRWxlbV9EZXByZWNhdGVkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRWxlbV9EZXByZWNhdGVkYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbGVtX0RlcHJlY2F0ZWRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfQmxvY2txdW90ZV9XcmFwc1RleHRRdW90ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbG9ja3F1b3RlX1dyYXBzVGV4dFF1b3RlYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbG9ja3F1b3RlX1dyYXBzVGV4dFF1b3RlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0VsZW1fRXZlbnRNb3VzZUFuZEtleVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VsZW1fRXZlbnRNb3VzZUFuZEtleWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VsZW1fRXZlbnRNb3VzZUFuZEtleWAsXG4gICAgICAgIFwiTWFudWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0RvY19IYXNUaXRsZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0RvY19IYXNUaXRsZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0RvY19IYXNUaXRsZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0RvY19IYXNUaXRsZWAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0RvY19IYXNUaXRsZWAsXG4gICAgICAgIFwiRmFpbF8zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0RvY19IYXNUaXRsZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfQmxvY2tfU2hvdWxkQmVIZWFkaW5nYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRm9ybV9IYXNTdWJtaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9Gb3JtX0hhc1N1Ym1pdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0Zvcm1fSGFzU3VibWl0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9Gb3JtX0hhc1N1Ym1pdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbGVtX1VuaXF1ZUlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRWxlbV9VbmlxdWVJZGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VsZW1fVW5pcXVlSWRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbGVtX1VuaXF1ZUlkYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9YWFhgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRm9udF9Db2xvckluRm9ybVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ZvbnRfQ29sb3JJbkZvcm1gLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9Gb250X0NvbG9ySW5Gb3JtYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9Gb250X0NvbG9ySW5Gb3JtYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0xhYmVsX1VuaXF1ZUZvclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xhYmVsX1VuaXF1ZUZvcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xhYmVsX1VuaXF1ZUZvcmAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xhYmVsX1VuaXF1ZUZvcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9JbWdfQWx0Q29tbW9uTWlzdXNlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSW1nX0FsdENvbW1vbk1pc3VzZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ltZ19BbHRDb21tb25NaXN1c2VgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ltZ19BbHRDb21tb25NaXN1c2VgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSW1nX0xvbmdEZXNjcmlwdGlvbjJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9JbWdfTG9uZ0Rlc2NyaXB0aW9uMmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0ltZ19Mb25nRGVzY3JpcHRpb24yYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9JbWdfTG9uZ0Rlc2NyaXB0aW9uMmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbWdfSGFzQWx0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0hhc0FsdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19IYXNBbHRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfSGFzQWx0YCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0hhc0FsdGAsXG4gICAgICAgIFwiRmFpbF8zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19IYXNBbHRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX0JhY2tncm91bmRJbWFnZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1ByZV9BU0NJSUFydFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1ByZV9BU0NJSUFydGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1ByZV9BU0NJSUFydGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfUHJlX0FTQ0lJQXJ0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX1ZpZGVvUmVmZXJlbmNlVHJpZ2dlcmAsXG4gICAgICAgIFwiTWFudWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfVmlkZW9SZWZlcmVuY2VUcmlnZ2VyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX0F1ZGlvVmlkZW9BbHRGaWxlbmFtZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0F1ZGlvVmlkZW9BbHRGaWxlbmFtZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX01lZGlhX0F1ZGlvVmlkZW9BbHRGaWxlbmFtZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1NlbGVjdF9IYXNPcHRHcm91cFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NlbGVjdF9IYXNPcHRHcm91cGAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TZWxlY3RfSGFzT3B0R3JvdXBgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NlbGVjdF9IYXNPcHRHcm91cGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9MaXN0X1VzZU1hcmt1cFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xpc3RfVXNlTWFya3VwYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0xpc3RfVXNlTWFya3VwYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9MaXN0X1VzZU1hcmt1cGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwxXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU2NyaXB0X09uY2xpY2tIVE1MMWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfVGFibGVfU3RydWN0dXJlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfU3RydWN0dXJlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfU3RydWN0dXJlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfU3RydWN0dXJlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19BbHRUcmlnZ2VyTm9uRGVjb3JhdGl2ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19BbHRUcmlnZ2VyTm9uRGVjb3JhdGl2ZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19BbHRUcmlnZ2VyTm9uRGVjb3JhdGl2ZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX0FsdFRyaWdnZXJOb25EZWNvcmF0aXZlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0JsaW5rX0Fsd2F5c1RyaWdnZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9CbGlua19BbHdheXNUcmlnZ2VyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQmxpbmtfQWx3YXlzVHJpZ2dlcmAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0JsaW5rX0Fsd2F5c1RyaWdnZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfQmxpbmtfQ1NTVHJpZ2dlcjFcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbGlua19DU1NUcmlnZ2VyMWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0JsaW5rX0NTU1RyaWdnZXIxYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9CbGlua19DU1NUcmlnZ2VyMWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9IdG1sX1NraXBOYXZcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IdG1sX1NraXBOYXZgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IdG1sX1NraXBOYXZgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0h0bWxfU2tpcE5hdmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9UaXRsZV9WYWxpZFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1RpdGxlX1ZhbGlkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGl0bGVfVmFsaWRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UaXRsZV9WYWxpZGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGl0bGVfVmFsaWRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSGVhZGVyX0hhc0NvbnRlbnRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IZWFkZXJfSGFzQ29udGVudGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0hlYWRlcl9IYXNDb250ZW50YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfSGVhZGVyX0hhc0NvbnRlbnRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgLy8gSkNIIC0gMDogcHJvdmlkZXMgdGhlIGdlbmVyYWwgREFQIG1lc3NhZ2UgZm9yIHRoZSBydWxlXG4gICAgLy8gICAgICAgXCJQYXNzX2lcIiA/Pz9cbiAgICAvLyAgICAgICBcIkZhaWxfalwiIGRlc2NyaXB0aXZlIG1lc3NhZ2UgZm9yIHNwZWNpZmljIGZhaWx1cmVcbiAgICAvLyAgICAgICBcIlBvdGVudGlhbF9rXCIgZGVzY3JpcHRpdmUgbWVzc2FnZSBkZXNjcmliaW5nIGNhc2Ugd2hlbiBpdCBpcyBub3QgYSBmYWlsdXJlIFxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnV0IG5lZWRzIG90aGVyIGNoZWNraW5nIHRvIGNvbmZpcm0gcGFzcyBvclxuICAgIFwiV0NBRzIwX0h0bWxfSGFzTGFuZ1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9IdG1sX0hhc0xhbmdgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9IdG1sX0hhc0xhbmdgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9IdG1sX0hhc0xhbmdgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9IdG1sX0hhc0xhbmdgLFxuICAgICAgICBcIkZhaWxfNFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9IdG1sX0hhc0xhbmdgLFxuICAgICAgICBcIkZhaWxfNVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9IdG1sX0hhc0xhbmdgLFxuICAgICAgICBcIlBvdGVudGlhbF81XCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0h0bWxfSGFzTGFuZ2AsXG4gICAgICAgIFwiUG90ZW50aWFsXzZcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSHRtbF9IYXNMYW5nYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0Zvcm1fVGFyZ2V0QW5kVGV4dFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0Zvcm1fVGFyZ2V0QW5kVGV4dGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0Zvcm1fVGFyZ2V0QW5kVGV4dGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0FfSGFzVGV4dFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FfSGFzVGV4dGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FfSGFzVGV4dGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0FfSGFzVGV4dGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyYCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9NZWRpYV9WaWRlb09iamVjdFRyaWdnZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfVGV4dF9TZW5zb3J5UmVmZXJlbmNlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGV4dF9TZW5zb3J5UmVmZXJlbmNlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGV4dF9TZW5zb3J5UmVmZXJlbmNlYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRW1iZWRfQXV0b1N0YXJ0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRW1iZWRfQXV0b1N0YXJ0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfRW1iZWRfQXV0b1N0YXJ0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbWJlZF9BdXRvU3RhcnRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfU3R5bGVfSGluZGVyRm9jdXMxXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfSGluZGVyRm9jdXMxYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfSGluZGVyRm9jdXMxYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9IaW5kZXJGb2N1czFgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzRcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudGAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudGAsXG4gICAgICAgIFwiRmFpbF8zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9FeHRlcm5hbFN0eWxlU2hlZXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9FeHRlcm5hbFN0eWxlU2hlZXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9FeHRlcm5hbFN0eWxlU2hlZXRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1N0eWxlX0V4dGVybmFsU3R5bGVTaGVldGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9IZWFkZXJfVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0hlYWRlcl9UcmlnZ2VyYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0hlYWRlcl9UcmlnZ2VyYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9IZWFkZXJfVHJpZ2dlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU2NyaXB0X09uY2xpY2tIVE1MMmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDJgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RhYmxlX0NhcFN1bW1SZWR1bmRhbnRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UYWJsZV9DYXBTdW1tUmVkdW5kYW50YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9MYWJlbEJlZm9yZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfTGFiZWxCZWZvcmVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9MYWJlbEJlZm9yZWAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0xhYmVsQWZ0ZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9MYWJlbEFmdGVyYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfTGFiZWxBZnRlcmAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0xhYmVsQWZ0ZXJgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9MYWJlbEFmdGVyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0VtYmVkX0hhc05vRW1iZWRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbWJlZF9IYXNOb0VtYmVkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRW1iZWRfSGFzTm9FbWJlZGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRW1iZWRfSGFzTm9FbWJlZGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UYWJsZV9TY29wZV9WYWxpZFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UYWJsZV9TY29wZV9WYWxpZGAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ltZ19UaXRsZUVtcHR5V2hlbkFsdE51bGxcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfVGl0bGVFbXB0eVdoZW5BbHROdWxsYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19UaXRsZUVtcHR5V2hlbkFsdE51bGxgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfSW5GaWVsZFNldFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0luRmllbGRTZXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9JbkZpZWxkU2V0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9JbkZpZWxkU2V0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGAsXG4gICAgICAgIFwiUGFzc19Mb25lTm9ncm91cFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRgLFxuICAgICAgICBcIlBhc3NfR3JvdXBlZFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRgLFxuICAgICAgICBcIlBhc3NfUmFkaW9Ob05hbWVcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0YCxcbiAgICAgICAgXCJGYWlsX0NvbnRyb2xOYW1lTWlzbWF0Y2hcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfTG9uZUNoZWNrYm94XCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGAsXG4gICAgICAgIFwiUG90ZW50aWFsX1VubmFtZWRDaGVja2JveFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRgLFxuICAgICAgICBcIkZhaWxfTm90R3JvdXBlZE90aGVyR3JvdXBlZFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRgLFxuICAgICAgICBcIkZhaWxfTm90R3JvdXBlZE90aGVyTm90R3JvdXBlZFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRgLFxuICAgICAgICBcIkZhaWxfTm90U2FtZUdyb3VwXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25cIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25gLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfU2VsZWN0X05vQ2hhbmdlQWN0aW9uYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25gXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfSGFzT25jaGFuZ2VcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9IYXNPbmNoYW5nZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X0hhc09uY2hhbmdlYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbnB1dF9IYXNPbmNoYW5nZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbWJlZF9IYXNBbHRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbWJlZF9IYXNBbHRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9FbWJlZF9IYXNBbHRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0VtYmVkX0hhc0FsdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfTm9lbWJlZF9IYXNDb250ZW50XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX05vZW1iZWRfSGFzQ29udGVudGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX0NhcHRpb25fSGFzQ29udGVudFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9DYXB0aW9uX0hhc0NvbnRlbnRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfQ2FwdGlvbl9IYXNDb250ZW50YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0NhcHRpb25fSGFzQ29udGVudGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfQ2FwdGlvbl9JblRhYmxlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0NhcHRpb25fSW5UYWJsZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9DYXB0aW9uX0luVGFibGVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfQ2FwdGlvbl9JblRhYmxlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRgLFxuICAgICAgICBcIlBhc3NfUmVndWxhclwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfTGFiZWxfSGFzQ29udGVudGAsXG4gICAgICAgIFwiUGFzc19BcmlhTGFiZWxcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRgLFxuICAgICAgICBcIlBhc3NfTGFiZWxsZWRCeVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfTGFiZWxfSGFzQ29udGVudGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9FbGVtX0RpclZhbGlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0VsZW1fRGlyVmFsaWRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfRWxlbV9EaXJWYWxpZGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9FbGVtX0RpclZhbGlkYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9GcmFtZV9TcmNIdG1sXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0ZyYW1lX1NyY0h0bWxgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfRnJhbWVfU3JjSHRtbGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX0ZyYW1lX1NyY0h0bWxgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1ZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9WYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9UYWJsZV9MYXlvdXRUcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGFibGVfTGF5b3V0VHJpZ2dlcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1RhYmxlX0xheW91dFRyaWdnZXJgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1RhYmxlX0xheW91dFRyaWdnZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX1RhYmxlX0RhdGFIZWFkaW5nc0FyaWFgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9UYWJsZV9EYXRhSGVhZGluZ3NBcmlhYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9MYWJlbF9SZWZWYWxpZFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0xhYmVsX1JlZlZhbGlkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfTGFiZWxfUmVmVmFsaWRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9MYWJlbF9SZWZWYWxpZGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9FbGVtX1VuaXF1ZUFjY2Vzc0tleVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfRWxlbV9VbmlxdWVBY2Nlc3NLZXlgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9FbGVtX1VuaXF1ZUFjY2Vzc0tleWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9TY3JpcHRfRm9jdXNCbHVyc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TY3JpcHRfRm9jdXNCbHVyc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfSW1nX1VzZW1hcEFsdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19JbWdfVXNlbWFwQWx0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0ltZ19Vc2VtYXBBbHRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfSW1nX1VzZW1hcEFsdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UZXh0X0Vtb3RpY29uc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RleHRfRW1vdGljb25zYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGV4dF9FbW90aWNvbnNgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX1RleHRfRW1vdGljb25zYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1N0eWxlX0JlZm9yZUFmdGVyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfU3R5bGVfQmVmb3JlQWZ0ZXJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9TdHlsZV9CZWZvcmVBZnRlcmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfU3R5bGVfQmVmb3JlQWZ0ZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9UZXh0X0xldHRlclNwYWNpbmdgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9WYWxpZFJvbGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUm9sZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRSb2xlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9WYWxpZFJvbGVgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUm9sZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVZhbHVlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9WYWxpZFByb3BlcnR5VmFsdWVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1ZhbGlkSWRSZWZcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkSWRSZWZgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkSWRSZWZgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1ZhbGlkSWRSZWZgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9SZXF1aXJlZFByb3BlcnRpZXNcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1JlcXVpcmVkUHJvcGVydGllc2AsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVxdWlyZWRQcm9wZXJ0aWVzYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZXF1aXJlZFByb3BlcnRpZXNgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0VtcHR5UHJvcGVydHlWYWx1ZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfRW1wdHlQcm9wZXJ0eVZhbHVlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9WYWxpZFByb3BlcnR5YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9WYWxpZFByb3BlcnR5YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9WYWxpZFByb3BlcnR5YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX01pc3NpbmdGb2N1c2FibGVDaGlsZFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTWlzc2luZ0ZvY3VzYWJsZUNoaWxkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NaXNzaW5nRm9jdXNhYmxlQ2hpbGRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX01pc3NpbmdGb2N1c2FibGVDaGlsZGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX01pc3NpbmdLZXlib2FyZEhhbmRsZXJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX01pc3NpbmdLZXlib2FyZEhhbmRsZXJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX01pc3NpbmdLZXlib2FyZEhhbmRsZXJgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTWlzc2luZ0tleWJvYXJkSGFuZGxlcmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0ltZ19QcmVzZW50YXRpb25JbWdIYXNOb25OdWxsQWx0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW1nX1ByZXNlbnRhdGlvbkltZ0hhc05vbk51bGxBbHRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlU2VhcmNoTGFuZG1hcmtzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc2AsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlU2VhcmNoTGFuZG1hcmtzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVBcHBsaWNhdGlvbkxhbmRtYXJrc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVBcHBsaWNhdGlvbkxhbmRtYXJrc2AsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVBcHBsaWNhdGlvbkxhbmRtYXJrc2AsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVBcHBsaWNhdGlvbkxhbmRtYXJrc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0FwcGxpY2F0aW9uTGFuZG1hcmtMYWJlbFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9BcHBsaWNhdGlvbkxhbmRtYXJrTGFiZWxgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0FwcGxpY2F0aW9uTGFuZG1hcmtMYWJlbGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlRG9jdW1lbnRSb2xlc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlRG9jdW1lbnRSb2xlc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9MYWJlbF9UYXJnZXRJbnZpc2libGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9MYWJlbF9UYXJnZXRJbnZpc2libGVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9MYWJlbF9UYXJnZXRJbnZpc2libGVgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0xhYmVsX1RhcmdldEludmlzaWJsZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19WaWRlb19IYXNOb1RyYWNrYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX1ZpZGVvX0hhc05vVHJhY2tgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19WaWRlb19IYXNOb1RyYWNrYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19BdWRpb19WaWRlb19UcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0F1ZGlvX1ZpZGVvX1RyaWdnZXJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXVkaW9fVmlkZW9fVHJpZ2dlcmAsXG4gICAgICAgIFwiTWFudWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0F1ZGlvX1ZpZGVvX1RyaWdnZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0lucHV0X0hhc1JlcXVpcmVkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0lucHV0X0hhc1JlcXVpcmVkYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0lucHV0X0hhc1JlcXVpcmVkYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfSW5wdXRfSGFzUmVxdWlyZWRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0FyaWFfSW1nQWx0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfSW1nQWx0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfSW1nQWx0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfSW1nQWx0YCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfSW1nQWx0YCxcbiAgICAgICAgXCJGYWlsXzNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfSW1nQWx0YFxuICAgIH0sXG4gICAgXCJIQUFDX0FyaWFfU3ZnQWx0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfU3ZnQWx0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfU3ZnQWx0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfU3ZnQWx0YCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfU3ZnQWx0YCxcbiAgICAgICAgXCJGYWlsXzNcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfU3ZnQWx0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19CYWNrZ3JvdW5kSW1nX0hhc1RleHRPclRpdGxlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0JhY2tncm91bmRJbWdfSGFzVGV4dE9yVGl0bGVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZWAsXG4gICAgICAgIFwiTWFudWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0JhY2tncm91bmRJbWdfSGFzVGV4dE9yVGl0bGVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0FjY2Vzc2tleV9OZWVkTGFiZWxcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQWNjZXNza2V5X05lZWRMYWJlbGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BY2Nlc3NrZXlfTmVlZExhYmVsYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQWNjZXNza2V5X05lZWRMYWJlbGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FyaWFfT3JfSFRNTDVfQXR0cmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcmlhX09yX0hUTUw1X0F0dHJgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19DYW52YXNcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQ2FudmFzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0NhbnZhc2AsXG4gICAgICAgIFwiTWFudWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0NhbnZhc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfRmlndXJlX2xhYmVsXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0ZpZ3VyZV9sYWJlbGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19GaWd1cmVfbGFiZWxgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfRmlndXJlX2xhYmVsYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19JbnB1dF9QbGFjZWhvbGRlclwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19JbnB1dF9QbGFjZWhvbGRlcmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19JbnB1dF9QbGFjZWhvbGRlcmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0lucHV0X1BsYWNlaG9sZGVyYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfSW5wdXRfUGxhY2Vob2xkZXJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJhcmlhX3NlbWFudGljc19yb2xlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX3NlbWFudGljc19yb2xlYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX3NlbWFudGljc19yb2xlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX3NlbWFudGljc19yb2xlYCxcbiAgICAgICAgXCJGYWlsXzJcIjogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX3NlbWFudGljc19yb2xlYFxuICAgIH0sXG4gICAgXCJhcmlhX3NlbWFudGljc19hdHRyaWJ1dGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L2FyaWFfc2VtYW50aWNzX2F0dHJpYnV0ZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vYXJpYV9zZW1hbnRpY3NfYXR0cmlidXRlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX3NlbWFudGljc19hdHRyaWJ1dGVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRm9ybV9DaGFuZ2VFbXB0eVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUlBUX0Zvcm1fQ2hhbmdlRW1wdHlgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9Gb3JtX0NoYW5nZUVtcHR5YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9Gb3JtX0NoYW5nZUVtcHR5YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0lCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBYCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0lCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQV9QVmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQV9QVlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFfUFZgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0JvZHlfRmlyc3RBU2tpcHNfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMF9Cb2R5X0ZpcnN0QVNraXBzX05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc2AsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0JvZHlfRmlyc3RBU2tpcHNfTmF0aXZlX0hvc3RfU2VtYXRpY3NgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQm9keV9GaXJzdEFDb250YWluc1NraXBUZXh0X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQm9keV9GaXJzdEFDb250YWluc1NraXBUZXh0X05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0JvZHlfRmlyc3RBQ29udGFpbnNTa2lwVGV4dF9OYXRpdmVfSG9zdF9TZW1hdGljc2AsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfQm9keV9GaXJzdEFDb250YWluc1NraXBUZXh0X05hdGl2ZV9Ib3N0X1NlbWF0aWNzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbl9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbl9OYXRpdmVfSG9zdF9TZW1hdGljc2AsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbl9OYXRpdmVfSG9zdF9TZW1hdGljc2AsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfUmVxdWlyZWRQYXJlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1JlcXVpcmVkUGFyZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZXF1aXJlZFBhcmVudF9OYXRpdmVfSG9zdF9TZW1hdGljc2AsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVxdWlyZWRQYXJlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9FdmVudEhhbmRsZXJNaXNzaW5nUm9sZV9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfRXZlbnRIYW5kbGVyTWlzc2luZ1JvbGVfTmF0aXZlX0hvc3RfU2VtYXRpY3NgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0V2ZW50SGFuZGxlck1pc3NpbmdSb2xlX05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9FdmVudEhhbmRsZXJNaXNzaW5nUm9sZV9OYXRpdmVfSG9zdF9TZW1hdGljc2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfV2lkZ2V0TGFiZWxzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9XaWRnZXRMYWJlbHNfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9SZWdpb25MYWJlbF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVnaW9uTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9SZWdpb25MYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfUmVnaW9uTGFiZWxfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQmFubmVyTGFuZG1hcmtzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdGAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb21wbGVtZW50YXJ5TGFuZG1hcmtzX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlRm9ybUxhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUZvcm1MYW5kbWFya3NfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlRm9ybUxhbmRtYXJrc19JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVOYXZpZ2F0aW9uTGFuZG1hcmtzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Db21wbGVtZW50YXJ5TGFuZG1hcmtMYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVBcnRpY2xlUm9sZXNfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQXJ0aWNsZVJvbGVzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVBcnRpY2xlUm9sZXNfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9BcnRpY2xlUm9sZUxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9BcnRpY2xlUm9sZUxhYmVsX0ltcGxpY2l0YCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQXJ0aWNsZVJvbGVMYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfQXJ0aWNsZVJvbGVMYWJlbF9JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlR3JvdXBSb2xlc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0YCxcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZUdyb3VwUm9sZXNfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlR3JvdXBSb2xlc19JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0dyb3VwUm9sZUxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Hcm91cFJvbGVMYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfR3JvdXBSb2xlTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0dyb3VwUm9sZUxhYmVsX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0luU2libGluZ1NldF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0luU2libGluZ1NldF9JbXBsaWNpdGAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9JblNpYmxpbmdTZXRfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9JblNpYmxpbmdTZXRfSW1wbGljaXRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdGAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX09uZUJhbm5lckluU2libGluZ1NldF9JbXBsaWNpdGAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfT25lQmFubmVySW5TaWJsaW5nU2V0X0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Db250ZW50aW5mb1dpdGhOb01haW5fSW1wbGljaXRgLCBcbiAgICAgICAgXCJQYXNzXzBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Db250ZW50aW5mb1dpdGhOb01haW5fSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdGAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsX0ltcGxpY2l0YCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0YFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSUJNQV9Gb2N1c19UYWJiYWJsZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Gb2N1c19UYWJiYWJsZWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Gb2N1c19UYWJiYWJsZWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0ZvY3VzX1RhYmJhYmxlYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSUJNQV9Gb2N1c19NdWx0aVRhYlwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Gb2N1c19NdWx0aVRhYmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSUJNQV9Gb2N1c19NdWx0aVRhYmAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9JQk1BX0ZvY3VzX011bHRpVGFiYFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1N0eWxlX1RyaWdnZXIyXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfVHJpZ2dlcjJgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JQVF9TdHlsZV9UcmlnZ2VyMmAsXG4gICAgICAgIFwiTWFudWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9SUFRfU3R5bGVfVHJpZ2dlcjJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zUmVxdWlyZUxhYmVsX0ltcGxpY2l0XzJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVNYWluc1JlcXVpcmVMYWJlbF9JbXBsaWNpdF8yYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZU1haW5zUmVxdWlyZUxhYmVsX0ltcGxpY2l0XzJgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX01lZGlhX0RvY3VtZW50VHJpZ2dlcjJcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfTWVkaWFfRG9jdW1lbnRUcmlnZ2VyMmAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyYCxcbiAgICAgICAgXCJNYW51YWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfTWVkaWFfRG9jdW1lbnRUcmlnZ2VyMmBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXJpYV9FcnJvck1lc3NhZ2VcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9FcnJvck1lc3NhZ2VgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9FcnJvck1lc3NhZ2VgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9FcnJvck1lc3NhZ2VgLFxuICAgICAgICBcIkZhaWxfMlwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQXJpYV9FcnJvck1lc3NhZ2VgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0xpc3RfR3JvdXBfTGlzdEl0ZW1cIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbWAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19MaXN0X0dyb3VwX0xpc3RJdGVtYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0xpc3RfR3JvdXBfTGlzdEl0ZW1gXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0FjdGl2ZURlc2NlbmRhbnRDaGVja1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FjdGl2ZURlc2NlbmRhbnRDaGVja2AsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L0hBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrYCxcbiAgICAgICAgXCJGYWlsXzRcIjogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FjdGl2ZURlc2NlbmRhbnRDaGVja2BcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXBwbGljYXRpb25fUm9sZV9UZXh0XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9IQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dGAsXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcHBsaWNhdGlvbl9Sb2xlX1RleHRgLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vSEFBQ19BcHBsaWNhdGlvbl9Sb2xlX1RleHRgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vUnB0X0FyaWFfTXVsdGlwbGVUb29sYmFyVW5pcXVlTGFiZWxgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1JwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9ScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbGBcbiAgICB9LFxuICAgIFwiY29tYm9ib3hfdmVyc2lvblwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfdmVyc2lvbmAsXG4gICAgICAgIFwiUGFzc18xLjBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF92ZXJzaW9uYCxcbiAgICAgICAgXCJGYWlsXzEuMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X3ZlcnNpb25gLFxuICAgICAgICBcIlBhc3NfMS4yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfdmVyc2lvbmBcbiAgICB9LFxuICAgIFwidGFibGVfYXJpYV9kZXNjZW5kYW50c1wiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vdGFibGVfYXJpYV9kZXNjZW5kYW50c2AsXG4gICAgICAgIFwiZXhwbGljaXRfcm9sZVwiOiBgJHtDb25maWcuaGVscFJvb3R9L3RhYmxlX2FyaWFfZGVzY2VuZGFudHNgXG4gICAgfSxcbiAgICBcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYCxcbiAgICAgICAgXCJQYXNzX2V4cGFuZGVkXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYCxcbiAgICAgICAgXCJQYXNzX2NvbGxhcHNlZFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X3BvcHVwX3JlZmVyZW5jZWAsXG4gICAgICAgIFwiRmFpbF8xLjBfbWlzc2luZ19vd25zXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYCxcbiAgICAgICAgXCJGYWlsXzEuMl9taXNzaW5nX2NvbnRyb2xzXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYCxcbiAgICAgICAgXCJGYWlsXzEuMF9wb3B1cF9yZWZlcmVuY2VfbWlzc2luZ1wiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X3BvcHVwX3JlZmVyZW5jZWAsXG4gICAgICAgIFwiRmFpbF8xLjJfcG9wdXBfcmVmZXJlbmNlX21pc3NpbmdcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9wb3B1cF9yZWZlcmVuY2VgLFxuICAgICAgICBcIkZhaWxfY29tYm9ib3hfZXhwYW5kZWRfaGlkZGVuXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYCxcbiAgICAgICAgXCJGYWlsX2NvbWJvYm94X2NvbGxhcHNlZF92aXNpYmxlXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlYFxuICAgIH0sXG4gICAgXCJjb21ib2JveF9oYXNwb3B1cFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfaGFzcG9wdXBgLFxuICAgICAgICBcIlBhc3NcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9oYXNwb3B1cGAsXG4gICAgICAgIFwiRmFpbF9wb3B1cF9yb2xlX2ludmFsaWRcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9oYXNwb3B1cGAsXG4gICAgICAgIFwiRmFpbF9jb21ib2JveF9wb3B1cF9yb2xlX21pc21hdGNoXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfaGFzcG9wdXBgXG4gICAgfSwgICAgXG4gICAgXCJjb21ib2JveF9mb2N1c2FibGVfZWxlbWVudHNcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c2AsXG4gICAgICAgIFwiUGFzc1wiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c2AsXG4gICAgICAgIFwiRmFpbF9ub3RfdGFiYmFibGVcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9mb2N1c2FibGVfZWxlbWVudHNgLFxuICAgICAgICBcIkZhaWxfdGFiYmFibGVfY2hpbGRcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9mb2N1c2FibGVfZWxlbWVudHNgXG4gICAgfSxcbiAgICBcImNvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50XCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudGAsXG4gICAgICAgIFwiUGFzc1wiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50YCxcbiAgICAgICAgXCJGYWlsX21pc3NpbmdcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudGAsXG4gICAgICAgIFwiRmFpbF9ub3RfaW5fcG9wdXBcIjogYCR7Q29uZmlnLmhlbHBSb290fS9jb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudGAsXG4gICAgICAgIFwiRmFpbF9hY3RpdmVfcm9sZV9pbnZhbGlkXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnRgLFxuICAgICAgICBcIkZhaWxfYWN0aXZlX25vdF9zZWxlY3RlZFwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50YFxuICAgIH0sXG4gICAgXCJjb21ib2JveF9hdXRvY29tcGxldGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2F1dG9jb21wbGV0ZWAsXG4gICAgICAgIFwiUGFzc1wiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2F1dG9jb21wbGV0ZWAsXG4gICAgICAgIFwiRmFpbF8xXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vY29tYm9ib3hfYXV0b2NvbXBsZXRlYCxcbiAgICAgICAgXCJGYWlsX2lubGluZVwiOiBgJHtDb25maWcuaGVscFJvb3R9L2NvbWJvYm94X2F1dG9jb21wbGV0ZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMV9TdHlsZV9WaWV3cG9ydFwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIxX1N0eWxlX1ZpZXdwb3J0YCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIxX1N0eWxlX1ZpZXdwb3J0YCxcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMV9TdHlsZV9WaWV3cG9ydGBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMV9MYWJlbF9BY2Nlc3NpYmxlXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjFfTGFiZWxfQWNjZXNzaWJsZWAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMV9MYWJlbF9BY2Nlc3NpYmxlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjFfTGFiZWxfQWNjZXNzaWJsZWBcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMV9JbnB1dF9BdXRvY29tcGxldGVcIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMV9JbnB1dF9BdXRvY29tcGxldGVgLFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMV9JbnB1dF9BdXRvY29tcGxldGVgLFxuICAgICAgICBcIkZhaWxfMVwiOiBgJHtDb25maWcuaGVscFJvb3R9L1dDQUcyMV9JbnB1dF9BdXRvY29tcGxldGVgXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfVmlzaWJsZUxhYmVsXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfVmlzaWJsZUxhYmVsYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vV0NBRzIwX0lucHV0X1Zpc2libGVMYWJlbGAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9XQ0FHMjBfSW5wdXRfVmlzaWJsZUxhYmVsYFxuICAgIH0sXG4gICAgXCJtZXRhX3ZpZXdwb3J0X3pvb21cIjoge1xuICAgICAgICAwOiBgJHtDb25maWcuaGVscFJvb3R9L21ldGFfdmlld3BvcnRfem9vbWAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L21ldGFfdmlld3BvcnRfem9vbWAsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9tZXRhX3ZpZXdwb3J0X3pvb21gXG4gICAgfSxcbiAgICBcImFyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiOiB7XG4gICAgICAgIDA6IGAke0NvbmZpZy5oZWxwUm9vdH0vYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlYCwgXG4gICAgICAgIFwiUGFzc18wXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS9hcmlhX2hpZGRlbl9mb2N1c19taXN1c2VgXG4gICAgfSxcbiAgICBcInRhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkXCI6IHtcbiAgICAgICAgMDogYCR7Q29uZmlnLmhlbHBSb290fS90YWJsZV9oZWFkZXJzX3JlZl92YWxpZGAsIFxuICAgICAgICBcIlBhc3NfMFwiOiBgJHtDb25maWcuaGVscFJvb3R9L3RhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzFcIjogYCR7Q29uZmlnLmhlbHBSb290fS90YWJsZV9oZWFkZXJzX3JlZl92YWxpZGAsXG4gICAgICAgIFwiRmFpbF8yXCI6IGAke0NvbmZpZy5oZWxwUm9vdH0vdGFibGVfaGVhZGVyc19yZWZfdmFsaWRgLFxuICAgICAgICBcIkZhaWxfM1wiOiBgJHtDb25maWcuaGVscFJvb3R9L3RhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkYCxcbiAgICAgICAgXCJGYWlsXzRcIjogYCR7Q29uZmlnLmhlbHBSb290fS90YWJsZV9oZWFkZXJzX3JlZl92YWxpZGBcbiAgICB9XG59XG5cbmxldCBhMTF5SGVscE9sZCA9IHtcbiAgICBcIlJQVF9MaXN0X01pc3VzZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzMuaHRtbFwiXSxcbiAgICBcIlJQVF9NYXJxdWVlX1RyaWdnZXJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c1Lmh0bWxcIl0sXG4gICAgXCJSUFRfSGVhZGVyc19GZXdXb3Jkc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzcuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMC5odG1sXCJdLFxuICAgIFwiUlBUX0ltZ19Vc2VtYXBWYWxpZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfT2JqZWN0X0hhc1RleHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyMC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0FwcGxldF9IYXNBbHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyMS5odG1sXCJdLFxuICAgIFwiUlBUX01lZGlhX0F1ZGlvVHJpZ2dlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzI0Lmh0bWxcIl0sXG4gICAgXCJSUFRfQmxvY2txdW90ZV9IYXNDaXRlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMjUuaHRtbFwiXSxcbiAgICBcIlJQVF9NZXRhX1JlZnJlc2hcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2czMy5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0ZyYW1lX0hhc1RpdGxlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMzkuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDEuaHRtbFwiXSxcbiAgICBcIlJQVF9NZWRpYV9BbHRCcmllZlwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzk5Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfQV9UYXJnZXRBbmRUZXh0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTEyLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfQXJlYV9IYXNBbHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNDAuaHRtbFwiXSxcbiAgICBcIlJQVF9NZWRpYV9JbWdDb2xvclVzYWdlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMjQ1Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9cIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNTQuaHRtbFwiXSxcbiAgICBcIlJQVF9FbGVtX0RlcHJlY2F0ZWRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cyNTYuaHRtbFwiXSxcbiAgICBcIlJQVF9CbG9ja3F1b3RlX1dyYXBzVGV4dFF1b3RlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMjYzLmh0bWxcIl0sXG4gICAgXCJSUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMjY5Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfRG9jX0hhc1RpdGxlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMjczLmh0bWxcIl0sXG4gICAgXCJSUFRfQmxvY2tfU2hvdWxkQmVIZWFkaW5nXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMzIyLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfRm9ybV9IYXNTdWJtaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2czMjQuaHRtbFwiXSxcbiAgICBcIlJQVF9FbGVtX1VuaXF1ZUlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMzc3Lmh0bWxcIl0sXG4gICAgXCJSUFRfRm9udF9Db2xvckluRm9ybVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzM5NC5odG1sXCJdLFxuICAgIFwiUlBUX0xhYmVsX1VuaXF1ZUZvclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzM5OC5odG1sXCJdLFxuICAgIFwiUlBUX0ltZ19BbHRDb21tb25NaXN1c2VcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NTMuaHRtbFwiXSxcbiAgICBcIlJQVF9JbWdfTG9uZ0Rlc2NyaXB0aW9uMlwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ1NC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0ltZ19IYXNBbHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NTUuaHRtbFwiXSxcbiAgICBcIlJQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NTYuaHRtbFwiXSxcbiAgICBcIlJQVF9QcmVfQVNDSUlBcnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NTguaHRtbFwiXSxcbiAgICBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c1MTEuaHRtbFwiXSxcbiAgICBcIlJQVF9NZWRpYV9BdWRpb1ZpZGVvQWx0RmlsZW5hbWVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NjAuaHRtbFwiXSxcbiAgICBcIlJQVF9TdHlsZV9Db2xvclNlbWFudGljczFcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NjYuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9TZWxlY3RfSGFzT3B0R3JvdXBcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NjcuaHRtbFwiXSxcbiAgICBcIlJQVF9MaXN0X1VzZU1hcmt1cFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ2OC5odG1sXCJdLFxuICAgIFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NzAuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9UYWJsZV9TdHJ1Y3R1cmVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NzEuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbWdfQWx0VHJpZ2dlck5vbkRlY29yYXRpdmVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NzMuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9CbGlua19BbHdheXNUcmlnZ2VyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDc4Lmh0bWxcIl0sXG4gICAgXCJSUFRfQmxpbmtfQ1NTVHJpZ2dlcjFcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0NzkuaHRtbFwiXSxcbiAgICBcIlJQVF9IdG1sX1NraXBOYXZcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2c0ODEuaHRtbFwiXSxcbiAgICBcIlJQVF9UaXRsZV9WYWxpZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzQ4NC5odG1sXCJdLFxuICAgIFwiUlBUX0hlYWRlcl9IYXNDb250ZW50XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDg4Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSHRtbF9IYXNMYW5nXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDkwLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDkxLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfQV9IYXNUZXh0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDk1Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfRmllbGRzZXRfSGFzTGVnZW5kXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNDk3Lmh0bWxcIl0sXG4gICAgXCJSUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNTAxLmh0bWxcIl0sXG4gICAgXCJSUFRfVGV4dF9TZW5zb3J5UmVmZXJlbmNlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNTAyLmh0bWxcIl0sXG4gICAgXCJSUFRfRW1iZWRfQXV0b1N0YXJ0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNTAzLmh0bWxcIl0sXG4gICAgXCJSUFRfU3R5bGVfSGluZGVyRm9jdXMxXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNTA2Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nNTA3Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAwMC5odG1sXCJdLFxuICAgIFwiUlBUX1N0eWxlX0V4dGVybmFsU3R5bGVTaGVldFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNzMuaHRtbFwiXSxcbiAgICBcIlJQVF9IZWFkZXJfVHJpZ2dlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwMDIuaHRtbFwiXSxcbiAgICBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAwNy5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1RhYmxlX0NhcFN1bW1SZWR1bmRhbnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDExLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW5wdXRfTGFiZWxCZWZvcmVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDE3Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW5wdXRfTGFiZWxBZnRlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwMTguaHRtbFwiXSxcbiAgICBcIldDQUcyMF9FbWJlZF9IYXNOb0VtYmVkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAyMC5odG1sXCJdLFxuICAgIFwiV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAyNS5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0ltZ19UaXRsZUVtcHR5V2hlbkFsdE51bGxcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDI3Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfSW5wdXRfSW5GaWVsZFNldFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwMjguaHRtbFwiXSxcbiAgICBcIldDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDI5Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfU2VsZWN0X05vQ2hhbmdlQWN0aW9uXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTAzNS5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0lucHV0X0hhc09uY2hhbmdlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1MC5odG1sXCJdLFxuICAgIFwiUlBUX0VtYmVkX0hhc0FsdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNTEuaHRtbFwiXSxcbiAgICBcIlZhbGVyaWVfTm9lbWJlZF9IYXNDb250ZW50XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1Mi5odG1sXCJdLFxuICAgIFwiVmFsZXJpZV9DYXB0aW9uX0hhc0NvbnRlbnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDUzLmh0bWxcIl0sXG4gICAgXCJWYWxlcmllX0NhcHRpb25fSW5UYWJsZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNTQuaHRtbFwiXSxcbiAgICBcIlZhbGVyaWVfTGFiZWxfSGFzQ29udGVudFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNTUuaHRtbFwiXSxcbiAgICBcIlZhbGVyaWVfRWxlbV9EaXJWYWxpZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNTYuaHRtbFwiXSxcbiAgICBcIlZhbGVyaWVfRnJhbWVfU3JjSHRtbFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNTcuaHRtbFwiXSxcbiAgICBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA1OS5odG1sXCJdLFxuICAgIFwiUlBUX1RhYmxlX0xheW91dFRyaWdnZXJcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDYwLmh0bWxcIl0sXG4gICAgXCJSUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjEuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9MYWJlbF9SZWZWYWxpZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjIuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9FbGVtX1VuaXF1ZUFjY2Vzc0tleVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjMuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9TY3JpcHRfRm9jdXNCbHVyc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjQuaHRtbFwiXSxcbiAgICBcIkhBQUNfSW1nX1VzZW1hcEFsdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjcuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9UZXh0X0Vtb3RpY29uc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjguaHRtbFwiXSxcbiAgICBcIldDQUcyMF9TdHlsZV9CZWZvcmVBZnRlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwNjkuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9UZXh0X0xldHRlclNwYWNpbmdcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDcwLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9WYWxpZFJvbGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDc0Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5VmFsdWVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDc2Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9WYWxpZElkUmVmXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA3Ny5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfUmVxdWlyZWRQcm9wZXJ0aWVzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA3OS5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfRW1wdHlQcm9wZXJ0eVZhbHVlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA4Mi5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEwODMuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX0ludmFsaWRUYWJpbmRleEZvckFjdGl2ZWRlc2NlbmRhbnRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDg0Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NaXNzaW5nRm9jdXNhYmxlQ2hpbGRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDg2Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NaXNzaW5nS2V5Ym9hcmRIYW5kbGVyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA4Ny5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0ltZ19QcmVzZW50YXRpb25JbWdIYXNOb25OdWxsQWx0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA5MC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMDk3Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTA5OS5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTEwMC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTEwMS5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0xhYmVsX1RhcmdldEludmlzaWJsZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExMTIuaHRtbFwiXSxcbiAgICBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExMTcuaHRtbFwiXSxcbiAgICBcIkhBQUNfQXVkaW9fVmlkZW9fVHJpZ2dlclwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExMTkuaHRtbFwiXSxcbiAgICBcIkhBQUNfQXJpYV9JbWdBbHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTI4Lmh0bWxcIl0sXG4gICAgXCJIQUFDX0JhY2tncm91bmRJbWdfSGFzVGV4dE9yVGl0bGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTMyLmh0bWxcIl0sXG4gICAgXCJIQUFDX0FjY2Vzc2tleV9OZWVkTGFiZWxcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTQwLmh0bWxcIl0sXG4gICAgXCJIQUFDX0FyaWFfT3JfSFRNTDVfQXR0clwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNDEuaHRtbFwiXSxcbiAgICBcIkhBQUNfQ2FudmFzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE0My5odG1sXCJdLFxuICAgIFwiSEFBQ19GaWd1cmVfbGFiZWxcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTQ0Lmh0bWxcIl0sXG4gICAgXCJIQUFDX0lucHV0X1BsYWNlaG9sZGVyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE0NS5odG1sXCJdLFxuICAgIFwiUlBUX0Zvcm1fQ2hhbmdlRW1wdHlcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTQ3Lmh0bWxcIl0sXG4gICAgXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTQ4Lmh0bWxcIl0sXG4gICAgXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFfUFZcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTQ5Lmh0bWxcIl0sXG4gICAgXCJXQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNTAuaHRtbFwiXSxcbiAgICBcIldDQUcyMF9Cb2R5X0ZpcnN0QUNvbnRhaW5zU2tpcFRleHRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTUxLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE1Mi5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfUmVxdWlyZWRQYXJlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTUzLmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9FdmVudEhhbmRsZXJNaXNzaW5nUm9sZV9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNTQuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNTYuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNTcuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE1OC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVNYWluc1Zpc2libGVMYWJlbF9JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNTkuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQmFubmVyTGFuZG1hcmtzX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2MC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVDb21wbGVtZW50YXJ5TGFuZG1hcmtzX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2MS5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNjIuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlRm9ybUxhbmRtYXJrc19JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNjMuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNjQuaHRtbFwiXSxcbiAgICBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2NS5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVBcnRpY2xlUm9sZXNfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTY2Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9BcnRpY2xlUm9sZUxhYmVsX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2Ny5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE2OC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfR3JvdXBSb2xlTGFiZWxfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTY5Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvSW5TaWJsaW5nU2V0X0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE3MC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfT25lQmFubmVySW5TaWJsaW5nU2V0X0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE3Mi5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfQ29udGVudGluZm9XaXRoTm9NYWluX0ltcGxpY2l0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE3My5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeVJlcXVpcmVkTGFiZWxfSW1wbGljaXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTc0Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExNzYuaHRtbFwiXSxcbiAgICBcIklCTUFfRm9jdXNfVGFiYmFibGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTc3Lmh0bWxcIl0sXG4gICAgXCJJQk1BX0ZvY3VzX011bHRpVGFiXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE3OC5odG1sXCJdLFxuICAgIFwiUlBUX1N0eWxlX1RyaWdnZXIyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE4MC5odG1sXCJdLFxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVNYWluc1JlcXVpcmVMYWJlbF9JbXBsaWNpdF8yXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE4Mi5odG1sXCJdLFxuICAgIFwiSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE4My5odG1sXCJdLFxuICAgIFwiSEFBQ19BcmlhX0Vycm9yTWVzc2FnZVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExODQuaHRtbFwiXSxcbiAgICBcIkhBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbVwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExODUuaHRtbFwiXSxcbiAgICBcIkhBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE4Ni5odG1sXCJdLFxuICAgIFwiSEFBQ19BcHBsaWNhdGlvbl9Sb2xlX1RleHRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTg3Lmh0bWxcIl0sXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExODguaHRtbFwiXSxcbiAgICBcIkhBQUNfQ29tYm9ib3hfTXVzdF9IYXZlX1RleHRfSW5wdXRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTk0Lmh0bWxcIl0sXG4gICAgXCJIQUFDX0NvbWJvYm94X0RPTV9Gb2N1c1wiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExOTUuaHRtbFwiXSxcbiAgICBcIkhBQUNfQ29tYm9ib3hfQXV0b2NvbXBsZXRlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE5Ni5odG1sXCJdLFxuICAgIFwiSEFBQ19Db21ib2JveF9BdXRvY29tcGxldGVfSW52YWxpZFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzExOTcuaHRtbFwiXSxcbiAgICBcIkhBQUNfQ29tYm9ib3hfRXhwYW5kZWRcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMTk4Lmh0bWxcIl0sXG4gICAgXCJIQUFDX0NvbWJvYm94X1BvcHVwXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTE5OS5odG1sXCJdLFxuICAgIFwiV0NBRzIxX1N0eWxlX1ZpZXdwb3J0XCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTIwMC5odG1sXCJdLFxuICAgIFwiV0NBRzIxX0xhYmVsX0FjY2Vzc2libGVcIjogW1wiaWRoaV9hY2Nlc3NpYmlsaXR5X2NoZWNrX2cxMjAyLmh0bWxcIl0sXG4gICAgXCJXQ0FHMjFfSW5wdXRfQXV0b2NvbXBsZXRlXCI6IFtcImlkaGlfYWNjZXNzaWJpbGl0eV9jaGVja19nMTIwMy5odG1sXCJdLFxuICAgIFwiV0NBRzIwX0lucHV0X1Zpc2libGVMYWJlbFwiOiBbXCJpZGhpX2FjY2Vzc2liaWxpdHlfY2hlY2tfZzEyMDQuaHRtbFwiXVxufVxuXG5cbmV4cG9ydCB7IGExMXlIZWxwIH0iLCIvLyBObyB7dG9rZW5zfSBpbiBwYXNzaXZlIG1lc3NhZ2VzLCBzdWNoIGFzIDA6IFwiYSBwYXNzaXZlIG1lc3NhZ2UuLi5cIlxuLy8gTm8gYmFjay10aWNrcyB1c2VkIGluIG1lc3NhZ2VzIGhlcmUgaW4gLnRzIGZpbGUgdHlwZSwgdXNlIDwsIFwiLCAnXG4vLyBDaGFuZ2VzIGluIG1lc3NhZ2VzIHVzdWFsbHkgcmVxdWlyZSBjb3JyZXNwb25kaW5nIGNoYW5nZSBpbiB0ZXN0IGNhc2VzXG4vL1xubGV0IGExMXlObHMgPSB7XG4gICAgLy8gQVUgLSBET05FXG4gICAgXCJsYW5kbWFya19uYW1lX3VuaXF1ZVwiOiB7XG4gICAgICAgIDA6IFwiTXVsdGlwbGUgbGFuZG1hcmtzIHNob3VsZCBoYXZlIGEgdW5pcXVlICdhcmlhLWxhYmVsbGVkYnknIG9yICdhcmlhLWxhYmVsJyBvciBiZSBuZXN0ZWQgaW4gYSBkaWZmZXJlbnQgcGFyZW50IHJlZ2lvbnNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJNdWx0aXBsZSBcXFwiezB9XFxcIiBsYW5kbWFya3Mgd2l0aCB0aGUgc2FtZSBwYXJlbnQgcmVnaW9uIGFyZSBkaXN0aW5ndWlzaGVkIGJ5IHVuaXF1ZSAnYXJpYS1sYWJlbCcgb3IgJ2FyaWEtbGFiZWxsZWRieSdcIixcbiAgICAgICAgLy8gRmFpbF8wIG9jY3VycyB3aGVuIHdlIGhhdmU6IG5vdCBkaXNhbWJpZ3VhdGVkIGJ5IHNhbWUgcGFyZW50LCBsYWJlbHMgYXJlIGJsYW5rOiBcIlwiID09IFwiXCIsIG9yIHNhbWUgYXJpYS1sYWJlbC9sYWJlbGxlZGJ5XG4gICAgICAgIFwiRmFpbF8wXCI6IFwiTXVsdGlwbGUgXFxcInswfVxcXCIgbGFuZG1hcmtzIHdpdGggdGhlIHNhbWUgcGFyZW50IHJlZ2lvbiBhcmUgbm90IGRpc3Rpbmd1aXNoZWQgZnJvbSBvbmUgYW5vdGhlciBiZWNhdXNlIHRoZXkgaGF2ZSB0aGUgc2FtZSBcXFwiezF9XFxcIiBsYWJlbFwiIFxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0xpc3RfTWlzdXNlXCI6IHtcbiAgICAgICAgMDogXCJMaXN0IGVsZW1lbnRzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGxpc3RzIG9mIHJlbGF0ZWQgaXRlbXNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiTGlzdCBlbGVtZW50IGlzIG1pc3Npbmcgb3IgaW1wcm9wZXJseSBzdHJ1Y3R1cmVkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NYXJxdWVlX1RyaWdnZXJcIjoge1xuICAgICAgICAwOiBcIlRoZSA8bWFycXVlZT4gZWxlbWVudCBpcyBvYnNvbGV0ZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkXCIsXG4gICAgICAgIFwiUGFzc2VkXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlNjcm9sbGluZyBjb250ZW50IGZvdW5kIHRoYXQgdXNlcyB0aGUgb2Jzb2xldGUgPG1hcnF1ZWU+IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0hlYWRlcnNfRmV3V29yZHNcIjoge1xuICAgICAgICAwOiBcIkhlYWRpbmcgZWxlbWVudHMgbXVzdCBub3QgYmUgdXNlZCBmb3IgcHJlc2VudGF0aW9uXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IHRoZSBoZWFkaW5nIGVsZW1lbnQgaXMgYSBnZW51aW5lIGhlYWRpbmdcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZVwiOiB7XG4gICAgICAgIDA6IFwiVGhlIDxpbnB1dD4gZWxlbWVudCBvZiB0eXBlIFxcXCJpbWFnZVxcXCIgc2hvdWxkIGhhdmUgYSB0ZXh0IGFsdGVybmF0aXZlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiSW1hZ2UgYnV0dG9uIHByb3ZpZGVzIGFsdGVybmF0aXZlIHRleHQgdXNpbmcgdGhlICdhbHQnIGF0dHJpYnV0ZVwiLFxuICAgICAgICBcIlBhc3NfMVwiOiBcIkltYWdlIGJ1dHRvbiBwcm92aWRlcyBhbHRlcm5hdGl2ZSB0ZXh0IHVzaW5nIGEgQVJJQSBsYWJlbFwiLFxuICAgICAgICBcIlBhc3NfMlwiOiBcIkltYWdlIGJ1dHRvbiBwcm92aWRlcyBhbHRlcm5hdGl2ZSB0ZXh0IHVzaW5nIHRoZSAndGl0bGUnIGF0dHJpYnV0ZVwiLFxuICAgICAgICBcIkZhaWxcIjogXCJUaGUgPGlucHV0PiBlbGVtZW50IG9mIHR5cGUgXFxcImltYWdlXFxcIiBoYXMgbm8gdGV4dCBhbHRlcm5hdGl2ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSW1nX1VzZW1hcFZhbGlkXCI6IHtcbiAgICAgICAgMDogXCJTZXJ2ZXItc2lkZSBpbWFnZSBtYXAgaG90LXNwb3RzIG11c3QgaGF2ZSBkdXBsaWNhdGUgdGV4dCBsaW5rc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJTZXJ2ZXItc2lkZSBpbWFnZSBtYXAgaG90LXNwb3RzIGRvIG5vdCBoYXZlIGR1cGxpY2F0ZSB0ZXh0IGxpbmtzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9PYmplY3RfSGFzVGV4dFwiOiB7XG4gICAgICAgIDA6IFwiPG9iamVjdD4gZWxlbWVudHMgbXVzdCBoYXZlIGEgdGV4dCBhbHRlcm5hdGl2ZSBmb3IgdGhlIGNvbnRlbnQgcmVuZGVyZWQgYnkgdGhlIG9iamVjdFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQW4gPG9iamVjdD4gZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgdGV4dCBhbHRlcm5hdGl2ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQXBwbGV0X0hhc0FsdFwiOiB7XG4gICAgICAgIDA6IFwiPGFwcGxldD4gZWxlbWVudHMgbXVzdCBwcm92aWRlIGFuICdhbHQnIGF0dHJpYnV0ZSBhbmQgYW4gYWx0ZXJuYXRpdmUgZGVzY3JpcHRpb25cIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkFuIDxhcHBsZXQ+IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiAnYWx0JyBhdHRyaWJ1dGUgdGhhdCBwcm92aWRlcyBhIHNob3J0IHRleHQgYWx0ZXJuYXRpdmVcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJUaGUgJ2FsdCcgYXR0cmlidXRlIHZhbHVlIGZvciBhbiA8YXBwbGV0PiBlbGVtZW50IGR1cGxpY2F0ZXMgdGhlICdjb2RlJyBhdHRyaWJ1dGVcIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCJBbiA8YXBwbGV0PiBlbGVtZW50IHByb3ZpZGVzIGFsdGVybmF0aXZlIHRleHQsIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGlubmVyIGNvbnRlbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX0F1ZGlvVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IFwiQXVkaW8gaW5mb3JtYXRpb24gc2hvdWxkIGFsc28gYmUgYXZhaWxhYmxlIGluIHRleHQgZm9ybVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiTWFudWFsXzFcIjogXCJQcm92aWRlIHRyYW5zY3JpcHRzIGZvciBhdWRpbyBmaWxlc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfQmxvY2txdW90ZV9IYXNDaXRlXCI6IHtcbiAgICAgICAgMDogXCJVc2UgPGJsb2NrcXVvdGU+IG9ubHkgZm9yIHF1b3RhdGlvbnMsIG5vdCBpbmRlbnRhdGlvblwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCA8YmxvY2txdW90ZT4gaXMgdXNlZCBvbmx5IGZvciBxdW90YXRpb25zLCBub3QgaW5kZW50YXRpb25cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01ldGFfUmVmcmVzaFwiOiB7XG4gICAgICAgIDA6IFwiUGFnZXMgc2hvdWxkIG5vdCByZWZyZXNoIGF1dG9tYXRpY2FsbHlcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHBhZ2UgaXMgbm90IGJlaW5nIGNhdXNlZCB0byByZWZyZXNoIGF1dG9tYXRpY2FsbHlcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0ZyYW1lX0hhc1RpdGxlXCI6IHtcbiAgICAgICAgMDogXCJJbmxpbmUgZnJhbWVzIG11c3QgaGF2ZSBhIHVuaXF1ZSwgbm9uLWVtcHR5ICd0aXRsZScgYXR0cmlidXRlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJJbmxpbmUgZnJhbWUgZG9lcyBub3QgaGF2ZSBhICd0aXRsZScgYXR0cmlidXRlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGZvcm0gY29udHJvbCBtdXN0IGhhdmUgYW4gYXNzb2NpYXRlZCBsYWJlbFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiRm9ybSBjb250cm9sIGVsZW1lbnQgPHswfT4gaGFzIG5vIGFzc29jaWF0ZWQgbGFiZWxcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJGb3JtIGNvbnRyb2wgd2l0aCBcXFwiezB9XFxcIiByb2xlIGhhcyBubyBhc3NvY2lhdGVkIGxhYmVsXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZWRpYV9BbHRCcmllZlwiOiB7XG4gICAgICAgIDA6IFwiQWx0ZXJuYXRpdmUgdGV4dCBpbiAnYWx0JyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGJyaWVmICg8MTUwIGNoYXJhY3RlcnMpXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlRleHQgYWx0ZXJuYXRpdmUgaXMgbW9yZSB0aGFuIDE1MCBjaGFyYWN0ZXJzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9BX1RhcmdldEFuZFRleHRcIjoge1xuICAgICAgICAwOiBcIlVzZXJzIHNob3VsZCBiZSB3YXJuZWQgaW4gYWR2YW5jZSBpZiB0aGVpciBpbnB1dCBhY3Rpb24gd2lsbCBvcGVuIGEgbmV3IHdpbmRvdyBvciBvdGhlcndpc2UgY2hhbmdlIHRoZWlyIGNvbnRleHRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiSW5mb3JtIHRoZSB1c2VyIHdoZW4gdGhlaXIgaW5wdXQgYWN0aW9uIHdpbGwgb3BlbiBhIG5ldyB3aW5kb3cgb3Igb3RoZXJ3aXNlIGNoYW5nZSB0aGVpciBjb250ZXh0XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9BcmVhX0hhc0FsdFwiOiB7XG4gICAgICAgIDA6IFwiPGFyZWE+IGVsZW1lbnRzIGluIGFuIGltYWdlIG1hcCBtdXN0IGhhdmUgYSB0ZXh0IGFsdGVybmF0aXZlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCI8YXJlYT4gZWxlbWVudCBpbiBhbiBpbWFnZSBtYXAgaGFzIG5vIHRleHQgYWx0ZXJuYXRpdmVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX01lZGlhX0ltZ0NvbG9yVXNhZ2VcIjoge1xuICAgICAgICAwOiBcIkRvIG5vdCB1c2UgY29sb3IgYXMgdGhlIG9ubHkgbWVhbnMgdG8gY29udmV5IGluZm9ybWF0aW9uLCBwcm92aWRlIGFuIGFkZGl0aW9uYWwgbm9uLWNvbG9yIGN1ZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgY29sb3IgaXMgbm90IHRoZSBvbmx5IG1lYW5zIHRvIGNvbnZleSBpbmZvcm1hdGlvblwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9cIjoge1xuICAgICAgICAwOiBcIlBhZ2Ugc2hvdWxkIG5vdCBhdXRvbWF0aWNhbGx5IHJlZnJlc2ggd2l0aG91dCB3YXJuaW5nIG9yIG9wdGlvbiB0byB0dXJuIGl0IG9mZiBvciBhZGp1c3QgdGhlIHRpbWUgbGltaXRcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJDaGVjayBwYWdlIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgcmVmcmVzaCB3aXRob3V0IHdhcm5pbmcgb3Igb3B0aW9uc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRWxlbV9EZXByZWNhdGVkXCI6IHtcbiAgICAgICAgMDogXCJBdm9pZCB1c2Ugb2Ygb2Jzb2xldGUgbGFuZ3VhZ2UgZmVhdHVyZXMgaWYgcG9zc2libGVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiT2Jzb2xldGUgbGFuZ3VhZ2UgZmVhdHVyZXMgYXJlIGJlaW5nIHVzZWRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVcIjoge1xuICAgICAgICAwOiBcIlF1b3RhdGlvbnMgc2hvdWxkIGJlIG1hcmtlZCB3aXRoIDxxPiBvciA8YmxvY2txdW90ZT4gZWxlbWVudHNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiSWYgdGhlIGZvbGxvd2luZyB0ZXh0IGlzIGEgcXVvdGF0aW9uLCBtYXJrIGl0IGFzIGEgPHE+IG9yIDxibG9ja3F1b3RlPiBlbGVtZW50OiB7MH1cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0VsZW1fRXZlbnRNb3VzZUFuZEtleVwiOiB7XG4gICAgICAgIDA6IFwiQWxsIGludGVyYWN0aXZlIGNvbnRlbnQgd2l0aCBtb3VzZSBldmVudCBoYW5kbGVycyBtdXN0IGhhdmUgZXF1aXZhbGVudCBrZXlib2FyZCBhY2Nlc3NcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IFwiQ29uZmlybSB0aGUgPHswfT4gZWxlbWVudCB3aXRoIG1vdXNlIGV2ZW50IGhhbmRsZXIocykgJ3sxfScgaGFzIGEgY29ycmVzcG9uZGluZyBrZXlib2FyZCBoYW5kbGVyKHMpXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9Eb2NfSGFzVGl0bGVcIjoge1xuICAgICAgICAwOiBcIlRoZSBwYWdlIHNob3VsZCBoYXZlIGEgdGl0bGUgdGhhdCBjb3JyZWN0bHkgaWRlbnRpZmllcyB0aGUgc3ViamVjdCBvZiB0aGUgcGFnZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTWlzc2luZyA8aGVhZD4gZWxlbWVudCBzbyB0aGVyZSBjYW4gYmUgbm8gPHRpdGxlPiBlbGVtZW50IHByZXNlbnRcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJNaXNzaW5nIDx0aXRsZT4gZWxlbWVudCBpbiA8aGVhZD4gZWxlbWVudFwiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIlRoZSA8dGl0bGU+IGVsZW1lbnQgaXMgZW1wdHkgKG5vIGlubmVySFRNTClcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0Jsb2NrX1Nob3VsZEJlSGVhZGluZ1wiOiB7XG4gICAgICAgIDA6IFwiSGVhZGluZyB0ZXh0IG11c3QgdXNlIGEgaGVhZGluZyBlbGVtZW50XCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJDaGVjayBpZiB0aGlzIHRleHQgc2hvdWxkIGJlIG1hcmtlZCB1cCBhcyBhIGhlYWRpbmc6IHswfVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRm9ybV9IYXNTdWJtaXRcIjoge1xuICAgICAgICAwOiBcIkEgPGZvcm0+IGVsZW1lbnQgc2hvdWxkIGhhdmUgYSBzdWJtaXQgYnV0dG9uIG9yIGFuIGltYWdlIGJ1dHRvblwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhlIDxmb3JtPiBlbGVtZW50IGhhcyBhIHN1Ym1pdCBidXR0b24gb3IgYW4gaW1hZ2UgYnV0dG9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9FbGVtX1VuaXF1ZUlkXCI6IHtcbiAgICAgICAgMDogXCJFbGVtZW50ICdpZCcgYXR0cmlidXRlIHZhbHVlcyBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBkb2N1bWVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIDx7MH0+IGVsZW1lbnQgaGFzIHRoZSBpZCBcXFwiezF9XFxcIiB0aGF0IGlzIGVtcHR5XCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiVGhlIDx7MH0+IGVsZW1lbnQgaGFzIHRoZSBpZCBcXFwiezF9XFxcIiB0aGF0IGlzIGFscmVhZHkgaW4gdXNlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9Gb250X0NvbG9ySW5Gb3JtXCI6IHtcbiAgICAgICAgMDogXCJDb21iaW5lIGNvbG9yIGFuZCBkZXNjcmlwdGl2ZSBtYXJrdXAgdG8gaW5kaWNhdGUgcmVxdWlyZWQgZm9ybSBmaWVsZHNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiQ2hlY2sgY29sb3IgaXMgbm90IHVzZWQgYXMgdGhlIG9ubHkgdmlzdWFsIG1lYW5zIHRvIGNvbnZleSB3aGljaCBmaWVsZHMgYXJlIHJlcXVpcmVkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9MYWJlbF9VbmlxdWVGb3JcIjoge1xuICAgICAgICAwOiBcIkZvcm0gY29udHJvbHMgc2hvdWxkIGhhdmUgZXhhY3RseSBvbmUgbGFiZWxcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkZvcm0gY29udHJvbCBoYXMgbW9yZSB0aGFuIG9uZSBsYWJlbFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSW1nX0FsdENvbW1vbk1pc3VzZVwiOiB7XG4gICAgICAgIDA6IFwiJ2FsdCcgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBnb29kIGlubGluZSByZXBsYWNlbWVudCBmb3IgdGhlIGltYWdlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IHRoZSBmaWxlIG5hbWUgc2VydmVzIGFzIGEgZ29vZCBpbmxpbmUgcmVwbGFjZW1lbnQgZm9yIHRoZSBpbWFnZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSW1nX0xvbmdEZXNjcmlwdGlvbjJcIjoge1xuICAgICAgICAwOiBcIiBUaGUgJ2xvbmdkZXNjJyBhdHRyaWJ1dGUgbXVzdCByZWZlcmVuY2UgSFRNTCBjb250ZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IHRoZSBmaWxlIGRlc2lnbmF0ZWQgYnkgdGhlICdsb25nZGVzYycgYXR0cmlidXRlIGNvbnRhaW5zIHZhbGlkIEhUTUwgY29udGVudCAoZmlsZSBleHRlbnNpb24gbm90IHJlY29nbml6ZWQpXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbWdfSGFzQWx0XCI6IHtcbiAgICAgICAgMDogXCJJbWFnZXMgbXVzdCBoYXZlIGFuICdhbHQnIGF0dHJpYnV0ZSB3aXRoIGEgc2hvcnQgdGV4dCBhbHRlcm5hdGl2ZSBpZiB0aGV5IGNvbnZleSBtZWFuaW5nLCBvciAnYWx0PVxcXCJcXFwiIGlmIGRlY29yYXRpdmVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkltYWdlICdhbHQnIGF0dHJpYnV0ZSB2YWx1ZSBjb25zaXN0cyBvbmx5IG9mIHdoaXRlc3BhY2VcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJJbWFnZSBkb2VzIG5vdCBoYXZlIGFuICdhbHQnIGF0dHJpYnV0ZSBzaG9ydCB0ZXh0IGFsdGVybmF0aXZlXCIsXG4gICAgICAgIFwiRmFpbF8zXCI6IFwiSW1hZ2UgZG9lcyBub3QgaGF2ZSBhbiAnYWx0JyBhdHRyaWJ1dGUgYW5kICd0aXRsZScgYXR0cmlidXRlIHZhbHVlIGNvbnNpc3RzIG9ubHkgb2Ygd2hpdGVzcGFjZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlXCI6IHtcbiAgICAgICAgMDogXCJJbWFnZXMgaW5jbHVkZWQgYnkgdXNpbmcgQ1NTIGFsb25lIG11c3Qgbm90IGNvbnZleSBpbXBvcnRhbnQgaW5mb3JtYXRpb25cIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGUgQ1NTIGJhY2tncm91bmQgaW1hZ2UgZG9lcyBub3QgY29udmV5IGltcG9ydGFudCBpbmZvcm1hdGlvblwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfUHJlX0FTQ0lJQXJ0XCI6IHtcbiAgICAgICAgMDogXCJBU0NJSSBhcnQgbXVzdCBoYXZlIGEgdGV4dCBhbHRlcm5hdGl2ZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCBBU0NJSSBhcnQgaGFzIGEgdGV4dCBhbHRlcm5hdGl2ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfVmlkZW9SZWZlcmVuY2VUcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogXCJQcmUtcmVjb3JkZWQgbWVkaWEgc2hvdWxkIGhhdmUgYW4gYXVkaW8gdHJhY2sgdGhhdCBkZXNjcmliZXMgdmlzdWFsIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJNYW51YWxfMVwiOiBcIlZlcmlmeSBhdmFpbGFiaWxpdHkgb2YgYSB1c2VyLXNlbGVjdGFibGUgYXVkaW8gdHJhY2sgd2l0aCBkZXNjcmlwdGlvbiBvZiB2aXN1YWwgY29udGVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lXCI6IHtcbiAgICAgICAgMDogXCJBdWRpbyBvciB2aWRlbyBvbiB0aGUgcGFnZSBtdXN0IGhhdmUgYSBzaG9ydCB0ZXh0IGFsdGVybmF0aXZlIHRoYXQgZGVzY3JpYmVzIHRoZSBtZWRpYSBjb250ZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkZpbGVuYW1lIHVzZWQgYXMgbGFiZWwgZm9yIGVtYmVkZGVkIGF1ZGlvIG9yIHZpZGVvXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9Db2xvclNlbWFudGljczFcIjoge1xuICAgICAgICAwOiBcIkNvbWJpbmUgY29sb3IgYW5kIGRlc2NyaXB0aXZlIG1hcmt1cCB0byBjb252ZXkgaW5mb3JtYXRpb25cIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IGNvbG9yIGlzIG5vdCB1c2VkIGFzIHRoZSBvbmx5IHZpc3VhbCBtZWFucyBvZiBjb252ZXlpbmcgaW5mb3JtYXRpb25cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1NlbGVjdF9IYXNPcHRHcm91cFwiOiB7XG4gICAgICAgIDA6IFwiR3JvdXBzIG9mIHJlbGF0ZWQgb3B0aW9ucyB3aXRoaW4gYSBzZWxlY3Rpb24gbGlzdCBzaG91bGQgYmUgZ3JvdXBlZCB3aXRoIDxvcHRncm91cD5cIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkdyb3VwIG9mIHJlbGF0ZWQgb3B0aW9ucyBtYXkgbmVlZCA8b3B0Z3JvdXA+XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9MaXN0X1VzZU1hcmt1cFwiOiB7XG4gICAgICAgIDA6IFwiVXNlIHByb3BlciBIVE1MIGxpc3QgZWxlbWVudHMgdG8gY3JlYXRlIGxpc3RzXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgd2hldGhlciB0aGlzIGlzIGEgbGlzdCB0aGF0IHNob3VsZCB1c2UgSFRNTCBsaXN0IGVsZW1lbnRzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwxXCI6IHtcbiAgICAgICAgMDogXCJTY3JpcHRzIHNob3VsZCBub3QgYmUgdXNlZCB0byBlbXVsYXRlIGxpbmtzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlBvc3NpYmxlIHVzZSBvZiBhIHNjcmlwdCB0byBlbXVsYXRlIGEgbGlua1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfVGFibGVfU3RydWN0dXJlXCI6IHtcbiAgICAgICAgMDogXCJUYWJsZSBlbGVtZW50cyB3aXRoICdyb2xlPVxcXCJwcmVzZW50YXRpb25cXFwiIG9yICdyb2xlPVxcXCJub25lXFxcIiBzaG91bGQgbm90IGhhdmUgc3RydWN0dXJhbCBlbGVtZW50cyBvciBhdHRyaWJ1dGVzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgPHswfT4gZWxlbWVudCB3aXRoIFxcXCJwcmVzZW50YXRpb25cXFwiIHJvbGUgb3IgXFxcIm5vbmVcXFwiIHJvbGUgaGFzIHN0cnVjdHVyYWwgZWxlbWVudChzKSBhbmQvb3IgYXR0cmlidXRlKHMpICd7MX0nXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbWdfQWx0VHJpZ2dlck5vbkRlY29yYXRpdmVcIjoge1xuICAgICAgICAwOiBcIkNvbnZleSBpbmZvcm1hdGlvbiB3aXRoIHRleHQgcmF0aGVyIHRoYW4gaW1hZ2VzIG9mIHRleHRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgaW1hZ2VzIG9mIHRleHQgYXJlIG5vdCB1c2VkIHRvIGNvbnZleSBpbmZvcm1hdGlvblwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQmxpbmtfQWx3YXlzVHJpZ2dlclwiOiB7XG4gICAgICAgIDA6IFwiQ29udGVudCB0aGF0IGJsaW5rcyBwZXJzaXN0ZW50bHkgbXVzdCBub3QgYmUgdXNlZFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQ29udGVudCBmb3VuZCB0aGF0IGJsaW5rcyBwZXJzaXN0ZW50bHlcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0JsaW5rX0NTU1RyaWdnZXIxXCI6IHtcbiAgICAgICAgMDogXCJEbyBub3QgdXNlIHRoZSBcXFwiYmxpbmtcXFwiIHZhbHVlIG9mIHRoZSAndGV4dC1kZWNvcmF0aW9uJyBwcm9wZXJ0eSBmb3IgbG9uZ2VyIHRoYW4gZml2ZSBzZWNvbmRzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkNoZWNrIHRoZSBcXFwiYmxpbmtcXFwiIHZhbHVlIG9mIHRoZSBDU1MgJ3RleHQtZGVjb3JhdGlvbicgcHJvcGVydHkgaXMgbm90IHVzZWQgZm9yIG1vcmUgdGhhbiB0aGFuIGZpdmUgc2Vjb25kc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSHRtbF9Ta2lwTmF2XCI6IHtcbiAgICAgICAgMDogXCJQcm92aWRlIGEgd2F5IHRvIGJ5cGFzcyBibG9ja3Mgb2YgY29udGVudCB0aGF0IGFyZSByZXBlYXRlZCBvbiBtdWx0aXBsZSBXZWIgcGFnZXNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoZXJlIGlzIGEgd2F5IHRvIGJ5cGFzcyBibG9ja3Mgb2YgY29udGVudCB0aGF0IGFyZSByZXBlYXRlZCBvbiBtdWx0aXBsZSBXZWIgcGFnZXNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1RpdGxlX1ZhbGlkXCI6IHtcbiAgICAgICAgMDogXCJQYWdlIDx0aXRsZT4gc2hvdWxkIGJlIGEgZGVzY3JpcHRpdmUgdGl0bGUsIHJhdGhlciB0aGFuIGEgZmlsZW5hbWVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlBhZ2UgPHRpdGxlPiBpcyBlbXB0eVwiLFxuICAgICAgICBcIlBvdGVudGlhbF8yXCI6IFwiVmVyaWZ5IHRoYXQgdXNpbmcgdGhlIGZpbGVuYW1lIGFzIHRoZSBwYWdlIDx0aXRsZT4gdmFsdWUgaXMgZGVzY3JpcHRpdmVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX0hlYWRlcl9IYXNDb250ZW50XCI6IHtcbiAgICAgICAgMDogXCJIZWFkaW5nIGVsZW1lbnRzIG11c3QgcHJvdmlkZSBkZXNjcmlwdGl2ZSB0ZXh0XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJIZWFkaW5nIGVsZW1lbnQgaGFzIG5vIGRlc2NyaXB0aXZlIGNvbnRlbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIC8vIEpDSCAtIDA6IHByb3ZpZGVzIHRoZSBnZW5lcmFsIERBUCBtZXNzYWdlIGZvciB0aGUgcnVsZVxuICAgIC8vICAgICAgIFwiUGFzc19pXCIgPz8/XG4gICAgLy8gICAgICAgXCJGYWlsX2pcIiBkZXNjcmlwdGl2ZSBtZXNzYWdlIGZvciBzcGVjaWZpYyBmYWlsdXJlXG4gICAgLy8gICAgICAgXCJQb3RlbnRpYWxfa1wiIGRlc2NyaXB0aXZlIG1lc3NhZ2UgZGVzY3JpYmluZyBjYXNlIHdoZW4gaXQgaXMgbm90IGEgZmFpbHVyZSBcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJ1dCBuZWVkcyBvdGhlciBjaGVja2luZyB0byBjb25maXJtIHBhc3Mgb3JcbiAgICBcIldDQUcyMF9IdG1sX0hhc0xhbmdcIjoge1xuICAgICAgICAwOiBcIlBhZ2UgbXVzdCBpZGVudGlmeSB0aGUgZGVmYXVsdCBsYW5ndWFnZSBvZiB0aGUgZG9jdW1lbnQgd2l0aCBhICdsYW5nJyBhdHRyaWJ1dGVcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUGFnZSBsYW5ndWFnZSBkZXRlY3RlZCBhcyBcXFwiezB9XFxcIlwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlBhZ2UgZGV0ZWN0ZWQgYXMgWEhUTUwgMS4wLCBidXQgaGFzIG5laXRoZXIgJ2xhbmcnIG5vciAneG1sOmxhbmcnIGF0dHJpYnV0ZXNcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJQYWdlIGRldGVjdGVkIGFzIFhIVE1MLCBidXQgZG9lcyBub3QgaGF2ZSBhbiAneG1sOmxhbmcnIGF0dHJpYnV0ZVwiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIlBhZ2UgZGV0ZWN0ZWQgYXMgSFRNTCwgYnV0IGRvZXMgbm90IGhhdmUgYSAnbGFuZycgYXR0cmlidXRlXCIsXG4gICAgICAgIFwiRmFpbF80XCI6IFwiUGFnZSBkZXRlY3RlZCB3aXRoICdsYW5nJyBhbmQgJ3htbDpsYW5nJyBhdHRyaWJ1dGVzIGFuZCBwcmltYXJ5IGxhbmd1YWdlcyBkbyBub3QgbWF0Y2g6IFxcXCJ7MH1cXFwiLCBcXFwiezF9XFxcIlwiLFxuICAgICAgICBcIkZhaWxfNVwiOiBcIlBhZ2UgZGV0ZWN0ZWQgd2l0aCAnbGFuZycgYW5kICd4bWw6bGFuZycgYXR0cmlidXRlcyB0aGF0IGRvIG5vdCBtYXRjaDogXFxcInswfVxcXCIsIFxcXCJ7MX1cXFwiXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzVcIjogXCJQYWdlIGRldGVjdGVkIGFzIFhIVE1MIDEuMCB3aXRoIG9ubHkgYSAnbGFuZycgYXR0cmlidXRlLiBDb25maXJtIHRoYXQgcGFnZSBpcyBvbmx5IGRlbGl2ZXJlZCB2aWEgdGV4dC9odG1sIG1pbWUgdHlwZVwiLFxuICAgICAgICBcIlBvdGVudGlhbF82XCI6IFwiUGFnZSBkZXRlY3RlZCBhcyBYSFRNTCAxLjAgd2l0aCBvbmx5IGFuICd4bWw6bGFuZycgYXR0cmlidXRlLiBDb25maXJtIHRoYXQgcGFnZSBpcyBvbmx5IGRlbGl2ZXJlZCB2aWEgeG1sIG1pbWUgdHlwZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0XCI6IHtcbiAgICAgICAgMDogXCJVc2VyIHNob3VsZCBiZSBpbmZvcm1lZCBpbiBhZHZhbmNlIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBjb250ZW50IGNhdXNlcyBhIGNoYW5nZSBvZiBjb250ZXh0XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IGludGVyYWN0aW5nIHdpdGggY29udGVudCB3aWxsIG5vdCBvcGVuIHBvcC11cCB3aW5kb3dzIG9yIGNoYW5nZSB0aGUgYWN0aXZlIHdpbmRvdyB3aXRob3V0IGluZm9ybWluZyB0aGUgdXNlclwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfQV9IYXNUZXh0XCI6IHtcbiAgICAgICAgMDogXCJIeXBlcmxpbmtzIG11c3QgaGF2ZSBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlaXIgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIkh5cGVybGluayBoYXMgYSBkZXNjcmlwdGlvbiBvZiBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkh5cGVybGluayBoYXMgbm8gbGluayB0ZXh0LCBsYWJlbCBvciBpbWFnZSB3aXRoIGEgdGV4dCBhbHRlcm5hdGl2ZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRmllbGRzZXRfSGFzTGVnZW5kXCI6IHtcbiAgICAgICAgMDogXCIgPGZpZWxkc2V0PiBlbGVtZW50cyBtdXN0IGhhdmUgYSBzaW5nbGUsIG5vbi1lbXB0eSA8bGVnZW5kPiBhcyBhIGxhYmVsXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCI8ZmllbGRzZXQ+IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhIDxsZWdlbmQ+XCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiPGZpZWxkc2V0PiBlbGVtZW50IGhhcyBtb3JlIHRoYW4gb25lIDxsZWdlbmQ+XCIsXG4gICAgICAgIFwiRmFpbF8zXCI6IFwiPGZpZWxkc2V0PiBlbGVtZW50IDxsZWdlbmQ+IGlzIGVtcHR5XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9NZWRpYV9WaWRlb09iamVjdFRyaWdnZXJcIjoge1xuICAgICAgICAwOiBcIkxpdmUgbWVkaWEgKHN0cmVhbWluZyB2aWRlbyB3aXRoIGF1ZGlvKSBzaG91bGQgaGF2ZSBjYXB0aW9ucyBmb3IgYXVkaW8gY29udGVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiTWFudWFsXzFcIjogXCJWZXJpZnkgY2FwdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBsaXZlIG1lZGlhIChzdHJlYW1pbmcgdmlkZW8gd2l0aCBhdWRpbylcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1RleHRfU2Vuc29yeVJlZmVyZW5jZVwiOiB7XG4gICAgICAgIDA6IFwiSW5zdHJ1Y3Rpb25zIG11c3QgYmUgbWVhbmluZ2Z1bCB3aXRob3V0IHNoYXBlIG9yIGxvY2F0aW9uIHdvcmRzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIklmIHRoZSB3b3JkKHMpICd7MH0nIGlzIHBhcnQgb2YgaW5zdHJ1Y3Rpb25zIGZvciB1c2luZyBwYWdlIGNvbnRlbnQsIGNoZWNrIGl0IGlzIHN0aWxsIHVuZGVyc3RhbmRhYmxlIHdpdGhvdXQgdGhpcyBsb2NhdGlvbiBvciBzaGFwZSBpbmZvcm1hdGlvblwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRW1iZWRfQXV0b1N0YXJ0XCI6IHtcbiAgICAgICAgMDogXCJNZWNoYW5pc20gbXVzdCBiZSBhdmFpbGFibGUgdG8gcGF1c2Ugb3Igc3RvcCBhbmQgY29udHJvbCB0aGUgdm9sdW1lIG9mIHRoZSBhdWRpbyB0aGF0IHBsYXlzIGF1dG9tYXRpY2FsbHlcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoZXJlIGlzIGEgbWVjaGFuaXNtIHRvIHBhdXNlIG9yIHN0b3AgYW5kIGNvbnRyb2wgdGhlIHZvbHVtZSBmb3IgdGhlIGF1ZGlvIHRoYXQgcGxheXMgYXV0b21hdGljYWxseVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfU3R5bGVfSGluZGVyRm9jdXMxXCI6IHtcbiAgICAgICAgMDogXCJUaGUga2V5Ym9hcmQgZm9jdXMgaW5kaWNhdG9yIG11c3QgYmUgaGlnaGx5IHZpc2libGUgd2hlbiBkZWZhdWx0IGJvcmRlciBvciBvdXRsaW5lIGlzIG1vZGlmaWVkIGJ5IENTU1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJDaGVjayB0aGUga2V5Ym9hcmQgZm9jdXMgaW5kaWNhdG9yIGlzIGhpZ2hseSB2aXNpYmxlIHdoZW4gdXNpbmcgQ1NTIGVsZW1lbnRzIGZvciBib3JkZXIgb3Igb3V0bGluZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkXCI6IHtcbiAgICAgICAgMDogXCJUaGUgbGFuZ3VhZ2Ugb2YgY29udGVudCBtdXN0IGJlIHZhbGlkIGFuZCBzcGVjaWZpZWQgaW4gYWNjb3JkYW5jZSB3aXRoIEJDUCA0N1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIkxhbmcgaGFzIGEgdmFsaWQgcHJpbWFyeSBsYW5nIGFuZCBjb25mb3JtcyB0byBCQ1AgNDdcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJTcGVjaWZpZWQgJ2xhbmcnIGF0dHJpYnV0ZSBkb2VzIG5vdCBpbmNsdWRlIGEgdmFsaWQgcHJpbWFyeSBsYW5ndWFnZVwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlNwZWNpZmllZCAnbGFuZycgYXR0cmlidXRlIGRvZXMgbm90IGNvbmZvcm0gdG8gQkNQIDQ3XCIsXG4gICAgICAgIFwiRmFpbF8zXCI6IFwiU3BlY2lmaWVkICdsYW5nJyBhdHRyaWJ1dGUgZG9lcyBub3QgaW5jbHVkZSBhIHZhbGlkIHByaW1hcnkgbGFuZ3VhZ2VcIixcbiAgICAgICAgXCJGYWlsXzRcIjogXCJTcGVjaWZpZWQgJ3htbDpsYW5nJyBhdHRyaWJ1dGUgZG9lcyBub3QgY29uZm9ybSB0byBCQ1AgNDdcIixcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbWdfTGlua1RleHROb3RSZWR1bmRhbnRcIjoge1xuICAgICAgICAwOiBcIlRoZSB0ZXh0IGFsdGVybmF0aXZlIGZvciBhbiBpbWFnZSB3aXRoaW4gYSBsaW5rIHNob3VsZCBub3QgcmVwZWF0IHRoZSBsaW5rIHRleHQgb3IgYWRqYWNlbnQgbGluayB0ZXh0XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJMaW5rIHRleHQgaXMgcmVwZWF0ZWQgaW4gYW4gaW1hZ2UgJ2FsdCcgdmFsdWUgd2l0aGluIHRoZSBzYW1lIGxpbmtcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJMaW5rIHRleHQgb2YgcHJldmlvdXMgbGluayBpcyByZXBlYXRlZCBpbiBpbWFnZSAnYWx0JyB2YWx1ZSBvZiBhIGxpbmtcIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCJJbWFnZSAnYWx0JyB2YWx1ZSB3aXRoaW4gYSBsaW5rIGlzIHJlcGVhdGVkIGluIGxpbmsgdGV4dCBvZiB0aGUgbGluayBhZnRlclwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfU3R5bGVfRXh0ZXJuYWxTdHlsZVNoZWV0XCI6IHtcbiAgICAgICAgMDogXCJDaGVjayBleHRlcm5hbCBzdHlsZSBzaGVldHMgdG8gZW5zdXJlIHRoYXQgQ1NTIGlzIG5vdCB1c2VkIHRvIGFkZCBpbWFnZXMgdGhhdCBjb252ZXkgaW1wb3J0YW50IGluZm9ybWF0aW9uIGluIHRoZSBjb250ZW50LlwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJFeHRlcm5hbCBzdHlsZSBzaGVldHMgZGV0ZWN0ZWQgZW5zdXJlIHRoYXQgQ1NTIGRvZXMgbm90IGFkZCBpbWFnZXMgdGhhdCBjb252ZXkgaW1wb3J0YW50IGluZm9ybWF0aW9uIGluIHRoZSBjb250ZW50LlwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfSGVhZGVyX1RyaWdnZXJcIjoge1xuICAgICAgICAwOiBcIkhlYWRpbmcgdGV4dCBzaG91bGQgY29ycmVjdGx5IGRlc2NyaWJlIHRoZSBzdWJqZWN0IG9mIHRoZSB3ZWIgcGFnZSBzZWN0aW9uc1wiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgaGVhZGluZyB0ZXh0IGNvcnJlY3RseSBkZXNjcmliZXMgdGhlIHN1YmplY3Qgb2YgZWFjaCB3ZWIgcGFnZSBzZWN0aW9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwyXCI6IHtcbiAgICAgICAgMDogXCJTY3JpcHRzIHNob3VsZCBub3QgYmUgdXNlZCB0byBlbXVsYXRlIGxpbmtzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0ICdvbmNsaWNrJyBldmVudHMgYXJlIG5vdCB1c2VkIGluIHNjcmlwdCB0byBlbXVsYXRlIGEgbGlua1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudFwiOiB7XG4gICAgICAgIDA6IFwiVGhlIHRhYmxlIHN1bW1hcnkgbXVzdCBub3QgZHVwbGljYXRlIHRoZSBjYXB0aW9uXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgdGFibGUgc3VtbWFyeSBkdXBsaWNhdGVzIHRoZSBjYXB0aW9uXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9MYWJlbEJlZm9yZVwiOiB7XG4gICAgICAgIDA6IFwiVGV4dCBpbnB1dHMgYW5kIDxzZWxlY3Q+IGVsZW1lbnRzIG11c3QgaGF2ZSBhIGxhYmVsIGJlZm9yZSB0aGUgaW5wdXQgY29udHJvbFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGV4dCBpbnB1dCBpcyBuZXN0ZWQgaW4gbGFiZWwgc3VjaCB0aGF0IGlucHV0IHByZWNlZGVzIHRoZSBsYWJlbCB0ZXh0XCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiTGFiZWwgdGV4dCBpcyBsb2NhdGVkIGFmdGVyIGl0cyBhc3NvY2lhdGVkIHRleHQgaW5wdXQgb3IgPHNlbGVjdD4gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW5wdXRfTGFiZWxBZnRlclwiOiB7XG4gICAgICAgIDA6IFwiQ2hlY2tib3hlcyBhbmQgcmFkaW8gYnV0dG9ucyBtdXN0IGhhdmUgYSBsYWJlbCBhZnRlciB0aGUgaW5wdXQgY29udHJvbFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQ2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uIGlzIG5lc3RlZCBpbiBsYWJlbCwgc28gbGFiZWwgaXMgbm90IGFmdGVyIHRoZSBpbnB1dCBjb250cm9sXCIsXG4gICAgICAgIFwiRmFpbF8yXCI6IFwiTGFiZWwgdGV4dCBpcyBsb2NhdGVkIGJlZm9yZSBpdHMgYXNzb2NpYXRlZCBjaGVja2JveCBvciByYWRpbyBidXR0b24gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfRW1iZWRfSGFzTm9FbWJlZFwiOiB7XG4gICAgICAgIDA6IFwiPGVtYmVkPiBlbGVtZW50cyBzaG91bGQgYmUgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBub24tZW1iZWRkZWQgZWxlbWVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCB0aGUgPGVtYmVkPiBlbGVtZW50IGlzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgbm9uLWVtYmVkZGVkIGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIC8vICAgICAgIFwiRmFpbF8yXCIgYWRkZWQgcGVyIEhUTUwgNSBzcGVjXG4gICAgXCJXQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRcIjoge1xuICAgICAgICAwOiBcIlZhbHVlIGZvciAnc2NvcGUnIGF0dHJpYnV0ZSBtdXN0IGJlIFxcXCJyb3dcXFwiLCBcXFwiY29sXFxcIiwgXFxcInJvd2dyb3VwXFxcIiwgb3IgXFxcImNvbGdyb3VwXFxcIlwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVmFsdWUgcHJvdmlkZWQgaXMgaW52YWxpZCBmb3IgdGhlICdzY29wZScgYXR0cmlidXRlXCIsXG4gICAgICAgIFwiRmFpbF8yXCI6wqBcIlRoZSAnc2NvcGUnIGF0dHJpYnV0ZSBzaG91bGQgb25seSBiZSB1c2VkIG9uIGEgPHRoPiBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbWdfVGl0bGVFbXB0eVdoZW5BbHROdWxsXCI6IHtcbiAgICAgICAgMDogXCJXaGVuIHRoZSBpbWFnZSAnYWx0JyBhdHRyaWJ1dGUgaXMgZW1wdHksIHRoZSAndGl0bGUnIGF0dHJpYnV0ZSBtdXN0IGFsc28gYmUgZW1wdHlcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBpbWFnZSAnYWx0JyBhdHRyaWJ1dGUgaXMgZW1wdHksIGJ1dCB0aGUgJ3RpdGxlJyBhdHRyaWJ1dGUgaXMgbm90IGVtcHR5XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9JbnB1dF9JbkZpZWxkU2V0XCI6IHtcbiAgICAgICAgMDogXCJHcm91cHMgb2YgbG9naWNhbGx5IHJlbGF0ZWQgaW5wdXQgZWxlbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCB3aXRoaW4gYSA8ZmllbGRzZXQ+IGVsZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVXNlIHRoZSA8ZmllbGRzZXQ+IGVsZW1lbnQgdG8gZ3JvdXAgbG9naWNhbGx5IHJlbGF0ZWQgaW5wdXQgZWxlbWVudHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldFwiOiB7XG4gICAgICAgIDA6IFwiUmVsYXRlZCBzZXRzIG9mIHJhZGlvIGJ1dHRvbnMgb3IgY2hlY2tib3hlcyBzaG91bGQgYmUgcHJvZ3JhbW1hdGljYWxseSBncm91cGVkXCIsXG4gICAgICAgIFwiUGFzc19Mb25lTm9ncm91cFwiOiBcInswfSBncm91cGluZyBub3QgcmVxdWlyZWQgZm9yIGEgY29udHJvbCBvZiB0aGlzIHR5cGVcIixcbiAgICAgICAgXCJQYXNzX0dyb3VwZWRcIjogXCJ7MH0gaW5wdXQgaXMgZ3JvdXBlZCB3aXRoIG90aGVyIHJlbGF0ZWQgY29udHJvbHMgd2l0aCB0aGUgc2FtZSBuYW1lXCIsXG4gICAgICAgIFwiUGFzc19SYWRpb05vTmFtZVwiOiBcIlJhZGlvIGlucHV0IGlzIG5vdCBncm91cGVkLCBidXQgcGFzc2VzIGJlY2F1c2UgaXQgaGFzIG5vIG5hbWUgdG8gZ3JvdXAgd2l0aCBvdGhlciByYWRpbyBpbnB1dHNcIixcbiAgICAgICAgXCJGYWlsX0NvbnRyb2xOYW1lTWlzbWF0Y2hcIjogXCJ7MH0gaW5wdXQgZm91bmQgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSwgXFxcInsyfVxcXCIgYXMgYSB7MX0gaW5wdXRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfTG9uZUNoZWNrYm94XCI6IFwiVmVyaWZ5IHRoYXQgdGhpcyB1bmdyb3VwZWQgY2hlY2tib3ggaW5wdXQgaXMgbm90IHJlbGF0ZWQgdG8gb3RoZXIgY2hlY2tib3hlc1wiLFxuICAgICAgICBcIlBvdGVudGlhbF9Vbm5hbWVkQ2hlY2tib3hcIjogXCJWZXJpZnkgdGhhdCB0aGlzIHVuLW5hbWVkLCB1bmdyb3VwZWQgY2hlY2tib3ggaW5wdXQgaXMgbm90IHJlbGF0ZWQgdG8gb3RoZXIgY2hlY2tib3hlc1wiLFxuICAgICAgICBcIkZhaWxfTm90R3JvdXBlZE90aGVyR3JvdXBlZFwiOiBcInswfSBpbnB1dCBpcyBub3QgaW4gdGhlIGdyb3VwIHdpdGggYW5vdGhlciB7MH0gd2l0aCB0aGUgbmFtZSBcXFwiezF9XFxcIlwiLFxuICAgICAgICBcIkZhaWxfTm90R3JvdXBlZE90aGVyTm90R3JvdXBlZFwiOiBcInswfSBpbnB1dCBhbmQgb3RoZXJzIHdpdGggdGhlIG5hbWUgXFxcInsxfVxcXCIgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXCIsXG4gICAgICAgIFwiRmFpbF9Ob3RTYW1lR3JvdXBcIjogXCJ7MH0gaW5wdXQgaXMgaW4gYSBkaWZmZXJlbnQgZ3JvdXAgdGhhbiBhbm90aGVyIHswfSB3aXRoIHRoZSBuYW1lIFxcXCJ7MX1cXFwiXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25cIjoge1xuICAgICAgICAwOiBcIk5vIGNoYW5nZXMgb2YgY29udGV4dCBzaG91bGQgb2NjdXIgd2hlbiBhIHNlbGVjdGlvbiB2YWx1ZSByZWNlaXZlcyBmb2N1c1wiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgbm8gY2hhbmdlIG9mIGNvbnRleHQgb3IgYWN0aW9uIG9jY3VycyB3aGVuIHNlbGVjdGlvbiBvcHRpb25zIGluIHRoaXMgY29tcG9uZW50IHJlY2VpdmUgZm9jdXNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X0hhc09uY2hhbmdlXCI6IHtcbiAgICAgICAgMDogXCJWZXJpZnkgdGhhdCBhbnkgY2hhbmdlcyBvZiBjb250ZXh0IGFyZSBleHBsYWluZWQgaW4gYWR2YW5jZSB0byB0aGUgdXNlclwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCBhbnkgY2hhbmdlcyBvZiBjb250ZXh0IGFyZSBleHBsYWluZWQgaW4gYWR2YW5jZSB0byB0aGUgdXNlclwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfRW1iZWRfSGFzQWx0XCI6IHtcbiAgICAgICAgMDogXCJQcm92aWRlIGFsdGVybmF0aXZlIGNvbnRlbnQgZm9yIDxlbWJlZD4gZWxlbWVudHNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgdGhlIDxlbWJlZD4gZWxlbWVudCBoYXMgYWx0ZXJuYXRpdmUgY29udGVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX05vZW1iZWRfSGFzQ29udGVudFwiOiB7XG4gICAgICAgIDA6IFwiPG5vZW1iZWQ+IGVsZW1lbnRzIHNob3VsZCBjb250YWluIGRlc2NyaXB0aXZlIHRleHRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiQWRkIGRlc2NyaXB0aXZlIHRleHQgdG8gdGhlIDxub2VtYmVkPiBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfQ2FwdGlvbl9IYXNDb250ZW50XCI6IHtcbiAgICAgICAgMDogXCJBIDxjYXB0aW9uPiBlbGVtZW50IGZvciBhIDx0YWJsZT4gZWxlbWVudCBtdXN0IGNvbnRhaW4gZGVzY3JpcHRpdmUgdGV4dFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIDx0YWJsZT4gZWxlbWVudCBoYXMgYW4gZW1wdHkgPGNhcHRpb24+IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9DYXB0aW9uX0luVGFibGVcIjoge1xuICAgICAgICAwOiBcIlRoZSA8Y2FwdGlvbj4gZWxlbWVudCBtdXN0IGJlIG5lc3RlZCBpbnNpZGUgdGhlIGFzc29jaWF0ZWQgPHRhYmxlPiBlbGVtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCI8Y2FwdGlvbj4gZWxlbWVudCBpcyBub3QgbmVzdGVkIGluc2lkZSBhIDx0YWJsZT4gZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJWYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRcIjoge1xuICAgICAgICAwOiBcIkEgPGxhYmVsPiBlbGVtZW50IG11c3QgaGF2ZSBub24tZW1wdHkgZGVzY3JpcHRpdmUgdGV4dCB0aGF0IGlkZW50aWZpZXMgdGhlIHB1cnBvc2Ugb2YgdGhlIGludGVyYWN0aXZlIGNvbXBvbmVudFwiLFxuICAgICAgICBcIlBhc3NfUmVndWxhclwiOiBcIjxsYWJlbD4gZWxlbWVudCBoYXMgYWNjZXNzaWJsZSBuYW1lIHdpdGggaW5uZXIgY29udGVudFwiLFxuICAgICAgICBcIlBhc3NfQXJpYUxhYmVsXCI6IFwiPGxhYmVsPiBlbGVtZW50IGhhcyBhY2Nlc3NpYmxlIG5hbWUgdmlhICdhcmlhLWxhYmVsJ1wiLFxuICAgICAgICBcIlBhc3NfTGFiZWxsZWRCeVwiOiBcIjxsYWJlbD4gZWxlbWVudCBoYXMgYWNjZXNzaWJsZSBuYW1lIHZpYSAnYXJpYS1sYWJlbGxlZGJ5J1wiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSA8bGFiZWw+IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBkZXNjcmlwdGl2ZSB0ZXh0IHRoYXQgaWRlbnRpZmllcyB0aGUgZXhwZWN0ZWQgaW5wdXRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9FbGVtX0RpclZhbGlkXCI6IHtcbiAgICAgICAgMDogXCInZGlyJyBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBcXFwibHRyXFxcIiwgXFxcInJ0bFxcXCIsIG9yIFxcXCJhdXRvXFxcIlwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiSW52YWxpZCB2YWx1ZSB1c2VkIGZvciB0aGUgJ2RpcicgYXR0cmlidXRlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlZhbGVyaWVfRnJhbWVfU3JjSHRtbFwiOiB7XG4gICAgICAgIDA6IFwiQSA8ZnJhbWU+IGNvbnRhaW5pbmcgbm9uLUhUTUwgY29udGVudCBtdXN0IGJlIG1hZGUgYWNjZXNzaWJsZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgPGZyYW1lPiBjb250ZW50IGlzIGFjY2Vzc2libGVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIjoge1xuICAgICAgICAwOiBcIkZvciBhIGNvbXBsZXggZGF0YSB0YWJsZSwgYWxsIDx0aD4gYW5kIDx0ZD4gZWxlbWVudHMgbXVzdCBiZSByZWxhdGVkIHZpYSAnaGVhZGVyJyBvciAnc2NvcGUnIGF0dHJpYnV0ZXNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkNvbXBsZXggdGFibGUgZG9lcyBub3QgaGF2ZSBoZWFkZXJzIGZvciBlYWNoIGNlbGwgcHJvcGVybHkgZGVmaW5lZCB3aXRoICdoZWFkZXInIG9yICdzY29wZSdcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUlBUX1RhYmxlX0xheW91dFRyaWdnZXJcIjoge1xuICAgICAgICAwOiBcIkF2b2lkIHVzaW5nIHRhYmxlcyB0byBmb3JtYXQgdGV4dCBkb2N1bWVudHMgaW4gY29sdW1ucyB1bmxlc3MgdGhlIHRhYmxlIGNhbiBiZSBsaW5lYXJpemVkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0YWJsZSBpcyBub3QgYmVpbmcgdXNlZCB0byBmb3JtYXQgdGV4dCBjb250ZW50IGluIGNvbHVtbnMgdW5sZXNzIHRoZSB0YWJsZSBjYW4gYmUgbGluZWFyaXplZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJSUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYVwiOiB7XG4gICAgICAgIDA6IFwiRGF0YSB0YWJsZSBtdXN0IGlkZW50aWZ5IGhlYWRlcnNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRhYmxlIGhhcyBubyBoZWFkZXJzIGlkZW50aWZpZWRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0xhYmVsX1JlZlZhbGlkXCI6IHtcbiAgICAgICAgMDogXCJUaGUgJ2ZvcicgYXR0cmlidXRlIG11c3QgcmVmZXJlbmNlIGEgbm9uLWVtcHR5LCB1bmlxdWUgJ2lkJyBhdHRyaWJ1dGUgb2YgYW4gPGlucHV0PiBlbGVtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgdmFsdWUgXFxcInswfVxcXCIgb2YgdGhlICdmb3InIGF0dHJpYnV0ZSBpcyBub3QgdGhlICdpZCcgb2YgYSB2YWxpZCA8aW5wdXQ+IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5XCI6IHtcbiAgICAgICAgMDogXCInYWNjZXNza2V5JyBhdHRyaWJ1dGUgdmFsdWVzIG9uIGVhY2ggZWxlbWVudCBtdXN0IGJlIHVuaXF1ZSBmb3IgdGhlIHBhZ2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIidhY2Nlc3NrZXknIGF0dHJpYnV0ZSB2YWx1ZSBvbiB0aGUgZWxlbWVudCBpcyBub3QgdW5pcXVlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9TY3JpcHRfRm9jdXNCbHVyc1wiOiB7XG4gICAgICAgIDA6IFwiU2NyaXB0aW5nIG11c3Qgbm90IHJlbW92ZSBmb2N1cyBmcm9tIGNvbnRlbnQgdGhhdCBub3JtYWxseSByZWNlaXZlcyBmb2N1c1wiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHNjcmlwdCBkb2VzIG5vdCByZW1vdmUgZm9jdXMgZnJvbSBjb250ZW50IHRoYXQgbm9ybWFsbHkgcmVjZWl2ZXMgZm9jdXNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19JbWdfVXNlbWFwQWx0XCI6IHtcbiAgICAgICAgMDogXCJBbiBpbWFnZSBtYXAgYW5kIGVhY2ggPGFyZWE+IGVsZW1lbnQgaW4gYW4gaW1hZ2UgbWFwIG11c3QgaGF2ZSB0ZXh0IGFsdGVybmF0aXZlKHMpXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJJbWFnZSBtYXAgb3IgY2hpbGQgPGFyZWE+IGhhcyBubyB0ZXh0IGFsdGVybmF0aXZlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9UZXh0X0Vtb3RpY29uc1wiOiB7XG4gICAgICAgIDA6IFwiRW1vdGljb25zIG11c3QgaGF2ZSBhIHNob3J0IHRleHQgYWx0ZXJuYXRpdmUgdGhhdCBkZXNjcmliZXMgdGhlaXIgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCBlbW90aWNvbnMgaGF2ZSBhIHRleHQgYWx0ZXJuYXRpdmVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1N0eWxlX0JlZm9yZUFmdGVyXCI6IHtcbiAgICAgICAgMDogXCJEbyBub3QgdXNlIENTUyAnOjpiZWZvcmUnIGFuZCAnOjphZnRlcicgcHNldWRvLWVsZW1lbnRzIHRvIGluc2VydCBub24tZGVjb3JhdGl2ZSBjb250ZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGUgJzo6YmVmb3JlJyBhbmQgJzo6YWZ0ZXInIHBzZXVkby1lbGVtZW50cyBkbyBub3QgaW5zZXJ0IG5vbi1kZWNvcmF0aXZlIGNvbnRlbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX1RleHRfTGV0dGVyU3BhY2luZ1wiOiB7XG4gICAgICAgIDA6IFwiVXNlIENTUyAnbGV0dGVyLXNwYWNpbmcnIHRvIGNvbnRyb2wgc3BhY2luZyB3aXRoaW4gYSB3b3JkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBub3QgYmVpbmcgdXNlZCB0byBjcmVhdGUgc3BhY2UgYmV0d2VlbiB0aGUgbGV0dGVycyBvZiBhIHdvcmRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfVmFsaWRSb2xlXCI6IHtcbiAgICAgICAgMDogXCJFbGVtZW50cyBtdXN0IGhhdmUgYSB2YWxpZCAncm9sZScgcGVyIEFSSUEgc3BlY2lmaWNhdGlvblwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiU29tZSBvZiB0aGUgcm9sZXMsICd7MH0nLCBkZWZpbmVkIG9uIHRoZSBlbGVtZW50IGFyZSBub3QgdmFsaWQgcGVyIEFSSUEgc3BlY2lmaWNhdGlvblwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlRoZSByb2xlICd7MH0nIGRlZmluZWQgb24gdGhlIGVsZW1lbnQgaXMgbm90IHZhbGlkIHBlciBBUklBIHNwZWNpZmljYXRpb25cIlxuICAgIH0sXG4gICAgXCJ0YWJsZV9hcmlhX2Rlc2NlbmRhbnRzXCI6IHtcbiAgICAgICAgMDogXCJUYWJsZSBzdHJ1Y3R1cmUgZWxlbWVudHMgY2Fubm90IHNwZWNpZnkgYW4gZXhwbGljaXQgJ3JvbGUnIHdpdGhpbiB0YWJsZSBjb250YWluZXJzXCIsXG4gICAgICAgIFwiZXhwbGljaXRfcm9sZVwiOiBcIkFuIGV4cGxpY2l0IEFSSUEgJ3JvbGUnIGlzIG5vdCB2YWxpZCBmb3IgPHswfT4gZWxlbWVudCB3aXRoaW4gYSBBUklBIHJvbGUgJ3sxfScgcGVyIHRoZSBBUklBIGluIEhUTUwgc3BlY2lmaWNhdGlvblwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5VmFsdWVcIjoge1xuICAgICAgICAwOiBcIkFSSUEgcHJvcGVydHkgdmFsdWVzIG11c3QgYmUgdmFsaWRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSB2YWx1ZSBcXFwiezB9XFxcIiBzcGVjaWZpZWQgZm9yIGF0dHJpYnV0ZSAnezF9JyBvbiBlbGVtZW50IDx7Mn0+IGlzIG5vdCB2YWxpZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9WYWxpZElkUmVmXCI6IHtcbiAgICAgICAgMDogXCJUaGUgQVJJQSBwcm9wZXJ0eSBtdXN0IHJlZmVyZW5jZSBhIG5vbi1lbXB0eSB1bmlxdWUgaWQgb2YgYW4gZXhpc3RpbmcgZWxlbWVudCB0aGF0IGlzIHZpc2libGVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSAnaWQnIFxcXCJ7MH1cXFwiIHNwZWNpZmllZCBmb3IgdGhlIEFSSUEgcHJvcGVydHkgJ3sxfScgdmFsdWUgaXMgbm90IHZhbGlkXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1JlcXVpcmVkUHJvcGVydGllc1wiOiB7XG4gICAgICAgIDA6IFwiV2hlbiB1c2luZyBhIEFSSUEgcm9sZSBvbiBhbiBlbGVtZW50LCB0aGUgcmVxdWlyZWQgYXR0cmlidXRlcyBmb3IgdGhhdCByb2xlIG11c3QgYmUgZGVmaW5lZFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQW4gZWxlbWVudCB3aXRoIEFSSUEgcm9sZSAnezB9JyBkb2VzIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBBUklBIGF0dHJpYnV0ZShzKTogJ3sxfSdcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfRW1wdHlQcm9wZXJ0eVZhbHVlXCI6IHtcbiAgICAgICAgMDogXCJXaGVuIHNwZWNpZnlpbmcgYSByZXF1aXJlZCBBUklBIGF0dHJpYnV0ZSwgdGhlIHZhbHVlIG11c3Qgbm90IGJlIGVtcHR5XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgZWxlbWVudCBhdHRyaWJ1dGUocyk6ICd7MH0nIHZhbHVlIGlzIGVtcHR5XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlcIjoge1xuICAgICAgICAwOiBcIkFSSUEgYXR0cmlidXRlcyBtdXN0IGJlIHZhbGlkIGZvciB0aGUgZWxlbWVudCdzIHJvbGVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBhdHRyaWJ1dGUocykgJ3swfScgcmVmZXJlbmNlZCBieSB0aGUgZWxlbWVudCA8ezF9PiBpcyBub3QgYSB2YWxpZCBBUklBIHN0YXRlIG9yIHByb3BlcnR5XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0ludmFsaWRUYWJpbmRleEZvckFjdGl2ZWRlc2NlbmRhbnRcIjoge1xuICAgICAgICAwOiBcIkVsZW1lbnQgdXNpbmcgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgcHJvcGVydHkgbXVzdCBoYXZlIGl0cyAndGFiaW5kZXgnIGF0dHJpYnV0ZSB2YWx1ZSBzZXQgdG8gMCBvciAtMSB0byBiZSBrZXlib2FyZCBhY2Nlc3NpYmxlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgPHswfT4gZWxlbWVudCB1c2luZyAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBzZXQgdG8gXFxcInsxfVxcXCIgZG9lcyBub3QgaGF2ZSBpdHMgJ3RhYmluZGV4JyBhdHRyaWJ1dGUgdmFsdWUgc2V0IHRvIDAgb3IgLTFcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTWlzc2luZ0ZvY3VzYWJsZUNoaWxkXCI6IHtcbiAgICAgICAgMDogXCJVSSBjb21wb25lbnQgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBmb2N1c2FibGUgY2hpbGQgZWxlbWVudCBmb3Iga2V5Ym9hcmQgYWNjZXNzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgZGVzY2VuZGVudCA8ezB9PiBlbGVtZW50IHdpdGggXFxcInsxfVxcXCIgcm9sZSBoYXMgbm8gZm9jdXNhYmxlIGNoaWxkIGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTWlzc2luZ0tleWJvYXJkSGFuZGxlclwiOiB7XG4gICAgICAgIDA6IFwiSW50ZXJhY3RpdmUgV0FJX0FSSUEgVUkgY29tcG9uZW50cyBtdXN0IHByb3ZpZGUga2V5Ym9hcmQgYWNjZXNzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGUgPHswfT4gZWxlbWVudCB3aXRoIFxcXCJ7MX1cXFwiIHJvbGUgaGFzIGtleWJvYXJkIGFjY2Vzc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJXQ0FHMjBfSW1nX1ByZXNlbnRhdGlvbkltZ0hhc05vbk51bGxBbHRcIjoge1xuICAgICAgICAwOiBcIkltYWdlIGRlc2lnbmF0ZWQgYXMgZGVjb3JhdGl2ZSBtdXN0IGhhdmUgJ2FsdD1cXFwiXFxcIlwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiSW1hZ2UgZGVzaWduYXRlZCBhcyBkZWNvcmF0aXZlIGhhcyBub24tbnVsbCAnYWx0JyBhdHRyaWJ1dGVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJzZWFyY2hcXFwiIHJvbGUgbXVzdCBoYXZlIGEgdW5pcXVlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJzZWFyY2hcXFwiIHJvbGUgZG8gbm90IGhhdmUgdW5pcXVlIGxhYmVsc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzXCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwiYXBwbGljYXRpb25cXFwiIHJvbGUgbXVzdCBoYXZlIGEgdW5pcXVlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJhcHBsaWNhdGlvblxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0FwcGxpY2F0aW9uTGFuZG1hcmtMYWJlbFwiOiB7XG4gICAgICAgIDA6IFwiQW4gZWxlbWVudCB3aXRoIFxcXCJhcHBsaWNhdGlvblxcXCIgcm9sZSBtdXN0IGhhdmUgYSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiRWxlbWVudCB3aXRoIFxcXCJhcHBsaWNhdGlvblxcXCIgcm9sZSBkb2VzIG5vdCBoYXZlIGEgbGFiZWxcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzXCI6IHtcbiAgICAgICAgMDogXCJBbGwgZWxlbWVudHMgd2l0aCBhIFxcXCJkb2N1bWVudFxcXCIgcm9sZSBtdXN0IGhhdmUgdW5pcXVlIGxhYmVsc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBhIFxcXCJkb2N1bWVudFxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIldDQUcyMF9MYWJlbF9UYXJnZXRJbnZpc2libGVcIjoge1xuICAgICAgICAwOiBcIkRvIG5vdCBsYWJlbCBoaWRkZW4gPGlucHV0PiBlbGVtZW50cyAoJ3R5cGU9XFxcImhpZGRlblxcXCIpXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkhpZGRlbiA8aW5wdXQ+IGVsZW1lbnQgKCd0eXBlPVxcXCJoaWRkZW5cXFwiKSBpcyBwb3NzaWJseSBsYWJlbGxlZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX1ZpZGVvX0hhc05vVHJhY2tcIjoge1xuICAgICAgICAwOiBcIkEgPHZpZGVvPiBlbGVtZW50IG11c3QgaGF2ZSBhIHRleHQgYWx0ZXJuYXRpdmUgZm9yIGFueSBtZWFuaW5nZnVsIGF1ZGlvIGNvbnRlbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiVmVyaWZ5IHRoYXQgY2FwdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgYW55IG1lYW5pbmdmdWwgYXVkaW8gb3IgcHJvdmlkZSBhIGNhcHRpb24gdHJhY2sgZm9yIHRoZSA8dmlkZW8+IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19BdWRpb19WaWRlb19UcmlnZ2VyXCI6IHtcbiAgICAgICAgMDogXCJNZWRpYSB1c2luZyA8YXVkaW8+IGFuZC9vciA8dmlkZW8+IGVsZW1lbnRzIG11c3QgaGF2ZSBrZXlib2FyZCBhY2Nlc3NpYmxlIGNvbnRyb2xzXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJNYW51YWxfMVwiOiBcIlZlcmlmeSBtZWRpYSB1c2luZyA8YXVkaW8+IGFuZC9vciA8dmlkZW8+IGVsZW1lbnRzIGhhdmUga2V5Ym9hcmQgYWNjZXNzaWJsZSBjb250cm9sc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0lucHV0X0hhc1JlcXVpcmVkXCI6IHtcbiAgICAgICAgMDogXCJJZiB0aGUgYXBwbGljYXRpb24gbXVzdCBiZSBhY2Nlc3NpYmxlIGluIEludGVybmV0IEV4cGxvcmVyIDgsIHVzZSAnYXJpYS1yZXF1aXJlZCcgaW5zdGVhZCBvZiB0aGUgSFRNTDUgJ3JlcXVpcmVkJyBwcm9wZXJ0eVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJJZiB0aGUgYXBwbGljYXRpb24gbXVzdCBiZSBhY2Nlc3NpYmxlIGluIEludGVybmV0IEV4cGxvcmVyIDgsIHVzZSAnYXJpYS1yZXF1aXJlZCcgaW5zdGVhZCBvZiB0aGUgSFRNTDUgJ3JlcXVpcmVkJyBwcm9wZXJ0eVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0FyaWFfSW1nQWx0XCI6IHtcbiAgICAgICAgMDogXCJBbiBlbGVtZW50IHdpdGggXFxcImltZ1xcXCIgcm9sZSBtdXN0IGhhdmUgYSBub24tZW1wdHkgbGFiZWxcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkVsZW1lbnQgd2l0aCBcXFwiaW1nXFxcIiByb2xlIGhhcyBubyBsYWJlbFwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIkVsZW1lbnQgd2l0aCBcXFwiaW1nXFxcIiByb2xlIGhhcyBubyBsYWJlbCBvciBhbiBlbXB0eSBsYWJlbFwiLFxuICAgICAgICBcIkZhaWxfM1wiOiBcIkVsZW1lbnQgd2l0aCBcXFwiaW1nXFxcIiByb2xlIG1pc3Npbmcgbm9uLWVtcHR5ICdhcmlhLWxhYmVsJyBvciAnYXJpYS1sYWJlbGxlZGJ5J1wiXG4gICAgfSxcbiAgICBcIkhBQUNfQXJpYV9TdmdBbHRcIjoge1xuICAgICAgICAwOiBcIkFuIGVsZW1lbnQgd2l0aCBhIGdyYXBoaWNzIHJvbGUgbXVzdCBoYXZlIGEgbm9uLWVtcHR5IGxhYmVsXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJFbGVtZW50IHdpdGggXFxcInswfVxcXCIgZ3JhcGhpY3Mgcm9sZSBoYXMgbm8gbGFiZWxcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJFbGVtZW50IHdpdGggXFxcInswfVxcXCIgZ3JhcGhpY3Mgcm9sZSBoYXMgbm8gbGFiZWwgb3IgYW4gZW1wdHkgbGFiZWxcIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCJFbGVtZW50IHdpdGggXFxcInswfVxcXCIgZ3JhcGhpY3Mgcm9sZSBtaXNzaW5nIG5vbi1lbXB0eSAnYXJpYS1sYWJlbCcgb3IgJ2FyaWEtbGFiZWxsZWRieSdcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19CYWNrZ3JvdW5kSW1nX0hhc1RleHRPclRpdGxlXCI6IHtcbiAgICAgICAgMDogXCJCYWNrZ3JvdW5kIGltYWdlcyB0aGF0IGNvbnZleSBpbXBvcnRhbnQgaW5mb3JtYXRpb24gbXVzdCBoYXZlIGEgdGV4dCBhbHRlcm5hdGl2ZSB0aGF0IGRlc2NyaWJlcyB0aGUgaW1hZ2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IFwiVmVyaWZ5IGltcG9ydGFudCBiYWNrZ3JvdW5kIGltYWdlIGluZm9ybWF0aW9uIGhhcyBhIHRleHQgYWx0ZXJuYXRpdmUgaW4gc3lzdGVtIGhpZ2ggY29udHJhc3QgbW9kZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0FjY2Vzc2tleV9OZWVkTGFiZWxcIjoge1xuICAgICAgICAwOiBcIkFuIEhUTUwgZWxlbWVudCB3aXRoIGFuIGFzc2lnbmVkICdhY2Nlc3NrZXknIGF0dHJpYnV0ZSBtdXN0IGhhdmUgYW4gYXNzb2NpYXRlZCBsYWJlbFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJUaGUgSFRNTCBlbGVtZW50IHdpdGggYW4gYXNzaWduZWQgJ2FjY2Vzc2tleScgYXR0cmlidXRlIGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBsYWJlbFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0FyaWFfT3JfSFRNTDVfQXR0clwiOiB7XG4gICAgICAgIDA6IFwiSFRNTDUgYXR0cmlidXRlcyBtdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZSBhc3NvY2lhdGVkIEFSSUEgYXR0cmlidXRlIHVzZWQgb24gYW4gaW5wdXQgZWxlbWVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiSFRNTDUgYXR0cmlidXRlIGlzIGluIGNvbmZsaWN0IHdpdGggdGhlIGFzc29jaWF0ZWQgQVJJQSBhdHRyaWJ1dGUgdXNlZCBvbiBhbiBpbnB1dCBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQ2FudmFzXCI6IHtcbiAgICAgICAgMDogXCJUaGUgPGNhbnZhcz4gZWxlbWVudCBtYXkgbm90IGJlIGFjY2Vzc2libGVcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIk1hbnVhbF8xXCI6IFwiVmVyaWZ5IGFjY2Vzc2liaWxpdHkgb2YgdGhlIDxjYW52YXM+IGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSEFBQ19GaWd1cmVfbGFiZWxcIjoge1xuICAgICAgICAwOiBcIkEgPGZpZ3VyZT4gZWxlbWVudCBtdXN0IGhhdmUgYW4gYXNzb2NpYXRlZCBsYWJlbFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIDxmaWd1cmU+IGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGxhYmVsXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfSW5wdXRfUGxhY2Vob2xkZXJcIjoge1xuICAgICAgICAwOiBcIkhUTUw1ICdwbGFjZWhvbGRlcicgYXR0cmlidXRlIG11c3Qgbm90IGJlIHVzZWQgYXMgYSB2aXNpYmxlIGxhYmVsIHJlcGxhY2VtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkhUTUw1IHBsYWNlaG9sZGVyIGlzIHRoZSBvbmx5IHZpc2libGUgbGFiZWxcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMlwiOiBcIkFkZGl0aW9uYWwgdmlzaWJsZSBsYWJlbCByZWZlcmVuY2VkIGJ5ICdhcmlhLWxhYmVsbGVkYnknIGlzIG5vdCB2YWxpZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJhcmlhX3NlbWFudGljc19yb2xlXCI6IHtcbiAgICAgICAgMDogXCJBUklBIHJvbGVzIG11c3QgYmUgdmFsaWQgZm9yIHRoZSBlbGVtZW50IHRvIHdoaWNoIHRoZXkgYXJlIGFzc2lnbmVkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgQVJJQSByb2xlICd7MH0nIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGVsZW1lbnQgPHsxfT5cIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJUaGUgQVJJQSByb2xlICd7MH0nIGlzIG5vdCB2YWxpZCBmb3IgdGhlIGVsZW1lbnQgPHsxfT4gYW5kIG1heSBiZSBpZ25vcmVkIGJ5IHRoZSBicm93c2VyIHNpbmNlIHRoZSBlbGVtZW50IGlzIGZvY3VzYWJsZVwiXG4gICAgfSxcbiAgICBcImFyaWFfc2VtYW50aWNzX2F0dHJpYnV0ZVwiOiB7XG4gICAgICAgIDA6IFwiQVJJQSBhdHRyaWJ1dGVzIG11c3QgYmUgdmFsaWQgZm9yIHRoZSBlbGVtZW50IGFuZCBBUklBIHJvbGUgdG8gd2hpY2ggdGhleSBhcmUgYXNzaWduZWRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBBUklBIGF0dHJpYnV0ZSAnezB9JyBpcyBub3QgdmFsaWQgZm9yIHRoZSBlbGVtZW50IDx7MX0+IHdpdGggQVJJQSByb2xlICd7Mn0nXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9Gb3JtX0NoYW5nZUVtcHR5XCI6IHtcbiAgICAgICAgMDogXCJBIGZvcm0gc2hvdWxkIG5vdCBiZSBzdWJtaXR0ZWQgYXV0b21hdGljYWxseSB3aXRob3V0IHdhcm5pbmcgdGhlIHVzZXJcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiQ29uZmlybSB0aGUgZm9ybSBkb2VzIG5vdCBzdWJtaXQgYXV0b21hdGljYWxseSB3aXRob3V0IHdhcm5pbmdcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBXCI6IHtcbiAgICAgICAgMDogXCJUaGUgY29udHJhc3QgcmF0aW8gb2YgdGV4dCB3aXRoIGl0cyBiYWNrZ3JvdW5kIG11c3QgbWVldCBXQ0FHIDIuMSBBQSByZXF1aXJlbWVudHNcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRleHQgY29udHJhc3Qgb2YgezB9IHdpdGggaXRzIGJhY2tncm91bmQgaXMgbGVzcyB0aGFuIHRoZSBXQ0FHIEFBIG1pbmltdW0gcmVxdWlyZW1lbnRzIGZvciB0ZXh0IG9mIHNpemUgezF9cHggYW5kIHdlaWdodCBvZiB7Mn1cIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlRoZSBmb3JlZ3JvdW5kIHRleHQgYW5kIGl0cyBiYWNrZ3JvdW5kIGNvbG9yIGFyZSBib3RoIGRldGVjdGVkIGFzIHszfS4gVmVyaWZ5IHRoZSB0ZXh0IG1lZXRzIHRoZSBXQ0FHIDIuMSBBQSByZXF1aXJlbWVudHMgZm9yIG1pbmltdW0gY29udHJhc3RcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWXCI6IHtcbiAgICAgICAgMDogXCJUaGUgY29udHJhc3QgcmF0aW8gb2YgdGV4dCB3aXRoIGl0cyBiYWNrZ3JvdW5kIChpLmUuIGJhY2tncm91bmQgd2l0aCBhIGNvbG9yIGdyYWRpZW50IG9yIGEgYmFja2dyb3VuZCBpbWFnZSkgbXVzdCBtZWV0IFdDQUcgMi4xIEFBIHJlcXVpcmVtZW50c1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhlIGNvbnRyYXN0IHJhdGlvIG9mIHRoZSB0ZXh0IGFnYWluc3QgdGhlIGxpZ2h0ZXN0IGFuZCB0aGUgZGFya2VzdCBjb2xvcnMgb2YgdGhlIGJhY2tncm91bmQgbWVldHMgdGhlIFdDQUcgMi4xIEFBIG1pbmltdW0gcmVxdWlyZW1lbnRzIGZvciB0ZXh0IG9mIHNpemUgezF9cHggYW5kIHdlaWdodCBvZiB7Mn1cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0JvZHlfRmlyc3RBU2tpcHNfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjoge1xuICAgICAgICAwOiBcIlBhZ2VzIG11c3QgcHJvdmlkZSBhIHdheSB0byBza2lwIGRpcmVjdGx5IHRvIHRoZSBtYWluIGNvbnRlbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBwYWdlIGRvZXMgbm90IHByb3ZpZGUgYSB3YXkgdG8gcXVpY2tseSBuYXZpZ2F0ZSB0byB0aGUgbWFpbiBjb250ZW50IChBUklBIFxcXCJtYWluXFxcIiBsYW5kbWFyayBvciBhIHNraXAgbGluaylcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0JvZHlfRmlyc3RBQ29udGFpbnNTa2lwVGV4dF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IFwiVGhlIGRlc2NyaXB0aW9uIG9mIGEgaHlwZXJsaW5rIHVzZWQgdG8gc2tpcCBjb250ZW50IG11c3QgY29tbXVuaWNhdGUgd2hlcmUgaXQgbGlua3MgdG9cIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IGlmIHRoaXMgaHlwZXJsaW5rIHNraXBzIGNvbnRlbnQsIHRoZSBkZXNjcmlwdGlvbiBjb21tdW5pY2F0ZXMgd2hlcmUgaXQgbGlua3MgdG9cIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbl9OYXRpdmVfSG9zdF9TZW1hdGljc1wiOiB7XG4gICAgICAgIDA6IFwiQW4gZWxlbWVudCB3aXRoIGEgQVJJQSByb2xlIG11c3QgY29udGFpbiByZXF1aXJlZCBjaGlsZHJlblwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJUaGUgZWxlbWVudCB3aXRoIHJvbGUgXFxcInswfVxcXCIgZG9lcyBub3QgY29udGFpbiBvciBvd24gYXQgbGVhc3Qgb25lIGNoaWxkIGVsZW1lbnQgd2l0aCBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgcm9sZXM6IFxcXCJ7MX1cXFwiXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX1JlcXVpcmVkUGFyZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogXCJBbiBlbGVtZW50IHdpdGggYW4gaW1wbGljaXQgb3IgZXhwbGljaXQgcm9sZSBtdXN0IGJlIGNvbnRhaW5lZCB3aXRoaW4gYSB2YWxpZCBlbGVtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgZWxlbWVudCB3aXRoIHJvbGUgXFxcInswfVxcXCIgaXMgbm90IGNvbnRhaW5lZCBpbiBvciBvd25lZCBieSBhbiBlbGVtZW50IHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgcm9sZXM6IFxcXCJ7MX1cXFwiXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0V2ZW50SGFuZGxlck1pc3NpbmdSb2xlX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCI6IHtcbiAgICAgICAgMDogXCJFbGVtZW50cyB3aXRoIGV2ZW50IGhhbmRsZXJzIG11c3QgaGF2ZSBhIHZhbGlkIEFSSUEgcm9sZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIDx7MH0+IGVsZW1lbnQgd2l0aCAnezF9JyBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgQVJJQSByb2xlIHNwZWNpZmllZFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9XaWRnZXRMYWJlbHNfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkludGVyYWN0aXZlIGNvbXBvbmVudCBtdXN0IGhhdmUgYSBwcm9ncmFtbWF0aWNhbGx5IGFzc29jaWF0ZWQgbmFtZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiSW50ZXJhY3RpdmUgY29tcG9uZW50IHdpdGggQVJJQSByb2xlICd7MH0nIGRvZXMgbm90IGhhdmUgYSBwcm9ncmFtbWF0aWNhbGx5IGFzc29jaWF0ZWQgbmFtZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIjoge1xuICAgICAgICAwOiBcIkFsbCBjb250ZW50IG11c3QgcmVzaWRlIHdpdGhpbiBhbiBlbGVtZW50IHdpdGggYSBsYW5kbWFyayByb2xlXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQ29udGVudCBpcyBub3Qgd2l0aGluIGEgbGFuZG1hcmsgZWxlbWVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9SZWdpb25MYWJlbF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcInJlZ2lvblxcXCIgcm9sZSBtdXN0IGhhdmUgYSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiU2VjdGlvbiBlbGVtZW50IHdpdGggYW4gaW1wbGljaXQgXFxcInJlZ2lvblxcXCIgcm9sZSBpcyBub3QgbGFiZWxlZCB3aXRoIGFuICdhcmlhLWxhYmVsJyBvciAnYXJpYS1sYWJlbGxlZGJ5J1wiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlRoZSBlbGVtZW50IHdpdGggXFxcInJlZ2lvblxcXCIgcm9sZSBpcyBub3QgbGFiZWxlZCB3aXRoIGFuICdhcmlhLWxhYmVsJyBvciAnYXJpYS1sYWJlbGxlZGJ5J1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwibWFpblxcXCIgcm9sZSBzaG91bGQgaGF2ZSBhIHVuaXF1ZSB2aXNpYmxlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJtYWluXFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSB2aXNpYmxlIGxhYmVsc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcImJhbm5lclxcXCIgcm9sZSBtdXN0IGhhdmUgYSB1bmlxdWUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcImJhbm5lclxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcImNvbXBsZW1lbnRhcnlcXFwiIHJvbGUgbXVzdCBoYXZlIGEgdW5pcXVlIGxhYmVsIHRoYXQgZGVzY3JpYmVzIGl0cyBwdXJwb3NlXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwiY29tcGxlbWVudGFyeVxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9MYW5kbWFya3NfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJjb250ZW50aW5mb1xcXCIgcm9sZSBtdXN0IGhhdmUgYSB1bmlxdWUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcImNvbnRlbnRpbmZvXFxcIiByb2xlIGRvIG5vdCBoYXZlIHVuaXF1ZSBsYWJlbHNcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwiZm9ybVxcXCIgcm9sZSBtdXN0IGhhdmUgYSB1bmlxdWUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcImZvcm1cXFwiIHJvbGUgZG8gbm90IGhhdmUgdW5pcXVlIGxhYmVsc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJuYXZpZ2F0aW9uXFxcIiByb2xlIG11c3QgaGF2ZSBhIHVuaXF1ZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwibmF2aWdhdGlvblxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBcXFwiY29tcGxlbWVudGFyeVxcXCIgcm9sZSBzaG91bGQgaGF2ZSBhIHZpc2libGUgbGFiZWwgdGhhdCBkZXNjcmliZXMgaXRzIHB1cnBvc2VcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBlbGVtZW50IHdpdGggXFxcImNvbXBsZW1lbnRhcnlcXFwiIHJvbGUgZG9lcyBub3QgaGF2ZSBhIHZpc2libGUgbGFiZWxcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfTXVsdGlwbGVBcnRpY2xlUm9sZXNfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkVhY2ggZWxlbWVudCB3aXRoIFxcXCJhcnRpY2xlXFxcIiByb2xlIG11c3QgaGF2ZSBhIHVuaXF1ZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwiYXJ0aWNsZVxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0FydGljbGVSb2xlTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkFuIGVsZW1lbnQgd2l0aCBcXFwiYXJ0aWNsZVxcXCIgcm9sZSBtdXN0IGhhdmUgYSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBlbGVtZW50IHdpdGggXFxcImFydGljbGVcXFwiIHJvbGUgZG9lcyBub3QgaGF2ZSBhIGxhYmVsXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlR3JvdXBSb2xlc19JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiRWFjaCBlbGVtZW50IHdpdGggXFxcImdyb3VwXFxcIiByb2xlIG11c3QgaGF2ZSBhIHVuaXF1ZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwiZ3JvdXBcXFwiIHJvbGUgZG8gbm90IGhhdmUgdW5pcXVlIGxhYmVsc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9Hcm91cFJvbGVMYWJlbF9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiQW4gZWxlbWVudCB3aXRoIFxcXCJncm91cFxcXCIgcm9sZSBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBsYWJlbCB0aGF0IGRlc2NyaWJlcyBpdHMgcHVycG9zZVwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIDx7MH0+IGVsZW1lbnQgd2l0aCBcXFwiZ3JvdXBcXFwiIHJvbGUgZG9lcyBub3QgaGF2ZSBhIGxhYmVsXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9JblNpYmxpbmdTZXRfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkEgcGFnZSwgZG9jdW1lbnQgb3IgYXBwbGljYXRpb24gc2hvdWxkIG9ubHkgaGF2ZSBvbmUgZWxlbWVudCB3aXRoIFxcXCJjb250ZW50aW5mb1xcXCIgcm9sZVwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIk11bHRpcGxlIGVsZW1lbnRzIHdpdGggXFxcImNvbnRlbnRpbmZvXFxcIiByb2xlIGZvdW5kIG9uIGEgcGFnZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIlRoZXJlIG11c3QgYmUgb25seSBvbmUgZWxlbWVudCB3aXRoIFxcXCJiYW5uZXJcXFwiIHJvbGUgb24gdGhlIHBhZ2VcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGVyZSBpcyBtb3JlIHRoYW4gb25lIGVsZW1lbnQgd2l0aCBcXFwiYmFubmVyXFxcIiByb2xlIG9uIHRoZSBwYWdlXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdFwiOiB7XG4gICAgICAgIDA6IFwiQW4gZWxlbWVudCB3aXRoIFxcXCJjb250ZW50aW5mb1xcXCIgcm9sZSBpcyBvbmx5IHBlcm1pdHRlZCB3aXRoIGFuIGVsZW1lbnQgd2l0aCBcXFwibWFpblxcXCIgcm9sZVwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBlbGVtZW50IHdpdGggXFxcImNvbnRlbnRpbmZvXFxcIiByb2xlIGlzIHByZXNlbnQgd2l0aG91dCBhbiBlbGVtZW50IHdpdGggXFxcIm1haW5cXFwiIHJvbGVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeVJlcXVpcmVkTGFiZWxfSW1wbGljaXRcIjoge1xuICAgICAgICAwOiBcIkFuIGVsZW1lbnQgd2l0aCBcXFwiY29tcGxlbWVudGFyeVxcXCIgcm9sZSBtdXN0IGhhdmUgYSBsYWJlbFwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSBlbGVtZW50IHdpdGggXFxcImNvbXBsZW1lbnRhcnlcXFwiIHJvbGUgZG9lcyBub3QgaGF2ZSBhIGxhYmVsXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0XCI6IHtcbiAgICAgICAgMDogXCJFYWNoIGVsZW1lbnQgd2l0aCBhIFxcXCJyZWdpb25cXFwiIHJvbGUgbXVzdCBoYXZlIGEgdW5pcXVlIGxhYmVsXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSBlbGVtZW50cyB3aXRoIFxcXCJyZWdpb25cXFwiIHJvbGUgZG8gbm90IGhhdmUgdW5pcXVlIGxhYmVsc1wiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJJQk1BX0ZvY3VzX1RhYmJhYmxlXCI6IHtcbiAgICAgICAgMDogXCJDb21wb25lbnQgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSB0YWJiYWJsZSBlbGVtZW50XCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIkNvbXBvbmVudCB3aXRoIFxcXCJ7MH1cXFwiIHJvbGUgZG9lcyBub3QgaGF2ZSBhIHRhYmJhYmxlIGVsZW1lbnRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiSUJNQV9Gb2N1c19NdWx0aVRhYlwiOiB7XG4gICAgICAgIDA6IFwiQ2VydGFpbiBjb21wb25lbnRzIG11c3QgaGF2ZSBubyBtb3JlIHRoYW4gb25lIHRhYmJhYmxlIGVsZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiQ29tcG9uZW50IHdpdGggXFxcInswfVxcXCIgcm9sZSBoYXMgbW9yZSB0aGFuIG9uZSB0YWJiYWJsZSBlbGVtZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJQVF9TdHlsZV9UcmlnZ2VyMlwiOiB7XG4gICAgICAgIDA6IFwiV2luZG93cyBoaWdoIGNvbnRyYXN0IG1vZGUgbXVzdCBiZSBzdXBwb3J0ZWQgd2hlbiB1c2luZyBDU1MgdG8gaW5jbHVkZSwgcG9zaXRpb24gb3IgYWx0ZXIgbm9uLWRlY29yYXRpdmUgY29udGVudFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiTWFudWFsXzFcIjogXCJDb25maXJtIFdpbmRvd3MgaGlnaCBjb250cmFzdCBtb2RlIGlzIHN1cHBvcnRlZCB3aGVuIHVzaW5nIENTUyB0byBpbmNsdWRlLCBwb3NpdGlvbiBvciBhbHRlciBub24tZGVjb3JhdGl2ZSBjb250ZW50XCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMlwiOiB7XG4gICAgICAgIDA6IFwiRWxlbWVudHMgd2l0aCBcXFwibWFpblxcXCIgcm9sZSBtdXN0IGhhdmUgdW5pcXVlIGxhYmVsc1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTXVsdGlwbGUgZWxlbWVudHMgd2l0aCBcXFwibWFpblxcXCIgcm9sZSBkbyBub3QgaGF2ZSB1bmlxdWUgbGFiZWxzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfTWVkaWFfRG9jdW1lbnRUcmlnZ2VyMlwiOiB7XG4gICAgICAgIDA6IFwiRmlsZSBkb3dubG9hZCBtZWNoYW5pc21zIHNob3VsZCBiZSBrZXlib2FyZC1vcGVyYWJsZSBhbmQgcHJlc2VydmUgcGFnZSBmb2N1cyBsb2NhdGlvblwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiTWFudWFsXzFcIjogXCJWZXJpZnkgdGhhdCB0aGUgZmlsZSBkb3dubG9hZCBtZWNoYW5pc20gZG9lcyBub3QgY2F1c2UgYSBrZXlib2FyZCB0cmFwXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQXJpYV9FcnJvck1lc3NhZ2VcIjoge1xuICAgICAgICAwOiBcIkEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgbXVzdCByZWZlcmVuY2UgYSB2YWxpZCAnaWQnIHZhbHVlIGFuZCB3aGVuIHRyaWdnZXJlZCB0aGUgbWVzc2FnZSBtdXN0IGJlIGFwcHJvcHJpYXRlbHkgZXhwb3NlZFwiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiQ3VzdG9tIGVycm9yIG1lc3NhZ2UgaGFzIGludmFsaWQgcmVmZXJlbmNlICdpZCcgdmFsdWVcIixcbiAgICAgICAgXCJGYWlsXzJcIjogXCJDdXN0b20gZXJyb3IgbWVzc2FnZSBpcyBub3QgdmlzaWJsZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0xpc3RfR3JvdXBfTGlzdEl0ZW1cIjoge1xuICAgICAgICAwOiBcIkxpc3QgY29tcG9uZW50IHdpdGggXFxcImdyb3VwXFxcIiByb2xlIG11c3QgbGltaXQgY2hpbGRyZW4gdG8gPGxpc3RpdGVtPiBlbGVtZW50c1wiLFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiTGlzdCBjb21wb25lbnQgd2l0aCBcXFwiZ3JvdXBcXFwiIHJvbGUgaGFzIGNoaWxkcmVuIHRoYXQgYXJlIG5vdCA8bGlzdGl0ZW0+IGVsZW1lbnRzXCJcbiAgICB9LFxuICAgIC8vIEpDSCAtIERPTkVcbiAgICBcIkhBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrXCI6IHtcbiAgICAgICAgMDogXCJUaGUgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgcHJvcGVydHkgbXVzdCByZWZlcmVuY2UgdGhlICdpZCcgb2YgYSBub24tZW1wdHksIG5vbi1oaWRkZW4gYWN0aXZlIGNoaWxkIGVsZW1lbnRcIixcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBwcm9wZXJ0eSBpcyBlbXB0eVwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlRoZSAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBwcm9wZXJ0eSByZWZlcmVuY2VzIGEgaGlkZGVuIG5vZGVcIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCJFbGVtZW50IGlzIG5vdCBhIGNvbWJvYm94LCBhbmQgdGhlIHJlZmVyZW5jZWQgYWN0aXZlLWRlc2NlbmRhbnQgZWxlbWVudCBpcyBub3QgYSB2YWxpZCBkZXNjZW5kYW50XCIsXG4gICAgICAgIFwiRmFpbF80XCI6IFwiRWxlbWVudCBpcyBhIGNvbWJvYm94LCBhbmQgdGhlIHJlZmVyZW5jZWQgYWN0aXZlLWRlc2NlbmRhbnQgZWxlbWVudCBpcyBub3QgY29udHJvbGxlZCBieSB0aGlzIGNvbXBvbmVudFwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJIQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dFwiOiB7XG4gICAgICAgIDA6IFwiTm9uLWRlY29yYXRpdmUgc3RhdGljIHRleHQgYW5kIGltYWdlIGNvbnRlbnQgd2l0aGluIGFuIGVsZW1lbnQgd2l0aCBcXFwiYXBwbGljYXRpb25cXFwiIHJvbGUgbXVzdCBiZSBhY2Nlc3NpYmxlXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJQb3RlbnRpYWxfMVwiOiBcIlZlcmlmeSB0aGF0IHRoZSBub24tZGVjb3JhdGl2ZSBzdGF0aWMgdGV4dCBhbmQgaW1hZ2UgY29udGVudCB3aXRoaW4gYW4gZWxlbWVudCB3aXRoIFxcXCJhcHBsaWNhdGlvblxcXCIgcm9sZSBhcmUgYWNjZXNzaWJsZVwiXG4gICAgfSxcbiAgICAvLyBKQ0ggLSBET05FXG4gICAgXCJScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbFwiOiB7XG4gICAgICAgIDA6IFwiQWxsIHRvb2xiYXIgY29tcG9uZW50cyBvbiBhIHBhZ2UgbXVzdCBoYXZlIHVuaXF1ZSBsYWJlbHMgc3BlY2lmaWVkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJNdWx0aXBsZSB0b29sYmFyIGNvbXBvbmVudHMgZG8gbm90IGhhdmUgdW5pcXVlIGxhYmVsc1wiXG4gICAgfSxcbiAgICBcImNvbWJvYm94X3ZlcnNpb25cIjoge1xuICAgICAgICAwOiBcIlRoZSBjb21ib2JveCBkZXNpZ24gcGF0dGVybiBtdXN0IGJlIHZhbGlkIGZvciBBUklBIDEuMlwiLFxuICAgICAgICBcIlBhc3NfMS4wXCI6IFwiVGhlIGNvbWJvYm94IGRlc2lnbiBwYXR0ZXJuIGlzIGRldGVjdGVkIGFzIEFSSUEgMS4wLCB3aGljaCBpcyBhbGxvd2VkIGJ5IEFSSUEgMS4yXCIsXG4gICAgICAgIFwiRmFpbF8xLjFcIjogXCJUaGUgY29tYm9ib3ggZGVzaWduIHBhdHRlcm4gaXMgZGV0ZWN0ZWQgYXMgQVJJQSAxLjEsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJ5IEFSSUEgMS4yXCIsXG4gICAgICAgIFwiUGFzc18xLjJcIjogXCJUaGUgY29tYm9ib3ggZGVzaWduIHBhdHRlcm4gaXMgZGV0ZWN0ZWQgYXMgQVJJQSAxLjJcIlxuICAgIH0sXG4gICAgXCJjb21ib2JveF9wb3B1cF9yZWZlcmVuY2VcIjoge1xuICAgICAgICAwOiBcIlRoZSAnYXJpYS1jb250cm9scycgKGZvciBBUklBIDEuMikgb3IgdGhlICdhcmlhLW93bnMnIChmb3IgQVJJQSAxLjApIGF0dHJpYnV0ZSBvZiB0aGUgZXhwYW5kZWQgY29tYm9ib3ggbXVzdCByZWZlcmVuY2UgYSB2YWxpZCBwb3B1cCAnaWQnIHZhbHVlXCIsXG4gICAgICAgIFwiUGFzc19leHBhbmRlZFwiOiBcIlRoZSBjb21ib2JveCBwb3B1cCByZWZlcmVuY2VkIGJ5ICdhcmlhLWNvbnRyb2xzJyAoQVJJQSAxLjIpIG9yICdhcmlhLW93bnMnIChBUklBIDEuMCkgZXhpc3RzIGFuZCBpcyB2aXNpYmxlXCIsXG4gICAgICAgIFwiUGFzc19jb2xsYXBzZWRcIjogXCJUaGUgY29tYm9ib3ggcG9wdXAgaW4gaXRzIGNvbGxhcHNlZCBzdGF0ZSBkb2VzIG5vdCByZWZlcmVuY2UgYW55IHZpc2libGUgcG9wdXAgYXMgcmVxdWlyZWRcIixcbiAgICAgICAgXCJGYWlsXzEuMF9taXNzaW5nX293bnNcIjogXCJUaGUgJ2FyaWEtb3ducycgYXR0cmlidXRlIG9mIHRoZSBleHBhbmRlZCBjb21ib2JveCBpcyBtaXNzaW5nXCIsXG4gICAgICAgIFwiRmFpbF8xLjJfbWlzc2luZ19jb250cm9sc1wiOiBcIlRoZSAnYXJpYS1jb250cm9scycgYXR0cmlidXRlIG9mIHRoZSBleHBhbmRlZCBjb21ib2JveCBpcyBtaXNzaW5nXCIsXG4gICAgICAgIFwiRmFpbF8xLjBfcG9wdXBfcmVmZXJlbmNlX21pc3NpbmdcIjogXCJUaGUgJ2FyaWEtb3ducycgYXR0cmlidXRlIFxcXCJ7MH1cXFwiIG9mIHRoZSBleHBhbmRlZCBjb21ib2JveCBkb2VzIG5vdCByZWZlcmVuY2UgYSB2YWxpZCBwb3B1cCAnaWQnIHZhbHVlXCIsXG4gICAgICAgIFwiRmFpbF8xLjJfcG9wdXBfcmVmZXJlbmNlX21pc3NpbmdcIjogXCJUaGUgJ2FyaWEtY29udHJvbHMnIGF0dHJpYnV0ZSBcXFwiezB9XFxcIiBvZiB0aGUgZXhwYW5kZWQgY29tYm9ib3ggZG9lcyBub3QgcmVmZXJlbmNlIGEgdmFsaWQgcG9wdXAgJ2lkJyB2YWx1ZVwiLFxuICAgICAgICBcIkZhaWxfY29tYm9ib3hfZXhwYW5kZWRfaGlkZGVuXCI6IFwiVGhlIGNvbWJvYm94ICdhcmlhLWV4cGFuZGVkJyBhdHRyaWJ1dGUgaXMgdHJ1ZSwgYnV0IHRoZSBjb21ib2JveCBwb3B1cCBpcyBub3QgdmlzaWJsZVwiLFxuICAgICAgICBcIkZhaWxfY29tYm9ib3hfY29sbGFwc2VkX3Zpc2libGVcIjogXCJUaGUgY29tYm9ib3ggJ2FyaWEtZXhwYW5kZWQnIGF0dHJpYnV0ZSBpcyBmYWxzZSwgYnV0IHRoZSBjb21ib2JveCBwb3B1cCBpcyB2aXNpYmxlXCJcbiAgICB9LFxuICAgIFwiY29tYm9ib3hfaGFzcG9wdXBcIjoge1xuICAgICAgICAwOiBcIlRoZSBjb21ib2JveCBhdHRyaWJ1dGUgJ2FyaWEtaGFzcG9wdXAnIHZhbHVlIG11c3QgYmUgYXBwcm9wcmlhdGUgZm9yIHRoZSByb2xlIG9mIHRoZSBlbGVtZW50IHJlZmVyZW5jZWQgYnkgJ2FyaWEtY29udHJvbHMnIChBUklBIDEuMikgb3IgJ2FyaWEtb3ducycgKEFSSUEgMS4wKVwiLFxuICAgICAgICBcIlBhc3NcIjogXCJUaGUgJ2FyaWEtY29udHJvbHMnIChBUklBIDEuMikgb3IgJ2FyaWEtb3ducycgKEFSSUEgMS4wKSBhcHByb3ByaWF0ZWx5IHJlZmVyZW5jZXMgYSB2YWxpZCBwb3B1cCAnaWQnIHZhbHVlXCIsXG4gICAgICAgIFwiRmFpbF9wb3B1cF9yb2xlX2ludmFsaWRcIjogXCJUaGUgJ3JvbGUnIHZhbHVlIFxcXCJ7MH1cXFwiIG9mIHRoZSBwb3B1cCBlbGVtZW50IFxcXCJ7MX1cXFwiIHNob3VsZCBiZSBvbmUgb2YgXFxcImxpc3Rib3hcXFwiLCBcXFwiZ3JpZFxcXCIsIFxcXCJ0cmVlXFxcIiBvciBcXFwiZGlhbG9nXFxcIlwiLFxuICAgICAgICBcIkZhaWxfY29tYm9ib3hfcG9wdXBfcm9sZV9taXNtYXRjaFwiOiBcIlRoZSB2YWx1ZSBvZiB0aGUgY29tYm9ib3ggJ2FyaWEtaGFzcG9wdXAnIGF0dHJpYnV0ZSBcXFwiezB9XFxcIiBkb2VzIG5vdCBtYXRjaCB0aGUgJ3JvbGUnIHZhbHVlIG9mIHRoZSBwb3B1cCBlbGVtZW50IFxcXCJ7MX1cXFwiXCJcbiAgICB9LCAgICBcbiAgICBcImNvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c1wiOiB7XG4gICAgICAgIDA6IFwiVGFiYmFibGUgZm9jdXMgZm9yIHRoZSBjb21ib2JveCBtdXN0IGJlIGFsbG93ZWQgb25seSBvbiB0aGUgdGV4dCBpbnB1dCwgZXhjZXB0IHdoZW4gdXNpbmcgYSBkaWFsb2cgcG9wdXBcIixcbiAgICAgICAgXCJQYXNzXCI6IFwiRE9NIGZvY3VzIGlzIGFsbG93ZWQgb25seSBvbiB0aGUgY29tYm9ib3ggZWxlbWVudCBhcyByZXF1aXJlZFwiLFxuICAgICAgICBcIkZhaWxfbm90X3RhYmJhYmxlXCI6IFwiVGhlIGNvbWJvYm94IGVsZW1lbnQgZG9lcyBub3QgYWxsb3cgRE9NIGZvY3VzIGFzIHJlcXVpcmVkXCIsXG4gICAgICAgIFwiRmFpbF90YWJiYWJsZV9jaGlsZFwiOiBcIlRoZSBwb3B1cCBvZiB0aGUgY29tYm9ib3ggaGFzIERPTSBmb2N1cyBvciBoYXMgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgZGVmaW5lZCwgd2hpY2ggaXMgbm90IGFsbG93ZWRcIlxuICAgIH0sXG4gICAgXCJjb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudFwiOiB7XG4gICAgICAgIDA6IFwiJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgbXVzdCBiZSB1c2VkIHRvIGRlZmluZSBmb2N1cyB3aXRoaW4gdGhlIGNvbWJvYm94IHBvcHVwLCBleGNlcHQgd2hlbiB1c2luZyBhIGRpYWxvZyBwb3B1cFwiLFxuICAgICAgICBcIlBhc3NcIjogXCInYXJpYS1hY3RpdmVkZXNjZW5kYW50JyBpcyB1c2VkIGFwcHJvcHJpYXRlbHkgZm9yIHRoaXMgY29tYm9ib3hcIixcbiAgICAgICAgXCJGYWlsX21pc3NpbmdcIjogXCJUaGUgZWxlbWVudCByZWZlcmVuY2VkIGJ5ICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIFxcXCJ7MH1cXFwiIGRvZXMgbm90IGV4aXN0XCIsXG4gICAgICAgIFwiRmFpbF9ub3RfaW5fcG9wdXBcIjogXCJUaGUgZWxlbWVudCByZWZlcmVuY2VkIGJ5ICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIFxcXCJ7MH1cXFwiIGRvZXMgbm90IGV4aXN0IHdpdGhpbiB0aGUgcG9wdXAgcmVmZXJlbmNlZCBieSAnaWQnIFxcXCJ7MX1cXFwiXCIsXG4gICAgICAgIFwiRmFpbF9hY3RpdmVfcm9sZV9pbnZhbGlkXCI6IFwiVGhlICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIFxcXCJ7MH1cXFwiIHJlZmVyZW5jZXMgYW4gZWxlbWVudCB3aXRoIHRoZSByb2xlcyBcXFwiezF9XFxcIiwgd2hpY2ggZG9lcyBub3QgaGF2ZSBhIHZhbGlkIEFSSUEgcm9sZSBvZiAnb3B0aW9uJywgJ2dyaWRjZWxsJywgJ3JvdycsIG9yICd0cmVlaXRlbSdcIixcbiAgICAgICAgXCJGYWlsX2FjdGl2ZV9ub3Rfc2VsZWN0ZWRcIjogXCJUaGUgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgXFxcInswfVxcXCIgcmVmZXJlbmNlcyBhbiBlbGVtZW50IHRoYXQgZG9lcyBub3QgaGF2ZSAnYXJpYS1zZWxlY3RlZCcgc2V0IHRvIHRydWVcIixcbiAgICB9LFxuICAgIFwiY29tYm9ib3hfYXV0b2NvbXBsZXRlXCI6IHtcbiAgICAgICAgMDogXCJBIGNvbWJvYm94IHRoYXQgc3VwcG9ydHMgYXV0b2NvbXBsZXRpb24gYmVoYXZpb3IgbXVzdCBoYXZlIHRoZSAnYXJpYS1hdXRvY29tcGxldGUnIGF0dHJpYnV0ZSBvbmx5IG9uIGl0cyB0ZXh0IGlucHV0IGVsZW1lbnQgd2l0aCBhIHZhbGlkIHZhbHVlOyBhIHZhbHVlIG9mICdcXFwiaW5saW5lXFxcIicgaXMgbm90IHN1cHBvcnRlZFwiLFxuICAgICAgICBcIlBhc3NcIjogXCJUaGUgY29tYm9ib3ggZG9lcyBub3QgdXNlICdhcmlhLWF1dG9jb21wbGV0ZScgdmFsdWUgJ1xcXCJpbmxpbmVcXFwiJyBub3IgZG9lcyBpdCBoYXZlICdhcmlhLWF1dG9jb21wbGV0ZScgZGVmaW5lZCB3aXRoaW4gdGhlIHBvcHVwXCIsXG4gICAgICAgIFwiRmFpbF8xXCI6IFwiVGhlIGNvbWJvYm94IGhhcyB0aGUgJ2FyaWEtYXV0b2NvbXBsZXRlJyBhdHRyaWJ1dGUgaW5jb3JyZWN0bHkgc2V0IG9uIGFuIGVsZW1lbnQgd2l0aGluIHRoZSBwb3B1cCByZWZlcmVuY2VkIGJ5IFxcXCJ7MH1cXFwiXCIsXG4gICAgICAgIFwiRmFpbF9pbmxpbmVcIjogXCJUaGUgY29tYm9ib3ggZG9lcyBub3Qgc3VwcG9ydCBhbiAnYXJpYS1hdXRvY29tcGxldGUnIGF0dHJpYnV0ZSB2YWx1ZSBzZXQgdG8gJ1xcXCJpbmxpbmVcXFwiJyBcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIxX1N0eWxlX1ZpZXdwb3J0XCI6IHtcbiAgICAgICAgMDogXCJUZXh0IG11c3Qgc2NhbGUgdXAgdG8gMjAwJSB3aXRob3V0IGxvc3Mgb2YgY29udGVudCBvciBmdW5jdGlvbmFsaXR5XCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJWZXJpZnkgdGhhdCB0ZXh0IHNpemVkIHVzaW5nIHZpZXdwb3J0IHVuaXRzIGNhbiBiZSByZXNpemVkIHVwIHRvIDIwMCVcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIxX0xhYmVsX0FjY2Vzc2libGVcIjoge1xuICAgICAgICAwOiBcIkFjY2Vzc2libGUgbmFtZSBtdXN0IG1hdGNoIG9yIGNvbnRhaW4gdGhlIHZpc2libGUgbGFiZWwgdGV4dFwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIkFjY2Vzc2libGUgbmFtZSBkb2VzIG5vdCBtYXRjaCBvciBjb250YWluIHRoZSB2aXNpYmxlIGxhYmVsIHRleHRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZVwiOiB7XG4gICAgICAgIDA6IFwiVGhlICdhdXRvY29tcGxldGUnIGF0dHJpYnV0ZSdzIHRva2VuKHMpIG11c3QgYmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBpbnB1dCBmb3JtIGZpZWxkXCIsXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJUaGUgJ2F1dG9jb21wbGV0ZScgYXR0cmlidXRlJ3MgdG9rZW4ocykgYXJlIG5vdCBhcHByb3ByaWF0ZSBmb3IgdGhlIGlucHV0IGZvcm0gZmllbGRcIlxuICAgIH0sXG4gICAgLy8gSkNIIC0gRE9ORVxuICAgIFwiV0NBRzIwX0lucHV0X1Zpc2libGVMYWJlbFwiOiB7XG4gICAgICAgIDA6IFwiQW4gaW5wdXQgZWxlbWVudCBtdXN0IGhhdmUgYW4gYXNzb2NpYXRlZCB2aXNpYmxlIGxhYmVsXCIsIFxuICAgICAgICBcIlBhc3NfMFwiOiBcIlJ1bGUgUGFzc2VkXCIsXG4gICAgICAgIFwiUG90ZW50aWFsXzFcIjogXCJUaGUgaW5wdXQgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgdmlzaWJsZSBsYWJlbFwiXG4gICAgfSxcbiAgICBcIm1ldGFfdmlld3BvcnRfem9vbVwiOiB7XG4gICAgICAgIDA6IFwiVGhlICdtZXRhW25hbWU9dmlld3BvcnRdJyBzaG91bGQgbm90IHByZXZlbnQgdGhlIGJyb3dzZXIgem9vbWluZyB0aGUgY29udGVudFwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJUaGUgJ21ldGFbbmFtZT12aWV3cG9ydF0nIGRvZXMgbm90IHByZXZlbnQgdGhlIGJyb3dzZXIgem9vbWluZyB0aGUgY29udGVudFwiLFxuICAgICAgICBcIlBvdGVudGlhbF8xXCI6IFwiQ29uZmlybSB0aGUgJ21ldGFbbmFtZT12aWV3cG9ydF0nIHdpdGggXFxcInswfVxcXCIgY2FuIGJlIHpvb21lZCBieSB1c2VyXCJcbiAgICB9LFxuICAgIFwiYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCI6IHtcbiAgICAgICAgMDogXCJBIGZvY3VzYWJsZSBlbGVtZW50IHNob3VsZCBub3QgYmUgd2l0aGluIHRoZSBzdWJ0cmVlIG9mIGFuIGVsZW1lbnQgd2l0aCAnYXJpYS1oaWRkZW4nIHNldCB0byBcXFwidHJ1ZVxcXCJcIiwgXG4gICAgICAgIFwiUGFzc18wXCI6IFwiUnVsZSBQYXNzZWRcIixcbiAgICAgICAgXCJGYWlsXzFcIjogXCJFbGVtZW50IFxcXCJ7MH1cXFwiIHNob3VsZCBub3QgYmUgZm9jdXNhYmxlIHdpdGhpbiB0aGUgc3VidHJlZSBvZiBhbiBlbGVtZW50IHdpdGggYW4gJ2FyaWEtaGlkZGVuJyBhdHRyaWJ1dGUgd2l0aCB2YWx1ZSAndHJ1ZSdcIlxuICAgIH0sXG4gICAgXCJ0YWJsZV9oZWFkZXJzX3JlZl92YWxpZFwiOiB7XG4gICAgICAgIDA6IFwiVGhlICdoZWFkZXJzJyBhdHRyaWJ1dGUgc2hvdWxkIHJlZmVyIHRvIGEgdmFsaWQgY2VsbCBpbiB0aGUgc2FtZSB0YWJsZVwiLCBcbiAgICAgICAgXCJQYXNzXzBcIjogXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkZhaWxfMVwiOiBcIlRoZSAnaGVhZGVycycgYXR0cmlidXRlIHZhbHVlIFxcXCJ7MH1cXFwiIGRvZXMgbm90IHJlZmVyZW5jZSBhIHZhbGlkICdpZCcgaW4gdGhpcyBkb2N1bWVudFwiLFxuICAgICAgICBcIkZhaWxfMlwiOiBcIlRoZSAnaGVhZGVycycgYXR0cmlidXRlIHZhbHVlIFxcXCJ7MH1cXFwiIHJlZmVycyB0byBpdHNlbGZcIixcbiAgICAgICAgXCJGYWlsXzNcIjogXCJUaGUgJ2hlYWRlcnMnIGF0dHJpYnV0ZSB2YWx1ZSBcXFwiezB9XFxcIiBkb2VzIG5vdCByZWZlciB0byBhIGNlbGwgaW4gdGhlIHNhbWUgdGFibGVcIixcbiAgICAgICAgXCJGYWlsXzRcIjogXCJUaGUgJ2hlYWRlcnMnIGF0dHJpYnV0ZSB2YWx1ZSBcXFwiezB9XFxcIiBkb2VzIG5vdCByZWZlciB0byBhIGNlbGwgaW5kaWNhdGVkIHdpdGggPHRoPiBvciBhIHJvbGUgb2YgXFxcImNvbHVtbmhlYWRlclxcXCIgb3IgXFxcInJvd2hlYWRlclxcXCJcIlxuICAgIH1cbn1cbmV4cG9ydCB7IGExMXlObHMgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuICAgIGltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcbiAgICBpbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG4gICAgXG4gICAgbGV0IGFyaWFIaWRkZW5SdWxlIDogUnVsZVtdID0gW1xuICAgICAgICAgICAgICAgIFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUaGlzIHJ1bGUgY2hlY2tzIHRoYXQgZWxlbWVudHMgd2l0aCBhbiBhcmlhLWhpZGRlbiBhdHRyaWJ1dGUgZG8gbm90IGNvbnRhaW4gZm9jdXNhYmxlIGVsZW1lbnRzXG4gICAgICAgICAqIE9yaWdpbjogQUNUIGh0dHBzOi8vYWN0LXJ1bGVzLmdpdGh1Yi5pby9ydWxlcy82Y2ZhODRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcImFyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW2FyaWEtaGlkZGVuPXRydWVdLCBkb206KlthcmlhLWhpZGRlbj10cnVlXSBkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KSA6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKVxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbm9kZU5hbWVdKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICB9ICAgICAgICBcbiAgICB9XVxuXG4gICAgZXhwb3J0IHsgYXJpYUhpZGRlblJ1bGUgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZURldGFpbHMsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgYTExeVJ1bGVzQW5jaG9yIH0gZnJvbSBcIi4vcnB0LWFuY2hvci1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzQ2FudmFzIH0gZnJvbSBcIi4vcnB0LWNhbnZhcy1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzRnJhbWUgfSBmcm9tIFwiLi9ycHQtZnJhbWUtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc01ldGEgfSBmcm9tIFwiLi9ycHQtbWV0YS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzQ29sb3IgfSBmcm9tIFwiLi9ycHQtY29sb3ItcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0hlYWRpbmcgfSBmcm9tIFwiLi9ycHQtaGVhZGluZy1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzQXBwbGV0IH0gZnJvbSBcIi4vcnB0LWFwcGxldC1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzQ29tYm9ib3ggfSBmcm9tIFwiLi9ycHQtY29tYm9ib3gtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0hpZXIgfSBmcm9tIFwiLi9ycHQtaGllcmFyY2h5LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNPYmplY3QgfSBmcm9tIFwiLi9ycHQtb2JqZWN0LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNBcHAgfSBmcm9tIFwiLi9ycHQtYXBwbGljYXRpb24tcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0VsZW0gfSBmcm9tIFwiLi9ycHQtZWxlbS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzSHRtbCB9IGZyb20gXCIuL3JwdC1odG1sLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNTY3JpcHQgfSBmcm9tIFwiLi9ycHQtc2NyaXB0LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNBcmVhIH0gZnJvbSBcIi4vcnB0LWFyZWEtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0VtYmVkIH0gZnJvbSBcIi4vcnB0LWVtYmVkLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNJbWcgfSBmcm9tIFwiLi9ycHQtaW1nLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNTZWxlY3QgfSBmcm9tIFwiLi9ycHQtc2VsZWN0LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNBcmlhIH0gZnJvbSBcIi4vcnB0LWFyaWEtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0ZpZWxkc2V0IH0gZnJvbSBcIi4vcnB0LWZpZWxkc2V0LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNJbnB1dCB9IGZyb20gXCIuL3JwdC1pbnB1dC1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzU3R5bGUgfSBmcm9tIFwiLi9ycHQtc3R5bGUtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0xhYmVsaW5nIH0gZnJvbSBcIi4vcnB0LWFyaWFMYWJlbGluZy1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzRmlnIH0gZnJvbSBcIi4vcnB0LWZpZ3VyZS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzTGFiZWwgfSBmcm9tIFwiLi9ycHQtbGFiZWwtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc1RhYmxlIH0gZnJvbSBcIi4vdGFibGUtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0JsaW5rIH0gZnJvbSBcIi4vcnB0LWJsaW5rLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNGb2N1cyB9IGZyb20gXCIuL3JwdC1mb2N1cy1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzTGlzdCB9IGZyb20gXCIuL3JwdC1saXN0LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNUZXh0IH0gZnJvbSBcIi4vcnB0LXRleHQtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0Jsb2NrcXVvdGUgfSBmcm9tIFwiLi9ycHQtYmxvY2txdW90ZS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzRm9udCB9IGZyb20gXCIuL3JwdC1mb250LXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNNYXJxdWVlIH0gZnJvbSBcIi4vcnB0LW1hcnF1ZWUtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc1RpdGxlIH0gZnJvbSBcIi4vcnB0LXRpdGxlLXJ1bGVzXCI7XG5pbXBvcnQgeyBhMTF5UnVsZXNCb2R5IH0gZnJvbSBcIi4vcnB0LWJvZHktcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc0Zvcm0gfSBmcm9tIFwiLi9ycHQtZm9ybS1ydWxlc1wiO1xuaW1wb3J0IHsgYTExeVJ1bGVzTWVkaWEgfSBmcm9tIFwiLi9ycHQtbWVkaWEtcnVsZXNcIjtcbmltcG9ydCB7IGExMXlSdWxlc1ZpZGVvIH0gZnJvbSBcIi4vcnB0LXZpZGVvLXJ1bGVzXCI7XG5pbXBvcnQgeyBhcmlhSGlkZGVuUnVsZSB9IGZyb20gXCIuL2FyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiO1xuXG5sZXQgYTExeVJ1bGVzOiBSdWxlW10gPSBbXS5jb25jYXQoXG4gICAgYTExeVJ1bGVzQW5jaG9yXG4gICAgLCBhMTF5UnVsZXNDYW52YXNcbiAgICAsIGExMXlSdWxlc0ZyYW1lXG4gICAgLCBhMTF5UnVsZXNNZXRhXG4gICAgLCBhMTF5UnVsZXNDb2xvclxuICAgICwgYTExeVJ1bGVzSGVhZGluZ1xuICAgICwgYTExeVJ1bGVzQXBwbGV0XG4gICAgLCBhMTF5UnVsZXNDb21ib2JveFxuICAgICwgYTExeVJ1bGVzSGllclxuICAgICwgYTExeVJ1bGVzT2JqZWN0XG4gICAgLCBhMTF5UnVsZXNBcHBcbiAgICAsIGExMXlSdWxlc0VsZW1cbiAgICAsIGExMXlSdWxlc0h0bWxcbiAgICAsIGExMXlSdWxlc1NjcmlwdFxuICAgICwgYTExeVJ1bGVzQXJlYVxuICAgICwgYTExeVJ1bGVzRW1iZWRcbiAgICAsIGExMXlSdWxlc0ltZ1xuICAgICwgYTExeVJ1bGVzU2VsZWN0XG4gICAgLCBhMTF5UnVsZXNBcmlhXG4gICAgLCBhMTF5UnVsZXNGaWVsZHNldFxuICAgICwgYTExeVJ1bGVzSW5wdXRcbiAgICAsIGExMXlSdWxlc1N0eWxlXG4gICAgLCBhMTF5UnVsZXNMYWJlbGluZ1xuICAgICwgYTExeVJ1bGVzRmlnXG4gICAgLCBhMTF5UnVsZXNMYWJlbFxuICAgICwgYTExeVJ1bGVzVGFibGVcbiAgICAsIGExMXlSdWxlc0JsaW5rXG4gICAgLCBhMTF5UnVsZXNGb2N1c1xuICAgICwgYTExeVJ1bGVzTGlzdFxuICAgICwgYTExeVJ1bGVzVGV4dFxuICAgICwgYTExeVJ1bGVzQmxvY2txdW90ZVxuICAgICwgYTExeVJ1bGVzRm9udFxuICAgICwgYTExeVJ1bGVzTWFycXVlZVxuICAgICwgYTExeVJ1bGVzVGl0bGVcbiAgICAsIGExMXlSdWxlc0JvZHlcbiAgICAsIGExMXlSdWxlc0Zvcm1cbiAgICAsIGExMXlSdWxlc01lZGlhXG4gICAgLCBhMTF5UnVsZXNWaWRlb1xuICAgICwgYXJpYUhpZGRlblJ1bGVcbik7XG5cbmV4cG9ydCB7IGExMXlSdWxlcyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEFSSUFNYXBwZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi5cIjtcbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MsIFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNBbmNob3I6IFJ1bGVbXSA9IFt7XG4gICAgaWQ6IFwiZGV0ZWN0b3JfdGFiYmFibGVcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSwgY29udGV4dEhpZXJhcmNoaWVzPzogUnVsZUNvbnRleHRIaWVyYXJjaHkpOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgaWYgKCFSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaGllckNvbnRleHQgPSBjb250ZXh0SGllcmFyY2hpZXMuYXJpYVtjb250ZXh0SGllcmFyY2hpZXMuYXJpYS5sZW5ndGgtMV07XG4gICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiLCBbXSwgW3tcbiAgICAgICAgICAgIG5hbWU6IGhpZXJDb250ZXh0LmF0dHJpYnV0ZXMubmFtZSxcbiAgICAgICAgICAgIHJvbGU6IGhpZXJDb250ZXh0LnJvbGUsXG4gICAgICAgICAgICB0YWJpbmRleDogcGFyc2VJbnQocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIikgfHwgXCIwXCIpXG4gICAgICAgIH1dKTtcbiAgICB9XG59LFxue1xuICAgIGlkOiBcIldDQUcyMF9BX0hhc1RleHRcIixcbiAgICBjb250ZXh0OiBcImFyaWE6bGlua1wiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBSdWxlIG9ubHkgcGFzc2VzIGlmIGFuIGVsZW1lbnQgaGFzIGlubmVyIGNvbnRlbnQsXG4gICAgICAgIC8vIGluIHRoZSBjYXNlIHRoYXQgdGhlcmUgaXMgb25seSBoaWRkZW4gY29udGVudCB1bmRlciB0aGUgdGhlIGVsZW1lbnQgaXQgaXMgYSB2aW9sYXRpb25cbiAgICAgICAgbGV0IHBhc3NlZCA9XG4gICAgICAgICAgICBBUklBTWFwcGVyLmNvbXB1dGVOYW1lKHJ1bGVDb250ZXh0KS50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICAgICAgfHwgUlBUVXRpbC5ub25UYWJhYmxlQ2hpbGRDaGVjayhydWxlQ29udGV4dCk7XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG4gICAgLCB7XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZXJlIGlzIGEgdGFyZ2V0LCBhbmQgdGV4dCBkb2VzIG5vdCBzcGVjaWZ5IGEgbmV3IHdpbmRvdy5cbiAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIODMsIFJQVCAxMTIsIFJQVCBHNDkxXG4gICAgICovXG4gICAgaWQ6IFwiV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dFwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOmFbdGFyZ2V0XSxkb206YXJlYVt0YXJnZXRdLGRvbTpiYXNlW3RhcmdldF1cIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIC8vIHNraXAgdGhlIHJ1bGUgaWYgaXQncyBBVCBoaWRkZW4gYW5kIG5vdCB0YWJiYWJsZVxuICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpICYmICFSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgcGFyYW1XaW5UZXh0OiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFtcIm5ldyB3aW5kb3dcIiwgXCJuZXcgdGFiXCJdLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRTdHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0YXJnZXRcIik7XG4gICAgICAgIGxldCBwYXNzZWQgPSB0U3RyID09IFwiX3BhcmVudFwiIHx8IHRTdHIgPT0gXCJfc2VsZlwiIHx8IHRTdHIgPT0gXCJfdG9wXCIgfHwgUlBUVXRpbC5nZXRGcmFtZUJ5TmFtZShydWxlQ29udGV4dCx0U3RyKSAhPSBudWxsO1xuICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgLy8gTmFtZSBpcyBub3QgcGFydCBvZiB0aGlzIGZyYW1lc2V0IOKAkyBtdXN0IGhhdmUgcG90ZW50aWFsIHRvIGNyZWF0ZSBuZXcgd2luZG93P1xuICAgICAgICAgICAgLy8gU2VlIGlmIGEgbmV3IHdpbmRvdyBpcyBtZW50aW9uZWRcbiAgICAgICAgICAgIGxldCB0ZXh0U3RyID0gUlBUVXRpbC5nZXRJbm5lclRleHQocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInRpdGxlXCIpKVxuICAgICAgICAgICAgICAgIHRleHRTdHIgKz0gXCIgXCIgKyBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcGFzc2VkICYmIGkgPCBwYXJhbXMucGFyYW1XaW5UZXh0LnZhbHVlLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgICAgIGlmICh0ZXh0U3RyLmluZGV4T2YocGFyYW1zLnBhcmFtV2luVGV4dC52YWx1ZVtpXSkgIT0gLTEpIHBhc3NlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgIH1cbn1dO1xuZXhwb3J0IHsgYTExeVJ1bGVzQW5jaG9yIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzQXBwbGV0IDogUnVsZVtdID0gW1xuXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGhlIGFwcGxldCBhbHQgdGV4dCBpcyBwb29yXG4gICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDM1XG4gICAgICovXG4gICAgaWQ6IFwiV0NBRzIwX0FwcGxldF9IYXNBbHRcIixcbiAgICBjb250ZXh0OiBcImRvbTphcHBsZXRcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KSA6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICBpZiAoIVJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiYWx0XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgYWx0ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWx0XCIpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJjb2RlXCIpICYmIGFsdCA9PSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJjb2RlXCIpLnRyaW0oKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIVJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfM1wiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzQXBwbGV0IH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzQXBwOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGFueSBjaGlsZCBvZiBhcHBsaWNhdGlvbiByb2xlIGlzIG5vdCBhbiBhcnRpY2xlIG9yIGEgZG9jdW1lbnRcbiAgICAgICAgICogT3JpZ2luOiAgV0FJLUFSSUEgMS4xXG4gICAgICAgICAqIFx0XHRcdGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FwcGxpY2F0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pIDogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJhcHBsaWNhdGlvblwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHJ1bGVDb250ZXh0LmNoaWxkTm9kZXM7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IHBhc3NlZCAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVWaXNpYmxlKGNoaWxkcmVuW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKGNoaWxkcmVuW2ldLCBcImRvY3VtZW50XCIpIHx8IFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKGNoaWxkcmVuW2ldLCBcImFydGljbGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGNoaWxkcmVuW2ldLm5vZGVWYWx1ZS50cmltKCkubGVuZ3RoID09PSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNBcHAgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNBcmVhOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZSBhcmVhIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBhbHQgdGV4dFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMjRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9BcmVhX0hhc0FsdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTphcmVhXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pIDogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiYWx0XCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0FyZWEgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzLCBSdWxlQ29udGV4dEhpZXJhcmNoeSB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCwgTm9kZVdhbGtlciB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuaW1wb3J0IHsgQVJJQURlZmluaXRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL2FyaWEvQVJJQURlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuLi8uLi8uLi8uLlwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuXG5sZXQgYTExeVJ1bGVzQXJpYTogUnVsZVtdID0gW3tcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSByb2xlIGlzIG5vdCBhIHZhbGlkIFdBSS1BUklBIHJvbGVcbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgNC4xLjIgTmFtZSwgUm9sZSwgVmFsdWVcbiAgICAgKiBcdFx0XHRDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgNC4xYlxuICAgICAqXHRcdFx0T3BlbiBBamF4IEFsbGlhbmNlIEFjY2Vzc2liaWxpdHkgV29ya2luZyBHcm91cCBydWxlc2V0XG4gICAgICovXG4gICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRSb2xlXCIsXG4gICAgY29udGV4dDogXCJkb206Kltyb2xlXVwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgbGV0IHJvbGVTdHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAocm9sZVN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVzaWduUGF0dGVybnMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnM7XG4gICAgICAgIGxldCByb2xlcyA9IHJvbGVTdHIuc3BsaXQoL1xccysvKTtcbiAgICAgICAgLy8gbm93IHdlIGhhdmUgYWxsIHJvbGUgYXR0cmlidXRlc1xuICAgICAgICBsZXQgaW52YWxpZFJvbGVzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qgcm9sZSBvZiByb2xlcykge1xuICAgICAgICAgICAgaWYgKCEocm9sZS50b0xvd2VyQ2FzZSgpIGluIGRlc2lnblBhdHRlcm5zKSkge1xuICAgICAgICAgICAgICAgIGludmFsaWRSb2xlcy5wdXNoKHJvbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW3JvbGVzW2ldXSk7XG4gICAgICAgIGlmIChpbnZhbGlkUm9sZXMubGVuZ3RoID09PSByb2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiLCBbaW52YWxpZFJvbGVzLmpvaW4oXCIsXCIpXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW52YWxpZFJvbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiRmFpbF8xXCIsIFtpbnZhbGlkUm9sZXMuam9pbihcIixcIildKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbn0sXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGFuIGludmFsaWQgV0FJLUFSSUEgcHJvcGVydHkgaXMgZm91bmQgYW55d2hlcmVcbiAgICAgKiBcdFx0XHRcdChvbiBhbiBlbGVtZW50IHdpdGggYSByb2xlIG9yIG9uIGFuIGVsZW1lbnQgd2l0aCBubyByb2xlKS5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgNC4xLjIgTmFtZSwgUm9sZSwgVmFsdWVcbiAgICAgKiBcdFx0XHRDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgNC4xYlxuICAgICAqXHRcdFx0T3BlbiBBamF4IEFsbGlhbmNlIEFjY2Vzc2liaWxpdHkgV29ya2luZyBHcm91cCBydWxlc2V0XG4gICAgICpcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5XCIsXG4gICAgY29udGV4dDogXCJkb206KlwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgbGV0IGNvbnRleHRBdHRyaWJ1dGVzID0gcnVsZUNvbnRleHQuYXR0cmlidXRlcztcbiAgICAgICAgLy8gVGhpcyBnZXRzIGFsbCBlbGVtZW50cyB3aXRoIGF0dHJpYnV0ZXMgc28gd2Ugc3RpbGwgaGF2ZSBzb21lXG4gICAgICAgIC8vIE91dCBvZiBTY29wZSBzaW5jZSBub3QgYWxsIGF0dHJpYnV0ZXMgYXJlIGFyaWEgXG5cbiAgICAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBsZXQgcHJvcGVydHlEYXRhVHlwZXMgPSBBUklBRGVmaW5pdGlvbnMucHJvcGVydHlEYXRhVHlwZXM7XG4gICAgICAgICAgICBsZXQgZmFpbGVkUHJvcGVydGllcyA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgdGVzdGVkUHJvcGVydGllcyA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gY29udGV4dEF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgYXR0ck5hbWUgPSBjb250ZXh0QXR0cmlidXRlc1tpXS5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzRGVmaW5lZEFyaWFBdHRyaWJ1dGUocnVsZUNvbnRleHQsIGF0dHJOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0ZWRQcm9wZXJ0aWVzKys7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdyB3ZSBqdXN0IGhhdmUgYXJpYSBhdHRyaWJ1dGVzIHdoaWNoIGNhblxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIG9yIGZhaWwgYmFzZWQgb24gd2hldGhlciB0aGVyZSBwcm9wZXJ0eSBpcyB2YWxpZFxuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YVR5cGVzID0gcHJvcGVydHlEYXRhVHlwZXNbYXR0ck5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGFUeXBlcykgeyAvLyBpZiBwcm9wZXJ0eSBpcyBub3QgaW4gdmFsaWQgcHJvcGVydHkgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGZhaWxlZFByb3BlcnRpZXMgY29tbWEgc2VwIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWlsZWRQcm9wZXJ0aWVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkUHJvcGVydGllcyA9IGF0dHJOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRQcm9wZXJ0aWVzID0gZmFpbGVkUHJvcGVydGllcyArIFwiLCBcIiArIGF0dHJOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRlc3RlZFByb3BlcnRpZXMgPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmYWlsZWRQcm9wZXJ0aWVzLmxlbmd0aCAhPSAwKSB7XG4gICAgICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQoZmFsc2UsIFtydWxlQ29udGV4dF0sICcnLCAnJywgW2ZhaWxlZFByb3BlcnRpZXMsIHJ1bGVDb250ZXh0LnRhZ05hbWVdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW2ZhaWxlZFByb3BlcnRpZXMsIHJ1bGVDb250ZXh0LnRhZ05hbWVdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy9yZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSkNIIC0gcGFzc2luZyBpcyBiYXNlZCBvbiBhbGwgYXR0cmlidXRlcyBub3QganVzdCBhcmlhIGF0dHJpYnV0ZXNcbiAgICAgICAgLy8gICAgICAgbGVhZGluZyB0byBPVkVSIENPVU5USU5HIHNvIG1vdmVkIHBhc3MgdXBcbiAgICAgICAgLy9yZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSByb2xlIGlzIGdpdmVuIGFuZCBhIHJlcXVpcmVkIHByb3BlcnR5IG9mIHRoZSByb2xlIGlzIG1pc3NpbmcuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDQuMS4yIE5hbWUsIFJvbGUsIFZhbHVlXG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDQuMWJcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkUHJvcGVydGllc1wiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV1cIixcbiAgICBkZXBlbmRlbmNpZXM6IFtcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiXSxcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCBhdHRyTmFtZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgcm9sZU5hbWVBcnIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IGRlc2lnblBhdHRlcm5zID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zO1xuICAgICAgICBsZXQgcm9sZXMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGxldCBpbXBsaWNpdFJvbGUgPSBBUklBTWFwcGVyLmVsZW1Ub0ltcGxpY2l0Um9sZShydWxlQ29udGV4dCk7XG4gICAgICAgIGxldCBoYXNBdHRyaWJ1dGUgPSBSUFRVdGlsLmhhc0F0dHJpYnV0ZTtcbiAgICAgICAgbGV0IHRlc3RlZFJvbGVzID0gMDtcblxuICAgICAgICBmb3IgKGxldCBqID0gMCwgcm9sZXNMZW5ndGggPSByb2xlcy5sZW5ndGg7IGogPCByb2xlc0xlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICBpZiAocm9sZXNbal0gPT09IGltcGxpY2l0Um9sZSkgY29udGludWU7XG4gICAgICAgICAgICBpZiAoZGVzaWduUGF0dGVybnNbcm9sZXNbal1dICYmIFJQVFV0aWwuZ2V0Um9sZVJlcXVpcmVkUHJvcGVydGllcyhyb2xlc1tqXSwgcnVsZUNvbnRleHQpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWlyZWRSb2xlUHJvcHMgPSBSUFRVdGlsLmdldFJvbGVSZXF1aXJlZFByb3BlcnRpZXMocm9sZXNbal0sIHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBsZXQgcm9sZU1pc3NpbmdSZXFQcm9wID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGVzdGVkUm9sZXMrKztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgcHJvcGVydGllc0xlbmd0aCA9IHJlcXVpcmVkUm9sZVByb3BzLmxlbmd0aDsgaSA8IHByb3BlcnRpZXNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShydWxlQ29udGV4dCwgcmVxdWlyZWRSb2xlUHJvcHNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhcmlhLWxhYmVsbGVkYnkgaXNuJ3QgcHJlc2VudCwgYW4gYXJpYS1sYWJlbCB3aWxsIG1lZXQgdGhlIHJlcXVpcmVtZW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkUm9sZVByb3BzW2ldID09IFwiYXJpYS1sYWJlbGxlZGJ5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCFoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsIFwiYXJpYS1sYWJlbFwiKSkgfHwgKHJvbGVzW2ldICE9IFwicmFkaW9ncm91cFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKHJlcXVpcmVkUm9sZVByb3BzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZU1pc3NpbmdSZXFQcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVkUm9sZVByb3BzW2ldID09IFwiYXJpYS12YWx1ZW5vd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCghaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtdmFsdWV0ZXh0XCIpKSB8fCAocm9sZXNbaV0gIT0gXCJwcm9ncmVzc2JhclwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKHJlcXVpcmVkUm9sZVByb3BzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZU1pc3NpbmdSZXFQcm9wID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVkUm9sZVByb3BzW2ldID09IFwiYXJpYS1jb250cm9sc1wiICYmIHJvbGVzW2pdID09IFwiY29tYm9ib3hcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgdGhpcyBjaGVjayBzaW5jZSBhcmlhLWNvbnRyb2xzIGluIHRoZSB0ZXh0Ym94IG9mIGEgY29tYm9ib3ggaXMgYWxyZWFkeSBoYW5kbGVkIGluIHJ1bGUgSEFBQ19Db21ib2JveF9NdXN0X2hhdmVfVGV4dF9JbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKHJlcXVpcmVkUm9sZVByb3BzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlTWlzc2luZ1JlcVByb3AgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyb2xlTWlzc2luZ1JlcVByb3AgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICByb2xlTmFtZUFyci5wdXNoKHJvbGVzW2pdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJldFRva2VuID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCBwYXNzZWQgPSBhdHRyTmFtZUFyci5sZW5ndGggPT0gMDsgLy8gb25seSBhcmlhIGF0dHJpYnV0ZXMgc28gTk8gT1VUIE9GIFNDT1BFXG4gICAgICAgIHJldFRva2VuLnB1c2gocm9sZU5hbWVBcnIuam9pbihcIiwgXCIpKTtcbiAgICAgICAgcmV0VG9rZW4ucHVzaChhdHRyTmFtZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sIGF0dHJOYW1lQXJyLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IHJldFRva2VuKTtcbiAgICAgICAgaWYgKHRlc3RlZFJvbGVzID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgcmV0VG9rZW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSByb2xlIGlzIGdpdmVuIGFuZCBhIHByb3BlcnR5IG9mIHRoZSByb2xlIGlzIGVtcHR5LlxuICAgICAqIE9yaWdpbjogIFdDQUcgMi4wIGd1aWRlbGluZSA0LjEuMiBOYW1lLCBSb2xlLCBWYWx1ZVxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCA0LjFiXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVcIixcbiAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdXCIsXG4gICAgZGVwZW5kZW5jaWVzOiBbXCJScHRfQXJpYV9WYWxpZFJvbGVcIl0sXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBsZXQgYXR0ck5hbWVBcnIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IGRlc2lnblBhdHRlcm5zID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zO1xuICAgICAgICBsZXQgaGFzQXR0cmlidXRlID0gUlBUVXRpbC5oYXNBdHRyaWJ1dGU7XG4gICAgICAgIGxldCB0ZXN0ZWRQcm9wZXJ0aWVzID0gMDtcblxuICAgICAgICBsZXQgcm9sZXMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm9sZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIGlmIChkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0gJiYgUlBUVXRpbC5nZXRSb2xlUmVxdWlyZWRQcm9wZXJ0aWVzKHJvbGVzW2pdLCBydWxlQ29udGV4dCkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxldCByZXF1aXJlZFJvbGVQcm9wcyA9IFJQVFV0aWwuZ2V0Um9sZVJlcXVpcmVkUHJvcGVydGllcyhyb2xlc1tqXSwgcnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW5ndGggPSByZXF1aXJlZFJvbGVQcm9wcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYXR0cmlidXRlID0gcmVxdWlyZWRSb2xlUHJvcHNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsIGF0dHJpYnV0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZFByb3BlcnRpZXMrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlVmFsdWUgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKHJlcXVpcmVkUm9sZVByb3BzW2ldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCA9PSAwKSBhdHRyTmFtZUFyci5wdXNoKHJlcXVpcmVkUm9sZVByb3BzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXF1aXJlZFJvbGVQcm9wc1tpXSA9PSBcImFyaWEtbGFiZWxsZWRieVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHJvbGVzW2ldID09IFwicmFkaW9ncm91cFwiKSAmJiAoaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtbGFiZWxcIikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVkUHJvcGVydGllcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlVmFsdWUgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVWYWx1ZS5sZW5ndGggPT0gMCkgYXR0ck5hbWVBcnIucHVzaChcImFyaWEtbGFiZWxcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZWRSb2xlUHJvcHNbaV0gPT0gXCJhcmlhLXZhbHVlbm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocm9sZXNbaV0gPT0gXCJwcm9ncmVzc2JhclwiKSAmJiAoaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtdmFsdWV0ZXh0XCIpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZFByb3BlcnRpZXMrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZVZhbHVlID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtdmFsdWV0ZXh0XCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZVZhbHVlLmxlbmd0aCA9PSAwKSBhdHRyTmFtZUFyci5wdXNoKFwiYXJpYS12YWx1ZXRleHRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGVzaWduUGF0dGVybnNbcm9sZXNbal1dKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhZ1Byb3BlcnR5ID0gUlBUVXRpbC5nZXRFbGVtZW50QXJpYVByb3BlcnR5KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBsZXQgcGVybWl0dGVkUm9sZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXJtaXR0ZWRSb2xlcy5wdXNoKHJvbGVzW2pdKTtcbiAgICAgICAgICAgICAgICBsZXQgYWxsb3dlZEF0dHJpYnV0ZXMgPSBSUFRVdGlsLmdldEFsbG93ZWRBcmlhQXR0cmlidXRlcyhydWxlQ29udGV4dCwgcGVybWl0dGVkUm9sZXMsIHRhZ1Byb3BlcnR5KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gYWxsb3dlZEF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZSA9IGFsbG93ZWRBdHRyaWJ1dGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlID09IFwiYXJpYS1jaGVja2VkXCIgfHwgYXR0cmlidXRlID09IFwiYXJpYS1zZWxlY3RlZFwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgPT0gXCJhcmlhLWV4cGFuZGVkXCIgfHwgYXR0cmlidXRlID09IFwiYXJpYS1vcmllbnRhdGlvblwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgPT0gXCJhcmlhLWxldmVsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUocnVsZUNvbnRleHQsIGF0dHJpYnV0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZWRQcm9wZXJ0aWVzKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGVWYWx1ZSA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVWYWx1ZS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKGF0dHJpYnV0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXRNc2cgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHBhc3NlZCA9IGF0dHJOYW1lQXJyLmxlbmd0aCA9PSAwO1xuICAgICAgICByZXRNc2cucHVzaChhdHRyTmFtZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sIGF0dHJOYW1lQXJyLCAnJywgcmV0TXNnKTtcbiAgICAgICAgaWYgKHRlc3RlZFByb3BlcnRpZXMgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIHJldE1zZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIFdBSS1BUklBIHByb3BlcnR5IG9mIHR5cGUgTk1UT0tFTiwgaW50LCBkZWNpbWFsIGFuZCBib29sZWFuIGhhcyBhbiBpbnZhbGlkIHZhbHVlLlxuICAgICAqIE9yaWdpbjogIFdDQUcgMi4wIGd1aWRlbGluZSA0LjEuMiBOYW1lLCBSb2xlLCBWYWx1ZVxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCA0LjFiXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5VmFsdWVcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBsZXQgdmFsdWVBcnIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IGF0dHJOYW1lQXJyID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCBkYXRhVHlwZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgcHJvcGVydHlEYXRhVHlwZXMgPSBBUklBRGVmaW5pdGlvbnMucHJvcGVydHlEYXRhVHlwZXM7XG4gICAgICAgIGxldCBjb250ZXh0QXR0cmlidXRlcyA9IHJ1bGVDb250ZXh0LmF0dHJpYnV0ZXM7XG4gICAgICAgIGxldCB0ZXN0ZWRQcm9wZXJ0eVZhbHVlcyA9IDA7XG5cbiAgICAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuZ3RoID0gY29udGV4dEF0dHJpYnV0ZXMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgYXR0ck5hbWUgPSBjb250ZXh0QXR0cmlidXRlc1tpXS5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzRGVmaW5lZEFyaWFBdHRyaWJ1dGUocnVsZUNvbnRleHQsIGF0dHJOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YVR5cGVzID0gcHJvcGVydHlEYXRhVHlwZXNbYXR0ck5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZVZhbHVlID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5vZGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRlc3RlZFByb3BlcnR5VmFsdWVzKys7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhVHlwZXMgJiYgZGF0YVR5cGVzLnZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFUeXBlcy52YWx1ZXMuaW5kZXhPZihub2RlVmFsdWUpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFUeXBlcy52YWx1ZXMuaW5kZXhPZigndW5kZWZpbmVkJykgIT0gLTEgJiYgbm9kZVZhbHVlLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdHJhbnNsYXRlICd1bmRlZmluZWQnIHRvIG1lYW4gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmlhLXJlbGV2YW50IGlzIHJlcHJlc2VudGVkIGFzIGEgc3BhY2UgZGVsaW1pdGVkIGxpc3Qgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGRpdGlvbnMsIHJlbW92YWxzLCB0ZXh0OyBvciBhIHNpbmdsZSBjYXRjaC1hbGwgdmFsdWUgYWxsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVR5cGVzLnR5cGUgPT09IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjbm10b2tlbnNcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF0dHJWYWx1ZXMgPSBjb250ZXh0QXR0cmlidXRlc1tpXS5ub2RlVmFsdWUudHJpbSgpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBhbGwgaXMgc3BlY2lmaWVkLCBpdCBjYW5ub3QgaGF2ZSBhbnkgb3RoZXIgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyVmFsdWVzLmxlbmd0aCA+IDEgJiYgYXR0clZhbHVlcy5pbmNsdWRlcyhcImFsbFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXJyLnB1c2goY29udGV4dEF0dHJpYnV0ZXNbaV0ubm9kZVZhbHVlLnNwbGl0KFwiIFwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ck5hbWVBcnIucHVzaChhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGVBcnIucHVzaChkYXRhVHlwZXMudmFsdWVzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzaCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYXR0clZhbHVlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgaW5kaXZpZHVhbCB2YWx1ZSBpcyBub3QgaW4gdGhlIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJWYWx1ZXNbal0gIT0gXCJcIiAmJiAhZGF0YVR5cGVzLnZhbHVlcy5pbmNsdWRlcyhhdHRyVmFsdWVzW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNoLmhhc093blByb3BlcnR5KGF0dHJOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hbYXR0ck5hbWVdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKGF0dHJOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXJyLnB1c2goYXR0clZhbHVlc1tqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZUFyci5wdXNoKGRhdGFUeXBlcy52YWx1ZXMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUFyci5wdXNoKGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5vZGVWYWx1ZS5zcGxpdChcIiBcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ck5hbWVBcnIucHVzaChhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZUFyci5wdXNoKGRhdGFUeXBlcy52YWx1ZXMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGVzICYmIGRhdGFUeXBlcy50eXBlICYmIGRhdGFUeXBlcy50eXBlID09PSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2ludFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaVZhbCA9IHBhcnNlSW50KG5vZGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oaVZhbCkgfHwgKFwiXCIraVZhbCAhPT0gbm9kZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQXJyLnB1c2gobm9kZVZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyTmFtZUFyci5wdXNoKGF0dHJOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhVHlwZXMgJiYgZGF0YVR5cGVzLnR5cGUgJiYgZGF0YVR5cGVzLnR5cGUgPT0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNkZWNpbWFsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmVmFsID0gcGFyc2VGbG9hdChub2RlVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGZWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVBcnIucHVzaChub2RlVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJOYW1lQXJyLnB1c2goYXR0ck5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFUeXBlcyAmJiBkYXRhVHlwZXMudHlwZSAmJiAoZGF0YVR5cGVzLnR5cGUgPT0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSNib29sZWFuXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG1wViA9IG5vZGVWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXBWICE9PSBcInRydWVcIiAmJiB0bXBWICE9PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUFyci5wdXNoKG5vZGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ck5hbWVBcnIucHVzaChhdHRyTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVR5cGVzICYmIGRhdGFUeXBlcy50eXBlICYmIChkYXRhVHlwZXMudHlwZSA9PSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZ1wiKSkge1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGVkUHJvcGVydHlWYWx1ZXMtLTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmV0TXNnID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCBwYXNzZWQgPSBhdHRyTmFtZUFyci5sZW5ndGggPT0gMDtcbiAgICAgICAgcmV0TXNnLnB1c2godmFsdWVBcnIuam9pbihcIiwgXCIpKTtcbiAgICAgICAgcmV0TXNnLnB1c2goYXR0ck5hbWVBcnIuam9pbihcIiwgXCIpKTtcbiAgICAgICAgcmV0TXNnLnB1c2gocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIC8vIHJldE1zZy5wdXNoIChkYXRhVHlwZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sIGF0dHJOYW1lQXJyLCAnJywgcmV0TXNnKTtcbiAgICAgICAgaWYgKHRlc3RlZFByb3BlcnR5VmFsdWVzID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCByZXRNc2cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW4gV0FJLUFSSUEgcHJvcGVydHkgaWQgcmVmZXJlbmNlIGlzIGludmFsaWQuICBGb3IgZXhhbXBsZTpcbiAgICAgKiBcdFx0XHRcdEZvciBhIGdpdmVuIGlkLCB0cmlnZ2VycyBpZiBhbiBlbGVtZW50IGRvZXNuJ3QgZXhpc3RzIHRoYXQgY29udGFpbnMgdGhlIGlkLlxuICAgICAqIFx0XHRcdFx0VHJpZ2dlcnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGlkcyB3aGVuIG9ubHkgb25lIGlzIHZhbGlkLlxuICAgICAqIFx0XHRcdFx0VHJpZ2dlcnMgaWYgdGhlcmUgaXMgYW4gZW1wdHkgaWQgdmFsdWUuXG4gICAgICogICAgICAgICAgICAgIFRyaWdnZXJzIGlmIHRoZXJlIGlzIG9ubHkgYSBzcGFjZSBpbiB0aGUgaWQgdmFsdWUuXG4gICAgICogICAgICAgICAgICAgIFRyaWdnZXJzIGlmIHRoZSBJRCByZWZlcmVuY2UgaXMgYSBoaWRkZW4gZWxlbWVudCBhbmQgdGhlIGFyaWEtKiBhdHRyaWJ1dGVcbiAgICAgKiAgICAgICAgICAgICAgZG9lcyBub3Qgc3VwcG9ydCBoaWRkZW4gZWxlbWVudCByZWZlcmVuY2UuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDQuMS4yIE5hbWUsIFJvbGUsIFZhbHVlXG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDQuMWJcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkSWRSZWZcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBsZXQgcGFzcyA9IHRydWU7XG4gICAgICAgIGxldCBhdHRyTmFtZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgbm9uRXhpc3RhbnRJRHMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IG93bmVyRG9jdW1lbnQgPSBGcmFnbWVudFV0aWwuZ2V0T3duZXJGcmFnbWVudChydWxlQ29udGV4dCk7XG4gICAgICAgIGxldCBjb250ZXh0QXR0cmlidXRlcyA9IHJ1bGVDb250ZXh0LmF0dHJpYnV0ZXM7XG4gICAgICAgIGxldCBpZFRva2VucyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgdGVzdGVkUmVmZXJlbmNlcyA9IDA7XG5cbiAgICAgICAgaWYgKGNvbnRleHRBdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgYXR0ckxlbmd0aCA9IGNvbnRleHRBdHRyaWJ1dGVzLmxlbmd0aDsgaSA8IGF0dHJMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHBhc3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBhdHRyTmFtZSA9IGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZShydWxlQ29udGV4dCwgYXR0ck5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhVHlwZXMgPSBBUklBRGVmaW5pdGlvbnMucHJvcGVydHlEYXRhVHlwZXNbYXR0ck5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVR5cGVzICYmIGRhdGFUeXBlcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VwcG9ydHNPbmVJRFJlZiA9IChkYXRhVHlwZXMudHlwZSA9PSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2lkcmVmXCIpID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiB0aGUgZGF0YSB0eXBlIHN1cHBvcnRzIG9uZSBvciBtb3JlIGlkIHJlZnMgZG8gZXJyb3IgY2hlY2tpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0c09uZUlEUmVmIHx8IChkYXRhVHlwZXMudHlwZSA9PSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI2lkcmVmc1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RlZFJlZmVyZW5jZXMrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZVZhbHVlTGVuZ3RoID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGNvbnRleHRBdHRyaWJ1dGVzW2ldLm5vZGVWYWx1ZSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZEFycmF5ID0gY29udGV4dEF0dHJpYnV0ZXNbaV0ubm9kZVZhbHVlLnNwbGl0KFwiIFwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBhbiBlbXB0eSBJRCBSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZVZhbHVlTGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkVG9rZW5zLnB1c2goXCJcXFwiXCIgKyBjb250ZXh0QXR0cmlidXRlc1tpXS5ub2RlVmFsdWUgKyBcIlxcXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0b28gbWFueSBJRFJlZnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdXBwb3J0c09uZUlEUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgaGFzIHRvbyBtYW55IElEUmVmcyBpdCBpcyBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZVZhbHVlTGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZEFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBjYXB0dXJlIGFsbCB0aGUgSURSZWZzIGZvciBpZFRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwLCBsZW5ndGggPSBpZEFycmF5Lmxlbmd0aDsgeiA8IGxlbmd0aDsgKyt6KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZEFycmF5W3pdICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkVG9rZW5zLnB1c2goaWRBcnJheVt6XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIGlkIHJlZnMgYXJlIGludmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFzcyAmJiBub2RlVmFsdWVMZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMCwgbGVuZ3RoID0gaWRBcnJheS5sZW5ndGg7IGogPCBsZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkQXJyYXlbal0ubGVuZ3RoID4gMCkgeyAvLyBpdCBpcyBhbiBlbXB0eSBzdHJpbmcgaWYgc3BhY2VzIGFyZSBvbmUgYWZ0ZXIgdGhlIG90aGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBlbGVtZW50IGJ5IElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRCeUlkID0gb3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZEFycmF5W2pdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhc3MgaWYgdGhlIGVsZW1lbnQgZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyA9IGVsZW1lbnRCeUlkICE9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBleGlzdHMgYW5kIHRoaXMgaXMgYW4gYXJpYSBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IHN1cHBvcnQgaGlkZGVuIElEIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gcGVyZm9ybSBhIGlzTm9kZVZpc2libGUgY2hlY2ssIGluIHRoZSBjYXNlIHRoZSBub2RlIGlzIG5vdCB2aXNpYmxlIHRoZW4gd2UgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsc2UgYW5kIHRydWUgb3RoZXJ3aXNlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXNzICYmICFkYXRhVHlwZXMuaGlkZGVuSURSZWZTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyA9IFJQVFV0aWwuaXNOb2RlVmlzaWJsZShlbGVtZW50QnlJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZEFycmF5W2pdICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkVG9rZW5zLnB1c2goaWRBcnJheVtqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBvbmUgb2YgdGhlIGlkIHJlZmVyZW5jZXMgbmVlZCB0byBiZSB2YWxpZCB0byBtYXJrIHRoZSBydWxlIGFzIHBhc3NlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZWZvcmUgaWYgd2UgZmluZCBhIHNpbmdsZSB2aXNpYmxlIGVsZW1lbnQgdGhlbiBzdG9wIGNoZWNraW5nIGFuZCBtYXJrIGFzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzc2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzKSBhdHRyTmFtZUFyci5wdXNoKGF0dHJOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhc3NlZCA9IGF0dHJOYW1lQXJyLmxlbmd0aCA9PSAwO1xuICAgICAgICBsZXQgcmV0VG9rZW4xID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCByZXRUb2tlbjIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHJldFRva2VuMyA9IG5ldyBBcnJheSgpO1xuICAgICAgICBpZiAoIXBhc3NlZCkge1xuXG4gICAgICAgICAgICByZXRUb2tlbjIucHVzaChhdHRyTmFtZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICAgICAgcmV0VG9rZW4zLnB1c2gocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICBpZiAoaWRUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldFRva2VuMS5wdXNoKGlkVG9rZW5zLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sIGF0dHJOYW1lQXJyLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IFtyZXRUb2tlbjEsIHJldFRva2VuMiwgcmV0VG9rZW4zXSk7XG4gICAgICAgIGlmICh0ZXN0ZWRSZWZlcmVuY2VzID09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbcmV0VG9rZW4xLnRvU3RyaW5nKCksIHJldFRva2VuMi50b1N0cmluZygpLCByZXRUb2tlbjMudG9TdHJpbmcoKV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxufSxcblxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIHJlcXVpcmVkIGNoaWxkIHJvbGUgaXMgbm90IGZvdW5kLlxuICAgICAqIE9yaWdpbjogIFdDQUcgMi4wIGd1aWRlbGluZSA0LjEuMiBOYW1lLCBSb2xlLCBWYWx1ZSwgZzEwODBcbiAgICAgKiBcdFx0XHRDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgNC4xYlxuICAgICAqXHRcdFx0T3BlbiBBamF4IEFsbGlhbmNlIEFjY2Vzc2liaWxpdHkgV29ya2luZyBHcm91cCBydWxlc2V0XG4gICAgICovXG4gICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbl9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV1cIixcdFx0Ly8gYWNjb3JkaW5nIHRvIE5hdGFsaWUgYW5kIENoYXJ1LCB0aGlzIHJ1bGUgb25seSBjaGVjayBmb3IgZXhwbGljaXQgcm9sZSBzbyB3ZSBjYW4gdXNlIHJvbGUgaW5zdGVhZCBvZiBjaGVja2luZyBldmVyeSBlbGVtZW50XG4gICAgZGVwZW5kZW5jaWVzOiBbXCJScHRfQXJpYV9WYWxpZFJvbGVcIl0sXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IGRlc2lnblBhdHRlcm5zID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zO1xuICAgICAgICBsZXQgcm9sZXMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICBsZXQgcm9sZU5hbWVBcnIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHJlcXVpcmVkQ2hpbGRyZW4gPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGVsZW1lbnQgaXMgaGlkZGVuIGJ5IGRpc2FibGVkIGh0bWw1IGF0dHJpYnV0ZSBvciBhcmlhLWRpc2FibGVkOlxuICAgICAgICAvLyAgMS4gSW4gdGhlIGNhc2UgdGhhdCB0aGlzIGVsZW1lbnQgaGFzIGEgZGlzYWJsZWQgYXR0cmlidXRlIGFuZCB0aGUgZWxlbWVudCBzdXBwb3J0cyBpdCwgd2UgbWFyayB0aGlzIHJ1bGUgYXMgcGFzc2VkLlxuICAgICAgICAvLyAgMi4gSW4gdGhlIGNhc2UgdGhhdCB0aGlzIGVsZW1lbnQgaGFzIGEgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGUgdGhlbiwgd2UgbWFyayB0aGlzIHJ1bGUgYXMgcGFzc2VkLlxuICAgICAgICAvLyBGb3IgYm90aCBvZiB0aGUgY2FzZXMgYWJvdmUgd2UgZG8gbm90IG5lZWQgdG8gcGVyZm9ybSBhbnkgZnVydGhlciBjaGVja3MsIGFzIHRoZSBlbGVtZW50IGlzIGRpc2FibGVkIGluIHNvbWUgZm9ybSBvciBhbm90aGVyLlxuICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVEaXNhYmxlZChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGogPSAwLCBsZW5ndGggPSByb2xlcy5sZW5ndGg7IGogPCBsZW5ndGg7ICsraikge1xuXG4gICAgICAgICAgICBpZiAocm9sZXNbal0gPT09IFwiY29tYm9ib3hcIikge1xuICAgICAgICAgICAgICAgIC8vICBGb3IgY29tYm9ib3gsIHdlIGhhdmUgZzExOTMgLi4uIGcxMTk5IHRvIGNoZWNrIHRoZSB2YWx1ZXMgZXRjLlxuICAgICAgICAgICAgICAgIC8vICBXZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgMTE1MiBhZ2Fpbi4gU28sIHdlIGJ5cGFzcyBpdCBoZXJlLlxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0gJiYgZGVzaWduUGF0dGVybnNbcm9sZXNbal1dLnJlcUNoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZENoaWxkcmVuID0gZGVzaWduUGF0dGVybnNbcm9sZXNbal1dLnJlcUNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIGxldCByb2xlTWlzc2luZ1JlcUNoaWxkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIHJlcXVpcmVkQ2hpbGRyZW5MZW5ndGggPSByZXF1aXJlZENoaWxkcmVuLmxlbmd0aDsgaSA8IHJlcXVpcmVkQ2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmdldERlc2NlbmRhbnRXaXRoUm9sZUhpZGRlbihydWxlQ29udGV4dCwgcmVxdWlyZWRDaGlsZHJlbltpXSwgdHJ1ZSwgdHJ1ZSkgfHwgUlBUVXRpbC5nZXRBcmlhT3duc1dpdGhSb2xlSGlkZGVuKHJ1bGVDb250ZXh0LCByZXF1aXJlZENoaWxkcmVuW2ldLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBhbiBodG1sIGVxdWl2YWxlbnQgY2hpbGQgbWVldHMgdGhlIHJlcXVpcmVtZW50IChlLmcuLCByYWRpb2dyb3VwIGNvbnRhaW5zIGh0bWwgcmFkaW8gYnV0dG9ucylcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sRXF1aXYgPSBkZXNpZ25QYXR0ZXJuc1tyZXF1aXJlZENoaWxkcmVuW2ldXS5odG1sRXF1aXY7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaHRtbEVxdWl2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMS4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBzbyBvbiBhbmQgc28gZm9ydGguXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4obncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9DaGVjayBpZiB0aGUgZWxlbWVudCBoYXMgZXhwbGljaXQgcm9sZSBzcGVjaWZpZWQuIElmIHNvLCBob25vciB0aGUgcm9sZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVJQVFV0aWwuaGFzQW55Um9sZShudy5ub2RlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaXNIdG1sRXF1aXYobncubm9kZSwgaHRtbEVxdWl2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFzc2VkKSBicmVhazsgLy8gYnJlYWsgaW5jcmVtZW50aW5nIG92ZXIgcmVxdWlyZWQgY2hpbGRyZW4uIEF0IGxlYXN0IG9uZSByZXF1aXJlZCBjaGlsZCB3YXMgZm91bmQuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBicmVhazsgLy8gYnJlYWsgaW5jcmVtZW50aW5nIG92ZXIgcmVxdWlyZWQgY2hpbGRyZW4uIEF0IGxlYXN0IG9uZSByZXF1aXJlZCBjaGlsZCB3YXMgZm91bmQuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHBhc3NlZCA9IHRydWU7IC8vIE5vIHJlcXVpcmVkIGNoaWxkcmVuIGZvciB0aGlzIHJvbGVcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcm9sZU5hbWVBcnIucHVzaChyb2xlc1tqXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJldFRva2VuID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHJldFRva2VuLnB1c2gocm9sZU5hbWVBcnIuam9pbihcIiwgXCIpKTtcbiAgICAgICAgcmV0VG9rZW4ucHVzaChyZXF1aXJlZENoaWxkcmVuLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIHJldHVybiBwYXNzZWQgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKSA6IFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiLCByZXRUb2tlbik7XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlcmUgaXMgYSB2YWxpZCByb2xlIGFuZCB0aGUgcm9sZSBpcyByZXF1aXJlZCB0byBoYXZlIGEgY29udGFpbmVyIGJ1dCB0aGUgY29udGFpbmVyIGlzIG1pc3NpbmcuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDQuMS4yIE5hbWUsIFJvbGUsIFZhbHVlXG4gICAgICogXHRcdFx0Q0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDQuMWJcbiAgICAgKlx0XHRcdE9wZW4gQWpheCBBbGxpYW5jZSBBY2Nlc3NpYmlsaXR5IFdvcmtpbmcgR3JvdXAgcnVsZXNldFxuICAgICAqXG4gICAgICpUT0RPOiBEb2VzIHRoaXMgcnVsZSBuZWVkIHRvIGNoZWNrIGZvciBodG1sIGVxdWl2YWxlbnRzIGxpa2UgdGhlIFJwdF9BcmlhX1JlcXVpcmVkQ2hpbGRyZW4gcnVsZSBkb2VzP1xuICAgICAqIEZvciBub3csIGRvbid0IGNoZWNrIGh0bWwgZXF1aXZhbGVudHMgdW50aWwgdGhlcmUgYXJlIHVzZSBjYXNlcyBmb3VuZCB0aGF0IHdpbGwgYmVuZWZpdCBmcm9tIHRoaXMgY2hlY2suXG4gICAgICpcbiAgICAgKiBUaGUgWHBhdGggXCJjb250YWluc1wiIGZ1bmN0aW9uIGlzIHVzZWQgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSByb2xlcyBzcGVjaWZpZWQuIEFsc28sIGEgc2VhcmNoIGZvciBtZW51IHdoZXJlIFxuICAgICAqIHJvbGU9XCJuYXZpZ2F0aW9uIG1lbnViYXJcIiB3aWxsIHJldHVybiBhIG5vZGUuICBTbyBhbGwgcGFyZW50IHJvbGVzIG11c3QgYmUgdG9rZW5pemVkIGFuZCBzZWFyY2hlZC5cbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZFBhcmVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV1cIixcbiAgICBkZXBlbmRlbmNpZXM6IFtcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiXSxcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBoaWVyYXJjaGllcz86IFJ1bGVDb250ZXh0SGllcmFyY2h5KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICBsZXQgZGVzaWduUGF0dGVybnMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnM7XG4gICAgICAgIGxldCByb2xlTmFtZUFyciA9IG5ldyBBcnJheSgpO1xuICAgICAgICBsZXQgY29udGFpbmVyUm9sZXMgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHRlc3RlZENvbnRhaW5lciA9IDA7XG5cbiAgICAgICAgbGV0IHJvbGVzID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pO1xuICAgICAgICBsZXQgYW5jZXN0b3JSb2xlcyA9IGhpZXJhcmNoaWVzW1wiYXJpYVwiXS5tYXAoaW5mbyA9PiBpbmZvLnJvbGUpO1xuICAgICAgICBsZXQgcGFyZW50Um9sZSA9IGFuY2VzdG9yUm9sZXNbYW5jZXN0b3JSb2xlcy5sZW5ndGgtMl07XG4gICAgICAgIGxldCBjb3VudCA9IDI7XG4gICAgICAgIHdoaWxlIChwYXJlbnRSb2xlID09PSAnbm9uZScpIHtcbiAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICBwYXJlbnRSb2xlID0gYW5jZXN0b3JSb2xlc1thbmNlc3RvclJvbGVzLmxlbmd0aC1jb3VudF07XG5cbiAgICAgICAgfSAgIFxuICAgICAgICBmb3IgKGxldCBqID0gMCwgbGVuZ3RoID0gcm9sZXMubGVuZ3RoOyBqIDwgbGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIGlmIChkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0gJiYgZGVzaWduUGF0dGVybnNbcm9sZXNbal1dLmNvbnRhaW5lciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVzdGVkQ29udGFpbmVyKys7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUm9sZXMgPSBkZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0uY29udGFpbmVyO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBjb250YWluZXJzTGVuZ3RoID0gY29udGFpbmVyUm9sZXMubGVuZ3RoOyAhcGFzc2VkICYmIGkgPCBjb250YWluZXJzTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gcGFyZW50Um9sZSA9PT0gY29udGFpbmVyUm9sZXNbaV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGFzc2VkID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lQXJyLnB1c2gocm9sZXNbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmV0VG9rZW4xID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHJldFRva2VuMS5wdXNoKHJvbGVOYW1lQXJyLmpvaW4oXCIsIFwiKSk7XG4gICAgICAgIGxldCByZXRUb2tlbjIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4yLnB1c2goY29udGFpbmVyUm9sZXMuam9pbihcIiwgXCIpKTtcbiAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIHBhc3NlZCA9PSB0cnVlID8gW10gOiBbcmV0VG9rZW4xLCByZXRUb2tlbjJdKTtcbiAgICAgICAgaWYgKHRlc3RlZENvbnRhaW5lciA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW3JldFRva2VuMS50b1N0cmluZygpLCByZXRUb2tlbjIudG9TdHJpbmcoKV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgY29udGVudCBpcyBub3QgZW5jbG9zZWQgaW4gYSBsYW5kbWFyayByb2xlXG4gICAgICogT3JpZ2luOiBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAqL1xuICAgIGlkOiBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBoaWVyYXJjaGllcz86IFJ1bGVDb250ZXh0SGllcmFyY2h5KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGxldCBwYXJhbXMgPSBSUFRVdGlsLmdldENhY2hlKGNvbnRleHQuZG9tLm5vZGUub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIiwgbnVsbCk7XG4gICAgICAgIGlmICghcGFyYW1zKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgbGFuZG1hcmtzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXCJiYW5uZXJcIiwgXCJjb21wbGVtZW50YXJ5XCIsIFwiY29udGVudGluZm9cIiwgXCJmb3JtXCIsIFwibWFpblwiLCBcIm5hdmlnYXRpb25cIiwgXCJyZWdpb25cIiwgXCJzZWFyY2hcIl0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcG9zc2libGVPcnBoYW5lZFdpZGdldHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcImJ1dHRvblwiLCBcImNvbWJvYm94XCIsIFwiY2hlY2tib3hcIiwgXCJncmlkXCIsIFwiaGVhZGluZ1wiLCBcImxpbmtcIiwgXCJsaXN0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxpc3Rib3hcIiwgXCJtZW51XCIsIFwibWVudWJhclwiLCBcInByb2dyZXNzYmFyXCIsIFwicmFkaW9cIiwgXCJ0YWJsaXN0XCIsIFwidGV4dGJveFwiLCBcInRvb2xiYXJcIiwgXCJ0cmVlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyZWVncmlkXCJcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwb3NzaWJsZU9ycGhhbmVkRWxlbWVudHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcInBcIiwgXCJ0YWJsZVwiLCBcImlucHV0XCIsIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIiwgXCJidXR0b25cIiwgXCJhXCIsIFwib2xcIiwgXCJ1bFwiLCBcImRsXCIsIFwiaDFcIiwgXCJoMlwiLCBcImgzXCIsIFwiaDRcIiwgXCJoNVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoNlwiLCBcImVtYmVkXCIsIFwib2JqZWN0XCIsIFwiYXJlYVwiXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbm9MYW5kbWFya2VkUm9sZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2Ugcm9sZXMgZG9uJ3QgcmVxdWlyZSBsYW5kbWFya3NcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcImFsZXJ0XCIsIFwiYWxlcnRkaWFsb2dcIiwgXCJkaWFsb2dcIiwgXCJ0b29sdGlwXCJdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1hcExhbmRtYXJrczoge30sXG4gICAgICAgICAgICAgICAgbWFwUG9zc2libGVPcnBoYW5lZFdpZGdldHM6IHt9LFxuICAgICAgICAgICAgICAgIG1hcFBvc3NpYmxlT3JwaGFuZWRFbGVtZW50czoge30sXG4gICAgICAgICAgICAgICAgbWFwTm9MYW5kbWFya2VkUm9sZXM6IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgYXJyYXlzIHRvIG1hcHNcbiAgICAgICAgICAgIHBhcmFtcy5tYXBMYW5kbWFya3MgPSB7fTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLmxhbmRtYXJrcy52YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXBMYW5kbWFya3NbcGFyYW1zLmxhbmRtYXJrcy52YWx1ZVtpXV0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJhbXMubWFwUG9zc2libGVPcnBoYW5lZFdpZGdldHMgPSB7fVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMucG9zc2libGVPcnBoYW5lZFdpZGdldHMudmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMubWFwUG9zc2libGVPcnBoYW5lZFdpZGdldHNbcGFyYW1zLnBvc3NpYmxlT3JwaGFuZWRXaWRnZXRzLnZhbHVlW2ldXSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtcy5tYXBQb3NzaWJsZU9ycGhhbmVkRWxlbWVudHMgPSB7fVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMucG9zc2libGVPcnBoYW5lZEVsZW1lbnRzLnZhbHVlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLm1hcFBvc3NpYmxlT3JwaGFuZWRFbGVtZW50c1twYXJhbXMucG9zc2libGVPcnBoYW5lZEVsZW1lbnRzLnZhbHVlW2ldXSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcmFtcy5tYXBOb0xhbmRtYXJrZWRSb2xlcyA9IHt9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcmFtcy5ub0xhbmRtYXJrZWRSb2xlcy52YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5tYXBOb0xhbmRtYXJrZWRSb2xlc1twYXJhbXMubm9MYW5kbWFya2VkUm9sZXMudmFsdWVbaV1dID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShjb250ZXh0LmRvbS5ub2RlLm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsIHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKCFSUFRVdGlsLmlzTm9kZVZpc2libGUocnVsZUNvbnRleHQpIHx8ICAvLyBhdm9pZCBkaWFnbm9zaW5nIGcxMTU3IGZvciBub24tdmlzaWJsZSBub2Rlc1xuICAgICAgICAgICAgKFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cy5pbmRleE9mKG5vZGVOYW1lKSA+IC0xKSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGVsZW1zV2l0aG91dENvbnRlbnQgPSBbXCJhcmVhXCIsIFwiaW5wdXRcIiwgXCJlbWJlZFwiLCBcImJ1dHRvblwiLCBcInRleHRhcmVhXCIsIFwic2VsZWN0XCJdO1xuICAgICAgICBpZiAoIVJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHJ1bGVDb250ZXh0KSAmJiAvL29ubHkgdHJpZ2dlciB0aGUgcnVsZSBvbiBlbGVtZW50cyB0aGF0IGhhdmUgY29udGVudFxuICAgICAgICAgICAgZWxlbXNXaXRob3V0Q29udGVudC5pbmRleE9mKG5vZGVOYW1lKSA9PT0gLTEpIHsgLy8gYSBmZXcgZWxlbXMgd2lob3V0IGNvbnRlbnQgc2hvdWxkIG5vdCBiZSBza2lwcGVkXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvcnQgY2lyY3VpdCBmb3IgbGF5b3V0IHRhYmxlc1xuICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJ0YWJsZVwiICYmIFJQVFV0aWwuaXNMYXlvdXRUYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgaXQgaXMgYSBwb3NzaWJsZSBvcnBoYW5cbiAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgIGxldCBpc1Bvc3NpYmxlT3JwaGFuZWRXaWRnZXQgPSBSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIHBhcmFtcy5tYXBQb3NzaWJsZU9ycGhhbmVkV2lkZ2V0cywgdHJ1ZSk7XG4gICAgICAgIC8vZXhjbHVkZSA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cInh5ei5jc3NcIj4gaW4gdGhlIDxoZWFkPiBhbmQgPGJvZHk+KCM2MDgpXG4gICAgICAgIC8vaGF2aW5nIGxpbmsgaW4gdGhlIGhlYWQgY291bGQgY2F1c2UgbG90IG9mIHZpb2xhaW9ucyAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgIGlmIChub2RlTmFtZSA9PT0gJ2xpbmsnKSB7XG4gICAgICAgICAgICBpc1Bvc3NpYmxlT3JwaGFuZWRXaWRnZXQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc1Bvc3NpYmxlT3JwaGFuZWRFbGVtZW50ID0gbm9kZU5hbWUgaW4gcGFyYW1zLm1hcFBvc3NpYmxlT3JwaGFuZWRFbGVtZW50cztcbiAgICAgICAgaWYgKGlzUG9zc2libGVPcnBoYW5lZFdpZGdldCB8fCBpc1Bvc3NpYmxlT3JwaGFuZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAvLyBTZWUgaWYgYW5jZXN0b3IgaGFzIGxhbmRtYXJrIHJvbGVzIG9yIGltcGxpY2l0IGxhbmQgbWFyayByb2xlc1xuICAgICAgICAgICAgbGV0IHBhcmVudFJvbGVzID0gaGllcmFyY2hpZXNbXCJhcmlhXCJdLm1hcChpbmZvID0+IGluZm8ucm9sZSk7XG4gICAgICAgICAgICBwYXNzZWQgPSBwYXJlbnRSb2xlcy5maWx0ZXIocm9sZSA9PiByb2xlIGluIHBhcmFtcy5tYXBMYW5kbWFya3MpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgZmFpbCBlbGVtZW50cyB3aGVuIGEgcGFyZW50IG9yIHNpYmxpbmcgaGFzIGZhaWxlZCAtIGNhdXNlcyB0b28gbWFueSBtZXNzYWdlcy5cbiAgICAgICAgICAgICAgICBsZXQgd2Fsa0VsZW1lbnQgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIHdhbGtFbGVtZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRDYWNoZSh3YWxrRWxlbWVudCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB3YWxrRWxlbWVudCA9IERPTVV0aWwucGFyZW50RWxlbWVudCh3YWxrRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhbGtFbGVtZW50ID0gcnVsZUNvbnRleHQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIHdhbGtFbGVtZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRDYWNoZSh3YWxrRWxlbWVudCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB3YWxrRWxlbWVudCA9IHdhbGtFbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fsa0VsZW1lbnQgPSBydWxlQ29udGV4dC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIHdhbGtFbGVtZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRDYWNoZSh3YWxrRWxlbWVudCwgXCJScHRfQXJpYV9PcnBoYW5lZENvbnRlbnRcIiwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB3YWxrRWxlbWVudCA9IHdhbGtFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50XCIsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHRyaWdnZXIgcnVsZSBpZiBlbGVtZW50IGlzIGEgc3RhbmQtYWxvbmUgd2lkZ2V0XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05vVHJpZ2dlclwiLCBmYWxzZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgcGFyYW1zLm1hcE5vTGFuZG1hcmtlZFJvbGVzLCB0cnVlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBwYXJhbXMubWFwTm9MYW5kbWFya2VkUm9sZXMsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05vVHJpZ2dlclwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgW10pO1xuICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxufSxcbi8vLS0tLS0tLS1cbi8vIEtleWJvYXJkIEFjY2Vzc2libGVcbi8vIC0tLS0tLS0tXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGFuIGVsZW1lbnQgY29udGFpbnMgYW4gYXJpYS1hY3RpdmVkZXNjZW5kYW50IGFuZCBkb2VzIG5vdCBjb250YWluIGEgdGFiaW5kZXggYXR0cmlidWUgd2l0aCBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLlxuICAgICAqICAgICAgICAgICAgICBEbyBub3QgdHJpZ2dlciBpZiB0aGUgZWxlbWVudCBoYXMgZGlzYWJsZWQgKGlmIHN1cHBvcnRlZCBvbiBlbGVtZW50KSwgb3IgdGhlIGVsZW1lbnQgaGFzIGFyaWEtZGlzYWJsZWQgc2V0IHRvIHRydWUuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDIuMS4xIEtleWJvYXJkLCBnMTA4NFxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjFhXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9JbnZhbGlkVGFiaW5kZXhGb3JBY3RpdmVkZXNjZW5kYW50XCIsXG4gICAgY29udGV4dDogXCJkb206KlthcmlhLWFjdGl2ZWRlc2NlbmRhbnRdXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgLy8gUnVsZSBub3Qgc3VwcG9ydGVkIG9uIG1vYmlsZVxuICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiY2xhc3NcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikuc3Vic3RyaW5nKDAsIDMpID09IFwibWJsXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBlbGVtZW50IGlzIGhpZGRlbiBieSBkaXNhYmxlZCBodG1sNSBhdHRyaWJ1dGUgb3IgYXJpYS1kaXNhYmxlZDpcbiAgICAgICAgLy8gIDEuIEluIHRoZSBjYXNlIHRoYXQgdGhpcyBlbGVtZW50IGhhcyBhIGRpc2FibGVkIGF0dHJpYnV0ZSBhbmQgdGhlIGVsZW1lbnQgc3VwcG9ydHMgaXQsIHdlIG1hcmsgdGhpcyBydWxlIGFzIHBhc3NlZC5cbiAgICAgICAgLy8gIDIuIEluIHRoZSBjYXNlIHRoYXQgdGhpcyBlbGVtZW50IGhhcyBhIGFyaWEtZGlzYWJsZWQgYXR0cmlidXRlIHRoZW4sIHdlIG1hcmsgdGhpcyBydWxlIGFzIHBhc3NlZC5cbiAgICAgICAgLy8gRm9yIGJvdGggb2YgdGhlIGNhc2VzIGFib3ZlIHdlIGRvIG5vdCBuZWVkIHRvIHBlcmZvcm0gYW55IGZ1cnRoZXIgY2hlY2tzLCBhcyB0aGUgZWxlbWVudCBpcyBkaXNhYmxlZCBpbiBzb21lIGZvcm0gb3IgYW5vdGhlci5cbiAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSB0YWJpbmRleCBhdHRyaWJ1dGUgaXMgcHJvdmlkZWQgdGhlbiB2ZXJpZnkgdGhhdCBpdCBpcyAwIG9yIC0xXG4gICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkgfHwgUlBUVXRpbC50YWJJbmRleExFWmVybyhydWxlQ29udGV4dCk7XG5cbiAgICAgICAgLy8gQnVpbGQgYXJyYXkgZm9yIG5vZGUgdG9rZW5cbiAgICAgICAgbGV0IHJldFRva2VuMSA9IG5ldyBBcnJheSgpO1xuICAgICAgICByZXRUb2tlbjEucHVzaChub2RlTmFtZSk7XG5cbiAgICAgICAgLy8gQnVpbGQgYXJyYXkgZm9yIGlkIHJlZmVyZW5jZWQgYnkgYXJpYS1hY3RpdmVkZXNjZW5kYW50XG4gICAgICAgIGxldCByZXRUb2tlbjIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4yLnB1c2gocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpLnNwbGl0KFwiIFwiKS5qb2luKFwiLCBcIikpO1xuXG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBwYXNzZWQgPT0gdHJ1ZSA/IFtdIDogW3JldFRva2VuMSwgcmV0VG9rZW4yXSk7XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW3JldFRva2VuMS50b1N0cmluZygpLCByZXRUb2tlbjIudG9TdHJpbmcoKV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSBub24tZm9ybSBvciBub24tYW5jaG9yIGVsZW1lbnQgaGFzIGFuIGV2ZW50IGhhbmRsZXIgYnV0IGlzIG1pc3NpbmcgYSByb2xlIGF0dHJpYnV0ZS5cbiAgICAgKiBPcmlnaW46ICBXQ0FHIDIuMCBndWlkZWxpbmUgNC4xLjIgTmFtZSwgUm9sZSwgVmFsdWVcbiAgICAgKiBcdFx0XHRDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgNC4xYlxuICAgICAqXHRcdFx0T3BlbiBBamF4IEFsbGlhbmNlIEFjY2Vzc2liaWxpdHkgV29ya2luZyBHcm91cCBydWxlc2V0XG4gICAgICovXG4gICAgaWQ6IFwiUnB0X0FyaWFfRXZlbnRIYW5kbGVyTWlzc2luZ1JvbGVfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICBjb250ZXh0OiBcImRvbToqW29uY2xpY2tdLGRvbToqW29uYmx1cl0sIGRvbToqW29uZGJsY2xpY2tdLCBkb206KltvbmZvY3VzXSwgZG9tOipbb25rZXlkb3duXSxcIiArXG4gICAgICAgIFwiZG9tOipbb25rZXlwcmVzc10sIGRvbToqW29ua2V5dXBdLCBkb206Kltvbm1vdXNlZG93bl0sIGRvbToqW29ubW91c2V1cF0sIGRvbToqW29ubW91c2Vtb3ZlXSwgXCIgK1xuICAgICAgICBcImRvbToqW29ubW91c2VvdXRdLCBkb206Kltvbm1vdXNlb3Zlcl0sIGRvbToqW29ucmVzaXplXSwgZG9tOipbb25jaGFuZ2VdXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIHRoaXMgZm9yIFNWRyBlbGVtZW50IGZvciBub3cgdW50aWwgYSBkZXRlcm1pbmF0aW9uIGlzIG1hZGUgKGJ5IFJpY2gpXG4gICAgICAgIC8vIHRvIHN1cHBvcnQgU1ZHIGF0IGEgcG9pbnQgd2hlbiB0aGUgU1ZHIGExMXkgc3BlYyBpcyByZWFkeS5cbiAgICAgICAgaWYgKFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFwic3ZnXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vdGhpcyBydWxlIGlzIHBhc3NlZCBpZiBhIGVsZW1lbnQgaGFzIGF0dHJpYnV0IHJvbGUgXG4gICAgICAgIC8vYWxzbywgcGFzc2VkIG9mIGVsZW1lbnQgaGFzIG55IGltcGxpY2l0IHJvbGVzLiBcbiAgICAgICAgaWYgKFJQVFV0aWwuaGFzQW55Um9sZShydWxlQ29udGV4dCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vcGFzcyBpZiB0aGlzIGVsZW1lbnQgaXMgcmVjZWl2ZWQgZm9jdXMgYnkgZGVmYXVsdFxuICAgICAgICBpZiAoUlBUVXRpbC5pc2ZvY3VzYWJsZUJ5RGVmYXVsdChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vdmFsaWRhdGUgaWYgdGhpcyBlbGVtZW50IGhhcyBhbnkgb2YgdGhlIGdpdmVuIGV2ZW50IGhhbmRsZXInc1xuICAgICAgICBsZXQgcmV0VG9rZW4xID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHJldFRva2VuMS5wdXNoKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBsZXQgZXZlbnRBcnIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgLy8gRnJvbSBXQ0FHMjBfU2NyaXB0X1VzZVczQ0RvbUZ1bmN0aW9uc1xuICAgICAgICAvL2xldCBldmVudHMgPSBbXCJvbmJsdXJcIiwgXCJvbmZvY3VzXCIsIFwib25jaGFuZ2VcIiwgXCJvbmNsaWNrXCIsIFwib25jb250ZXh0bWVudVwiLCBcIm9uZGJsY2xpY2tcIiwgXCJvbmtleWRvd25cIixcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwib25rZXlwcmVzc1wiLCBcIm9ua2V5dXBcIiwgXCJvbmxvYWRcIiwgXCJvbm1vdXNlZG93blwiLCBcIm9ubW91c2V1cFwiLCBcIm9ubW91c2Vtb3ZlXCIsIFwib25tb3VzZW91dFwiLFxuICAgICAgICAvLyAgICAgICAgICAgICAgXCJvbm1vdXNlb3ZlclwiLCBcIm9ubW91c2V3aGVlbFwiLCBcIm9ucmVzZXRcIiwgXCJvbnBhc3RlXCIsIFwib25yZXNpemVcIiwgXCJvbnNjcm9sbFwiLFxuICAgICAgICAvLyAgICAgICAgICAgICAgXCJvbnNlbGVjdFwiLCBcIm9uc3VibWl0XCIsIFwib25hY3RpdmF0ZVwiLCBcIm9uZGVhY3RpdmF0ZVwiLCBcIm9ubW91c2VlbnRlclwiLCBcIm9ubW91c2VsZWF2ZVwiXTtcbiAgICAgICAgbGV0IGV2ZW50cyA9IFtcIm9uYmx1clwiLCBcIm9uZm9jdXNcIiwgXCJvbmNoYW5nZVwiLCBcIm9uY2xpY2tcIiwgXCJvbmRibGNsaWNrXCIsIFwib25rZXlkb3duXCIsXG4gICAgICAgICAgICBcIm9ua2V5cHJlc3NcIiwgXCJvbmtleXVwXCIsIFwib25tb3VzZWRvd25cIiwgXCJvbm1vdXNldXBcIiwgXCJvbm1vdXNlbW92ZVwiLCBcIm9ubW91c2VvdXRcIixcbiAgICAgICAgICAgIFwib25tb3VzZW92ZXJcIiwgXCJvbnJlc2l6ZVwiXG4gICAgICAgIF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKGV2ZW50c1tpXSkpXG4gICAgICAgICAgICAgICAgZXZlbnRBcnIucHVzaChldmVudHNbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXRUb2tlbjIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgcmV0VG9rZW4yLnB1c2goZXZlbnRBcnIuam9pbihcIiwgXCIpKTtcbiAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQoZmFsc2UsIFtydWxlQ29udGV4dF0sICcnLCAnJywgW3JldFRva2VuMSwgcmV0VG9rZW4yXSk7XG4gICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbcmV0VG9rZW4xLnRvU3RyaW5nKCksIHJldFRva2VuMi50b1N0cmluZygpXSk7XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogTG9vayBmb3IgY29udGFpbmVyIGVsZW1lbnRzIHdpdGhvdXQgYW4gJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcgdGhhdCBoYXZlIHJlcXVpcmVkIGNoaWxkcmVuLiAgQXQgbGVhc3Qgb25lIGNoaWxkIG11c3QgYmUgZm9jdXNhYmxlLlxuICAgICAqIE5vdGU6IFJlcXVpcmVkIGNoaWxkcmVuIHdvbid0IGhhdmUgbXVsdGlwbGUgcm9sZXMgc3BlY2lmaWVkIGluIHRoZSByb2xlIGF0dHJpYnV0ZSwgYnV0IHRoaXMgYXNzdW1wdGlvbiBtYXkgbm90IGJlIGNvcnJlY3QuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDIuMS4xIEtleWJvYXJkLCBnMTA4NlxuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjFhXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9NaXNzaW5nRm9jdXNhYmxlQ2hpbGRcIixcbiAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdXCIsXG4gICAgZGVwZW5kZW5jaWVzOiBbXCJScHRfQXJpYV9WYWxpZFJvbGVcIl0sXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgIC8vIEFuIEFSSUEgbGlzdCBpcyBub3QgaW50ZXJhY3RpdmVcbiAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgeyBcImxpc3RcIjogdHJ1ZSwgXCJyb3dcIjogdHJ1ZSwgXCJyb3dncm91cFwiOiB0cnVlLCBcInRhYmxlXCI6IHRydWUgfSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm90IGEgdmFsaWQgbWVzc2FnZSBmb3IgbW9iaWxlIGJlY2F1c2UgYWxsIGVsZW1lbnRzIGFyZSBmb2N1c2FibGUgaW4gaU9TIHdoZW4gVm9pY2VPdmVyIGlzIGVuYWJsZWQuXG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJjbGFzc1wiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKS5zdWJzdHJpbmcoMCwgMykgPT0gXCJtYmxcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGVsZW1lbnQgaXMgaGlkZGVuIGJ5IGRpc2FibGVkIGh0bWw1IGF0dHJpYnV0ZSBvciBhcmlhLWRpc2FibGVkOlxuICAgICAgICAvLyAgMS4gSW4gdGhlIGNhc2UgdGhhdCB0aGlzIGVsZW1lbnQgaGFzIGEgZGlzYWJsZWQgYXR0cmlidXRlIGFuZCB0aGUgZWxlbWVudCBzdXBwb3J0cyBpdCwgd2UgbWFyayB0aGlzIHJ1bGUgYXMgcGFzc2VkLlxuICAgICAgICAvLyAgMi4gSW4gdGhlIGNhc2UgdGhhdCB0aGlzIGVsZW1lbnQgaGFzIGEgYXJpYS1kaXNhYmxlZCBhdHRyaWJ1dGUgdGhlbiwgd2UgbWFyayB0aGlzIHJ1bGUgYXMgcGFzc2VkLlxuICAgICAgICAvLyBGb3IgYm90aCBvZiB0aGUgY2FzZXMgYWJvdmUgd2UgZG8gbm90IG5lZWQgdG8gcGVyZm9ybSBhbnkgZnVydGhlciBjaGVja3MsIGFzIHRoZSBlbGVtZW50IGlzIGRpc2FibGVkIGluIHNvbWUgZm9ybSBvciBhbm90aGVyLlxuICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVEaXNhYmxlZChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgcmVmZXJlbmNlZCBieSBhIGNvbWJvYm94LiBJZiBzbywgZm9jdXMgaXMgY29udHJvbGxlZCBieSB0aGUgY29tYm9ib3hcbiAgICAgICAgbGV0IGlkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaWRcIik7XG4gICAgICAgIGlmIChpZCAmJiBpZC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihgKlthcmlhLWNvbnRyb2xzPScke2lkfSddW3JvbGU9J2NvbWJvYm94J11gKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9ICAgICAgICBcblxuICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGxldCBoYXNBdHRyaWJ1dGUgPSBSUFRVdGlsLmhhc0F0dHJpYnV0ZTtcbiAgICAgICAgbGV0IHJvbGVOYW1lQXJyID0gbmV3IEFycmF5KCk7XG4gICAgICAgIGxldCBub2RlTmFtZSA9IFwiXCI7XG4gICAgICAgIGxldCBpblNjb3BlID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IHJvbGVzID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pO1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvbGVzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICBpZiAoQVJJQURlZmluaXRpb25zLmNvbnRhaW5lcnMuaW5jbHVkZXMocm9sZXNbal0pKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRpc2FibGVkID0gaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCAnYXJpYS1kaXNhYmxlZCcpID8gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiKSA6ICcnO1xuICAgICAgICAgICAgICAgIGlmIChkaXNhYmxlZCAhPSAndHJ1ZScgJiYgIWhhc0F0dHJpYnV0ZShydWxlQ29udGV4dCwgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpICYmICFSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXFDaGlsZHJlbiA9IEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJuc1tyb2xlc1tqXV0ucmVxQ2hpbGRyZW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXFDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5TY29wZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4cCA9IFwiZGVzY2VuZGFudDo6KltcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVxQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cCArPSBcIkByb2xlPSdcIiArIHJlcUNoaWxkcmVuW2ldICsgXCInIG9yIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgeHAgPSB4cC5zdWJzdHJpbmcoMCwgeHAubGVuZ3RoIC0gNCkgKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeHBhdGhSZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHAsIHJ1bGVDb250ZXh0LCBSUFRVdGlsLmRlZmF1bHROU1Jlc29sdmVyLCAwIC8qIFhQYXRoUmVzdWx0LkFOWV9UWVBFICovLCBudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByOiBFbGVtZW50ID0geHBhdGhSZXN1bHQuaXRlcmF0ZU5leHQoKSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHIgJiYgIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIG5vdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMS4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGUgaWYgY29uZGl0aW9ucyB1c2VzIHNob3J0LWNpcmN1aXRpbmcgc28gaWYgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBub3QgdHJ1ZSBpdCB3aWxsIG5vdCBjaGVjayB0aGUgbmV4dCBvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4ocikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHhwYXRoUmVzdWx0Lml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC50YWJJbmRleExFWmVybyhyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkgcGFzc2VkID0gUlBUVXRpbC5pc2ZvY3VzYWJsZUJ5RGVmYXVsdChyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcXVpcmVkIGNoaWxkIGlzIG5vdCBmb2N1c2FibGUgdmlhIHRhYmluZGV4LiAgU2VlIGlmIHRoZXJlIGlzIGEgZ3JhbmRjaGlsZCB0aGF0IGlzIGZvY3VzYWJsZSBieSBkZWZhdWx0IG9yIGJ5IHRhYmluZGV4LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4cDIgPSBcImRlc2NlbmRhbnQ6OipcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwYXRoUmVzdWx0MiA9IGRvYy5ldmFsdWF0ZSh4cDIsIHIsIFJQVFV0aWwuZGVmYXVsdE5TUmVzb2x2ZXIsIDAgLyogWFBhdGhSZXN1bHQuQU5ZX1RZUEUgKi8sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcjIgPSB4cGF0aFJlc3VsdDIuaXRlcmF0ZU5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHIyICYmICFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDEuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBUaGUgaWYgY29uZGl0aW9ucyB1c2VzIHNob3J0LWNpcmN1aXRpbmcgc28gaWYgdGhlIGZpcnN0IGNvbmRpdGlvbiBpcyBub3QgdHJ1ZSBpdCB3aWxsIG5vdCBjaGVjayB0aGUgbmV4dCBvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICBzbyBvbiBhbmQgc28gZm9ydGguXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHIyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyID0geHBhdGhSZXN1bHQyLml0ZXJhdGVOZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLnRhYkluZGV4TEVaZXJvKHIyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSBwYXNzZWQgPSBSUFRVdGlsLmlzZm9jdXNhYmxlQnlEZWZhdWx0KHIyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyID0geHBhdGhSZXN1bHQyLml0ZXJhdGVOZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlTmFtZUFyciA9IHIuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlTmFtZSA9IHIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHhwYXRoUmVzdWx0Lml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhcmlhYmxlIERlY2xlcmF0aW9uXG4gICAgICAgIGxldCByZXRUb2tlbjEgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgbGV0IHJldFRva2VuMiA9IG5ldyBBcnJheSgpO1xuXG4gICAgICAgIC8vIEluIHRoZSBjYXNlIHRoZSBhcnJheXMvc3RyaW5ncyBhcmUgZW1wdHksIHRoYXQgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyB2aW9sYXRpb24gc28gd2UgY2FuIHJlc2V0IGl0IGJhY2sgdG8gcGFzc2VkLCB0aGUgcmVhc29uIGZvciB0aGlzXG4gICAgICAgIC8vIGlzIHRoYXQgd2UgYXJlIHNldHRpbmcgcGFzc2VkPWZhbHNlIHdoaWxlIHdlIHBlcmZvcm0gYSBsb29wIHdoaWNoIGNhdXNlcyB2aW9sYXRpb24gdG8gdHJpZ2dlciBldmVuIGlmIHRoZXJlIGlzIG5vIGlzc3Vlcy4gSW5zdGVhZCBvZlxuICAgICAgICAvLyB1cGRhdGluZyB0aGUgd2hvbGUgcnVsZSB0byBzd2l0Y2ggZnJvbSB1c2luZyBwYXNzZWQgaW4gdGhhdCB3YXkgc2ltcGx5IGRvIHRoZSBjaGVjayBhdCB0aGlzIHBvaW50LlxuICAgICAgICBpZiAobm9kZU5hbWUubGVuZ3RoID4gMCAmJiByb2xlTmFtZUFyci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXRUb2tlbjEucHVzaChub2RlTmFtZSk7XG4gICAgICAgICAgICByZXRUb2tlbjIucHVzaChyb2xlTmFtZUFyci5qb2luKFwiLCBcIikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgcGFzc2VkID09IHRydWUgPyBbXSA6IFtyZXRUb2tlbjEsIHJldFRva2VuMl0pO1xuICAgICAgICBpZiAoIWluU2NvcGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbcmV0VG9rZW4xLnRvU3RyaW5nKCksIHJldFRva2VuMi50b1N0cmluZygpXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBGaW5kIGVsZW1lbnRzIHdpdGhvdXQgYXJpYS1hY3RpdmVkZXNjZW5kYW50IHRoYXQgaGF2ZSByb2xlcyB3aXRoIHJlcXVpcmVkIGNoaWxkcmVuLiBcbiAgICAgKiBFaXRoZXIgdGhlIGNoaWxkcmVuIG9yIHRoZSBwYXJlbnQgbXVzdCBoYXZlIGtleWJvYXJkIGV2ZW50IGhhbmRsZXJzLlxuICAgICAqIE5vdGU6IFJlcXVpcmVkIGNoaWxkcmVuIHdvbid0IGhhdmUgbXVsdGlwbGUgcm9sZXMgc3BlY2lmaWVkIGluIHRoZSByb2xlIGF0dHJpYnV0ZSwgYnV0IHRoaXMgYXNzdW1wdGlvbiBtYXkgbm90IGJlIGNvcnJlY3QuXG4gICAgICogT3JpZ2luOiAgV0NBRyAyLjAgZ3VpZGVsaW5lIDIuMS4xIEtleWJvYXJkLCBnMTA4N1xuICAgICAqIFx0XHRcdENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjFhXG4gICAgICpcdFx0XHRPcGVuIEFqYXggQWxsaWFuY2UgQWNjZXNzaWJpbGl0eSBXb3JraW5nIEdyb3VwIHJ1bGVzZXRcbiAgICAgKi9cbiAgICBpZDogXCJScHRfQXJpYV9NaXNzaW5nS2V5Ym9hcmRIYW5kbGVyXCIsXG4gICAgY29udGV4dDogXCJkb206Kltyb2xlXVwiLFxuICAgIGRlcGVuZGVuY2llczogW1wiUnB0X0FyaWFfVmFsaWRSb2xlXCJdLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcblxuICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgbGV0IHNhdmVkUGFzc2VkID0gcGFzc2VkO1xuICAgICAgICBsZXQgZG9jID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudDtcbiAgICAgICAgbGV0IGRlc2lnblBhdHRlcm5zID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zO1xuICAgICAgICBsZXQgcm9sZXMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGxldCBoYXNBdHRyaWJ1dGUgPSBSUFRVdGlsLmhhc0F0dHJpYnV0ZTtcbiAgICAgICAgLy8gQ29tcG9zaXRlIHVzZXIgaW50ZXJmYWNlIHdpZGdldCByb2xlcy4gVGhleSBhY3QgYXMgY29udGFpbmVycyB0aGF0IG1hbmFnZSBvdGhlciwgY29udGFpbmVkIHdpZGdldHMuXG4gICAgICAgIGxldCByb2xlQ29udGFpbmVycyA9IFtcImNvbWJvYm94XCIsIFwiZ3JpZFwiLCBcImxpc3Rib3hcIiwgXCJtZW51XCIsIFwibWVudWJhclwiLCBcInJhZGlvZ3JvdXBcIiwgXCJ0YWJsaXN0XCIsIFwidHJlZVwiLCBcInRyZWVncmlkXCJdO1xuICAgICAgICBsZXQgcm9sZU5hbWVBcnIgPSBuZXcgQXJyYXkoKTtcblxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvbGVzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICBsZXQgcGF0dGVybiA9IGRlc2lnblBhdHRlcm5zW3JvbGVzW2pdXTtcbiAgICAgICAgICAgIGlmIChyb2xlQ29udGFpbmVycy5pbmRleE9mKHJvbGVzW2pdKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRpc2FibGVkID0gaGFzQXR0cmlidXRlKHJ1bGVDb250ZXh0LCAnYXJpYS1kaXNhYmxlZCcpID8gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiKSA6ICcnO1xuICAgICAgICAgICAgICAgIGlmICghZGlzYWJsZWQpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhlcmUgaXMgYSBrZXlib2FyZCBldmVudCBoYW5kbGVyIG9uIHRoZSBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ua2V5ZG93blwiKSB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmtleXByZXNzXCIpKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBObyBrZXlib2FyZCBldmVudCBoYW5kbGVyIGZvdW5kIG9uIHBhcmVudC4gIFNlZSBpZiBrZXlib2FyZCBldmVudCBoYW5kbGVycyBhcmUgb24gcmVxdWlyZWQgY2hpbGQgZWxlbWVudHMuXG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0F0dHJpYnV0ZShydWxlQ29udGV4dCwgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcUNoaWxkcmVuID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVzW2pdXS5yZXFDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVxQ2hpbGRyZW4pIHsgLyogU01GIFRPRE8gbWVudWJhciBkb2VzIG5vdCBoYXZlIGFueSByZXFDaGlsZHJlbiAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgcmVxdWlyZWRDaGlsZHJlbkxlbmd0aCA9IHJlcUNoaWxkcmVuLmxlbmd0aDsgaSA8IHJlcXVpcmVkQ2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwID0gXCIqW2NvbnRhaW5zKEByb2xlLCdcIiArIHJlcUNoaWxkcmVuW2ldICsgXCInKV1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4cGF0aFJlc3VsdCA9IGRvYy5ldmFsdWF0ZSh4cCwgcnVsZUNvbnRleHQsIFJQVFV0aWwuZGVmYXVsdE5TUmVzb2x2ZXIsIDAgLyogWFBhdGhSZXN1bHQuQU5ZX1RZUEUgKi8sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSB4cGF0aFJlc3VsdC5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gKHIuaGFzQXR0cmlidXRlKFwib25rZXlkb3duXCIpIHx8IHIuaGFzQXR0cmlidXRlKFwib25rZXlwcmVzc1wiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGlsZCBkaWQgbm90IGhhdmUgYSBrZXkgaGFuZGxlci4gIFNlZSBpZiBhbnkgb2YgdGhlIGdyYW5kY2hpbGRyZW4gZG8uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4cDIgPSBcImRlc2NlbmRhbnQ6OipcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhwYXRoUmVzdWx0MiA9IGRvYy5ldmFsdWF0ZSh4cDIsIHIsIFJQVFV0aWwuZGVmYXVsdE5TUmVzb2x2ZXIsIDAgLyogWFBhdGhSZXN1bHQuQU5ZX1RZUEUgKi8sIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcjI6IEVsZW1lbnQgPSB4cGF0aFJlc3VsdDIuaXRlcmF0ZU5leHQoKSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocjIgJiYgIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgMS4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoZSBpZiBjb25kaXRpb25zIHVzZXMgc2hvcnQtY2lyY3VpdGluZyBzbyBpZiB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG5vdCB0cnVlIGl0IHdpbGwgbm90IGNoZWNrIHRoZSBuZXh0IG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgIHNvIG9uIGFuZCBzbyBmb3J0aC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4ocjIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjIgPSB4cGF0aFJlc3VsdDIuaXRlcmF0ZU5leHQoKSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLnRhYkluZGV4TEVaZXJvKHIyKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyMi5oYXNBdHRyaWJ1dGUoXCJvbmtleWRvd25cIikgfHwgcjIuaGFzQXR0cmlidXRlKFwib25rZXlwcmVzc1wiKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyB0YWJpbmRleCBmb2N1c2FibGUgZWxlbWVudCBmb3VuZCB3aXRoIGEga2V5IGhhbmRsZXIuICBTZWUgaWYgYW4gZWxlbWVudCBmb2N1c2FibGUgYnkgZGVmYXVsdCBoYXMgYSBoYW5kbGVyLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzZm9jdXNhYmxlQnlEZWZhdWx0KHIyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAocjIuaGFzQXR0cmlidXRlKFwib25rZXlkb3duXCIpIHx8IHIyLmhhc0F0dHJpYnV0ZShcIm9ua2V5cHJlc3NcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElzIHRoaXMgYW4gYWN0aW9uIGxpbms/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyMi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwiYVwiICYmIHIyLmhhc0F0dHJpYnV0ZShcImhyZWZcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBocmVmID0gcjIuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWN0aW9uIGxpbmsgbXVzdCBzdGFydCB3aXRoIFwiamF2YXNjcmlwdDpcIiwgbXVzdCBub3QgY29udGFpbiBhIFwidm9pZFwiIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbXVzdCBoYXZlIGEgZnVuY3Rpb24gbmFtZSBmb2xsb3dpbmcgXCJqYXZhc2NyaXB0OlwiIChpLmUuLCBocmVmLmxlbmd0aCA+IDExKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gKGhyZWYuc3RhcnRzV2l0aChcImphdmFzY3JpcHQ6XCIpICYmIGhyZWYuaW5kZXhPZihcInZvaWRcIikgPT0gLTEgJiYgaHJlZi5sZW5ndGggPiAxMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMiA9IHhwYXRoUmVzdWx0Mi5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsIHRoZSByZXF1aXJlZCBjaGlsZHJlbiAob3IgYW55IGRlc2NlbmRhbnRzIG9mIHRoZSByZXF1aXJlZCBjaGlsZHJlbikgbXVzdCBoYXZlIGtleXByZXNzL2tleWRvd25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90LCBpdCBpcyBhIGZhaWx1cmUsIG5vIG5lZWQgdG8ga2VlcCBjaGVja2luZyBhbnkgbW9yZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB4cGF0aFJlc3VsdC5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY3VycmVudCBlbGVtZW50IGZhaWxlZCB0aGUga2V5ZG93bi9rZXlwcmVzcywgYW5kIGl0IGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgY2hpbGRyZW4sIHN1Y2ggYXMgbWVudWJhci5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0J3MgY2hlY2sgaXRzIGRlc2NlbmRhbnRzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeHAyID0gXCJkZXNjZW5kYW50OjoqXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4cGF0aFJlc3VsdDIgPSBkb2MuZXZhbHVhdGUoeHAyLCBydWxlQ29udGV4dCwgUlBUVXRpbC5kZWZhdWx0TlNSZXNvbHZlciwgMCAvKiBYUGF0aFJlc3VsdC5BTllfVFlQRSAqLywgbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByMiA9IHhwYXRoUmVzdWx0Mi5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChyMiAmJiAhcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIG5vdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAxLiBPbmx5IHJ1biBpc05vZGVWaXNpYmxlIGNoZWNrIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBOT1QgYmUgY2hlY2tlZC4gSW4gdGhlIGNhc2UgdGhhdCBoaWRkZW4gY29udGVudCBpcyB0byxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihyMikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByMiA9IHhwYXRoUmVzdWx0Mi5pdGVyYXRlTmV4dCgpIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwudGFiSW5kZXhMRVplcm8ocjIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIyLmhhc0F0dHJpYnV0ZShcIm9ua2V5ZG93blwiKSB8fCByMi5oYXNBdHRyaWJ1dGUoXCJvbmtleXByZXNzXCIpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIHRhYmluZGV4IGZvY3VzYWJsZSBlbGVtZW50IGZvdW5kIHdpdGggYSBrZXkgaGFuZGxlci4gIFNlZSBpZiBhbiBlbGVtZW50IGZvY3VzYWJsZSBieSBkZWZhdWx0IGhhcyBhIGhhbmRsZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNmb2N1c2FibGVCeURlZmF1bHQocjIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IChyMi5oYXNBdHRyaWJ1dGUoXCJvbmtleWRvd25cIikgfHwgcjIuaGFzQXR0cmlidXRlKFwib25rZXlwcmVzc1wiKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXMgdGhpcyBhbiBhY3Rpb24gbGluaz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIyLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJhXCIgJiYgcjIuaGFzQXR0cmlidXRlKFwiaHJlZlwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhyZWYgPSByMi5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3Rpb24gbGluayBtdXN0IHN0YXJ0IHdpdGggXCJqYXZhc2NyaXB0OlwiLCBtdXN0IG5vdCBjb250YWluIGEgXCJ2b2lkXCIgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtdXN0IGhhdmUgYSBmdW5jdGlvbiBuYW1lIGZvbGxvd2luZyBcImphdmFzY3JpcHQ6XCIgKGkuZS4sIGhyZWYubGVuZ3RoID4gMTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAoaHJlZi5zdGFydHNXaXRoKFwiamF2YXNjcmlwdDpcIikgJiYgaHJlZi5pbmRleE9mKFwidm9pZFwiKSA9PSAtMSAmJiBocmVmLmxlbmd0aCA+IDExKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIyID0geHBhdGhSZXN1bHQyLml0ZXJhdGVOZXh0KCkgYXMgRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXR0cmlidXRlICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnIGlzIHNwZWNpZmllZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByb2xlTmFtZUFyci5wdXNoKHJvbGVzW2pdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHNhdmVkUGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgc2F2ZWRQYXNzZWQgPSBwYXNzZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmV0VG9rZW4xID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHJldFRva2VuMS5wdXNoKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBsZXQgcmV0VG9rZW4yID0gbmV3IEFycmF5KCk7XG4gICAgICAgIHJldFRva2VuMi5wdXNoKHJvbGVOYW1lQXJyLmpvaW4oXCIsIFwiKSk7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgcmVmZXJlbmNlZCBieSBhIGNvbWJvYm94LiBJZiBzbywgbGVhdmUgaXQgdG8gdGhlIGNvbWJvYm94IHJ1bGVzIHRvIGNoZWNrXG4gICAgICAgIGxldCBpZCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImlkXCIpO1xuICAgICAgICBpZiAoaWQgJiYgaWQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCpbYXJpYS1jb250cm9scz0nJHtpZH0nXVtyb2xlPSdjb21ib2JveCddYCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2F2ZWRQYXNzZWQgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKSA6IFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiLCBbcmV0VG9rZW4xLnRvU3RyaW5nKCksIHJldFRva2VuMi50b1N0cmluZygpXSk7XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYm90aCBIVE1MIDUgYXR0cmlidXRlIGFuZCB0aGUgYXNzb2NpYXRlZCBXQUktQVJJQSBhdHRyaWJ1dGUgYXJlIGluIGFuIGVsZW1lbnRcbiAgICAgKiBPcmlnaW46ICBIVE1MIDUgLSBwZXIgUmljaGFyZCBTY2h3ZXJkdGZlZ2VyJ3MgcmVxdWlyZW1lbnRzLiBnMTE0MVxuICAgICAqL1xuICAgIGlkOiBcIkhBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyXCIsXG4gICAgY29udGV4dDogXCJkb206KlthcmlhLXJlcXVpcmVkXSwgZG9tOipbYXJpYS1hdXRvY29tcGxldGVdLCBkb206KlthcmlhLXJlYWRvbmx5XSwgZG9tOipbYXJpYS1kaXNhYmxlZF0sIGRvbToqW2FyaWEtcGxhY2Vob2xkZXJdXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicmVxdWlyZWRcIikgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1yZXF1aXJlZFwiKSAmJlxuICAgICAgICAgICAgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1yZXF1aXJlZFwiKS50cmltKCkudG9Mb3dlckNhc2UoKSA9PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXNzZWQgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicGxhY2Vob2xkZXJcIikgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1wbGFjZWhvbGRlclwiKSkge1xuICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhc3NlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWF1dG9jb21wbGV0ZVwiKSkge1xuICAgICAgICAgICAgbGV0IGFyaWFBdXRvQ29tcGxldGVBdHRyID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1hdXRvY29tcGxldGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgbXlOb2RlID0gcnVsZUNvbnRleHQ7XG4gICAgICAgICAgICBsZXQgaHRtbDVBdXRvQ29tcGxldGVBdHRyID0gbnVsbDtcblxuICAgICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBkbyBhIGNvbnNpZGVyYXRpb24gZm9yIGhpZGRlbiBpbiB0aGlzIG5vZGUgd2FsayBpZiB0aGUgcnVsZUNvbnRleHQgbm9kZSBpcyBoaWRkZW4gdGhlblxuICAgICAgICAgICAgLy8gdGhpcyBydWxlIHdpbGwgbm90IHRyaWdnZXIgYXMgaGlkZGVuIHRha2VzIGluaGVyaXRhbmNlIGZyb20gdGhlIHBhcmVudCBub2RlcyB0aGF0IHRoaXMgaXMgd2Fsa2luZyB1cCB0by5cbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgd2UgZXZlciBuZWVkIHRvIGNvbnNpZGVyIGhpZGRlbiBmb3IgdGhpcyBjYXNlIG5lZWQgdG8gYWRkIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4obXlOb2RlKVxuICAgICAgICAgICAgLy8gYW5kIGNvbnRpbnVlIHRvIHRoZSBuZXh0IG5vZGUuXG4gICAgICAgICAgICB3aGlsZSAoKG15Tm9kZSAhPSBudWxsKSAmJiAobXlOb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gJ2h0bWwnKSAmJiAoIShteU5vZGUuaGFzQXR0cmlidXRlKFwiYXV0b2NvbXBsZXRlXCIpKSkpIHtcbiAgICAgICAgICAgICAgICBteU5vZGUgPSBET01VdGlsLnBhcmVudEVsZW1lbnQobXlOb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKChteU5vZGUgIT0gbnVsbCkgJiYgKG15Tm9kZS5oYXNBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIikpKSB7XG4gICAgICAgICAgICAgICAgaHRtbDVBdXRvQ29tcGxldGVBdHRyID0gbXlOb2RlLmdldEF0dHJpYnV0ZShcImF1dG9jb21wbGV0ZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgSFRNTDUgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgYW5kIGNvbmZsaWN0aW5nIHdpdGggYXJpYSB0YWdcbiAgICAgICAgICAgIGlmICgoaHRtbDVBdXRvQ29tcGxldGVBdHRyICE9IG51bGwpICYmXG4gICAgICAgICAgICAgICAgKGh0bWw1QXV0b0NvbXBsZXRlQXR0ciA9PSBcIm9uXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgYXJpYUF1dG9Db21wbGV0ZUF0dHIgPT0gXCJub25lXCIpKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhc3NlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZWFkb25seVwiKSAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLXJlYWRvbmx5XCIpICYmXG4gICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLXJlYWRvbmx5XCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhc3NlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpKSB7XG4gICAgICAgICAgICAvLyAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09IFwiZmFsc2VcIil7XG4gICAgICAgICAgICBsZXQgYXJpYURpc2FibGVkQXR0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgbXlOb2RlID0gcnVsZUNvbnRleHQ7XG4gICAgICAgICAgICBsZXQgaHRtbDVEaXNhYmxlZEF0dHI6IGJvb2xlYW4gfCBzdHJpbmcgPSBteU5vZGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG5cbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gZG8gYSBjb25zaWRlcmF0aW9uIGZvciBoaWRkZW4gaW4gdGhpcyBub2RlIHdhbGsgaWYgdGhlIHJ1bGVDb250ZXh0IG5vZGUgaXMgaGlkZGVuIHRoZW5cbiAgICAgICAgICAgIC8vIHRoaXMgcnVsZSB3aWxsIG5vdCB0cmlnZ2VyIGFzIGhpZGRlbiB0YWtlcyBpbmhlcml0YW5jZSBmcm9tIHRoZSBwYXJlbnQgbm9kZXMgdGhhdCB0aGlzIGlzIHdhbGtpbmcgdXAgdG8uXG4gICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHdlIGV2ZXIgbmVlZCB0byBjb25zaWRlciBoaWRkZW4gZm9yIHRoaXMgY2FzZSBuZWVkIHRvIGFkZCBpZiAoUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKG15Tm9kZSlcbiAgICAgICAgICAgIC8vIGFuZCBjb250aW51ZSB0byB0aGUgbmV4dCBub2RlLlxuICAgICAgICAgICAgd2hpbGUgKChteU5vZGUgIT0gbnVsbCkgJiYgKG15Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9ICdodG1sJykgJiYgKCEobXlOb2RlLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpKSkpIHtcbiAgICAgICAgICAgICAgICBteU5vZGUgPSBET01VdGlsLnBhcmVudEVsZW1lbnQobXlOb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKChteU5vZGUgIT0gbnVsbCkgJiYgKG15Tm9kZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSkpIHtcbiAgICAgICAgICAgICAgICBodG1sNURpc2FibGVkQXR0ciA9IG15Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgSFRNTDUgZGlzYWJsZWQgYXR0cmlidXRlIGlzIHNwZWNpZmllZCBhbmQgY29uZmxpY3Rpbmcgd2l0aCBhcmlhIHRhZ1xuICAgICAgICAgICAgLy8gTm90ZSBSUFQgV2ViQXBwIGhhcyBhIGJ1ZyB0aGF0IGluamVjdCBkaXNhYmxlZCBvciBESVNBQkxFRCBhcyB0aGUgYXR0cmlidXRlIHZhbHVlLlxuICAgICAgICAgICAgaWYgKCgoaHRtbDVEaXNhYmxlZEF0dHIgPT0gdHJ1ZSB8fCBodG1sNURpc2FibGVkQXR0ciA9PSBcIlwiIHx8IGh0bWw1RGlzYWJsZWRBdHRyID09IFwiRElTQUJMRURcIiB8fCBodG1sNURpc2FibGVkQXR0ciA9PSBcImRpc2FibGVkXCIpICYmIG15Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9ICdodG1sJykgJiZcbiAgICAgICAgICAgICAgICAoYXJpYURpc2FibGVkQXR0ciA9PSBcImZhbHNlXCIpKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgW10pO1xuICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxue1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiByb2xlIGNvbmZsaWN0IHdpdGggQVJJQSBpbXBsaWNpdFNlbWFudGljcyByZXN0cmljdGlvbnNcbiAgICAgKiBcbiAgICAgKiBOb3RlOiBScHRfQXJpYV9WYWxpZFJvbGUgY2hlY2tzIGlmIHRoZSByb2xlIHNwZWNpZmllZCBpcyBkZWZpbmVkIGJ5IEFSSUEuIFRoaXMgZGV0ZXJtaW5lc1xuICAgICAqIGlmIHRoYXQgcm9sZSBpcyB2YWxpZCBnaXZlbiB0aGUgY29udGV4dC5cbiAgICAgKiBOYXRpdmUgaG9zdCBzZW1hbnRpY3MgMTE0NlxuICAgICAqL1xuICAgIGlkOiBcImFyaWFfc2VtYW50aWNzX3JvbGVcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsIC8vIGNoZWNrcyBmb3IgYWxsIGVsZW1lbnRzLCBzaW5jZSByb2xlIG1pZ2h0IG5vdCBiZSBzcGVjaWZpZWQgYnV0IHRoZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgY2hlY2tlZC5cbiAgICBkZXBlbmRlbmNpZXM6IFtcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlcIl0sICAvL3dlIGNhbid0IHVzZSBScHRfQXJpYV9WYWxpZFJvbGUgdG8gdmFsaWRhdGUgdGhlIHJvbGVzIGJlY2F1c2UgdGhlIGNvbnRleHQgaXMgZGlmZmVyZW50XG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgIGxldCBkb21Sb2xlcyA6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpICE9PSBudWxsKSB7XG4gICAgICAgICAgICBkb21Sb2xlcyA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKTsgLy8gc2VwYXJhdGVkIGJ5IG9uZSBvciBtb3JlIHdoaXRlIHNwYWNlc1xuICAgICAgICB9XG4gICAgICAgIGxldCB0YWdOYW1lID0gcnVsZUNvbnRleHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAvLyBSb2xlcyBhbGxvd2VkIG9uIHRoaXMgbm9kZVxuICAgICAgICBsZXQgYWxsb3dlZFJvbGVzID0gW107XG5cbiAgICAgICAgLy8gRmFpbGluZyByb2xlc1xuICAgICAgICBsZXQgZmFpbFJvbGVUb2tlbnMgPSBbXTtcbiAgICAgICAgLy8gUGFzc2luZyByb2xlc1xuICAgICAgICBsZXQgcGFzc1JvbGVUb2tlbnMgPSBbXTtcblxuICAgICAgICBsZXQgdGFnUHJvcGVydHkgPSBSUFRVdGlsLmdldEVsZW1lbnRBcmlhUHJvcGVydHkocnVsZUNvbnRleHQpO1xuICAgICAgICBhbGxvd2VkUm9sZXMgPSBSUFRVdGlsLmdldEFsbG93ZWRBcmlhUm9sZXMocnVsZUNvbnRleHQsIHRhZ1Byb3BlcnR5KTtcblxuXG4gICAgICAgIC8vIFRlc3RpbmcgcmVzdHJpY3Rpb25zIGZvciBlYWNoIHJvbGUgYW5kIGFkZGluZyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGVzIHRvIHRoZSBhbGxvd2VkIGF0dHJpYnV0ZSBsaXN0XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tUm9sZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChhbGxvd2VkUm9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmYWlsUm9sZVRva2Vucy5pbmNsdWRlcyhkb21Sb2xlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbFJvbGVUb2tlbnMucHVzaChkb21Sb2xlc1tpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghYWxsb3dlZFJvbGVzLmluY2x1ZGVzKFwiYW55XCIpKSB7IC8vIGFueSByb2xlIGlzIHZhbGlkIHNvIG5vIGNoZWNraW5nIGhlcmUuIHRoZSB2YWxpZGl0eSBvZiB0aGUgYXJpYSByb2xlIGlzIGNoZWNrZWQgYnkgUnB0X0FyaWFfVmFsaWRSb2xlXG4gICAgICAgICAgICAgICAgaWYgKCFhbGxvd2VkUm9sZXMuaW5jbHVkZXMoZG9tUm9sZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmFpbFJvbGVUb2tlbnMuaW5jbHVkZXMoZG9tUm9sZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsUm9sZVRva2Vucy5wdXNoKGRvbVJvbGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXBhc3NSb2xlVG9rZW5zLmluY2x1ZGVzKGRvbVJvbGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzUm9sZVRva2Vucy5wdXNoKGRvbVJvbGVzW2ldKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsb3dlZFJvbGVzLmluY2x1ZGVzKFwiYW55XCIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhc3NSb2xlVG9rZW5zLmluZGV4T2YoZG9tUm9sZXNbaV0pID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzUm9sZVRva2Vucy5wdXNoKGRvbVJvbGVzW2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZm9yIGxvb3BcbiAgICAgICAgaWYgKGZhaWxSb2xlVG9rZW5zLmluY2x1ZGVzKFwicHJlc2VudGF0aW9uXCIpIHx8IGZhaWxSb2xlVG9rZW5zLmluY2x1ZGVzKFwibm9uZVwiKSAmJiBSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIiwgW2ZhaWxSb2xlVG9rZW5zLmpvaW4oXCIsIFwiKSwgdGFnTmFtZV0pO1xuICAgICAgICB9IGVsc2UgaWYgKGZhaWxSb2xlVG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiYXJpYV9zZW1hbnRpY3Nfcm9sZVwiLCBcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbZmFpbFJvbGVUb2tlbnMuam9pbihcIiwgXCIpLCB0YWdOYW1lXSk7XG4gICAgICAgIH0gZWxzZSBpZiAocGFzc1JvbGVUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsIFtwYXNzUm9sZVRva2Vucy5qb2luKFwiLCBcIiksIHRhZ05hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVsb3cgZm9yIGxpc3RpbmcgYWxsIGFsbG93ZWQgcm9sZSBhbmQgYXR0cmlidXRlcy4gIFdlIGNhbiBkZWxldGUgaXQgaWYgd2UgYXJlIG5vdCB1c2luZyBpdCBuZXh0IHllYXIgKDIwMTgpICMyODNcbiAgICAgICAgLy8gICAgICByZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIHBhc3NlZCA9PSB0cnVlID8gW10gOiBbcm9sZU9yQXR0cmlidXRlVG9rZW5zLCB0YWdOYW1lLCBhbGxvd2VkUm9sZU9yQXR0cmlidXRlVG9rZW5zXSk7XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgcm9sZSBjb25mbGljdCB3aXRoIEFSSUEgaW1wbGljaXRTZW1hbnRpY3MgcmVzdHJpY3Rpb25zXG4gICAgICogXG4gICAgICogTm90ZTogUnB0X0FyaWFfVmFsaWRSb2xlIGNoZWNrcyBpZiB0aGUgcm9sZSBzcGVjaWZpZWQgaXMgZGVmaW5lZCBieSBBUklBLiBUaGlzIGRldGVybWluZXNcbiAgICAgKiBpZiB0aGF0IHJvbGUgaXMgdmFsaWQgZ2l2ZW4gdGhlIGNvbnRleHQuXG4gICAgICogTmF0aXZlIGhvc3Qgc2VtYW50aWNzIDExNDZcbiAgICAgKi9cbiAgICBpZDogXCJhcmlhX3NlbWFudGljc19hdHRyaWJ1dGVcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsIC8vIGNoZWNrcyBmb3IgYWxsIGVsZW1lbnRzLCBzaW5jZSByb2xlIG1pZ2h0IG5vdCBiZSBzcGVjaWZpZWQgYnV0IHRoZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgY2hlY2tlZC5cbiAgICBkZXBlbmRlbmNpZXM6IFtdLCAgLy93ZSBjYW4ndCB1c2UgUnB0X0FyaWFfVmFsaWRSb2xlIHRvIHZhbGlkYXRlIHRoZSByb2xlcyBiZWNhdXNlIHRoZSBjb250ZXh0IGlzIGRpZmZlcmVudFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgLy8gVGhlIHRoZSBBUklBIHJvbGUgaXMgY29tcGxldGVseSBpbnZhbGlkLCBza2lwIHRoaXMgY2hlY2tcbiAgICAgICAgaWYgKFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiYXJpYV9zZW1hbnRpY3Nfcm9sZVwiLCBcIlwiKSA9PT0gXCJGYWlsXzFcIikgcmV0dXJuIG51bGw7XG4gICAgICAgIGxldCByb2xlID0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgaWYgKCFyb2xlKSB7XG4gICAgICAgICAgICByb2xlID0gXCJub25lXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRhZ05hbWUgPSBydWxlQ29udGV4dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgLy8gRmFpbGluZyBhdHRyaWJ1dGVzXG4gICAgICAgIGxldCBmYWlsQXR0cmlidXRlVG9rZW5zID0gW107XG4gICAgICAgIC8vIFBhc3NpbmcgYXR0cmlidXRlc1xuICAgICAgICBsZXQgcGFzc0F0dHJpYnV0ZVRva2VucyA9IFtdO1xuXG4gICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShydWxlQ29udGV4dCk7XG4gICAgICAgIC8vIEF0dHJpYnV0ZXMgYWxsb3dlZCBvbiB0aGlzIG5vZGVcbiAgICAgICAgbGV0IGFsbG93ZWRBdHRyaWJ1dGVzID0gUlBUVXRpbC5nZXRBbGxvd2VkQXJpYUF0dHJpYnV0ZXMocnVsZUNvbnRleHQsIFtyb2xlXSwgdGFnUHJvcGVydHkpO1xuXG4gICAgICAgIC8vIGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGhhcyBubyByb2xlIGJ1dCBpdCBjYW4gdGFrZSBhbiBhcmlhLXJlcXVpcmVkLiBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgbGlrZSB0aGlzLlxuICAgICAgICAvLyBTbyB3ZSBhZGQgaXQgaW4gdGhlIGNvZGUgaW5zdGVhZCBvZiBhZGRpbmcgbmV3IG1lY2hhbmlzbSB0byB0aGUgYXJpYS1kZWZpbml0aW9uLmpzXG4gICAgICAgIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgJiYgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0eXBlXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IFwicGFzc3dvcmRcIikge1xuICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMucHVzaChcImFyaWEtcmVxdWlyZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZG9tQXR0cmlidXRlcyA9IHJ1bGVDb250ZXh0LmF0dHJpYnV0ZXM7XG5cbiAgICAgICAgaWYgKGRvbUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tQXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBhdHRyTmFtZSA9IGRvbUF0dHJpYnV0ZXNbaV0ubmFtZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBsZXQgaXNBcmlhID0gYXR0ck5hbWUuc3Vic3RyaW5nKDAsIDUpID09PSAnYXJpYS0nO1xuICAgICAgICAgICAgICAgIGlmIChpc0FyaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxvd2VkQXR0cmlidXRlcy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFsaWQgYXR0cmlidXRlcyBjYW4gYmUgbm9uZSBhbHNvIHdoaWNoIGlzIGNvdmVyZWQgaGVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgIWZhaWxBdHRyaWJ1dGVUb2tlbnMuaW5jbHVkZXMoYXR0ck5hbWUpID8gZmFpbEF0dHJpYnV0ZVRva2Vucy5wdXNoKGF0dHJOYW1lKSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgIXBhc3NBdHRyaWJ1dGVUb2tlbnMuaW5jbHVkZXMoYXR0ck5hbWUpID8gcGFzc0F0dHJpYnV0ZVRva2Vucy5wdXNoKGF0dHJOYW1lKSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy9cdFx0aWYoIXBhc3NlZCl7XG4gICAgICAgIC8vXHRcdFx0ICBpZihyb2xlVG9rZW5zLmxlbmd0aCAhPT0gMCl7IC8vIFJ1bGUgZmFpbHVyZSBpcyBwcmVzZW50XG4gICAgICAgIC8vXHRcdCAgIFx0XHRcdGFsbG93ZWRSb2xlVG9rZW5zID0gYWxsb3dlZFJvbGVUb2tlbnMuY29uY2F0KGFsbG93ZWRSb2xlcyk7IC8vIFRoaXMgY2FuIGJlIGNvbmNhdGVuYXRpbmcgZW1wdHkgbGlzdFxuICAgICAgICAvL1x0XHRcdCAgfVxuICAgICAgICAvL1xuICAgICAgICAvL1x0ICAgIFx0ICBpZihhdHRyaWJ1dGVUb2tlbnMubGVuZ3RoICE9PSAwKXsgLy8gQXR0cmlidXRlIGZhaWx1cmUgaXMgcHJlc2VudFxuICAgICAgICAvL1x0ICAgIFx0XHQgIGFsbG93ZWRBdHRyaWJ1dGVUb2tlbnMgPSBhbGxvd2VkQXR0cmlidXRlVG9rZW5zLmNvbmNhdChhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgIC8vXHQgICAgXHQgIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy9cdCAgICB9XG5cbiAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIHBhc3NlZCA9PSB0cnVlID8gW10gOiBbcm9sZU9yQXR0cmlidXRlVG9rZW5zLCB0YWdOYW1lXSk7XG4gICAgICAgIGlmIChmYWlsQXR0cmlidXRlVG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbZmFpbEF0dHJpYnV0ZVRva2Vucy5qb2luKFwiLCBcIiksIHRhZ05hbWUsIHJvbGVdKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXNzQXR0cmlidXRlVG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiLCBbcGFzc0F0dHJpYnV0ZVRva2Vucy5qb2luKFwiLCBcIiksIHRhZ05hbWUsIHJvbGVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYmVsb3cgZm9yIGxpc3RpbmcgYWxsIGFsbG93ZWQgcm9sZSBhbmQgYXR0cmlidXRlcy4gIFdlIGNhbiBkZWxldGUgaXQgaWYgd2UgYXJlIG5vdCB1c2luZyBpdCBuZXh0IHllYXIgKDIwMTgpICMyODNcbiAgICAgICAgLy8gICAgICByZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIHBhc3NlZCA9PSB0cnVlID8gW10gOiBbcm9sZU9yQXR0cmlidXRlVG9rZW5zLCB0YWdOYW1lLCBhbGxvd2VkUm9sZU9yQXR0cmlidXRlVG9rZW5zXSk7XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgQVJJQSBlcnJvciBtZXNzYWdlIGlzIGhpZGRlbiBvciBkb2Vzbid0IGV4aXN0IFxuICAgICAqIFx0XHRcdFx0d2hlbiBhcmlhLWludmFsaWQgaXMgdHJ1ZS5cbiAgICAgKiBPcmlnaW46ICBJQk0gV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDMuMy4xXG4gICAgICpcbiAgICAgKi9cbiAgICBpZDogXCJIQUFDX0FyaWFfRXJyb3JNZXNzYWdlXCIsXG4gICAgY29udGV4dDogXCJkb206KlthcmlhLWludmFsaWQ9dHJ1ZV1cIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCBhcmlhX2Vyck1zZ0lkID0gUlBUVXRpbC5nZXRBcmlhQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtZXJyb3JtZXNzYWdlXCIpO1xuXG4gICAgICAgIC8vIElmIGFyaWEtZXJyb3JtZXNzYWdlIGlzIG5vdCBwcm92aWRlZCwgdGhlbiBPVVRfT0ZfU0NPUEVcbiAgICAgICAgaWYgKCFhcmlhX2Vyck1zZ0lkKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtc2dfZWxlID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGFyaWFfZXJyTXNnSWQpO1xuXG4gICAgICAgIC8vIFBPRjA6IEludmFsaWQgaWQgcmVmZXJlbmNlXG4gICAgICAgIGlmICghbXNnX2VsZSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUE9GMTogUmVmZXJlbmNlZCBlbGVtZW50IGlzIG5vdCB2aXNpYmxlXG4gICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKG1zZ19lbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgfVxufVxuXG4gICAgLy9uZXh0IHJ1bGVcbl1cbmV4cG9ydCB7IGExMXlSdWxlc0FyaWEgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMS0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuaW1wb3J0IHsgQVJJQURlZmluaXRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL2FyaWEvQVJJQURlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuLi8uLi8uLi8uLlwiO1xuaW1wb3J0IHsgRE9NV2Fsa2VyIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01XYWxrZXJcIjtcblxubGV0IGExMXlSdWxlc0xhYmVsaW5nOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGEgbGFuZG1hcmsgZWxlbWVudCBoYXMgdGhlIHNhbWUgcGFyZW50LWxhbmRtYXJrLCBcbiAgICAgICAgICogQU5EIHRoZSBzYW1lIHJvbGUgYXMgYW5vdGhlciBsYW5kbWFyaywgXG4gICAgICAgICAqIEFORCBpcyBub3QgZGlmZmVyZW50aWF0ZWQgYnkgYXJpYS1sYWJlbCBvciBhcmlhLWxhYmVsbGVkYnkuIFxuICAgICAgICAgKiBUaGlzIGNhdXNlcyBpdCB0byBiZSBkaWZmaWN1bHQgZm9yIGEga2V5Ym9hcmQgdXNlciB0byBrbm93IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxhbmRtYXJrc1xuICAgICAgICAgKiBPcmlnaW46ICBodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMS9UZWNobmlxdWVzL2FyaWEvQVJJQTEzIHRoaXMgaXMgbm90IGRpcmVjdGx5IHBhcnQgb2YgdGhlIEFSSUEgc3BlYyBzbyB0aGlzIGlzIG9ubHkgaW4gdGhlIElCTSBydWxlcyBhcyBhIFZpb2xhdGlvblxuICAgICAgICAgKiBcbiAgICAgICAgICogTk9URTogV2hlbiB3ZSBoYXZlIHR3byBsYW5kbWFya3MgYXQgdGhlIHJvb3QgbGV2ZWwgb2YgdGhlIGRvY3VtZW50IHRoaXMgcnVsZSB3aWxsIG5vdCBjaGVjayBmb3IgdGhhdC4gXG4gICAgICAgICAqIEZvciBleGFtcGxlIGlmIHdlIGhhdmUgPGJvZHk+IDxtYWluIGlkPVwibWFpbjFcIj48L21haW4+IDxtYWluIGlkPVwibWFpbjJcIj48bWFpbj4gPC9ib2R5PiB3ZSBkbyBub3QgZmFpbCB0aGlzIHJ1bGUuIFxuICAgICAgICAgKiBBbHRob3VnaHQgdGhpcyBtaWdodCBiZSBhbiBhY2Nlc3NpYmlsaXR5IGVycm9yIGFueXdheS4gU2VlOlxuICAgICAgICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDg5NjQ3Ni9jYW4taS11c2UtbW9yZS10aGFuLW9uZS1tYWluLWh0bWwtdGFnLWluLXRoZS1zYW1lLXBhZ2UvMzQ5MDYwMzdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpjb21wbGVtZW50YXJ5LCBhcmlhOmJhbm5lciwgYXJpYTpjb250ZW50aW5mbywgYXJpYTptYWluLCBhcmlhOm5hdmlnYXRpb24sIGFyaWE6cmVnaW9uLCBhcmlhOnNlYXJjaCwgYXJpYTpmb3JtXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIC8vIFRPRE8gZG8gSSBuZWVkIHRvIGZpdGVyIG91dCBiYWQgY29udGVudGluZm8gbm9kZXM6IFRoZSBmb290ZXIgZWxlbWVudCBpcyBub3QgYSBjb250ZW50aW5mbyBsYW5kbWFyayB3aGVuIGl0IGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgZm9sbG93aW5nIEhUTUw1IHNlY3Rpb25pbmcgZWxlbWVudHM6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDE3L05PVEUtd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS0yMDE3MTIxNC9leGFtcGxlcy9sYW5kbWFya3MvSFRNTDUuaHRtbFxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBvd25lckRvY3VtZW50ID0gRnJhZ21lbnRVdGlsLmdldE93bmVyRnJhZ21lbnQocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IGZvcm1DYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJsYW5kbWFya19uYW1lX3VuaXF1ZVwiLCBudWxsKTtcblxuICAgICAgICAgICAgaWYgKCFmb3JtQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIi0tLS0tLS0tLUVOVEVSSU5HIEZPUk0gQ0FDSEVcIilcbiAgICAgICAgICAgICAgICBmb3JtQ2FjaGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2RlczogW10sXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbk5vZGVzUGFyZW50czogW10sXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmQ6IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBuYXZpZ2F0aW9uTm9kZXNUZW1wID0gb3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhc2lkZSxbcm9sZT1cImNvbXBsZW1lbnRhcnlcIl0sIGZvb3Rlcixbcm9sZT1cImNvbnRlbnRpbmZvXCJdLCBoZWFkZXIsW3JvbGU9XCJiYW5uZXJcIl0sIG1haW4sW3JvbGU9XCJtYWluXCJdLCBuYXYsW3JvbGU9XCJuYXZpZ2F0aW9uXCJdLCBmb3JtLFtyb2xlPVwiZm9ybVwiXSwgc2VjdGlvbixbcm9sZT1cInJlZ2lvblwiXSxbcm9sZT1cInNlYXJjaFwiXScpO1xuICAgICAgICAgICAgICAgIGxldCBuYXZpZ2F0aW9uTm9kZXMgPSBBcnJheS5mcm9tKG5hdmlnYXRpb25Ob2Rlc1RlbXApO1xuICAgICAgICAgICAgICAgIGxldCBuYXZpZ2F0aW9uTm9kZXNQYXJlbnRzID0gW107XG4gICAgICAgICAgICAgICAgbGV0IG5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmQgPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF2aWdhdGlvbk5vZGVzLmxlbmd0aDsgaSsrKSB7IC8vIExvb3Agb3ZlciBhbGwgdGhlIGxhbmRtYXJrIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgIGxldCBlbHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBuYXZpZ2F0aW9uTm9kZXNbaV0ucGFyZW50RWxlbWVudFxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzLnB1c2goYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhID0gYS5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBlbHMubGVuZ3RoOyBqKyspIHsgLy8gTG9vcCBvdmVyIGFsbCB0aGUgcGFyZW50cyBvZiB0aGUgbGFuZG1hcmsgbm9kZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgbmVhcmVzdCBsYW5kbWFyayBwYXJlbnQgYmFzZWQgb24gdGhlIHRhZ05hbWUgb3IgdGhlIHJvbGUgYXR0cmlidXRlIFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRhZ05hbWVUcmlnZ2VyID0gW1wiQVNJREVcIiwgXCJGT09URVJcIiwgXCJGT1JNXCIsIFwiSEVBREVSXCIsIFwiTUFJTlwiLCBcIk5BVlwiLCBcIlNFQ1RJT05cIl0uaW5jbHVkZXMoZWxzW2pdLnRhZ05hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcm9sZU5hbWVUcmlnZ2VyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxzW2pdLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlTmFtZVRyaWdnZXIgPSBbXCJjb21wbGVtZW50YXJ5XCIsIFwiY29udGVudGluZm9cIiwgXCJmb3JtXCIsIFwiYmFubmVyXCIsIFwibWFpblwiLCBcIm5hdmlnYXRpb25cIiwgXCJyZWdpb25cIiwgXCJzZWFyY2hcIl0uaW5jbHVkZXMoZWxzW2pdLmdldEF0dHJpYnV0ZShcInJvbGVcIikpIC8vIFRPRE8gd2UgYXJlIG5vdCBjb3ZlcmluZyB0aGUgY2FzZSB3aGVyZSBhIGVsZW1lbmVudCB3aXRoIG11bHRpcGxlIHJvbGVzLiBFLmcuIHJvbGUgPSBcImZvcm0gYmFubmVyXCIuIFRoaXMgaXMgYSBpbXByb3ZtZW50IHdlIG1pZ2h0IHdhbnQgdG8gYWRkIGluIHRoZSBmdXR1cmUuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFnTmFtZVRyaWdnZXIgfHwgcm9sZU5hbWVUcmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmVhcmVzdCBwYXJlbnQtbGFuZG1hcmsgZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTm9kZXNQYXJlbnRzLnB1c2goZWxzW2pdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PT0gZWxzLmxlbmd0aCAtIDEpIHsgLy8gVGhpcyBub2RlIGlzIGF0IHRoZSBoZWFkIG9mIHRoZSBmaWxlIHNvIGl0IGRvZXMgbm90IGhhdmUgYSBwYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTm9kZXNQYXJlbnRzLnB1c2gobnVsbCkgLy8gVE9ETyBtaWdodCB3YW50IHRvIGNoYW5nZSB0byBOVUxMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBuYXZpZ2F0aW9uTm9kZXNDb21wdXRlZExhYmVscyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmF2aWdhdGlvbk5vZGVzLmxlbmd0aDsgaSsrKSB7IC8vIExvb3Agb3ZlciBhbGwgdGhlIGxhbmRtYXJrIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzLnB1c2goQVJJQU1hcHBlci5jb21wdXRlTmFtZShuYXZpZ2F0aW9uTm9kZXNbaV0pKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hdmlnYXRpb25Ob2Rlc1BhcmVudHMubGVuZ3RoOyBpKyspIHsgLy8gTG9vcCBvdmVyIGFsbCB0aGUgcGFyZW50cyBvZiB0aGUgbGFuZG1hcmsgbm9kZXMgdG8gZmluZCBkdXBsaWNhdGVzXG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXRjaEZvdW5kID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXNzXzBfZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG5hdmlnYXRpb25Ob2Rlc1BhcmVudHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID09PSBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gY29tcGFyZSBhZ2FpbnN0IG91cnNlbGZzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpZiBzdGF0ZW1lbnQgZm9jdXMgb24gdGhlIGNhc2Ugd2hlcmUgdGhlIHBhcmVudCBsYW5kbWFyayBpcyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG5hdmlnYXRpb25Ob2Rlc1BhcmVudHNbaV0gPT09IG51bGwpICYmIChuYXZpZ2F0aW9uTm9kZXNQYXJlbnRzW2pdID09PSBudWxsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBsb29raW5nIGF0IHR3byByb290IG5vZGVzLCBzbyB3ZSBzaG91bGQgY29tcGFyZSB0aGVtLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBUklBTWFwcGVyLm5vZGVUb1JvbGUobmF2aWdhdGlvbk5vZGVzW2ldKSA9PT0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKG5hdmlnYXRpb25Ob2Rlc1tqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90aCBub2RlcyBoYXZlIHRoZSBzYW1lIHJvbGUgQU5EXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHNbaV0gPT09IG5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYm90aCBoYXZlIHRoZSBzYW1lIChjb21wdXRlZCkgYXJpYS1sYWJlbC9hcmlhLWxhYmVsbGVkYnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChuYXZpZ2F0aW9uTm9kZXNDb21wdXRlZExhYmVsc1tpXSA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmQucHVzaChcIkZhaWxfMFwiKTsgIC8vIEZhaWwgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbWUgcGFyZW50cyAmJiBzYW1lIG5vZGUgcm9sZXMgQlVUIGRpZmZlcmVudCBjb21wdXRlZCBhcmlhLWxhYmVsL2FyaWEtbGFiZWxsZWRieSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYXQgbGVhc3QgYSBQYXNzXzAuIEJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCBub2RlcyB0byBzZWUgaWYgYW5vdGhlciBvbmUgZmFpbHMuIFNvIHNldCBhIGZsYWcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXzBfZmxhZyA9IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhbWUgcGFyZW50cyBidXQgZGlmZmVyZW50IG5vZGUgcm9sZXMgLy8gTm90IGFwcGxpY2FibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoKG5hdmlnYXRpb25Ob2Rlc1BhcmVudHNbaV0gPT09IG51bGwpIHx8IChuYXZpZ2F0aW9uTm9kZXNQYXJlbnRzW2pdID09PSBudWxsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBsb29raW5nIGF0IGEgc2luZ2xlIHJvb3Qgbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaWYgc3RhdGVtZW50IGZvY3VzIG9uIHRoZSBjYXNlIHdoZXJlIHRoZSBwYXJlbnQgbGFuZG1hcmsgaXMgTk9UIG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChET01VdGlsLnNhbWVOb2RlKG5hdmlnYXRpb25Ob2Rlc1BhcmVudHNbaV0sIG5hdmlnYXRpb25Ob2Rlc1BhcmVudHNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0aGUgc2FtZSBwYXJlbnQtbGFuZG1hcmsgQU5EICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQVJJQU1hcHBlci5ub2RlVG9Sb2xlKG5hdmlnYXRpb25Ob2Rlc1tpXSkgPT09IEFSSUFNYXBwZXIubm9kZVRvUm9sZShuYXZpZ2F0aW9uTm9kZXNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdGggbm9kZXMgaGF2ZSB0aGUgc2FtZSByb2xlIEFORFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzW2ldID09PSBuYXZpZ2F0aW9uTm9kZXNDb21wdXRlZExhYmVsc1tqXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdGggaGF2ZSB0aGUgc2FtZSAoY29tcHV0ZWQpIGFyaWEtbGFiZWwvYXJpYS1sYWJlbGxlZGJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAobmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHNbaV0gPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTm9kZXNNYXRjaEZvdW5kLnB1c2goXCJGYWlsXzBcIik7ICAvLyBGYWlsIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYW1lIHBhcmVudHMgJiYgc2FtZSBub2RlIHJvbGVzIEJVVCBkaWZmZXJlbnQgY29tcHV0ZWQgYXJpYS1sYWJlbC9hcmlhLWxhYmVsbGVkYnkgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGF0IGxlYXN0IGEgUGFzc18wLiBCdXQgd2UgbmVlZCB0byBjaGVjayBhbGwgbm9kZXMgdG8gc2VlIGlmIGFub3RoZXIgb25lIGZhaWxzLiBTbyBzZXQgYSBmbGFnLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc18wX2ZsYWcgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYW1lIHBhcmVudHMgYnV0IGRpZmZlcmVudCBub2RlIHJvbGVzIC8vIE5vdCBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaWZmZXJlbnQgcGFyZW50cyAvLyBOb3QgYXBwbGljYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2hGb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3NfMF9mbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZC5wdXNoKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uTm9kZXNNYXRjaEZvdW5kLnB1c2goXCJudWxsXCIpOyAvLyBUaGlzIGlzIG5vdCB0aGUga2V5d29yZCBudWxsIG9uIHB1cnBvc2UuIEl0IGlzIGEgc3BhY2Vob2xkZXIgaW4gdGhlIGFycmF5IHNvIGluZGV4ZXMgbWF0Y2ggdXAuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2Rlc0NvbXB1dGVkTGFiZWxzID0gbmF2aWdhdGlvbk5vZGVzQ29tcHV0ZWRMYWJlbHM7XG4gICAgICAgICAgICAgICAgZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2RlcyA9IG5hdmlnYXRpb25Ob2RlcztcbiAgICAgICAgICAgICAgICBmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzUGFyZW50cyA9IG5hdmlnYXRpb25Ob2Rlc1BhcmVudHM7XG4gICAgICAgICAgICAgICAgZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmQgPSBuYXZpZ2F0aW9uTm9kZXNNYXRjaEZvdW5kO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJsYW5kbWFya19uYW1lX3VuaXF1ZVwiLCBmb3JtQ2FjaGUpO1xuXG4gICAgICAgICAgICAgICAgLy8gVE9ETyBBZGQgdmFsaWRhdGlvbiB0aGF0IGFsbCAzIGFycmF5cyBhcmUgdGhlIHNhbWUgbGVuZ3RoXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCItLS0tLS0tLS0tLS0tRW5kIGZvcm1DYWNoZVwiKVxuXG4gICAgICAgICAgICB9IC8vIEVuZCBmb3JtQ2FjaGVcblxuICAgICAgICAgICAgbGV0IGluZGV4VG9DaGVjayA9IC0xO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaXNTYW1lTm9kZShmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleFRvQ2hlY2sgPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmRleFRvQ2hlY2sgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmRbaW5kZXhUb0NoZWNrXS5pbmNsdWRlcyhcIlBhc3NfMFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZFtpbmRleFRvQ2hlY2tdLCBbQVJJQU1hcHBlci5ub2RlVG9Sb2xlKGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXNbaW5kZXhUb0NoZWNrXSldKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUNhY2hlLm5hdmlnYXRpb25Ob2Rlc01hdGNoRm91bmRbaW5kZXhUb0NoZWNrXS5pbmNsdWRlcyhcIkZhaWxfMFwiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChmb3JtQ2FjaGUubmF2aWdhdGlvbk5vZGVzTWF0Y2hGb3VuZFtpbmRleFRvQ2hlY2tdLCBbQVJJQU1hcHBlci5ub2RlVG9Sb2xlKGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXNbaW5kZXhUb0NoZWNrXSksIGZvcm1DYWNoZS5uYXZpZ2F0aW9uTm9kZXNDb21wdXRlZExhYmVsc1tpbmRleFRvQ2hlY2tdXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIHJlZ2lvbiByb2xlIGlzIG5vdCBsYWJlbGVkIHdpdGggYW4gYXJpYS1sYWJlbCBvciBhcmlhLWxhYmVsbGVkYnlcbiAgICAgICAgICogYWxzbywgY2hlY2sgPHNlY3Rpb24+IGVsZW1lbnQgYXMgdGhpcyBlbGVtZW50IGhhcyAncmVnaW9uJyBhcyBpbXBsaWNpdCByb2xlXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9SZWdpb25MYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdLCBkb206c2VjdGlvblwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHRhZ05hbWUgPSBydWxlQ29udGV4dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGlmICh0YWdOYW1lID09PSBcInNlY3Rpb25cIiAmJiAhUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcInJlZ2lvblwiLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0YWdOYW1lICE9PSBcInNlY3Rpb25cIiAmJiAhUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwicmVnaW9uXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmhhc0FyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbCh0YWdOYW1lID09PSBcInNlY3Rpb25cIiA/IFwiRmFpbF8xXCIgOiBcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIG1haW4gbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBBbHNvLCBjb25zaWRlIGVsZW1lbnRzIHdpdGggaW1wbGljaXQgcm9sZXMgc3VjaCBhcyA8bWFpbj4gZWxlbWVudFxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YSAgUnVsZSAxMTgyXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zUmVxdWlyZUxhYmVsX0ltcGxpY2l0XzJcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOm1haW5cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBjb250ZXh0TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG5cbiAgICAgICAgICAgIGxldCBwYXJlbnREb2NSb2xlID0gUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcImRvY3VtZW50XCIsIHRydWUpO1xuICAgICAgICAgICAgbGV0IG1haW5zID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIm1haW5cIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFpbnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAobWFpbnNbaV0gPT09IHJ1bGVDb250ZXh0KSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICBsZXQgdGhpc1BhcmVudERvY1JvbGUgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUobWFpbnNbaV0sIFwiZG9jdW1lbnRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNQYXJlbnREb2NSb2xlID09PSBwYXJlbnREb2NSb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldEFyaWFMYWJlbChtYWluc1tpXSkgPT09IGNvbnRleHRMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBtdWx0aXBsZSBtYWluIGxhbmRtYXJrcyBhcmUgcHJlc2VudCBhbmRcbiAgICAgICAgICogdGhleSBkb24ndCBoYXZlIHVuaXF1ZSwgdmlzaWJsZSBsYWJlbHMuXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmJvZHlcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcblxuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICAvL2NhbGwgZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4gd2l0aCBjb25zaWRlckltcGxpY2l0IGZsYWcgYXMgdHJ1ZSBcbiAgICAgICAgICAgIC8vc28gdGhhdCB0aGUgbWV0aG9kIHJldHVycyA8bWFpbj4gZWxlbWVudHMgXG4gICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIm1haW5cIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmhhc1VuaXF1ZUFyaWFMYWJlbGxlZGJ5KGxhbmRtYXJrcyk7XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBtdWx0aXBsZSBiYW5uZXIgbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmJhbm5lclwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICAvLyBBbHNvLCBjb25zaWRlciBJbXBsaWNpdCByb2xlIGNoZWNraW5nLiBcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiYmFubmVyXCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGxhbmRtYXJrcy5sZW5ndGggPT09IDAgfHwgbGFuZG1hcmtzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZHVwZXMgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUJhbm5lckxhbmRtYXJrc19JbXBsaWNpdFwiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsICE9PSBcIlwiICYmICghKG15TGFiZWwgaW4gZHVwZXMpIHx8IGR1cGVzW215TGFiZWxdIDw9IDEpO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIHJ1bGVDb250ZXh0LCAnJywgJycsIFsgbXlMYWJlbCBdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBiYW5uZXIgbGFuZG1hcmtzIGluIGEgc2V0IG9mIHNpYmxpbmdzXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Kltyb2xlXSwgZG9tOmhlYWRlclwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJiYW5uZXJcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuZ2V0U2libGluZ1dpdGhSb2xlSGlkZGVuKHJ1bGVDb250ZXh0LCBcImJhbm5lclwiLCB0cnVlLCB0cnVlKSA9PT0gbnVsbDtcbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIGNvbXBsZW1lbnRhcnkgcm9sZSBpcyBub3QgbGFiZWxlZCB3aXRoIGFuIGFyaWEtbGFiZWwgb3IgYXJpYS1sYWJlbGxlZGJ5XG4gICAgICAgICAqIGFsc28sIGNvbnNpZGVyIDxhc2lkZT4gYXMgdGhpcyBlbGVtZW50IGhhcyBpbXBsaWNpdCAnY29tcGxlbWVudGFyeScgcm9sZS5cbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeVJlcXVpcmVkTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Kltyb2xlXSwgZG9tOmFzaWRlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImNvbXBsZW1lbnRhcnlcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzQXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSBjb21wbGVtZW50YXJ5IHJvbGUgaXMgbm90IGxhYmVsZWQgd2l0aCBhbiBhcmlhLWxhYmVsbGVkYnlcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICogTm90ZSB0aGlzIGlzIGEgcmVjb21tZW5kYXRpb24uIFJwdF9BcmlhX0NvbXBsZW1lbnRhcnlSZXF1aXJlZExhYmVsIGlzIHJlcXVpcmVkLlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQ29tcGxlbWVudGFyeUxhbmRtYXJrTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Kltyb2xlXSwgZG9tOmFzaWRlXCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiUnB0X0FyaWFfQ29tcGxlbWVudGFyeVJlcXVpcmVkTGFiZWxfSW1wbGljaXRcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImNvbXBsZW1lbnRhcnlcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiYXJpYS1sYWJlbGxlZGJ5XCIpO1xuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGNvbXBsZW1lbnRhcnkgbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCBcbiAgICAgICAgICogdGhleSBkb24ndCBoYXZlIHVuaXF1ZSBsYWJlbHMuXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbXBsZW1lbnRhcnlcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgLy8gQWxzbywgY29uc2lkZXIgSW1wbGljaXQgcm9sZSBjaGVja2luZy4gXG4gICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbXBsZW1lbnRhcnlcIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRcIiwgZHVwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG15TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gbXlMYWJlbCAhPT0gXCJcIiAmJiAoIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxKTtcblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBydWxlQ29udGV4dCwgJycsICcnLCBbIG15TGFiZWwgXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbXlMYWJlbF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGNvbnRlbnRpbmZvIGxhbmRtYXJrcyBhcmUgcHJlc2VudCBhbmQgdGhleSBkb24ndCBoYXZlIHVuaXF1ZSBsYWJlbHNcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmNvbnRlbnRpbmZvXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb250ZW50aW5mb1wiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9MYW5kbWFya3NfSW1wbGljaXRcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvTGFuZG1hcmtzX0ltcGxpY2l0XCIsIGR1cGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBteUxhYmVsID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgIT09IFwiXCIgJiYgKCEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMSk7XG5cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgcnVsZUNvbnRleHQsICcnLCAnJywgWyBteUxhYmVsIF0pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBjb250ZW50aW5mbyBub2RlcyBpbiBhIHNldCBvZiBzaWJsaW5ncy5cbiAgICAgICAgICogQWxzbywgY29uc2lkZXIgPGZvb3Rlcj4gZWxlbWVudCB3aGljaCBoYXMgaW1wbGljaXQgcm9sZVxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0luU2libGluZ1NldF9JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdLCBkb206Zm9vdGVyLCBkb206YWRkcmVzc1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9maW5kIG91dCBpZiA8Zm9vdGVyPiBlbGVtZW50IGhhcyBzaWJsaW5ncyBhcyA8Zm9vdGVyPiBoYXMgaW1wbGljaXQgY29udGVudGluZm8gcm9sZVxuICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJjb250ZW50aW5mb1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gIVJQVFV0aWwuZ2V0U2libGluZ1dpdGhSb2xlSGlkZGVuKHJ1bGVDb250ZXh0LCBcImNvbnRlbnRpbmZvXCIsIHRydWUsIHRydWUpO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICdyb2xlJywgJycsIFtdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIGNvbnRlbnRpbmZvIHJvbGUgaXMgcHJlc2VudCwgYnV0IG5vIG1haW4gcm9sZSBpcyBwcmVzZW50LlxuICAgICAgICAgKiBBbHNvLCBjb25zaWRlciBpbXBsaWN0IHJvbGVzIGZvciA8bWFpbj4sIDxmb290ZXI+IGFuZCA8YWRkcmVzcz4gZWxlbWVudHMgYXMgdGhlc2UgZWxlbWVudHNcbiAgICAgICAgICogaGF2ZSBpbXBsaWNpdCBjb250ZW50aW5mbyByb2xlcy5cbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW3JvbGVdLCBkb206Zm9vdGVyLCBkb206YWRkcmVzc1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9jb25zaWRlciBpbXBsaWNpdCByb2xlXG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImNvbnRlbnRpbmZvXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbnNpZGVyIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHRoYXQgaXMgc2V0IGJ5IHRoZSBydWxlc1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJtYWluXCIsIHRydWUsIHRydWUpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGZvcm0gbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmJvZHlcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcblxuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImZvcm1cIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNVbmlxdWVBcmlhTGFiZWxzTG9jYWxseShsYW5kbWFya3MsIGZhbHNlKTtcblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBsYW5kbWFya3MsICcnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGZvcm0gbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpmb3JtXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIFBlciBodHRwczovL3d3dy53My5vcmcvVFIvMjAxNy9OT1RFLXdhaS1hcmlhLXByYWN0aWNlcy0xLjEtMjAxNzEyMTQvZXhhbXBsZXMvbGFuZG1hcmtzL0hUTUw1Lmh0bWxcbiAgICAgICAgICAgIC8vIGZvcm0gZWxlbWVudCBzaG91bGQgb25seSBiZSBjb25zaWRlcmVkIGlmIGl0IGhhcyBhbiBhcmlhIGxhYmVsIG9yIHRpdGxlXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKSA9PT0gXCJmb3JtXCJcbiAgICAgICAgICAgICAgICB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpXG4gICAgICAgICAgICAgICAgfHwgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpXG4gICAgICAgICAgICAgICAgfHwgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidGl0bGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgICAgICAvLyBBbHNvLCBjb25zaWRlciBJbXBsaWNpdCByb2xlIGNoZWNraW5nLiBcbiAgICAgICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImZvcm1cIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGxhbmRtYXJrcy5sZW5ndGggPT09IDAgfHwgbGFuZG1hcmtzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZHVwZXMgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCIsIG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCIsIGR1cGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IG15TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgIT09IFwiXCIgJiYgKCEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBtdWx0aXBsZSBuYXZpZ2F0aW9uIGxhbmRtYXJrcyBhcmUgcHJlc2VudCBhbmQgdGhleSBkb24ndCBoYXZlIHVuaXF1ZSBsYWJlbHNcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTmF2aWdhdGlvbkxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6bmF2aWdhdGlvblwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIm5hdmlnYXRpb25cIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRcIiwgZHVwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG15TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gbXlMYWJlbCAhPT0gXCJcIiAmJiAoIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxKTtcblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBydWxlQ29udGV4dCwgJycsICcnLCBbIG15TGFiZWwgXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbXlMYWJlbF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBtdWx0aXBsZSBzZWFyY2ggbGFuZG1hcmtzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOnNlYXJjaFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwic2VhcmNoXCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGxhbmRtYXJrcy5sZW5ndGggPT09IDAgfHwgbGFuZG1hcmtzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZHVwZXMgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZVNlYXJjaExhbmRtYXJrc1wiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsICE9PSBcIlwiICYmICghKG15TGFiZWwgaW4gZHVwZXMpIHx8IGR1cGVzW215TGFiZWxdIDw9IDEpO1xuXG4gICAgICAgICAgICAvLyByZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBydWxlQ29udGV4dCwgJycsICcnLCBbIG15TGFiZWwgXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbXlMYWJlbF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIDxjcD4gRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIHJlZ2lvbiByb2xlIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBBbHNvLCBjb25zaWRlciAgPHNlY3Rpb24+IGVsZW1lbnQgYXMgdGhpcyBlbGVtZW50IGhhcyBpbXBsaWNpdCAncmVnaW9uJyByb2xlXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6cmVnaW9uXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBQZXIgaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTcvTk9URS13YWktYXJpYS1wcmFjdGljZXMtMS4xLTIwMTcxMjE0L2V4YW1wbGVzL2xhbmRtYXJrcy9IVE1MNS5odG1sXG4gICAgICAgICAgICAvLyBmb3JtIGVsZW1lbnQgc2hvdWxkIG9ubHkgYmUgY29uc2lkZXJlZCBpZiBpdCBoYXMgYW4gYXJpYSBsYWJlbCBvciB0aXRsZVxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikgPT09IFwicmVnaW9uXCJcbiAgICAgICAgICAgICAgICB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpXG4gICAgICAgICAgICAgICAgfHwgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpXG4gICAgICAgICAgICAgICAgfHwgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidGl0bGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgICAgICAvLyBBbHNvLCBjb25zaWRlciBJbXBsaWNpdCByb2xlIGNoZWNraW5nLiBcbiAgICAgICAgICAgICAgICBsZXQgbGFuZG1hcmtzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcInJlZ2lvblwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZVJlZ2lvbnNVbmlxdWVMYWJlbF9JbXBsaWNpdFwiLCBudWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGR1cGVzID0gUlBUVXRpbC5maW5kQXJpYUxhYmVsRHVwZXMobGFuZG1hcmtzKTtcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlUmVnaW9uc1VuaXF1ZUxhYmVsX0ltcGxpY2l0XCIsIGR1cGVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IG15TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG15TGFiZWwgIT09IFwiXCIgJiYgKCEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMSk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGFuIGFwcGxpY2F0aW9uIHJvbGUgaXMgbm90IGxhYmVsZWQgd2l0aCBhbiBhcmlhLWxhYmVsbGVkYnkgb3IgYXJpYS1sYWJlbFxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfQXBwbGljYXRpb25MYW5kbWFya0xhYmVsXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTphcHBsaWNhdGlvblwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzQXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIC8vIHJldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICdyb2xlJywgJycsIFtdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBtdWx0aXBsZSBhcHBsaWNhdGlvbiBsYW5kbWFya3MgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTphcHBsaWNhdGlvblwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICAvLyBBbHNvLCBjb25zaWRlciBJbXBsaWNpdCByb2xlIGNoZWNraW5nLiBcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiYXBwbGljYXRpb25cIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzXCIsIG51bGwpO1xuICAgICAgICAgICAgaWYgKCFkdXBlcykge1xuICAgICAgICAgICAgICAgIGR1cGVzID0gUlBUVXRpbC5maW5kQXJpYUxhYmVsRHVwZXMobGFuZG1hcmtzKTtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVBcHBsaWNhdGlvbkxhbmRtYXJrc1wiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsICE9PSBcIlwiICYmICghKG15TGFiZWwgaW4gZHVwZXMpIHx8IGR1cGVzW215TGFiZWxdIDw9IDEpO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIHJ1bGVDb250ZXh0LCAnJywgJycsIFsgbXlMYWJlbCBdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGRvY3VtZW50IHJvbGVzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpkb2N1bWVudFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICAvLyBBbHNvLCBjb25zaWRlciBJbXBsaWNpdCByb2xlIGNoZWNraW5nLiBcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiZG9jdW1lbnRcIiwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAobGFuZG1hcmtzLmxlbmd0aCA9PT0gMCB8fCBsYW5kbWFya3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBkdXBlcyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZURvY3VtZW50Um9sZXNcIiwgZHVwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG15TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gbXlMYWJlbCA9PT0gXCJcIiB8fCAoIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxKTtcblxuICAgICAgICAgICAgLy8gcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgcnVsZUNvbnRleHQsICcnLCAnJywgWyBteUxhYmVsIF0pOyBcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtteUxhYmVsXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGFuIGFydGljbGUgcm9sZSBpcyBub3QgbGFiZWxlZCB3aXRoIGFuIGFyaWEtbGFiZWxsZWRieSBvciBhcmlhLWxhYmVsXG4gICAgICAgICAqIGNvbnNpZGVyIDxhcnRpY2xlPiBlbGVtZW50IHdpdGggaW1wbGljaXQgcm9sZSBhcnRpY2xlXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9BcnRpY2xlUm9sZUxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTphcnRpY2xlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgLy8gcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIGFydGljbGUgcm9sZXMgYXJlIHByZXNlbnQgYW5kIHRoZXkgZG9uJ3QgaGF2ZSB1bmlxdWUgbGFiZWxzXG4gICAgICAgICAqIEFsc28sIGNvbnNpZGVyIDxhcnRpY2xlPiBlbGVtZW50IHdpdGggaW1wbGljaXQgYXJ0aWNsZSByb2xlLiBcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXJ0aWNsZVJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTphcnRpY2xlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJhcnRpY2xlXCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKGxhbmRtYXJrcy5sZW5ndGggPT09IDAgfHwgbGFuZG1hcmtzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZHVwZXMgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVBcnRpY2xlUm9sZXNfSW1wbGljaXRcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIWR1cGVzKSB7XG4gICAgICAgICAgICAgICAgZHVwZXMgPSBSUFRVdGlsLmZpbmRBcmlhTGFiZWxEdXBlcyhsYW5kbWFya3MpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsID09PSBcIlwiIHx8ICEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMTtcblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBydWxlQ29udGV4dCwgJycsICcnLCBbIG15TGFiZWwgXSk7IFxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIGdyb3VwIHJvbGUgaXMgbm90IGxhYmVsZWQgd2l0aCBhbiBhcmlhLWxhYmVsbGVkYnkgb3IgYXJpYS1sYWJlbFxuICAgICAgICAgKiBBbHNvLCBjb25zaWRlciA8ZGV0YWlscz4gZWxlbWVudCB3aGljaCBoYXMgaW1wbGljaXQgYXJ0aWNsZSByb2xlLiBcbiAgICAgICAgICogT3JpZ2luOiAgQ0kxNjIgV2ViIGNoZWNrbGlzdCBjaGVja3BvaW50IDIuNGFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJwdF9BcmlhX0dyb3VwUm9sZUxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbcm9sZV0sIGRvbTpkZXRhaWxzXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcm9sZU5hbWUgPSBcImdyb3VwXCI7XG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCByb2xlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzQXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gISFSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwibWVudWJhclwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAhIVJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShydWxlQ29udGV4dCwgXCJtZW51XCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICEhUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcInRyZWVcIik7XG4gICAgICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBSdWxlIGRvZXMgbm90IGFwcGx5IGluIGEgbWVudWJhci9tZW51L3RyZWVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmV0VG9rZW4xID0gbmV3IEFycmF5KCk7XG4gICAgICAgICAgICByZXRUb2tlbjEucHVzaChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIGxldCByZXRUb2tlbjIgPSBuZXcgQXJyYXkoKTtcbiAgICAgICAgICAgIHJldFRva2VuMi5wdXNoKHJvbGVOYW1lKTtcbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgcGFzc2VkID09PSB0cnVlID8gW10gOiBbcmV0VG9rZW4xLCByZXRUb2tlbjJdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtyZXRUb2tlbjEudG9TdHJpbmcoKSwgcmV0VG9rZW4yLnRvU3RyaW5nKCldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBtdWx0aXBsZSBncm91cCByb2xlcyBhcmUgcHJlc2VudCBhbmQgdGhleSBkb24ndCBoYXZlIHVuaXF1ZSBsYWJlbHNcbiAgICAgICAgICogQWxzbywgY29uc2lkZXIgPGRldGFpbHM+IGVsZW1lbnQgd2hpY2ggaGFzIGltcGxpY2l0ICdncm91cCcgcm9sZVxuICAgICAgICAgKiBPcmlnaW46ICBDSTE2MiBXZWIgY2hlY2tsaXN0IGNoZWNrcG9pbnQgMi40YVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpncm91cFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBDb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB0aGF0IGlzIHNldCBieSB0aGUgcnVsZXNcbiAgICAgICAgICAgIC8vIEFsc28sIGNvbnNpZGVyIEltcGxpY2l0IHJvbGUgY2hlY2tpbmcuIFxuICAgICAgICAgICAgbGV0IGxhbmRtYXJrcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJncm91cFwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlR3JvdXBSb2xlc19JbXBsaWNpdFwiLCBudWxsKTtcbiAgICAgICAgICAgIGlmICghZHVwZXMpIHtcbiAgICAgICAgICAgICAgICBkdXBlcyA9IFJQVFV0aWwuZmluZEFyaWFMYWJlbER1cGVzKGxhbmRtYXJrcyk7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlR3JvdXBSb2xlc19JbXBsaWNpdFwiLCBkdXBlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgbXlMYWJlbCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUxhYmVsID09PSBcIlwiIHx8ICEobXlMYWJlbCBpbiBkdXBlcykgfHwgZHVwZXNbbXlMYWJlbF0gPD0gMTtcblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBydWxlQ29udGV4dCwgJycsICcnLCBbIG15TGFiZWwgXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbbXlMYWJlbF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSBXQUktQVJJQSB3aWRnZXQgZG9lcyBub3QgaGF2ZSBhbiBhY2Nlc3NpYmxlIG5hbWUgdmlhIGFuIEFSSUEgbGFiZWwgb3IgaW5uZXIgdGV4dFxuICAgICAgICAgKiBBbHNvLCBjb25zaWRlciB3aWRnZXRzIHdpdGggaW1wbGljaXQgcm9sZXMuXG4gICAgICAgICAqIE9yaWdpbjogIENJMTYyIFdlYiBjaGVja2xpc3QgY2hlY2twb2ludCAyLjRhXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9XaWRnZXRMYWJlbHNfSW1wbGljaXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLyogcmVtb3ZlZCB0aGUgcm9sZSBjaGVjayByb2xlPSBwcmVzZW50YXRpb24gYW5kIHJvbGU9bm9uZSBzaW5jZSB0aGVzZSAyIHJvbGVzIGFyZSBub3QgaW4gdGhlIGxpc3Qgb2Ygd2lkZ2V0IHR5cGUgcm9sZXMgKi9cbiAgICAgICAgICAgIGlmICgocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpID09PSBcImhpZGRlblwiKVxuICAgICAgICAgICAgICAgIHx8IChSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiY29tYm9ib3hcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgIShSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJ0ZXh0Ym94XCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJzZWFyY2hib3hcIikpKSkgeyAvLyB3ZSBuZWVkIHRvIGRpYWdub3NlIHRoYXQgYSBjb21ib2JveCBpbnB1dCB0ZXh0Ym94IGhhcyBhIGxhYmVsKGdpdGh1YiBpc3N1ZSAjMTEwNCkgXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBlbGVtUm9sZSA9IEFSSUFNYXBwZXIubm9kZVRvUm9sZShydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgdGFnTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZWQgYnkgV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcbiAgICAgICAgICAgIGxldCBza2lwUm9sZXMgPSBbXCJidXR0b25cIiwgXCJjaGVja2JveFwiLCBcImNvbWJvYm94XCIsXG4gICAgICAgICAgICAgICAgXCJsaXN0Ym94XCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIiwgXCJyYWRpb1wiLCBcInNlYXJjaGJveFwiLFxuICAgICAgICAgICAgICAgIFwic2xpZGVyXCIsIFwic3BpbmJ1dHRvblwiLCBcInN3aXRjaFwiLCBcInRleHRib3hcIiwgXCJwcm9ncmVzc2JhclwiLCBcImxpbmtcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgaWYgKHNraXBSb2xlcy5pbmNsdWRlcyhlbGVtUm9sZSkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKHRhZ05hbWUgPT09IFwib3V0cHV0XCJcbiAgICAgICAgICAgICAgICB8fCB0YWdOYW1lID09PSBcImlucHV0XCIgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKSA9PT0gXCJmaWxlXCIpIHtcblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gRm9ybS9pbnB1dCBlbGVtZW50cyBhcmUgY2hlY2tlZCBieSBHNDEsIHdlIHNraXAgdGhlbSBmcm9tIHRoaXMgcnVsZS4gR2l0aHViIGlzc3VlIDQ0OVxuICAgICAgICAgICAgICAgIGxldCBza2lwRWxlbWVudHMgPSBbXCJpbnB1dFwiLCBcInRleHRhcmVhXCIsIFwic2VsZWN0XCIsIFwiYnV0dG9uXCIsIFwiZGF0YWxpc3RcIiwgXCJvcHRncm91cFwiLCBcIm9wdGlvblwiLCBcImtleWdlblwiLCBcIm91dHB1dFwiLCBcInByb2dyZXNzXCIsIFwibWV0ZXJcIl07XG4gICAgICAgICAgICAgICAgaWYgKHNraXBFbGVtZW50cy5pbmRleE9mKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYXZvaWQgZGlhZ25vc2luZyB0aGUgcG9wdXAgbGlzdCBvZiBhIGNvbWJvYm94LlxuICAgICAgICAgICAgbGV0IHJvbGVzVG9DaGVjayA9IFtcImxpc3Rib3hcIiwgXCJ0cmVlXCIsIFwiZ3JpZFwiLCBcImRpYWxvZ1wiXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm9sZXNUb0NoZWNrLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCByb2xlc1RvQ2hlY2tbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb21ib2JveGVzID0gUlBUVXRpbC5nZXRFbGVtZW50c0J5Um9sZUhpZGRlbihydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbWJvYm94XCIsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGNvbWJvYm94ZXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb21ib2JveCA9IGNvbWJvYm94ZXNba107XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXJpYV9vd25zID0gUlBUVXRpbC5nZXRFbGVtZW50QXR0cmlidXRlKGNvbWJvYm94LCBcImFyaWEtb3duc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmlhX293bnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3ducyA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhhcmlhX293bnMudHJpbSgpKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvd25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvd25lZCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBvd25zW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG93bmVkID09PSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHByb2hpYml0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBkZXNpZ25QYXR0ZXJucyA9IEFSSUFEZWZpbml0aW9ucy5kZXNpZ25QYXR0ZXJucztcbiAgICAgICAgICAgIC8vZ2V0IGF0dHJpYnV0ZSByb2xlcyBhcyB3ZWxsIGFzIGltcGxpY2l0IHJvbGVzLlxuICAgICAgICAgICAgbGV0IHJvbGVzID0gUlBUVXRpbC5nZXRSb2xlcyhydWxlQ29udGV4dCwgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgbnVtV2lkZ2V0c1Rlc3RlZCA9IDA7XG4gICAgICAgICAgICBsZXQgaW50ZXJhY3RpdmVSb2xlVHlwZXMgPSBbXCJ3aWRnZXRcIiwgXCJsaXZlUmVnaW9uXCIsIFwid2luZG93XCJdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbmd0aCA9IHJvbGVzLmxlbmd0aDsgcGFzc2VkICYmIGkgPCBsZW5ndGg7ICsraSkge1xuXG4gICAgICAgICAgICAgICAgbGV0IHBhdHRlcm4gPSBkZXNpZ25QYXR0ZXJuc1tyb2xlc1tpXV07XG5cbiAgICAgICAgICAgICAgICBpZiAocGF0dGVyblxuICAgICAgICAgICAgICAgICAgICAmJiBwYXR0ZXJuLm5hbWVSZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAmJiBwYXR0ZXJuLnJvbGVUeXBlXG4gICAgICAgICAgICAgICAgICAgICYmIGludGVyYWN0aXZlUm9sZVR5cGVzLmluY2x1ZGVzKHBhdHRlcm4ucm9sZVR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICsrbnVtV2lkZ2V0c1Rlc3RlZDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBBbGwgd2lkZ2V0cyBtYXkgaGF2ZSBhbiBhdXRob3Igc3VwcGxpZWQgYWNjZXNzaWJsZSBuYW1lLlxuICAgICAgICAgICAgICAgICAgICAvLyBUaXRsZSBpcyBsZWdhbCwgYnV0IGRvbid0IGFkdmVydGlzZSBpdHMgdXNlIGluIGRvY3VtZW50YXRpb24uXG4gICAgICAgICAgICAgICAgICAgIC8vIEVuY291cmFnZSB1c2Ugb2YgYXJpYS1sYWJlbCwgYXJpYS1sYWJlbGxlZGJ5IG9yIGh0bWwgbGFiZWwgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpIHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwidGl0bGVcIikgfHwgUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4ocnVsZUNvbnRleHQsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHBhdHRlcm4ubmFtZUZyb20gJiYgcGF0dGVybi5uYW1lRnJvbS5pbmRleE9mKFwiY29udGVudHNcIikgPj0gMCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgd2lkZ2V0J3MgYWNjZXNzaWJsZSBuYW1lIGlzIHN1cHBsaWVkIGJ5IGVsZW1lbnQncyBpbm5lciB0ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBuYW1lRnJvbTogW1wiYXV0aG9yXCIsIFwiY29udGVudHNcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaGFzSW5uZXJDb250ZW50T3JBbHQocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHsgLy8gY2hlY2sgaWYgaXQgaGFzIGltcGxpY2l0IGxhYmVsLCBsaWtlIDxsYWJlbD48aW5wdXQgLi4uLj5hYmMgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaGFzSW1wbGljaXRMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBydWxlQ29udGV4dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW1nXCIgJiYgIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJvbGVcIikgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYWx0XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBET01VdGlsLmNsZWFuV2hpdGVzcGFjZShydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikpLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhdHRlcm4ubmFtZUZyb20uaW5kZXhPZihcInByb2hpYml0ZWRcIikgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvaGliaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChudW1XaWRnZXRzVGVzdGVkID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW2VsZW1Sb2xlXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vVE9ET1xuICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIGlmIChwcm9oaWJpdGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIG11bHRpcGxlIHRvb2xiYXJzIGFyZSBwcmVzZW50IGFuZCB0aGV5IGRvbid0IGhhdmUgdW5pcXVlIGxhYmVsc1xuICAgICAgICAgKiBPcmlnaW46ICBXQUktQVJJQVxuICAgICAgICAgKiBcdFx0XHRodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyN0b29sYmFyXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6dG9vbGJhclwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gQ29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgdGhhdCBpcyBzZXQgYnkgdGhlIHJ1bGVzXG4gICAgICAgICAgICAvLyBBbHNvLCBjb25zaWRlciBJbXBsaWNpdCByb2xlIGNoZWNraW5nLiBcbiAgICAgICAgICAgIGxldCBsYW5kbWFya3MgPSBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwidG9vbGJhclwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYW5kbWFya3MubGVuZ3RoID09PSAwIHx8IGxhbmRtYXJrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGR1cGVzID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsXCIsIG51bGwpO1xuICAgICAgICAgICAgaWYgKCFkdXBlcykge1xuICAgICAgICAgICAgICAgIGR1cGVzID0gUlBUVXRpbC5maW5kQXJpYUxhYmVsRHVwZXMobGFuZG1hcmtzKTtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUnB0X0FyaWFfTXVsdGlwbGVUb29sYmFyVW5pcXVlTGFiZWxcIiwgZHVwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IG15TGFiZWwgPSBSUFRVdGlsLmdldEFyaWFMYWJlbChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gbXlMYWJlbCAhPT0gXCJcIiAmJiAoIShteUxhYmVsIGluIGR1cGVzKSB8fCBkdXBlc1tteUxhYmVsXSA8PSAxKTtcblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW215TGFiZWxdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc0xhYmVsaW5nIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzQmxpbms6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiB0aGVyZSBpcyBhIGJsaW5rIGVsZW1lbnRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgRzExXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfQmxpbmtfQWx3YXlzVHJpZ2dlclwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpibGlua1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7IC8vIEVycm9yXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgQ1NTIHVzYWdlIHRoYXQgYmxpbmtzXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDc5XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfQmxpbmtfQ1NTVHJpZ2dlcjFcIixcbiAgICAgICAgY29udGV4dDogXCJkb206c3R5bGUsIGRvbToqW3N0eWxlXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHRleHRWYWx1ZSA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoJ3N0eWxlJykpIHtcbiAgICAgICAgICAgICAgICB0ZXh0VmFsdWUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0ZXh0VmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwidGV4dC1kZWNvcmF0aW9uOmJsaW5rXCIpID09IC0xO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNCbGluayB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0Jsb2NrcXVvdGU6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIDxibG9ja3F1b3RlPiB3aXRob3V0IGNpdGUsIG9yIHdpdGggY2l0ZSB0aGF0IGlzIG9ubHkgd2hpdGVzcGFjZS5cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfQmxvY2txdW90ZV9IYXNDaXRlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmJsb2NrcXVvdGVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImNpdGVcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIGxldCBjaXRlRWxlbXMgPSBSUFRVdGlsLmdldERvY0VsZW1lbnRzQnlUYWcocnVsZUNvbnRleHQsIFwiY2l0ZVwiKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBjaXRlRWxlbXMgIT0gbnVsbCAmJiBjaXRlRWxlbXMubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHF1b3RlcyBhcmUgdXNlZCB0aGF0IGFyZSBub3QgaW4gPHE+IG9yIDxibG9ja3F1b3RlPiBvciA8c2NyaXB0PlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzI2M1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBtaW5Xb3Jkczoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG1pbldvcmRzID0gdmFsaWRhdGVQYXJhbXMubWluV29yZHMudmFsdWU7XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHdhbGtOb2RlID0gcnVsZUNvbnRleHQuZmlyc3RDaGlsZCBhcyBOb2RlO1xuICAgICAgICAgICAgbGV0IHZpb2xhdGVkdGV4dCA9IG51bGw7XG4gICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIHdhbGtOb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gQ29tcGx5IHRvIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHdpbGwgYmUgZG9uZSBieSBkZWZhdWx0IGFzIHRoaXMgcnVsZSB0cmlnZ2VycyBvbiBlYWNoIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAvLyBhbmQgZm9yIGVhY2ggZWxlbWVudCBpdCBvbmx5IGNoZWNrcyB0aGF0IHNpbmdsZSBlbGVtZW50cyB0ZXh0IG5vZGVzIGFuZCBub3RoaW5nIGVsc2UuIFNvIGFsbCBpbm5lciBlbGVtZW50cyB3aWxsIGJlXG4gICAgICAgICAgICAgICAgLy8gY292ZXJlZCBvbiB0aGVpciBvd24uIEN1cnJlbnRseSBmb3IgdGhpcyBydWxlIGJ5IGRlZmF1bHQgQ2hlY2sgSGlkZGVuIENvbnRlbnQgd2lsbCB3b3JrLCBhcyB3ZSBhcmUgZG9pbmdcbiAgICAgICAgICAgICAgICAvLyBhIG5vZGUgd2FsayBvbmx5IG9uIHNpYmxpbmdzIHNvIGl0IHdvdWxkIG5vdCBnZXQgdGV4dCBub2RlcyBmcm9tIG90aGVyIHNpYmxpbmdzIGF0IGFsbC5cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSBpbiB0aGUgZnV0dXJlIHNvbWV0aGluZyBjaG5nZXMsIGp1c3QgbmVlZCB0byBhZGQgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih3YWxrTm9kZSkgdG8gdGhlIGJlbG93XG4gICAgICAgICAgICAgICAgLy8gaWYuXG4gICAgICAgICAgICAgICAgaWYgKHdhbGtOb2RlLm5vZGVOYW1lID09IFwiI3RleHRcIikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0VmFsID0gd2Fsa05vZGUubm9kZVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAvLyBEbyB0aGUgcmVnZXggdGVzdHMgZmlyc3QgLSBzaG91bGQgYmUgZmFzdFxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBhcG9zdHJvcGhlJ3NcbiAgICAgICAgICAgICAgICAgICAgdHh0VmFsID0gdHh0VmFsLnJlcGxhY2UoLyhcXFMpJyhcXFMpL2csIFwiJDEkMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRibFF1b3RlcyA9IHR4dFZhbC5tYXRjaCgvKFwiW15cIl0rXCIpL2cpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc25nbFF1b3RlcyA9IHR4dFZhbC5tYXRjaCgvKCdbXiddKycpL2cpO1xuICAgICAgICAgICAgICAgICAgICAvLyBXYWxrIHRoZSBwYXJlbnRzIC0gb25seSBjb250aW51ZSB0ZXN0aW5nIGlmIHdlIGZvdW5kIGEgcXVvdGUsIGJ1dFxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSdyZSBub3QgYWxyZWFkeSBtYXJrZWQgdXBcbiAgICAgICAgICAgICAgICAgICAgLy8gQWxzbyBza2lwIGlmIHdlJ3JlIGluIGEgc2NyaXB0IC0gdGhlcmUncyBsb3RzIG9mIHF1b3RlcyB1c2VkIGluIHNjcmlwdHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKChkYmxRdW90ZXMgIT0gbnVsbCB8fCBzbmdsUXVvdGVzICE9IG51bGwpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmdldEFuY2VzdG9yKHdhbGtOb2RlLCBbXCJibG9ja3F1b3RlXCIsIFwicVwiLCBcInNjcmlwdFwiLCBcInN0eWxlXCJdKSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGJsUXVvdGVzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCBkYmxRdW90ZXMubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwud29yZENvdW50KGRibFF1b3Rlc1tpXSkgPCBtaW5Xb3JkcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbmdsUXVvdGVzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCBzbmdsUXVvdGVzLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLndvcmRDb3VudChzbmdsUXVvdGVzW2ldKSA8IG1pbldvcmRzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgYW55IGxpbmVmZWVkIGluc2lkZSB0aGUgcXVvdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpb2xhdGVkdGV4dCA9IHR4dFZhbC5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxccj9cXFxcbnxcXFxcclwiLFwiZ1wiKSxcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYmxRdW90ZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGVkdGV4dCA9IHNuZ2xRdW90ZXMuam9pbihcIiwgXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChcIlxcXFxyP1xcXFxufFxcXFxyXCIsIFwiZ1wiKSwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzbmdsUXVvdGVzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9sYXRlZHRleHQgPSBkYmxRdW90ZXMuam9pbihcIiwgXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChcIlxcXFxyP1xcXFxufFxcXFxyXCIsIFwiZ1wiKSwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9sYXRlZHRleHQgPSBkYmxRdW90ZXMuY29uY2F0KHNuZ2xRdW90ZXMpLmpvaW4oXCIsIFwiKS5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxccj9cXFxcbnxcXFxcclwiLCBcImdcIiksIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhbGtOb2RlID0gd2Fsa05vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBpZiB3ZSdyZSBub3QgaW4gdGhlIGJvZHkgb3IgaWYgd2UncmUgaW4gYSBzY3JpcHQgb3IgY29kZSBzZWdtZW50XG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrQW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBbXCJib2R5XCIsIFwic2NyaXB0XCIsIFwiY29kZVwiXSk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gY2hlY2tBbmNlc3RvciA9PSBudWxsIHx8IGNoZWNrQW5jZXN0b3Iubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcImJvZHlcIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9pZiB0aGUgdmlvbGF0ZWR0ZXh0IGlzIGxvbmdlciB0aGFuIDY5IGNoYXJzLCBvbmx5IGtlZXAgdGhlIGZpcnN0IDMyLCB0aGUgXCIgLi4uIFwiLCBhbmQgdGhlIGxhc3QgMzIgY2hhcnMgXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiB2aW9sYXRlZHRleHQubGVuZ3RoICYmIHZpb2xhdGVkdGV4dC5sZW5ndGggPiA2OSkge1xuICAgICAgICAgICAgICAgIHZpb2xhdGVkdGV4dCA9IHZpb2xhdGVkdGV4dC5zdWJzdHJpbmcoMCwgMzIpICsgXCIgLi4uIFwiICsgdmlvbGF0ZWR0ZXh0LnN1YnN0cmluZyh2aW9sYXRlZHRleHQubGVuZ3RoLTMyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFt2aW9sYXRlZHRleHRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzQmxvY2txdW90ZSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzLCBSdWxlQ29udGV4dEhpZXJhcmNoeSB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuaW1wb3J0IHsgQW5jZXN0b3JVdGlsIH0gZnJvbSBcIi4uL3V0aWwvYW5jZXN0b3JcIjtcblxubGV0IGExMXlSdWxlc0JvZHk6IFJ1bGVbXSA9IFtcbiAgICB7XG4gICAgICAgIGlkOiBcIldDQUcyMF9Cb2R5X0ZpcnN0QVNraXBzX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmJvZHlcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSwgY29udGV4dEhpZXJhcmNoaWVzPzogUnVsZUNvbnRleHRIaWVyYXJjaHkpOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIC8vIFRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSBpbnNpZGUgYSBwcmVzZW50YXRpb25hbCBmcmFtZVxuICAgICAgICAgICAgaWYgKEFuY2VzdG9yVXRpbC5pc1ByZXNlbnRhdGlvbkZyYW1lKGNvbnRleHRIaWVyYXJjaGllcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIGFuY2hvcnMgb24gdGhlIHBhZ2VcbiAgICAgICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuXG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgbGFuZG1hcmtzIGZpcnN0XG4gICAgICAgICAgICBsZXQgcGFzc2VkO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiSUJNX2hhc0xhbmRtYXJrc19JbXBsaWNpdFwiLCBudWxsKSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiSUJNX2hhc0xhbmRtYXJrc19JbXBsaWNpdFwiLCBSUFRVdGlsLmdldEVsZW1lbnRzQnlSb2xlSGlkZGVuKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFtcImFwcGxpY2F0aW9uXCIsIFwiYmFubmVyXCIsIFwiY29tcGxlbWVudGFyeVwiLCBcImNvbnRlbnRpbmZvXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZm9ybVwiLCBcIm1haW5cIiwgXCJuYXZpZ2F0aW9uXCIsIFwic2VhcmNoXCJcbiAgICAgICAgICAgICAgICBdLCB0cnVlLCB0cnVlKS5sZW5ndGggPiAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiSUJNX2hhc0xhbmRtYXJrc19JbXBsaWNpdFwiLCBmYWxzZSk7XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7IC8vIE5vIGxhbmRtYXJrcywgY2hlY2sgZm9yIHNraXAgbGlua3NcbiAgICAgICAgICAgICAgICBsZXQgYW5jaG9ycyA9IFJQVFV0aWwuZ2V0RG9jRWxlbWVudHNCeVRhZyhydWxlQ29udGV4dCwgXCJhXCIpO1xuXG4gICAgICAgICAgICAgICAgLy8gU2tpcCBhbmNob3Igc2hvdWxkIGJlIHRoZSBmaXJzdCBvbmUgb24gdGhlIHBhZ2Ugd2l0aCBhbiBocmVmIGF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgIGxldCB0ZXN0QW5jaG9yID0gbnVsbDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFuY2hvcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2hvcnNbaV0uaGFzQXR0cmlidXRlKFwiaHJlZlwiKSAmJiBSUFRVdGlsLmlzTm9kZVZpc2libGUoYW5jaG9yc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RBbmNob3IgPSBhbmNob3JzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBQdWxsIG91dCB0aGUgdGFyZ2V0IGlkXG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldElkID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGVzdEFuY2hvciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBocmVmU3RyID0gdGVzdEFuY2hvci5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaWR4ID0gaHJlZlN0ci5pbmRleE9mKFwiI1wiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0SWQgPSBocmVmU3RyLnN1YnN0cmluZyhpZHggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlcmUgaXMgYW4gZWxlbWVudCBpZCBvciBuYW1lZCBhbmNob3Igb24gdGhlIHBhZ2Ugd2l0aCB0aGlzXG4gICAgICAgICAgICAgICAgLy8gdGFyZ2V0IGlkLlxuXG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldElkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZG9jLmdldEVsZW1lbnRCeUlkKHRhcmdldElkKSAhPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXBhc3NlZCAmJiBpIDwgYW5jaG9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhbmNob3JzW2ldLmhhc0F0dHJpYnV0ZShcImhyZWZcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzW2ldLmhhc0F0dHJpYnV0ZShcIm5hbWVcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JzW2ldLmdldEF0dHJpYnV0ZShcIm5hbWVcIikgPT0gdGFyZ2V0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIFtdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBza2lwIHRleHQgZG9lcyBub3QgY29udGFpbiBjZXJ0YWluIHRleHQgc3RyaW5ncyBhbmRcbiAgICAgICAgICogIHRoZXJlIGFyZSBubyBsYW5kbWFya3MgdXNlZCBvbiB0aGUgcGFnZS5cbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgRzFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9Cb2R5X0ZpcnN0QUNvbnRhaW5zU2tpcFRleHRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Ym9keVwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcIldDQUcyMF9Cb2R5X0ZpcnN0QVNraXBzX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCJdLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBwYXJhbVNraXBUZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXCJza2lwXCIsIFwianVtcFwiXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJbc3RyaW5nXVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgYW5jaG9ycyBvbiB0aGUgcGFnZVxuICAgICAgICAgICAgbGV0IGRvYyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQ7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGZvciBsYW5kbWFya3MgZmlyc3RcbiAgICAgICAgICAgIGxldCBwYXNzZWQ7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJJQk1faGFzTGFuZG1hcmtzX0ltcGxpY2l0XCIsIG51bGwpID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5zZXRDYWNoZShydWxlQ29udGV4dCwgXCJJQk1faGFzTGFuZG1hcmtzX0ltcGxpY2l0XCIsIFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgW1wiYXBwbGljYXRpb25cIiwgXCJiYW5uZXJcIiwgXCJjb21wbGVtZW50YXJ5XCIsIFwiY29udGVudGluZm9cIixcbiAgICAgICAgICAgICAgICAgICAgXCJmb3JtXCIsIFwibWFpblwiLCBcIm5hdmlnYXRpb25cIiwgXCJzZWFyY2hcIlxuICAgICAgICAgICAgICAgIF0sIHRydWUsIHRydWUpLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJJQk1faGFzTGFuZG1hcmtzX0ltcGxpY2l0XCIsIGZhbHNlKTtcblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHsgLy8gTm8gbGFuZG1hcmtzLCBjaGVjayBmb3Igc2tpcCBsaW5rc1xuICAgICAgICAgICAgICAgIGxldCBsaW5rcyA9IGRvYy5saW5rcztcbiAgICAgICAgICAgICAgICAvLyBTa2lwIGxpbmsgc2hvdWxkIGJlIHRoZSBmaXJzdCBvbmUgb24gdGhlIHBhZ2Ugd2l0aCBhbiBocmVmIGF0dHJpYnV0ZSAoaS5lLiwgbGlua3NbMF0pXG4gICAgICAgICAgICAgICAgLy8gYWxzbyBpZiB0aGUgZmlyc3QgbGluayBpcyBoaWRkZW4gdGhlbiB3ZSBzaG91bGQgYWxzbyB0cmlnZ2VyIGEgdmlvbGF0aW9uLlxuICAgICAgICAgICAgICAgIGlmIChsaW5rcyAmJiBsaW5rcy5sZW5ndGggPiAwICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShsaW5rc1swXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRlc3RUZXh0ID0gUlBUVXRpbC5nZXRJbm5lclRleHQoZG9jLmxpbmtzWzBdKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXBhc3NlZCAmJiBpIDwgdmFsaWRhdGVQYXJhbXMucGFyYW1Ta2lwVGV4dC52YWx1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdGVzdFRleHQuaW5kZXhPZih2YWxpZGF0ZVBhcmFtcy5wYXJhbVNraXBUZXh0LnZhbHVlW2ldKSAhPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBwYXNzZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cbl1cbmV4cG9ydCB7IGExMXlSdWxlc0JvZHkgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzQ2FudmFzOiBSdWxlW10gPSBbXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZSBpbm5lciBodG1sIG9mIGEgY2FudmFzIGVsZW1lbnQgaXMgZW1wdHlcbiAgICAgICAgICogT3JpZ2luOiAgSFRNTCA1IC0gcGVyIFJpY2hhcmQgU2Nod2VyZHRmZWdlcidzIHJlcXVpcmVtZW50cy4gZzExNDNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfQ2FudmFzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmNhbnZhc1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBydWxlQ29udGV4dC5pbm5lckhUTUwudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVNYW51YWwoXCJNYW51YWxfMVwiKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzQ2FudmFzIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgUlBUVXRpbCwgUlBUVXRpbFN0eWxlLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNDb2xvcjogUnVsZVtdID0gW1xuICAgIHtcbiAgICAgICAgXCJpZFwiOiBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQVwiLFxuICAgICAgICBcImNvbnRleHRcIjogXCJkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAvLyBhdm9pZCBkaWFnbm9zaW5nIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCB2aXNpYmxlXG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShydWxlQ29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAoUlBUVXRpbC5oaWRkZW5CeURlZmF1bHRFbGVtZW50cyAhPSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMuaW5kZXhPZihub2RlTmFtZSkgPiAtMSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhpcyBlbGVtZW50IGhhcyBjaGlsZHJlbiB3aXRoIGFjdHVhbCB0ZXh0LlxuICAgICAgICAgICAgbGV0IGNoaWxkU3RyID0gXCJcIjtcbiAgICAgICAgICAgIGxldCBjaGlsZE5vZGVzID0gcnVsZUNvbnRleHQuY2hpbGROb2RlcztcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVzW2ldLm5vZGVUeXBlID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRTdHIgKz0gY2hpbGROb2Rlc1tpXS5ub2RlVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGlmIChjaGlsZFN0ci50cmltKCkubGVuZ3RoID09IDApXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICAgICAgaWYgKCFkb2MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB3aW4gPSBkb2MuZGVmYXVsdFZpZXc7XG4gICAgICAgICAgICBpZiAoIXdpbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHN0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8vIEpDSCBjbGlwIElORk86XG4gICAgICAgICAgICAvLyAgICAgIFRoZSBjbGlwIHByb3BlcnR5IGxldHMgeW91IHNwZWNpZnkgYSByZWN0YW5nbGUgdG8gY2xpcCBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudC4gXG4gICAgICAgICAgICAvLyAgICAgIFRoZSByZWN0YW5nbGUgc3BlY2lmaWVkIGFzIGZvdXIgY29vcmRpbmF0ZXMsIGFsbCBmcm9tIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIGVsZW1lbnQgdG8gYmUgY2xpcHBlZC5cbiAgICAgICAgICAgIC8vICAgICAgUHJvcGVydHkgdmFsdWVzOlxuICAgICAgICAgICAgLy8gICAgICAgICAgbm9uZSAgICAgICAgVGhpcyBpcyBkZWZhdWx0LiBObyBjbGlwcGluZyBpcyBkb25lXG4gICAgICAgICAgICAvLyAgICAgICAgICBhdXRvICAgICAgICBObyBjbGlwcGluZyB3aWxsIGJlIGRvbmVcbiAgICAgICAgICAgIC8vICAgICAgICAgIHNoYXBlICAgICAgIFRoZSBvbmx5IHZhbGlkIHZhbHVlIGlzOiByZWN0ICh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpXG4gICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICBlLmcuLCBjbGlwOiByZWN0KDEwcHgsIDIwcHgsIDMwcHgsIDQwcHgpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgTm90ZTogdGhlIGZvdXIgdmFsdWVzIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyBtYXJnaW4vcGFkZGluZ1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgVGhlIHJlY3QgdmFsdWVzIGFyZSBwb3NpdGl2ZSBwaXhlbCB2YWx1ZXMsIGUuZy4sIDEwcHgsIGV0Yy5cbiAgICAgICAgICAgIC8vICAgICAgICAgIG1hcmdpbi1ib3ggIFVzZXMgdGhlIG1hcmdpbiBib3ggYXMgdGhlIHJlZmVyZW5jZSBib3hcbiAgICAgICAgICAgIC8vICAgICAgICAgIGJvcmRlci1ib3ggIFVzZXMgdGhlIGJvcmRlciBib3ggYXMgdGhlIHJlZmVyZW5jZSBib3hcbiAgICAgICAgICAgIC8vICAgICAgICAgIHBhZGRpbmctYm94IFVzZXMgdGhlIHBhZGRpbmcgYm94IGFzIHRoZSByZWZlcmVuY2UgYm94XG4gICAgICAgICAgICAvLyAgICAgICAgICBjb250ZW50LWJveFxuICAgICAgICAgICAgLy8gICAgICAgICAgZmlsbC1ib3hcbiAgICAgICAgICAgIC8vICAgICAgICAgIHN0cm9rZS1ib3hcbiAgICAgICAgICAgIC8vICAgICAgTk9URTogdGhlIENTUyBjbGlwIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgICAgIC8vICAgICAgQWxzbzogY2xpcCBvbmx5IHdvcmtzIGlmIHRoZSBlbGVtZW50IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBhbmQgY2FuIG9ubHkgZG8gcmVjdGFuZ2xlc1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgZWxlbWVudCB2aXNpYmxlXG4gICAgICAgICAgICBsZXQgdmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICBpZiAoc3R5bGUud2lkdGggIT09IFwiMFwiICYmXG4gICAgICAgICAgICAgICAgc3R5bGUuaGVpZ2h0ICE9PSBcIjBcIiAmJlxuICAgICAgICAgICAgICAgIHN0eWxlLm9wYWNpdHkgIT09IFwiMFwiICYmXG4gICAgICAgICAgICAgICAgc3R5bGUuZGlzcGxheSAhPT0nbm9uZScgJiZcbiAgICAgICAgICAgICAgICBzdHlsZS52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJyAmJiBcbiAgICAgICAgICAgICAgICBzdHlsZS5vdmVyZmxvdyAhPT0gJ2hpZGRlbicgJiYgXG4gICAgICAgICAgICAgICAgLy8gbGVmdCBhbmQgcmlnaHQgd29yayB3aXRoIGFsbCBhYnNvbHV0ZSB1bml0c1xuICAgICAgICAgICAgICAgIChzdHlsZS5sZWZ0ID09PSBcImF1dG9cIiB8fCAoc3R5bGUucG9zaXRpb24gPT09ICdhYnNvbHV0ZScgJiYgcGFyc2VJbnQoc3R5bGUubGVmdC5yZXBsYWNlKC9bXjAtOS4rLV0vLCAnJykpID4gMCkpICYmXG4gICAgICAgICAgICAgICAgKHN0eWxlLmxlZnQgPT09IFwiYXV0b1wiIHx8IChzdHlsZS5wb3NpdGlvbiA9PT0gJ2Fic29sdXRlJyAmJiBwYXJzZUludChzdHlsZS50b3AucmVwbGFjZSgvW14wLTkuKy1dLywgJycpKSA+IDApKSkgeyBcbiAgICAgICAgICAgICAgICB2aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImVsZW1lbnQgSVMgdmlzaWJsZVwiKTtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkNIRUNLIENPTE9SIENPTlRSQVNUIHVubGVzcyB0byBzbWFsbFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZWxlbWVudCBOT1QgdmlzaWJsZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRE8gTk9UIENIRUNLIENPTE9SIENPTlRSQVNUXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG5cbiAgICAgICAgICAgIGxldCBjbGlwSGVpZ2h0ID0gLTE7XG4gICAgICAgICAgICBpZiAoc3R5bGUuY2xpcCAhPT0gXCJhdXRvXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2xpcFN0cmluZyA9IHN0eWxlLmNsaXAudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2xpcFN0cmluZy5pbmNsdWRlcyhcInJlY3RcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlQnJhY2tldHMgPSAvXFwoKC4qKVxcKS9nO1xuICAgICAgICAgICAgICAgICAgdmFyIGxpc3RPZlRleHQgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHZhciBmb3VuZCA9IHJlQnJhY2tldHMuZXhlYyhjbGlwU3RyaW5nKTtcbiAgICAgICAgICAgICAgICAgIHZhciBmb3VuZEFyciA9IGZvdW5kWzFdLnNwbGl0KCcsICcpO1xuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGZvdW5kQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZm91bmRBcnJbXCIsaSxcIl0gPSBcIixmb3VuZEFycltpXSk7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RPZlRleHQucHVzaChmb3VuZEFycltpXSk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImxpc3RPZlRleHQgPSBcIixsaXN0T2ZUZXh0KTtcbiAgICAgICAgICAgICAgICBjbGlwSGVpZ2h0ID0gcGFyc2VJbnQobGlzdE9mVGV4dFswXS5yZXBsYWNlKC9weC9nLCAnJykpIC0gcGFyc2VJbnQobGlzdE9mVGV4dFsyXS5yZXBsYWNlKC9weC9nLCAnJykpO1xuICAgICAgICAgICAgICAgIGNsaXBIZWlnaHQgPSBNYXRoLmFicyhjbGlwSGVpZ2h0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSkNIIGNsaXAtcGF0aCBJTkZPOlxuICAgICAgICAgICAgLy8gICAgICBFeGNlbGxlbnQgYXJ0aWNsZSBvbiBjbGlwLXBhdGg6IGh0dHBzOi8vaXNoYWRlZWQuY29tL2FydGljbGUvY2xpcC1wYXRoL1xuICAgICAgICAgICAgLy8gICAgICBjbGlwLXBhdGggaXMgYSB0b3RhbGx5IGRpZmZlcmVudCBhbmltYWwgd2l0aCBtYW55LCBtYW55IGRpZmZlcmVudCB2YXJpYXRpb25zXG4gICAgICAgICAgICAvLyAgICAgIFRoZSBnb2FsIHdhcyBmb3IgaXQgdG8gbm90IGJlIGFzIGxpbWl0ZWQgYXMgY2xpcFxuICAgICAgICAgICAgLy8gICAgICBUaGUgc3ludGF4IGlzIG1vcmUgY29tcGxpY2F0ZWQgKGFzIGl0IGRvZXMgbW9yZSkgYW5kIGl0IGlzIGRpZmZlcmVudCBmcm9tIGNsaXAsXG4gICAgICAgICAgICAvLyAgICAgIGUuZy4sIHRoZSBhYm92ZSBjbGlwIHJlY3RhbmdsZSB3b3VsZCBiZSBjbGlwLXBhdGg6IGluc2V0KDEwcHggMjBweCAzMHB4IDQwcHgpO1xuICAgICAgICAgICAgLy8gICAgICBOb3RlOiB0aGVyZSBhcmUgbm8gY29tbWFzXG4gICAgICAgICAgICAvLyAgICAgIEFsc28sIGl0IGNhbiB0YWtlIHNpbmdsZSB2YWx1ZXMgdG8gbWFrZSBhbGwgc2lkZXMgdGhlIHNhbWUsIG9yIDIgdmFsdWVzICh2ZXJ0L2hvcmkpLlxuICAgICAgICAgICAgLy8gICAgICBvciAzIHZhbHVlcyAodG9wL2hvcmkvYm90dG9tKVxuICAgICAgICAgICAgLy8gICAgICBBbmQgcGVyY2VudGFnZXMgY2FuIHdvcmtzIGFzIHdlbGwgYXMgcHhcbiAgICAgICAgICAgIC8vICAgICAgXG4gICAgICAgICAgICAvLyAgICAgIEFsdGhvdWdoIHRoZXJlIGFyZSBmaXZlIGRpZmZlcmVudCBzaGFwZXM6IGluc2V0ICh0ZXJtIHVzZWQgZm9yIHJlY3RhbmdsZSksIGNpcmNsZSxcbiAgICAgICAgICAgIC8vICAgICAgICAgIGVsbGlwc2UsIHBvbHlnb24sIHBhdGggLSB3ZSB3aWxsIG9ubHkgY29uY2VybiBvdXJzZWx2ZXMgd2l0aCBpbnNldFxuICAgICAgICAgICAgLy8gICAgICBUaGVyZSBhcmUgNyBib3ggdmFsdWVzOiBtYXJnaW4tYm94LCBib3JkZXItYm94LCBwYWRkaW5nLWJveCwgY29udGVudC1ib3gsIGZpbGwtYm94LCBzdHJva2UtYm94LCB2aWV3LWJveFxuICAgICAgICAgICAgLy8gICAgICBCb3ggYW5kIHNoYXBlIHZhbHVlcyBtYXkgYmUgY29tYmluZWQ6IGNsaXAtcGF0aDogcGFkZGluZy1ib3ggY2lyY2xlKDUwcHggYXQgMCAxMDBweCk7XG4gICAgICAgICAgICAvLyAgICAgIE5PVEU6IHRoZSBib3ggdmFsdWVzIGFyZSBOT1QgaW50dWl0aXZlLCBzZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9DU1NfU2hhcGVzL0Zyb21fYm94X3ZhbHVlcyNtYXJnaW4tYm94XG4gICAgICAgICAgICAvLyAgICAgIFxuICAgICAgICAgICAgLy8gICAgICBTbyB0aGUga2V5IHF1ZXN0aW9uIGlzIHdoYXQgYW1vdW50IG9mIGVmZm9ydCBkbyB3ZSB3YW50IHRvIGludmVzdCBpbnRvIGNsaXAtcGF0aFxuICAgICAgICAgICAgLy8gXG5cbiAgICAgICAgICAgIC8vIEpDSCBkb24ndCBkbyBjbGlwLXBhdGggbm93IFxuICAgICAgICAgICAgbGV0IGNsaXBQYXRoSGVpZ2h0ID0gLTE7XG4gICAgICAgICAgICAvLyBpZiAoc3R5bGUuY2xpcFBhdGggIT09IFwiYXV0b1wiKSB7XG4gICAgICAgICAgICAvLyAgICAgY29uc29sZS5sb2coXCJzdHlsZS5jbGlwUGF0aCA9IFwiLHN0eWxlLmNsaXBQYXRoKTtcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcInN0eWxlLmNsaXBQYXRoLnRvU3RyaW5nID0gXCIsc3R5bGUuY2xpcFBhdGgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAvLyAgICAgbGV0IGNsaXBTdHJpbmcgPSBzdHlsZS5jbGlwUGF0aC50b1N0cmluZygpO1xuICAgICAgICAgICAgLy8gICAgIGlmIChjbGlwU3RyaW5nLmluY2x1ZGVzKFwiaW5zZXRcIikpIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgdmFyIHJlQnJhY2tldHMgPSAvXFwoKC4qKVxcKS9nO1xuICAgICAgICAgICAgLy8gICAgICAgdmFyIGxpc3RPZlRleHQgPSBbXTtcbiAgICAgICAgICAgIC8vICAgICAgIHZhciBmb3VuZCA9IHJlQnJhY2tldHMuZXhlYyhjbGlwU3RyaW5nKTtcbiAgICAgICAgICAgIC8vICAgICAgIHZhciBmb3VuZEFyciA9IGZvdW5kWzFdLnNwbGl0KCcgJyk7XG4gICAgICAgICAgICAvLyAgICAgICBmb3IgKGxldCBpPTA7IGk8Zm91bmRBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coXCJmb3VuZEFycltcIixpLFwiXSA9IFwiLGZvdW5kQXJyW2ldKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgbGlzdE9mVGV4dC5wdXNoKGZvdW5kQXJyW2ldKTtcbiAgICAgICAgICAgIC8vICAgICAgIH07XG4gICAgICAgICAgICAvLyAgICAgfVxuICAgICAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKFwibGlzdE9mVGV4dCA9IFwiLGxpc3RPZlRleHQpO1xuICAgICAgICAgICAgICAgIC8vIGNsaXBQYXRoSGVpZ2h0ID0gcGFyc2VJbnQobGlzdE9mVGV4dFswXS5yZXBsYWNlKC9weC9nLCAnJykpIC0gcGFyc2VJbnQobGlzdE9mVGV4dFsyXS5yZXBsYWNlKC9weC9nLCAnJykpO1xuICAgICAgICAgICAgICAgIC8vIGNsaXBQYXRoSGVpZ2h0ID0gTWF0aC5hYnMoY2xpcEhlaWdodCk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcImNsaXBQYXRoSGVpZ2h0ID0gXCIsIGNsaXBQYXRoSGVpZ2h0KTtcblxuICAgICAgICAgICAgLy8gaWYgKHN0eWxlLnBvc2l0aW9uID09PSBcImFic29sdXRlXCIgJiYgc3R5bGUuY2xpcCA9PT0gXCJyZWN0KDBweCwgMHB4LCAwcHgsIDBweClcIiAmJiBzdHlsZS5vdmVyZmxvdyAhPT0gXCJ2aXNpYmxlXCIpIHtcbiAgICAgICAgICAgIC8vIEpDSCBhcmJpdHJhcmlseSB1c2UgbGVzcyB0aGF0IDdweCBmb3IgY2xpcEhlaWdodFxuICAgICAgICAgICAgaWYgKHN0eWxlLnBvc2l0aW9uID09PSBcImFic29sdXRlXCIgJiYgY2xpcEhlaWdodCA8IDcgJiYgY2xpcEhlaWdodCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkRPIE5PVCBDSEVDSyBDT0xPUiBDT05UUkFTVCBiZWNhdXNlIHRvbyBzbWFsbFwiKTtcbiAgICAgICAgICAgICAgICAvLyBDb3JuZXIgY2FzZSB3aGVyZSBpdGVtIGlzIGhpZGRlbiAoYWNjZXNzaWJpbGl0eSBoaWRpbmcgdGVjaG5pcXVlKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmlyc3QgZGV0ZXJtaW5lIHRoZSBjb2xvciBjb250cmFzdCByYXRpb1xuICAgICAgICAgICAgbGV0IGNvbG9yQ29tYm8gPSBSUFRVdGlsLkNvbG9yQ29tYm8ocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IGZnID0gY29sb3JDb21iby5mZztcbiAgICAgICAgICAgIGxldCBiZyA9IGNvbG9yQ29tYm8uYmc7XG4gICAgICAgICAgICBsZXQgcmF0aW8gPSBmZy5jb250cmFzdFJhdGlvKGJnKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiZmcgPSBcIiwgZmcsIFwiICAgYmcgPSBcIiwgYmcsIFwiICAgcmF0aW8gPSBcIiwgcmF0aW8pO1xuICAgICAgICAgICAgbGV0IHdlaWdodCA9IFJQVFV0aWxTdHlsZS5nZXRXZWlnaHROdW1iZXIoc3R5bGUuZm9udFdlaWdodCk7XG4gICAgICAgICAgICBsZXQgc2l6ZSA9IFJQVFV0aWxTdHlsZS5nZXRGb250SW5QaXhlbHMoc3R5bGUuZm9udFNpemUpO1xuICAgICAgICAgICAgbGV0IGlzTGFyZ2VTY2FsZSA9IHNpemUgPj0gMjQgfHwgc2l6ZSA+PSAxOC42ICYmIHdlaWdodCA+PSA3MDA7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gcmF0aW8gPj0gNC41IHx8IChyYXRpbyA+PSAzICYmIGlzTGFyZ2VTY2FsZSk7XG4gICAgICAgICAgICBsZXQgaGFzQmFja2dyb3VuZCA9IGNvbG9yQ29tYm8uaGFzQkdJbWFnZSB8fCBjb2xvckNvbWJvLmhhc0dyYWRpZW50O1xuXG4gICAgICAgICAgICBsZXQgaXNEaXNhYmxlZCA9IFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRyb2wgPSBSUFRVdGlsLmdldENvbnRyb2xPZkxhYmVsKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkID0gUlBUVXRpbC5pc05vZGVEaXNhYmxlZChjb250cm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCAmJiBub2RlTmFtZSA9PT0gJ2xhYmVsJyAmJiBSUFRVdGlsLmlzRGlzYWJsZWRCeUZpcnN0Q2hpbGRGb3JtRWxlbWVudChydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkID0gdHJ1ZTsgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNEaXNhYmxlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJpZFwiKSAmJiBSUFRVdGlsLmlzRGlzYWJsZWRCeVJlZmVycmluZ0VsZW1lbnQocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0LCBcIkVYVF9Db2xvcl9Db250cmFzdF9XQ0FHMkFBXCIsIHtcbiAgICAgICAgICAgICAgICBcInJhdGlvXCI6IHJhdGlvLFxuICAgICAgICAgICAgICAgIFwiaXNMYXJnZVNjYWxlXCI6IGlzTGFyZ2VTY2FsZSxcbiAgICAgICAgICAgICAgICBcIndlaWdodFwiOiB3ZWlnaHQsXG4gICAgICAgICAgICAgICAgXCJzaXplXCI6IHNpemUsXG4gICAgICAgICAgICAgICAgXCJoYXNCYWNrZ3JvdW5kXCI6IGhhc0JhY2tncm91bmQsXG4gICAgICAgICAgICAgICAgXCJpc0Rpc2FibGVkXCI6IGlzRGlzYWJsZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGhhc0JhY2tncm91bmQpIHtcbiAgICAgICAgICAgICAgICAvLyBBbGxvdyBvdGhlciBjb2xvciBydWxlIHRvIGZpcmUgaWYgd2UgaGF2ZSBhIGJhY2tncm91bmRcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgZWxlbWVudCBvciBwYXJlbnQgaXMgZGlzYWJsZWQsIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSAoYnV0IG1heSBiZSAzOjEgaW4gZnV0dXJlKVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChwYXNzZWQsIFtydWxlQ29udGV4dF0sICcnLCAnJywgW3JhdGlvLnRvRml4ZWQoMiksIHNpemUsIHdlaWdodCwgZmcudG9IZXgoKSwgYmcudG9IZXgoKSwgY29sb3JDb21iby5oYXNCR0ltYWdlLCBjb2xvckNvbWJvLmhhc0dyYWRpZW50XSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIGlmIChmZy50b0hleCgpID09PSBiZy50b0hleCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIiwgW3JhdGlvLnRvRml4ZWQoMiksIHNpemUsIHdlaWdodCwgZmcudG9IZXgoKSwgYmcudG9IZXgoKSwgY29sb3JDb21iby5oYXNCR0ltYWdlLCBjb2xvckNvbWJvLmhhc0dyYWRpZW50XSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtyYXRpby50b0ZpeGVkKDIpLCBzaXplLCB3ZWlnaHQsIGZnLnRvSGV4KCksIGJnLnRvSGV4KCksIGNvbG9yQ29tYm8uaGFzQkdJbWFnZSwgY29sb3JDb21iby5oYXNHcmFkaWVudF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsW3JhdGlvLnRvRml4ZWQoMiksIHNpemUsIHdlaWdodCwgZmcudG9IZXgoKSwgYmcudG9IZXgoKSwgY29sb3JDb21iby5oYXNCR0ltYWdlLCBjb2xvckNvbWJvLmhhc0dyYWRpZW50XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgXCJpZFwiOiBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQV9QVlwiLFxuICAgICAgICBcImNvbnRleHRcIjogXCJkb206KlwiLFxuICAgICAgICBcImRlcGVuZGVuY2llc1wiOiBbXCJJQk1BX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgLy8gYXZvaWQgZGlhZ25vc2luZyBkaXNhYmxlZCBub2RlcyBvciB0aG9zZSB0aGF0IGFyZSBub3QgdmlzaWJsZS5cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZURpc2FibGVkKHJ1bGVDb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICFSUFRVdGlsLmlzTm9kZVZpc2libGUocnVsZUNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgKFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzLmluZGV4T2Yobm9kZU5hbWUpID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcHJlY2FsYyA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiRVhUX0NvbG9yX0NvbnRyYXN0X1dDQUcyQUFcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoIXByZWNhbGMpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBwcmVjYWxjLnJhdGlvID49IDQuNSB8fCAocHJlY2FsYy5yYXRpbyA+PSAzICYmIHByZWNhbGMuaXNMYXJnZVNjYWxlKTtcblxuICAgICAgICAgICAgLy8gSWYgZWxlbWVudCBvciBwYXJlbnQgaXMgZGlzYWJsZWQsIHRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSAoYnV0IG1heSBiZSAzOjEgaW4gZnV0dXJlKVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgcHJlY2FsYy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFtwcmVjYWxjLnJhdGlvLnRvRml4ZWQoMiksIHByZWNhbGMuc2l6ZSwgcHJlY2FsYy53ZWlnaHRdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsW3ByZWNhbGMucmF0aW8udG9GaXhlZCgyKSwgcHJlY2FsYy5zaXplLCBwcmVjYWxjLndlaWdodF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIFwiaWRcIjogXCJJQk1BX0xpbmtfQ29udHJhc3RfV0NBRzJBQVwiLFxuICAgICAgICBcImNvbnRleHRcIjogXCJhW2hyZWZdIHwgKltvbmNsaWNrXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHRoaXNDb2xvckNvbWJvID0gUlBUVXRpbC5Db2xvckNvbWJvKHJ1bGVDb250ZXh0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBjYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiRVhUX0xpbmtfQ29udHJhc3RfV0NBRzJBQVwiLCBudWxsKVxuICAgICAgICAgICAgaWYgKGNhY2hlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUgPSB7fTtcblxuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoaXMgbGluayBoYXMgY2hpbGRyZW4gd2l0aCBhY3R1YWwgdGV4dC5cbiAgICAgICAgICAgICAgICBsZXQgY2hpbGRTdHIgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGxldCBjaGlsZE5vZGVzID0gcnVsZUNvbnRleHQuY2hpbGROb2RlcztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkTm9kZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZXNbaV0ubm9kZVR5cGUgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRTdHIgKz0gY2hpbGROb2Rlc1tpXS5ub2RlVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkU3RyLnRyaW0oKS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuXG4gICAgICAgICAgICAgICAgLy8gRGVmaW5lIGhlbHBlcnNcbiAgICAgICAgICAgICAgICBsZXQgZG9jID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudDtcbiAgICAgICAgICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCB3aW4gPSBkb2MuZGVmYXVsdFZpZXc7XG4gICAgICAgICAgICAgICAgaWYgKCF3aW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBpc0xpbmsgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PSAxICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoKG5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PSBcIkFcIiAmJiBub2RlLmhhc0F0dHJpYnV0ZShcImhyZWZcIikpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5oYXNBdHRyaWJ1dGUoXCJvbmNsaWNrXCIpKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IGlzSXRlbSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9IDEpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PSBcIkJSXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXBTdHlsZSA9IG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKG5vZGUsIG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBTdHlsZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29tcFN0eWxlLmRpc3BsYXkgIT0gXCJpbmxpbmVcIjtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IHRoaXNTdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBsZXQgdGhpc1dlaWdodCA9IFJQVFV0aWxTdHlsZS5nZXRXZWlnaHROdW1iZXIodGhpc1N0eWxlLmZvbnRXZWlnaHQpO1xuICAgICAgICAgICAgICAgIGxldCB0aGlzU2l6ZSA9IFJQVFV0aWxTdHlsZS5nZXRGb250SW5QaXhlbHModGhpc1N0eWxlLmZvbnRTaXplKTtcbiAgICAgICAgICAgICAgICBjYWNoZS5pc0xhcmdlU2NhbGUgPSB0aGlzU2l6ZSA+PSAyNCB8fCB0aGlzU2l6ZSA+PSAxOC42ICYmIHRoaXNXZWlnaHQgPj0gNzAwO1xuICAgICAgICAgICAgICAgIGxldCB0ZXN0SW5mbyA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgd2VpZ2h0ID0gUlBUVXRpbFN0eWxlLmdldFdlaWdodE51bWJlcihzdHlsZS5mb250V2VpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNpemUgPSBSUFRVdGlsU3R5bGUuZ2V0Rm9udEluUGl4ZWxzKHN0eWxlLmZvbnRTaXplKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sb3JDb21ib090aGVyID0gUlBUVXRpbC5Db2xvckNvbWJvKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmdSYXRpbyA9IHRoaXNDb2xvckNvbWJvLmZnLmNvbnRyYXN0UmF0aW8oY29sb3JDb21ib090aGVyLmZnKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJnUmF0aW8gPSB0aGlzQ29sb3JDb21iby5iZy5jb250cmFzdFJhdGlvKGNvbG9yQ29tYm9PdGhlci5iZyk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzY2FsZUNoYW5nZSA9IE1hdGguYWJzKHdlaWdodCAtIHRoaXNXZWlnaHQpID49IDMwMFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgTWF0aC5hYnMoc2l6ZSAtIHRoaXNTaXplKSA+IDVcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN0eWxlLnRleHREZWNvcmF0aW9uICE9IHRoaXNTdHlsZS50ZXh0RGVjb3JhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicmF0aW9cIjogTWF0aC5tYXgoZmdSYXRpbywgYmdSYXRpbyksXG4gICAgICAgICAgICAgICAgICAgICAgICBcImZnUmF0aW9cIjogZmdSYXRpbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYmdSYXRpb1wiOiBiZ1JhdGlvLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2FsZUNoYW5nZVwiOiBzY2FsZUNoYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY29sb3JDb21ib1wiOiBjb2xvckNvbWJvT3RoZXJcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgcHJldmlvdXMgdGV4dFxuICAgICAgICAgICAgICAgIGxldCB3YWxrUHJldiA9IG5ldyBOb2RlV2Fsa2VyKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICB3aGlsZSAod2Fsa1ByZXYucHJldk5vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcHJldmlvdXMgaXMgYSBsaW5rLCBvciBhIG5ld2xpbmUsIGRvIG5vdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTGluayh3YWxrUHJldi5ub2RlKSB8fCBpc0l0ZW0od2Fsa1ByZXYubm9kZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHdhbGtQcmV2Lm5vZGUubm9kZVR5cGUgPT0gMyAmJiB3YWxrUHJldi5ub2RlLm5vZGVWYWx1ZS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa1ByZXYubm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZSh3YWxrUHJldi5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlLnByZXYgPSB0ZXN0SW5mbyh3YWxrUHJldi5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCB3YWxrTmV4dCA9IG5ldyBOb2RlV2Fsa2VyKHJ1bGVDb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAod2Fsa05leHQubmV4dE5vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBGaW5kIG5leHQgdGV4dFxuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmV4dCBpcyBhIGxpbmssIG9yIGEgbmV3bGluZSwgZG8gbm90aGluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaW5rKHdhbGtOZXh0Lm5vZGUpIHx8IGlzSXRlbSh3YWxrTmV4dC5ub2RlKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBpZiAod2Fsa05leHQubm9kZS5ub2RlVHlwZSA9PSAzICYmIHdhbGtOZXh0Lm5vZGUudGV4dENvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhbGtOZXh0Lm5vZGUgPSBET01VdGlsLnBhcmVudE5vZGUod2Fsa05leHQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS5uZXh0ID0gdGVzdEluZm8od2Fsa05leHQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQsIFwiRVhUX0xpbmtfQ29udHJhc3RfV0NBRzJBQVwiLCBjYWNoZSk7XG5cbiAgICAgICAgICAgIGxldCBpc0xhcmdlU2NhbGUgPSBjYWNoZS5pc0xhcmdlU2NhbGU7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCByYXRpbyA9IDA7XG4gICAgICAgICAgICBsZXQgb3RoZXJDb2xvciA9IG51bGw7XG4gICAgICAgICAgICBsZXQgZ29vZFJhdGlvID0gaXNMYXJnZVNjYWxlID8gMyA6IDQuNTtcbiAgICAgICAgICAgIGlmIChjYWNoZS5wcmV2KSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gY2FjaGUucHJldi5yYXRpbyA+PSBnb29kUmF0aW8gfHxcbiAgICAgICAgICAgICAgICBjYWNoZS5wcmV2LnNjYWxlQ2hhbmdlO1xuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJhdGlvID0gY2FjaGUucHJldi5mZ1JhdGlvO1xuICAgICAgICAgICAgICAgICAgICBvdGhlckNvbG9yID0gY2FjaGUucHJldi5jb2xvckNvbWJvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FjaGUubmV4dCkge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHBhc3NlZCAmJiBjYWNoZS5uZXh0LnJhdGlvID49IGdvb2RSYXRpbyB8fFxuICAgICAgICAgICAgICAgIGNhY2hlLm5leHQuc2NhbGVDaGFuZ2U7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmF0aW8gPSBjYWNoZS5uZXh0LmZnUmF0aW87XG4gICAgICAgICAgICAgICAgICAgIG90aGVyQ29sb3IgPSBjYWNoZS5uZXh0LmNvbG9yQ29tYm87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFtyYXRpby50b0ZpeGVkKDIpLCB0aGlzQ29sb3JDb21iby5mZy50b0hleCgpLCBvdGhlckNvbG9yLmZnLnRvSGV4KCldKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNDb2xvciB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgUlBUVXRpbCwgTm9kZVdhbGtlciB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5mdW5jdGlvbiBwYXR0ZXJuRGV0ZWN0KGVsZW06IEVsZW1lbnQpIDogU3RyaW5nIHtcbiAgICAvLyBjaGVjayAnZXhwbGljaXQnIHJvbGUgY29tYm9ib3ggYW5kIHRoYXQgaXQgaXMgbm90IDxzZWxlY3Q+LiBcbiAgICBpZiAoZWxlbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic2VsZWN0XCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpICE9PSBcImNvbWJvYm94XCIpIHtcbiAgICAgICAgcmV0dXJuIFwiaW1wbGljaXRcIjtcbiAgICB9IGVsc2UgaWYgKGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiIFxuICAgICAgICAmJiAoIWVsZW0uaGFzQXR0cmlidXRlKFwidHlwZVwiKSB8fCBlbGVtLmdldEF0dHJpYnV0ZShcInR5cGVcIikgPT09IFwidGV4dFwiKVxuICAgICAgICAmJiBlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtb3duc1wiKSAmJiAhZWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWNvbnRyb2xzXCIpKSBcbiAgICB7XG4gICAgICAgIC8vIExvb2tzIGxpa2UgdGhpcyBpcyBhbiBBUklBIDEuMCBwYXR0ZXJuLCB3aGljaCB0aGUgQVJJQSAxLjIgc3BlYyBzYXlzIHRvIGNvbnRpbnVlIHRvIGFsbG93XG4gICAgICAgIHJldHVybiBcIjEuMFwiO1xuICAgIH0gZWxzZSBpZiAoZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcImlucHV0XCIgXG4gICAgICAgICYmIGVsZW0uaGFzQXR0cmlidXRlKFwiYXJpYS1vd25zXCIpICYmICFlbGVtLmhhc0F0dHJpYnV0ZShcImFyaWEtY29udHJvbHNcIikpIFxuICAgIHtcbiAgICAgICAgLy8gTG9va3MgbGlrZSB0aGlzIGlzIGFuIEFSSUEgMS4xIHBhdHRlcm4sIHdoaWNoIHRoZSBBUklBIDEuMiBzcGVjIHNheXMgaXMgbm93IGludmFsaWRcbiAgICAgICAgcmV0dXJuIFwiMS4xXCI7XG4gICAgfVxuICAgIC8vIEFzc3VtZSB0aGV5J3JlIHRyeWluZyB0byBkbyB0aGUgbGF0ZXN0LCAxLjIgcGF0dGVyblxuICAgIHJldHVybiBcIjEuMlwiO1xufVxuXG5sZXQgYTExeVJ1bGVzQ29tYm9ib3g6IFJ1bGVbXSA9IFtcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVGhpcyBydWxlIGZhaWxzIGlmIGEgMS4xIHBhdHRlcm4gaXMgZGV0ZWN0ZWQsXG4gICAgICogYnV0IG1vcmUgaW1wb3J0YW50bHkgaWRlbnRpZmllcyBlbGVtZW50cyBpbXBvcnRhbnQgZm9yIDEuMFxuICAgICAqIGFuZCAxLjIgc3BlY2lmaWMgY2hlY2tpbmdcbiAgICAgKiBcbiAgICAgKiBBUklBIDEuMiBpbnRyb2R1ZXMgYSBub24tZWRpdGFibGUgY29tYm9ib3gsIGJ1dCBhbHNvIGFsbG93cyBhIDEuMCBjb21ib2JveFxuICAgICAqIE9yaWdpbjogIFdBSS1BUklBIDEuMlxuICAgICAqICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjIvI2NvbWJvYm94XG4gICAgICovXG4gICAge1xuICAgICAgICBpZDogXCJjb21ib2JveF92ZXJzaW9uXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpjb21ib2JveFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmlzTm9kZVZpc2libGUocnVsZUNvbnRleHQpIHx8IFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGF0dGVybiA9IHBhdHRlcm5EZXRlY3QocnVsZUNvbnRleHQpO1xuXG4gICAgICAgICAgICAvLyBXZSBkb24ndCBhc3Nlc3MgbmF0aXZlIHNlbGVjdCBlbGVtZW50cyBoZXJlXG4gICAgICAgICAgICBpZiAocGF0dGVybiA9PT0gXCJpbXBsaWNpdFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB0YWdOYW1lID0gcnVsZUNvbnRleHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IGV4cGFuZGVkID0gKFJQVFV0aWwuZ2V0QXJpYUF0dHJpYnV0ZShydWxlQ29udGV4dCwgXCJhcmlhLWV4cGFuZGVkXCIpIHx8IFwiXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIjtcbiAgICAgICAgICAgIGxldCBlZGl0YWJsZSA9IHRhZ05hbWUgPT09IFwiaW5wdXRcIiAmJiAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikgfHwgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpID09PSBcInRleHRcIik7XG5cbiAgICAgICAgICAgIGxldCBrZXkgPSBjb250ZXh0W1wiZG9tXCJdLnJvbGVQYXRoO1xuICAgICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgICAgIGxldCBjYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb21ib2JveFwiLCB7fSk7XG4gICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHtcbiAgICAgICAgICAgICAgICAgICAgXCJpbnB1dEVsZW1lbnRcIjogZWRpdGFibGUgPyBydWxlQ29udGV4dCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwicGF0dGVyblwiOiBwYXR0ZXJuLFxuICAgICAgICAgICAgICAgICAgICBcImV4cGFuZGVkXCI6IGV4cGFuZGVkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiY29tYm9ib3hcIiwgY2FjaGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBObyB4cGF0aD9cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHBhdHRlcm4gPT09IFwiMS4wXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzEuMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGF0dGVybiA9PT0gXCIxLjFcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMS4xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuID09PSBcIjEuMlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18xLjJcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUaGlzIHJ1bGUgZmFpbHMgaWYgdGhlIHBvcHVwIG9mIHRoZSBjb21ib2JveCBjYW5ub3QgYmUgZGV0ZWN0ZWRcbiAgICAgKlxuICAgICAqIE5vdGU6IGNvbWJvYm94IHJlcXVpcmVzIHRoZSBpZCwgYW5kIGl0IG11c3QgcmVmZXJlbmNlIGFuIGFwcHJvcHJpYXRlIGVsZW1lbnRcbiAgICAgKiBUaGUgcG9wdXAgbWlnaHQgYmUgZW1wdHksIGJ1dCBpdCBoYXMgdG8gZXhpc3QgaW4gdGhlIERPTVxuICAgICAqIFxuICAgICAqIE9yaWdpbjogIFdBSS1BUklBIDEuMlxuICAgICAqICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4yLyN3YWktYXJpYS1yb2xlcy1zdGF0ZXMtYW5kLXByb3BlcnRpZXMtNlxuICAgICAqL1xuICAgIHtcbiAgICAgICAgaWQ6IFwiY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpjb21ib2JveFwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcImNvbWJvYm94X3ZlcnNpb25cIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBjYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb21ib2JveFwiLCB7fSk7XG4gICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IGNvbnRleHRbXCJkb21cIl0ucm9sZVBhdGg7XG4gICAgICAgICAgICBjb25zdCBjYWNoZWRFbGVtID0gY2FjaGVbY2FjaGVLZXldO1xuICAgICAgICAgICAgaWYgKCFjYWNoZWRFbGVtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHsgcGF0dGVybiwgZXhwYW5kZWQgfSA9IGNhY2hlZEVsZW07XG5cbiAgICAgICAgICAgIGxldCBwb3B1cElkO1xuICAgICAgICAgICAgbGV0IHBvcHVwRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChwYXR0ZXJuID09PSBcIjEuMFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNvbWJvYm94IGlzbid0IGV4cGFuZGVkLCB0aGlzIGF0dHJpYnV0ZSBpc24ndCByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWV4cGFuZGVkID8gbnVsbCA6IFJ1bGVGYWlsKFwiRmFpbF8xLjBfbWlzc2luZ19vd25zXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb3B1cElkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1vd25zXCIpO1xuICAgICAgICAgICAgICAgIHBvcHVwRWxlbWVudCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBwb3B1cElkKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBvcHVwRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29tYm9ib3ggaXNuJ3QgZXhwYW5kZWQsIHRoaXMgYXR0cmlidXRlIGlzbid0IHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZXhwYW5kZWQgPyBudWxsIDogUnVsZUZhaWwoXCJGYWlsXzEuMF9wb3B1cF9yZWZlcmVuY2VfbWlzc2luZ1wiLCBbcG9wdXBJZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGF0dGVybiA9PT0gXCIxLjJcIikge1xuICAgICAgICAgICAgICAgIGlmICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1jb250cm9sc1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29tYm9ib3ggaXNuJ3QgZXhwYW5kZWQsIHRoaXMgYXR0cmlidXRlIGlzbid0IHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZXhwYW5kZWQgPyBudWxsOiBSdWxlRmFpbChcIkZhaWxfMS4yX21pc3NpbmdfY29udHJvbHNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvcHVwSWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWNvbnRyb2xzXCIpO1xuICAgICAgICAgICAgICAgIHBvcHVwRWxlbWVudCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBwb3B1cElkKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBvcHVwRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29tYm9ib3ggaXNuJ3QgZXhwYW5kZWQsIHRoaXMgYXR0cmlidXRlIGlzbid0IHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhZXhwYW5kZWQgPyBudWxsIDogUnVsZUZhaWwoXCJGYWlsXzEuMl9wb3B1cF9yZWZlcmVuY2VfbWlzc2luZ1wiLCBbcG9wdXBJZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFdlIGhhdmUgYW4gZWxlbWVudCwgc3RpY2sgaXQgaW4gdGhlIGNhY2hlIGFuZCB0aGVuIGNoZWNrIGl0cyByb2xlXG4gICAgICAgICAgICBjYWNoZWRFbGVtLnBvcHVwSWQgPSBwb3B1cElkO1xuICAgICAgICAgICAgY2FjaGVkRWxlbS5wb3B1cEVsZW1lbnQgPSBwb3B1cEVsZW1lbnQ7XG5cblxuICAgICAgICAgICAgaWYgKGV4cGFuZGVkICYmICFSUFRVdGlsLmlzTm9kZVZpc2libGUocG9wdXBFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfY29tYm9ib3hfZXhwYW5kZWRfaGlkZGVuXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghZXhwYW5kZWQgJiYgUlBUVXRpbC5pc05vZGVWaXNpYmxlKHBvcHVwRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsX2NvbWJvYm94X2NvbGxhcHNlZF92aXNpYmxlXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoZXhwYW5kZWQgPyBcIlBhc3NfZXhwYW5kZWRcIiA6IFwiUGFzc19jb2xsYXBzZWRcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9yaWdpbjogIFdBSS1BUklBIDEuMlxuICAgICAgICAgKiAgICAgICAgICBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMi8jd2FpLWFyaWEtcm9sZXMtc3RhdGVzLWFuZC1wcm9wZXJ0aWVzLTZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcImNvbWJvYm94X2hhc3BvcHVwXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpjb21ib2JveFwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcImNvbWJvYm94XCIsIHt9KTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gY29udGV4dFtcImRvbVwiXS5yb2xlUGF0aDtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlZEVsZW0gPSBjYWNoZVtjYWNoZUtleV07XG4gICAgICAgICAgICBpZiAoIWNhY2hlZEVsZW0pIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgeyBwb3B1cEVsZW1lbnQsIHBvcHVwSWQgfSA9IGNhY2hlZEVsZW07XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzbid0IGRlZmluZWQsIHRoZSBjb21ib2JveCBpcyBwcm9iYWJseSBjb2xsYXBzZWQuIEEgcmVmZXJlbmNlIGVycm9yIGlzXG4gICAgICAgICAgICAvLyBkZXRlY3RlZCBpbiBjb21ib2JveF9wb3B1cF9yZWZlcmVuY2VcbiAgICAgICAgICAgIGlmICghcG9wdXBFbGVtZW50KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgcG9wdXAgcm9sZSBpcyBsaXN0Ym94LCBncmlkLCB0cmVlLCBvciBkaWFsb2cgYW5kIHRoYXQgaXQgbWF0Y2hlcyB0aGUgY29tYm9ib3hcbiAgICAgICAgICAgIGxldCBwb3B1cFJvbGVzID0gUlBUVXRpbC5nZXRSb2xlcyhwb3B1cEVsZW1lbnQsIHRydWUpO1xuICAgICAgICAgICAgbGV0IHZhbGlkUm9sZXMgPSBbXCJsaXN0Ym94XCIsIFwiZ3JpZFwiLCBcInRyZWVcIiwgXCJkaWFsb2dcIl0uZmlsdGVyKCh2YWxpZFJvbGUpID0+IHBvcHVwUm9sZXMuaW5jbHVkZXModmFsaWRSb2xlKSk7XG4gICAgICAgICAgICBpZiAodmFsaWRSb2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsX3BvcHVwX3JvbGVfaW52YWxpZFwiLCBbcG9wdXBSb2xlcy5qb2luKFwiLFwiKSwgcG9wdXBJZF0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcG9wdXBSb2xlID0gdmFsaWRSb2xlc1swXTtcbiAgICAgICAgICAgICAgICBsZXQgaGFzcG9wdXBWYWwgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIpIHx8IFwibGlzdGJveFwiO1xuICAgICAgICAgICAgICAgIC8vIFBvcHVwIHJvbGUgbXVzdCBtYXRjaCBhcmlhLWhhc3BvcHVwIHVubGVzcyBwb3B1cFJvbGUgaXMgbGlzdGJveCwgdGhlbiBhcmlhLWhhc3BvcHVwIHNob3VsZCBub3QgYmUgZGVmaW5lZCAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBpZiAoaGFzcG9wdXBWYWwgIT09IHBvcHVwUm9sZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocG9wdXBSb2xlICE9PSBcImxpc3Rib3hcIiB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWhhc3BvcHVwXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsX2NvbWJvYm94X3BvcHVwX3JvbGVfbWlzbWF0Y2hcIiwgW2hhc3BvcHVwVmFsLCBwb3B1cFJvbGVdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBGb3IgYSAnY29tYm9ib3gnLCBvbmx5IHRoZSB0ZXh0Ym94IHNob3VsZCByZWNlaXZlIERPTSBmb2N1cy4gXG4gICAgICAgICAqIEZvY3VzIG9mIHRoZSBsaXN0Ym94IHNob3VsZCBiZSBtYW5hZ2VkIHZpYSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgb24gdGhlIHRleHRib3guXG4gICAgICAgICAqIElmIGFueSBlbGVtZW50IG90aGVyIHRoYW4gdGhlIHRleHRib3ggd2l0aGluIHRoZSBjb21ib2JveCBvciBhcmlhLW93bmVkIGVsZW1lbnQgaGFzIGEgdGFiaW5kZXggPj0gMCBvciBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsIEZBSUxcbiAgICAgICAgICogT3JpZ2luOiAgV0FJLUFSSUEgMS4yXG4gICAgICAgICAqICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4yLyN3YWktYXJpYS1yb2xlcy1zdGF0ZXMtYW5kLXByb3BlcnRpZXMtNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiY29tYm9ib3hfZm9jdXNhYmxlX2VsZW1lbnRzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpjb21ib2JveFwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBjYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb21ib2JveFwiLCB7fSk7XG4gICAgICAgICAgICBsZXQgY2FjaGVkRWxlbSA9IGNhY2hlW2NvbnRleHRbXCJkb21cIl0ucm9sZVBhdGhdO1xuICAgICAgICAgICAgaWYgKCFjYWNoZWRFbGVtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHsgcG9wdXBFbGVtZW50LCBleHBhbmRlZCB9ID0gY2FjaGVkRWxlbTtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXNuJ3QgZGVmaW5lZCwgdGhlIGNvbWJvYm94IGlzIHByb2JhYmx5IGNvbGxhcHNlZC4gQSByZWZlcmVuY2UgZXJyb3IgaXNcbiAgICAgICAgICAgIC8vIGRldGVjdGVkIGluIGNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVxuICAgICAgICAgICAgaWYgKCFwb3B1cEVsZW1lbnQpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBwb3B1cFJvbGUgPSBSUFRVdGlsLmdldFJvbGVzKHBvcHVwRWxlbWVudCwgdHJ1ZSlbMF07XG5cbiAgICAgICAgICAgIGxldCByZXRWYWwgPSBbXVxuICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goUnVsZUZhaWwoXCJGYWlsX25vdF90YWJiYWJsZVwiKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9ubHkgbWFrZXMgc2Vuc2UgdG8gY2hlY2sgdGhlIHBvcHVwIHdoZW4gZXhwYW5kZWRcbiAgICAgICAgICAgIC8vIHRoaXMgZG9lcyBub3QgYXBwbHkgdG8gZGlhbG9ncywgcmV0dXJuIHBhc3Mgc2luY2UgdGhlIG1haW4gZWxlbWVudCB3YXMgZm9jdXNhYmxlIGFib3ZlXG4gICAgICAgICAgICBpZiAoZXhwYW5kZWQgPT09IGZhbHNlIHx8IHBvcHVwUm9sZSA9PT0gXCJkaWFsb2dcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBleGFtaW5lIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgaWYgKHBvcHVwRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHBvcHVwRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gcG9wdXBFbGVtZW50ICYmIG53Lm5vZGUgIT0gcG9wdXBFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudy5ub2RlLm5vZGVUeXBlID09PSAxICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShudy5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gIVJQVFV0aWwuaXNUYWJiYWJsZShudy5ub2RlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFSUFRVdGlsLmdldEFyaWFBdHRyaWJ1dGUobncubm9kZSwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goUnVsZUZhaWwoXCJGYWlsX3RhYmJhYmxlX2NoaWxkXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKHJldFZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogRm9yIGEgJ2NvbWJvYm94Jywgb25seSB0aGUgdGV4dGJveCBzaG91bGQgcmVjZWl2ZSBET00gZm9jdXMuIFxuICAgICAgICAgKiBGb2N1cyBvZiB0aGUgbGlzdGJveCBzaG91bGQgYmUgbWFuYWdlZCB2aWEgYXJpYS1hY3RpdmVkZXNjZW5kYW50IG9uIHRoZSB0ZXh0Ym94LlxuICAgICAgICAgKiBJZiBhbnkgZWxlbWVudCBvdGhlciB0aGFuIHRoZSB0ZXh0Ym94IHdpdGhpbiB0aGUgY29tYm9ib3ggb3IgYXJpYS1vd25lZCBlbGVtZW50IGhhcyBhIHRhYmluZGV4ID49IDAgb3IgYXJpYS1hY3RpdmVkZXNjZW5kYW50LCBGQUlMXG4gICAgICAgICAqIE9yaWdpbjogIFdBSS1BUklBIDEuMlxuICAgICAgICAgKiAgICAgICAgICBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMi8jd2FpLWFyaWEtcm9sZXMtc3RhdGVzLWFuZC1wcm9wZXJ0aWVzLTZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcImNvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpjb21ib2JveFwiLFxuICAgICAgICBkZXBlbmRlbmNpZXM6IFtcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiXSxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBjYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb21ib2JveFwiLCB7fSk7XG4gICAgICAgICAgICBsZXQgY2FjaGVkRWxlbSA9IGNhY2hlW2NvbnRleHRbXCJkb21cIl0ucm9sZVBhdGhdO1xuICAgICAgICAgICAgaWYgKCFjYWNoZWRFbGVtKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHsgcG9wdXBFbGVtZW50LCBwb3B1cElkIH0gPSBjYWNoZWRFbGVtO1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpc24ndCBkZWZpbmVkLCB0aGUgY29tYm9ib3ggaXMgcHJvYmFibHkgY29sbGFwc2VkLiBBIHJlZmVyZW5jZSBlcnJvciBpc1xuICAgICAgICAgICAgLy8gZGV0ZWN0ZWQgaW4gY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXG4gICAgICAgICAgICBpZiAoIXBvcHVwRWxlbWVudCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIFRoaXMgcnVsZSBvbmx5IGFwcGxpZXMgaWYgdGhlIGFjdGl2ZWRlc2NlbmRhbnQgaXMgc3BlY2lmaWVkXG4gICAgICAgICAgICBsZXQgYWN0aXZlSWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIik7XG4gICAgICAgICAgICBpZiAoIWFjdGl2ZUlkIHx8IGFjdGl2ZUlkLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGFjdGl2ZUVsZW0gPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgYWN0aXZlSWQpO1xuICAgICAgICAgICAgaWYgKCFhY3RpdmVFbGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF9taXNzaW5nXCIsIFthY3RpdmVJZF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcblxuICAgICAgICAgICAgLy8gZXhhbWluZSB0aGUgY2hpbGRyZW5cbiAgICAgICAgICAgIGlmIChwb3B1cEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihwb3B1cEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHdoaWxlICghZm91bmQgJiYgbncubmV4dE5vZGUoKSAmJiBudy5ub2RlICE9IHBvcHVwRWxlbWVudCAmJiBudy5ub2RlICE9IHBvcHVwRWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobncubm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBSUFRVdGlsLmlzTm9kZVZpc2libGUobncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gbncuZWxlbSgpLmdldEF0dHJpYnV0ZShcImlkXCIpID09PSBhY3RpdmVJZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJldFZhbCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goUnVsZVBhc3MoXCJGYWlsX25vdF9pbl9wb3B1cFwiLCBbYWN0aXZlSWQsIHBvcHVwSWRdKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBhY3RpdmVSb2xlcyA9IFJQVFV0aWwuZ2V0Um9sZXMoYWN0aXZlRWxlbSwgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgdmFsaWRSb2xlcyA9IFtcIm9wdGlvblwiLCBcImdyaWRjZWxsXCIsIFwicm93XCIsIFwidHJlZWl0ZW1cIl0uZmlsdGVyKCh2YWxpZFJvbGUpID0+IGFjdGl2ZVJvbGVzLmluY2x1ZGVzKHZhbGlkUm9sZSkpO1xuICAgICAgICAgICAgaWYgKHZhbGlkUm9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goUnVsZUZhaWwoXCJGYWlsX2FjdGl2ZV9yb2xlX2ludmFsaWRcIiwgW2FjdGl2ZUlkLCBhY3RpdmVSb2xlcy5qb2luKFwiLFwiKV0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW0uZ2V0QXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiKSAhPT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChSdWxlRmFpbChcIkZhaWxfYWN0aXZlX25vdF9zZWxlY3RlZFwiLCBbYWN0aXZlSWRdKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXRWYWwubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc1wiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IEluIGEgJ2NvbWJvYm94JywgdGhlICdhcmlhLWF1dG9jb21wbGV0ZScgcHJvcGVydHkgc2hvdWxkIG9ubHkgYmUgc2V0IG9uIHRoZSB0ZXh0IGlucHV0LiBcbiAgICAgICAgICogTG9vayBhIHRoZSBsaXN0Ym94IGFuZCBvdGhlciBlbGVtZW50cyAob3RoZXIgdGhhbiB0aGUgdGV4dGJveCkgYW5kIEZBSUwgaWYgYXV0b2NvbXBsZXRlIGZvdW5kLlxuICAgICAgICAgKiBPcmlnaW46ICBXQUktQVJJQSAxLjJcbiAgICAgICAgICogXHRcdFx0aHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLTEuMi8jY29tYm9ib3hcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcImNvbWJvYm94X2F1dG9jb21wbGV0ZVwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6Y29tYm9ib3hcIixcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBbXCJjb21ib2JveF9wb3B1cF9yZWZlcmVuY2VcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiY29tYm9ib3hcIiwge30pO1xuICAgICAgICAgICAgbGV0IGNhY2hlZEVsZW0gPSBjYWNoZVtjb250ZXh0W1wiZG9tXCJdLnJvbGVQYXRoXTtcbiAgICAgICAgICAgIGlmICghY2FjaGVkRWxlbSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjb25zdCB7IHBvcHVwSWQsIHBvcHVwRWxlbWVudCB9ID0gY2FjaGVkRWxlbTtcblxuICAgICAgICAgICAgbGV0IHJldFZhbCA9IFtdO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtYXV0b2NvbXBsZXRlXCIpID09PSBcImlubGluZVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goUnVsZUZhaWwoXCJGYWlsX2lubGluZVwiKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBleGFtaW5lIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgaWYgKHBvcHVwRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHBvcHVwRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gcG9wdXBFbGVtZW50ICYmIG53Lm5vZGUgIT0gcG9wdXBFbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudy5ub2RlLm5vZGVUeXBlID09PSAxICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShudy5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gIW53LmVsZW0oKS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWF1dG9jb21wbGV0ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwucHVzaChSdWxlRmFpbChcIkZhaWxfMVwiLCBbcG9wdXBJZF0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJldFZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBlbmQgb2YgcnVsZXNcbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzQ29tYm9ib3ggfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuaW1wb3J0IHsgRnJhZ21lbnRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvZnJhZ21lbnRcIjtcbmltcG9ydCB7IExhbmdVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGFuZ1wiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuXG5sZXQgYTExeVJ1bGVzRWxlbTogUnVsZVtdID0gW1xuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGVsZW1lbnQgbGFuZ3VhZ2UgYXR0cmlidXRlcyBhcmUgdmFsaWRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDU4XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfRWxlbV9MYW5nX1ZhbGlkXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbbGFuZ10sIGRvbToqW3htbDpsYW5nXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJsYW5nXCIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVOYW1lICE9PSBcImh0bWxcIiAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEl0J3Mgb2theSB0byBoYXZlIGEgbGFuZz1cIlwiIGlmIG5vdCBvbiBodG1sXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhbmdTdHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLnZhbGlkUHJpbWFyeUxhbmcobGFuZ1N0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLmlzQmNwNDcobGFuZ1N0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKSkge1xuICAgICAgICAgICAgICAgIGlmIChub2RlTmFtZSAhPT0gXCJodG1sXCIgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwieG1sOmxhbmdcIikgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBva2F5IHRvIGhhdmUgYSBsYW5nPVwiXCIgaWYgbm90IG9uIGh0bWxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFuZ1N0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInhtbDpsYW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLnZhbGlkUHJpbWFyeUxhbmcobGFuZ1N0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfM1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLmlzQmNwNDcobGFuZ1N0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfNFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgZWxlbWVudHMgb3IgYXR0cnJpYnV0ZXMgYXJlIGRlcHJlY2F0ZWRcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfRWxlbV9EZXByZWNhdGVkXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmFwcGxldCwgZG9tOmJhc2Vmb250LCBkb206Y2VudGVyLCBkb206ZGlyLCBkb206Zm9udCwgZG9tOmlzaW5kZXgsIGRvbTpsaXN0aW5nLCBkb206bWVudVwiICtcbiAgICAgICAgICAgIFwiLCBkb206cGxhaW50ZXh0LCBkb206c3BhY2VyLCBkb206cywgZG9tOnN0cmlrZSwgZG9tOnUsIGRvbTp4bXAsIGRvbToqW2FsaWduXSwgZG9tOipbbGlua10sIGRvbToqW2FyY2hpdmVdXCIgK1xuICAgICAgICAgICAgXCIsIGRvbToqW2JhY2tncm91bmRdLCBkb206KltiZ2NvbG9yXSwgZG9tOipbY2xlYXJdLCBkb206Kltjb2RlXSwgZG9tOipbY29sb3JdXCIgK1xuICAgICAgICAgICAgXCIsIGRvbToqW2NvbXBhY3RdLCBkb206KltmYWNlXSwgZG9tOipbaHNwYWNlXSwgZG9tOipbbGFuZ3VhZ2VdLCBkb206KltsaW5rXVwiICtcbiAgICAgICAgICAgIFwiLCBkb206Kltub3NoYWRlXSwgZG9tOipbbm93cmFwXSwgZG9tOipbb2JqZWN0XSwgZG9tOipbcHJvbXB0XSwgZG9tOipbc3RhcnRdXCIgK1xuICAgICAgICAgICAgXCIsIGRvbToqW3RleHRdLCBkb206Klt2ZXJzaW9uXSwgZG9tOipbdmxpbmtdLCBkb206Klt2c3BhY2VdLCBkb206aW1nW2JvcmRlcl1cIiArXG4gICAgICAgICAgICBcIiwgZG9tOm9iamVjdFtib3JkZXJdLCBkb206dGRbaGVpZ2h0XSwgZG9tOnRoW2hlaWdodF0sIGRvbTpsaVt0eXBlXSwgZG9tOm9sW3R5cGVdXCIgK1xuICAgICAgICAgICAgXCIsIGRvbTp1bFt0eXBlXSwgZG9tOmxpW3ZhbHVlXSwgZG9tOnByZVt3aWR0aF0sIGRvbTpoclt3aWR0aF0sIGRvbTp0ZFt3aWR0aF0sIGRvbTp0aFt3aWR0aF1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIEhUTUxVbml0IGF1dG8gYWRkcyBhIHRib2R5W2FsaWduPWxlZnRdIHRvIHRhYmxlcyBpZiB0Ym9keSBpcyBtaXNzaW5nIVxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJ0Ym9keVwiICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFsaWduXCIpKVxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vICAgICAgICBpZiAoIXBhc3NlZClcbiAgICAgICAgICAgIC8vICAgICAgICAgICAgUGFja2FnZXMuamF2YS5sYW5nLlN5c3RlbS5lcnIucHJpbnRsbihcIlwiK3J1bGVDb250ZXh0Lm5vZGVOYW1lKTtcbiAgICAgICAgICAgIC8vICAgICAgICBQYWNrYWdlcy5qYXZhLmxhbmcuU3lzdGVtLmVyci5wcmludGxuKFwiXCIrcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWxpZ25cIikpO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGhpcyBlbGVtJ3MgaWQgaXNuJ3Qgb2J0YWluZWQgYnkgZ2V0RWxlbWVudEJ5SWRcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfRWxlbV9VbmlxdWVJZFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW2lkXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgICAgICBsZXQgaWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJpZFwiKTtcblxuICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCBpZCBpcyBlbXB0eSB3ZSBzaG91bGQgdHJpZ2dlciBhIHZpb2xhdGlvbiByaWdodCBhd2F5IHdpdGggb3V0IGNoZWNraW5nIFxuICAgICAgICAgICAgLy8gZm9yIHVuaXF1ZW5lc3MuXG4gICAgICAgICAgICBpZiAoaWQgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChmYWxzZSwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBbcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgaWRdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIiwgW3J1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIGlkXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGlkKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBlbGVtZW50ID09PSBydWxlQ29udGV4dDtcbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJycsICcnLCBwYXNzZWQgPT0gdHJ1ZSA/IFtdIDogW3J1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIGlkXSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiLCBbcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSwgaWRdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGlzIGVsZW0ncyBhY2Nlc3NrZXkgaXNuJ3QgdW5pcXVlXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEYxN1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbYWNjZXNza2V5XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG1hcCA9IFJQVFV0aWwuZ2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJXQ0FHMjBfRWxlbV9VbmlxdWVBY2Nlc3NLZXlcIiwge30pO1xuXG4gICAgICAgICAgICBsZXQga2V5ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWNjZXNza2V5XCIpO1xuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gIShrZXkgaW4gbWFwKTtcbiAgICAgICAgICAgIG1hcFtrZXldID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgYW4gYXNzZXNza2V5IGRvZXNuJ3QgaGF2ZSBhIGxhYmVsXG4gICAgICAgICAqIE9yaWdpbjogIEhUTUwgNSAtIHBlciBSaWNoYXJkIFNjaHdlcmR0ZmVnZXIncyByZXF1aXJlbWVudHMuIGcxMTQwXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0FjY2Vzc2tleV9OZWVkTGFiZWxcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlthY2Nlc3NrZXldXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0aXRsZVwiKSkge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiYXJpYS1sYWJlbFwiKSkge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKHJ1bGVDb250ZXh0LCB0cnVlKSkgeyAvLyBpZ25vcmUgaGlkZGVuXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgdGhlIHZhbGlkaXR5IG9mIHRoZSBpZCAob2YgYXJpYS1sYWJlbGxlZGJ5KSBpcyBjaGVja2VkIGJ5IGEgZGlmZmVyZW50IHJ1bGVcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCJcbiAgICAgICAgICAgICAgICAmJiBET01VdGlsLnBhcmVudE5vZGUocnVsZUNvbnRleHQpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwibGFiZWxcIikge1xuICAgICAgICAgICAgICAgIC8vIGFzc3VtZSB0aGUgdmFsaWRpdHkgb2YgdGhlIGxhYmVsLCBlLmcuIGVtcHR5IGxhYmVsLCBpcyBjaGVja2VkIGJ5IGEgZGlmZmVyZW50IHJ1bGVcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhIG1vdXNlIGV2ZW50IGlzIHVzZWQgYW5kIGEgbWF0Y2hpbmcga2V5Ym9hcmQgZXZlbnQgaXMgbm90XG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBnMjY5XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbb25kYmxjbGlja10sIGRvbToqW29ubW91c2Vtb3ZlXSwgZG9tOipbb25tb3VzZWRvd25dLCBcIiArXG4gICAgICAgICAgICBcImRvbToqW29ubW91c2V1cF0sIGRvbToqW29ubW91c2VvdmVyXSwgZG9tOipbb25tb3VzZW91dF0sIGRvbToqW29uY2xpY2tdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImhyZWZcIikgfHxcbiAgICAgICAgICAgICAgICAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9uZGJsY2xpY2tcIikgJiZcbiAgICAgICAgICAgICAgICAgICAgIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ubW91c2Vtb3ZlXCIpICYmXG4gICAgICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZWRvd25cIikgfHwgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25rZXlkb3duXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ubW91c2V1cFwiKSB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmtleXVwXCIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ubW91c2VvdmVyXCIpIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9uZm9jdXNcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZW91dFwiKSB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmJsdXJcIikpICYmXG4gICAgICAgICAgICAgICAgICAgICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25jbGlja1wiKSB8fCBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmtleXByZXNzXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlTmFtZSA9PSBcImFcIiB8fCBub2RlTmFtZSA9PSBcImJ1dHRvblwiKSk7XG5cbiAgICAgICAgICAgIGxldCBmYWlsZWRNb3VzZUV2ZW50cyA9IG5ldyBBcnJheSgpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvL3N0b3JlIGFuZCBkaXNwbGF5IGV2ZW50IG5hbWUgYW5kIG5vZGUgbmFtZSBpbiB0aGUgdG9rZW5zXG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9uZGJsY2xpY2tcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkTW91c2VFdmVudHMucHVzaChcIm9uZGJsY2xpY2tcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbm1vdXNlbW92ZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsZWRNb3VzZUV2ZW50cy5wdXNoKFwib25tb3VzZW1vdmVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbm1vdXNlZG93blwiKSAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25rZXlkb3duXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZE1vdXNlRXZlbnRzLnB1c2goXCJvbm1vdXNlZG93blwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9ubW91c2V1cFwiKSAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25rZXl1cFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBmYWlsZWRNb3VzZUV2ZW50cy5wdXNoKFwib25tb3VzZXVwXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZW92ZXJcIikgJiYgIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9uZm9jdXNcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFpbGVkTW91c2VFdmVudHMucHVzaChcIm9ubW91c2VvdmVyXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25tb3VzZW91dFwiKSAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25ibHVyXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWxlZE1vdXNlRXZlbnRzLnB1c2goXCJvbm1vdXNlb3V0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25jbGlja1wiKSAmJiAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25rZXlwcmVzc1wiKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShub2RlTmFtZSA9PSBcImFcIiB8fCBub2RlTmFtZSA9PSBcImJ1dHRvblwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxlZE1vdXNlRXZlbnRzLnB1c2goXCJvbmNsaWNrXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXNzZWQgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKSA6IFJ1bGVNYW51YWwoXCJNYW51YWxfMVwiLCBbbm9kZU5hbWUsIGZhaWxlZE1vdXNlRXZlbnRzLmpvaW4oXCIsIFwiKV0pO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhbiBpbnZhbGlkIHZhbHVlIGlzIHVzZWQgZm9yIHRoZSBkaXIgYXR0cmlidXRlXG4gICAgICAgICAqIE9yaWdpbjogVmFsZXJpZVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiVmFsZXJpZV9FbGVtX0RpclZhbGlkXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipbZGlyXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGRpclN0ciA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImRpclwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGRpclN0ciA9PSBcImx0clwiIHx8IGRpclN0ciA9PSBcInJ0bFwiIHx8IGRpclN0ciA9PSBcImF1dG9cIjtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0VsZW0gfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzRW1iZWQ6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGVtYmVkIGlzIG1pc3NpbmcgZW1iZWQsIG9yIGlzIG5vdCBpbW1lZGlhdGVseSBhZnRlclxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINDZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9FbWJlZF9IYXNOb0VtYmVkXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmVtYmVkXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJub2VtYmVkXCIpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIGxldCB3YWxrTm9kZSA9IHJ1bGVDb250ZXh0Lm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIHdhbGtOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3YWxrTm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwibm9lbWJlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAod2Fsa05vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcIiN0ZXh0XCIgJiYgd2Fsa05vZGUubm9kZVZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhbGtOb2RlLm5vZGVUeXBlID09IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBOb2VtYmVkIGhhcyBubyBjb250ZW50XG4gICAgICAgICAqIE9yaWdpbjogVmFsZXJpZVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206bm9lbWJlZFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogUHJvdmlkZSBhbHRlcm5hdGl2ZSBjb250ZW50IGZvciBlbWJlZGVkIGVsZW1lbnRzLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzMyMCBwaWVjZSBub3QgY29udGFpbmVkIGluIFdDQUcyMF9FbWJlZF9IYVNOb0VtYmVkXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfRW1iZWRfSGFzQWx0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmVtYmVkXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwiYWx0XCIpO1xuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBtZWRpYSBhdXRvbWF0aWNhbGx5IHN0YXJ0c1xuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzUwM1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0VtYmVkX0F1dG9TdGFydFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpwYXJhbVtuYW1lPWF1dG9wbGF5XSwgZG9tOnBhcmFtW25hbWU9YXV0b3N0YXJ0XSwgXCIgK1xuICAgICAgICAgICAgXCJkb206ZW1iZWRbZmxhc2h2YXJzXSwgZG9tOmVtYmVkW3NyY10sIFwiICtcbiAgICAgICAgICAgIFwiZG9tOipbYXV0b3N0YXJ0PXRydWVdLCBkb206KlthdXRvc3RhcnQ9MV0sIGRvbTpiZ3NvdW5kXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZDtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImJnc291bmRcIikge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PSBcInBhcmFtXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9IFwiXCI7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInZhbHVlXCIpKVxuICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidmFsdWVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBjb250ZW50LmluZGV4T2YoXCIwO1wiKSA9PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgICEoY29udGVudC5pbmRleE9mKFwidHJ1ZVwiKSAhPSAtMSB8fCBjb250ZW50LmluZGV4T2YoXCIxXCIpICE9IC0xKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJlbWJlZFwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiZmxhc2h2YXJzXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJmbGFzaHZhcnNcIik7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHN0ci5pbmRleE9mKFwiYXV0b3N0YXJ0PXRydWVcIikgPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ci5pbmRleE9mKFwiYXV0b3N0YXJ0PTFcIikgPT0gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXNzZWQgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwic3JjXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJzcmNcIik7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHN0ci5pbmRleE9mKFwiYXV0b3N0YXJ0PXRydWVcIikgPT0gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ci5pbmRleE9mKFwiYXV0b3N0YXJ0PTFcIikgPT0gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhdXRvc3RhcnRcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXV0b3N0YXJ0XCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdmFsICE9ICd0cnVlJyAmJiB2YWwgIT0gJzEnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0VtYmVkIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzRmllbGRzZXQ6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGZpZWxkc2V0IGlzIG1pc3NpbmcgYSBsZWdlbmRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDcxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfRmllbGRzZXRfSGFzTGVnZW5kXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmZpZWxkc2V0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSBhIGxlZ2VuZCBpcyBoaWRkZW4sIHdlIHNob3VsZCBzdGlsbCB0cmlnZ2VyIGEgdmlvbGF0aW9ucyBmb3IgdGhpc1xuICAgICAgICAgICAgbGV0IGxlZ2VuZHMgPSBSUFRVdGlsLmdldENoaWxkQnlUYWdIaWRkZW4ocnVsZUNvbnRleHQsIFwibGVnZW5kXCIsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIGlmIChsZWdlbmRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIEZpZWxkc2V0IGhhcyBOTyBMZWdlbmRcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZ2VuZHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgIC8vIEZpZWxkc2V0IGhhcyBtb3JlIHRoYW4gb25lIGxlZ2VuZFxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoUlBUVXRpbC5nZXRJbm5lclRleHQobGVnZW5kc1swXSkudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIEZpZWxkc2V0IGhhcyBsZWdlbmQgYnV0IGxlZ2VuZCBpcyBlbXB0eVxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfM1wiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc0ZpZWxkc2V0IH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0ZpZzogUnVsZVtdID0gW1xuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiB0aGUgZmlndXJlIGRvZXNuJ3QgaGF2ZSBhIDxmaWdjYXB0aW9uPiBhbmQgZG9lc24ndCBoYXZlIGEgdmFsaWQgYXJpYS1sYWJlbGxlZGJ5XG4gICAgICAgICAqIE9yaWdpbjogIEhUTUwgNSAtIHBlciBSaWNoYXJkIFNjaHdlcmR0ZmVnZXIncyByZXF1aXJlbWVudHMuIGcxMTQ0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0ZpZ3VyZV9sYWJlbFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpmaWd1cmVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSkgOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAvLyBKQ0ggLSBOTyBPVVQgT0YgU0NPUEUgaGlkZGVuIGluIGNvbnRleHRcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBmaWd1cmVzID0gcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJmaWdjYXB0aW9uXCIpO1xuXG4gICAgICAgICAgICAvLyBMb29wIG92ZXIgYWxsIHRoZSBmaWdjYXB0aW9uIGVsZW1lbnRzIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdGhhdCBpcyBub3QgZW1wdHkgYW5kIG5vdCBoaWRkZW4uXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXBhc3NlZCAmJiBpIDwgZmlndXJlcy5sZW5ndGg7ICsraSkge1xuXG4gICAgICAgICAgICAgICAgLy8gTWFyayB0aGlzIHJ1bGUgYXMgcGFzc2VkIGlmIGFueSBvbmUgb2YgdGhlIGZpZ3VyZWNhcHRpb24gZWxlbWVudCBoYXMgY29udGVudCBhbmQgaXMgdmlzaWJsZVxuICAgICAgICAgICAgICAgIGlmIChmaWd1cmVzW2ldLmlubmVySFRNTC50cmltKCkubGVuZ3RoID4gMCAmJiBSUFRVdGlsLmlzTm9kZVZpc2libGUoZmlndXJlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Ugb25seSBjaGVjayBpZiB0aGUgXCJhcmlhLWxhYmVsbGVkYnlcIiBpcyB0aGVyZS4gVGhlcmUgaXMgYSBkaWZmZXJlbnQgcnVsZSB0byBjaGVjayBpZiB0aGUgaWQgaXMgdmFsaWQuXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKS50cmltKCkubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIFtdKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNGaWcgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5pbXBvcnQgeyBBUklBTWFwcGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uXCI7XG5cbmxldCBhMTF5UnVsZXNGb2N1czogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IERldGVybWluZSBpZiB3aWRnZXRzIHRoYXQgc2hvdWxkIGhhdmUgZm9jdXMgaGF2ZSBhIHRhYiBzdG9wXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJJQk1BX0ZvY3VzX1RhYmJhYmxlXCIsXG4gICAgICAgIGNvbnRleHQ6XG4gICAgICAgICAgICAvLyB3aWRnZXRcbiAgICAgICAgICAgIC8vIC0gY29tbWFuZCBcbiAgICAgICAgICAgIFwiYXJpYTpidXR0b24sYXJpYTpsaW5rXCJcbiAgICAgICAgICAgIC8vIFwiLG1lbnVpdGVtXCJcbiAgICAgICAgICAgIC8vIC0gY29tcG9zaXRlXG4gICAgICAgICAgICArIFwiLGFyaWE6c3BpbmJ1dHRvbixhcmlhOnRhYmxpc3RcIlxuICAgICAgICAgICAgLy8gXCIsZ3JpZFwiXG4gICAgICAgICAgICAvLyAtLSBzZWxlY3RcbiAgICAgICAgICAgICsgXCIsYXJpYTpjb21ib2JveCxhcmlhOmxpc3Rib3gsYXJpYTptZW51LGFyaWE6cmFkaW9ncm91cCxhcmlhOnRyZWVcIlxuICAgICAgICAgICAgLy8gLSBpbnB1dFxuICAgICAgICAgICAgKyBcIixhcmlhOmNoZWNrYm94LGFyaWE6c2xpZGVyLGFyaWE6c3BpbmJ1dHRvbixhcmlhOnRleHRib3hcIlxuICAgICAgICAgICAgLy8gKyBcIixvcHRpb24scmFkaW9cIlxuICAgICAgICAgICAgLy8gLSBncmlkY2VsbFxuICAgICAgICAgICAgLy8gKyBcIixjb2x1bW5oZWFkZXIscm93aGVhZGVyXCJcbiAgICAgICAgICAgIC8vIC0gcmFuZ2VcbiAgICAgICAgICAgIC8vICAgICAgICArIFwiLHByb2dyZXNzYmFyXCJcbiAgICAgICAgICAgICsgXCIsYXJpYTpzY3JvbGxiYXIsYXJpYTpzbGlkZXIsYXJpYTpzcGluYnV0dG9uXCJcbiAgICAgICAgLy8gLSByb3csc2VwYXJhdG9yLHRhYlxuICAgICAgICAvLyBvdGhlclxuICAgICAgICAvLyAgICAgICAgKyBcIixhcnRpY2xlXCJcbiAgICAgICAgLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHJvbGUgPSBBUklBTWFwcGVyLm5vZGVUb1JvbGUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgKytjb3VudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIG5vZGUgaGFzIGNoaWxkcmVuLCBsb29rIGZvciB0YWIgc3RvcHMgaW4gdGhlIGNoaWxkcmVuXG4gICAgICAgICAgICBpZiAoY291bnQgPCAxICYmIHJ1bGVDb250ZXh0LmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvdW50IDwgMSAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG53Lm5vZGUubm9kZVR5cGUgPT0gMSAmJiAhbncuYkVuZFRhZyAmJiBSUFRVdGlsLmlzVGFiYmFibGUobncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICsrY291bnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gY291bnQgPj0gMTtcbiAgICAgICAgICAgIHJldHVybiBwYXNzZWQgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKTogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFtyb2xlXSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBGbGFnIGlmIHdpZGdldHMgaGF2ZSBtb3JlIHRoYW4gb25lIHRhYiBzdG9wXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJJQk1BX0ZvY3VzX011bHRpVGFiXCIsXG4gICAgICAgIGNvbnRleHQ6XG4gICAgICAgICAgICAvLyB3aWRnZXRcbiAgICAgICAgICAgIC8vIC0gY29tbWFuZCBcbiAgICAgICAgICAgIFwiYXJpYTpidXR0b24sYXJpYTpsaW5rLGFyaWE6bWVudWl0ZW1cIlxuICAgICAgICAgICAgLy8gLSBjb21wb3NpdGVcbiAgICAgICAgICAgIC8vICsgXCIsZ3JpZFwiXG4gICAgICAgICAgICArIFwiLGFyaWE6c3BpbmJ1dHRvbixhcmlhOnRhYmxpc3RcIlxuICAgICAgICAgICAgLy8gLS0gc2VsZWN0XG4gICAgICAgICAgICArIFwiLGFyaWE6Y29tYm9ib3gsYXJpYTpsaXN0Ym94LGFyaWE6bWVudSxhcmlhOnJhZGlvZ3JvdXAsYXJpYTp0cmVlXCJcbiAgICAgICAgICAgIC8vIC0gaW5wdXRcbiAgICAgICAgICAgICsgXCIsYXJpYTpjaGVja2JveCxhcmlhOm9wdGlvbixhcmlhOnJhZGlvLGFyaWE6c2xpZGVyLGFyaWE6c3BpbmJ1dHRvbixhcmlhOnRleHRib3hcIlxuICAgICAgICAgICAgLy8gLSBncmlkY2VsbFxuICAgICAgICAgICAgKyBcIixhcmlhOmNvbHVtbmhlYWRlcixhcmlhOnJvd2hlYWRlclwiXG4gICAgICAgICAgICAvLyAtIHJhbmdlXG4gICAgICAgICAgICAvLyAgICAgICAgKyBcIixwcm9ncmVzc2JhclwiXG4gICAgICAgICAgICAvLyAgICAgICAgKyBcIixzY3JvbGxiYXJcIlxuICAgICAgICAgICAgLy8gICAgICAgICsgXCIsc3BpbmJ1dHRvblwiXG4gICAgICAgICAgICArIFwiLGFyaWE6c2xpZGVyLGFyaWE6dGFiXCJcbiAgICAgICAgLy8gLSByb3csc2VwYXJhdG9yXG4gICAgICAgIC8vIG90aGVyXG4gICAgICAgIC8vICsgXCIsYXJ0aWNsZVwiXG4gICAgICAgICxcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCByb2xlID0gQVJJQU1hcHBlci5ub2RlVG9Sb2xlKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc1RhYmJhYmxlKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgICsrY291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiBub2RlIGhhcyBjaGlsZHJlbiwgbG9vayBmb3IgdGFiIHN0b3BzIGluIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgaWYgKGNvdW50IDwgMiAmJiBydWxlQ29udGV4dC5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChjb3VudCA8IDIgJiYgbncubmV4dE5vZGUoKSAmJiBudy5ub2RlICE9IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudy5ub2RlLm5vZGVUeXBlID09IDEgJiYgIW53LmJFbmRUYWcgJiYgUlBUVXRpbC5pc1RhYmJhYmxlKG53Lm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICArK2NvdW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGNvdW50IDwgMjtcbiAgICAgICAgICAgIHJldHVybiBwYXNzZWQgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKTogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFtyb2xlXSk7XG4gICAgICAgIH1cbiAgICB9XG5dXG5leHBvcnQgeyBhMTF5UnVsZXNGb2N1cyB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNGb250OiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBmb250IHdpdGggY29sb3IgaXMgdXNlZCBpbiBhIGZvcm1cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfRm9udF9Db2xvckluRm9ybVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpmb3JtXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBmb250cyA9IHJ1bGVDb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZm9udFwiKTtcbiAgICAgICAgICAgIGlmIChmb250cyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhZm9udHNbaV0uaGFzQXR0cmlidXRlKFwiY29sb3JcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNGb250IH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwsIE5vZGVXYWxrZXIgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0Zvcm06IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGEgZm9ybSBkb2VzIG5vdCBoYXZlIGEgc3VibWl0IGJ1dHRvblxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMzJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9Gb3JtX0hhc1N1Ym1pdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpmb3JtXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIC8vIHN1Ym1pdCBidXR0b25zIGFyZSB1c3VhbGx5IGF0IHRoZSBib3R0b20gLSB3YWxrIGJhY2t3YXJkc1xuICAgICAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHJ1bGVDb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoIXBhc3NlZCAmJiBudy5wcmV2Tm9kZSgpICYmIG53Lm5vZGUgIT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFudy5iRW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gbncuZWxlbSgpLmdldEF0dHJpYnV0ZShcInR5cGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHlwZSA9PT0gXCJzdWJtaXRcIiB8fCB0eXBlID09PSBcImltYWdlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSBcImJ1dHRvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gbncuZWxlbSgpLmhhc0F0dHJpYnV0ZShcInR5cGVcIikgJiYgbncuZWxlbSgpLmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKSA9PT0gXCJzdWJtaXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobncubm9kZS5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaGFzUm9sZShudy5ub2RlLCBcImJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHsgLy8gV2FybmluZ1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgb25jaGFuZ2UgaXMgbm9uLWVtcHR5XG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDkyXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfRm9ybV9DaGFuZ2VFbXB0eVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpzZWxlY3Rbb25jaGFuZ2VdLCBkb206aW5wdXRbb25jaGFuZ2VdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwib25jaGFuZ2VcIikudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZXJlIGlzIGEgdGFyZ2V0LCBhbmQgdGV4dCBkb2VzIG5vdCBzcGVjaWZ5IGEgbmV3IHdpbmRvdy5cbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDgzLCBSUFQgRzQ5MVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0Zvcm1fVGFyZ2V0QW5kVGV4dFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpmb3JtW3RhcmdldF1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgcGFyYW1XaW5UZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXCJuZXcgd2luZG93XCJdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImFycmF5XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHRTdHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0YXJnZXRcIik7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdFN0ciA9PT0gXCJfcGFyZW50XCIgfHwgdFN0ciA9PT0gXCJfc2VsZlwiIHx8IHRTdHIgPT09IFwiX3RvcFwiIHx8IFJQVFV0aWwuZ2V0RnJhbWVCeU5hbWUocnVsZUNvbnRleHQsdFN0cikgIT0gbnVsbDtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gTmFtZSBpcyBub3QgcGFydCBvZiB0aGlzIGZyYW1lc2V0IOKAkyBtdXN0IGhhdmUgcG90ZW50aWFsIHRvIGNyZWF0ZSBuZXcgd2luZG93P1xuICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBhIG5ldyB3aW5kb3cgaXMgbWVudGlvbmVkXG4gICAgICAgICAgICAgICAgbGV0IHRleHRTdHIgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInRpdGxlXCIpKVxuICAgICAgICAgICAgICAgICAgICB0ZXh0U3RyICs9IFwiIFwiICsgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFwYXNzZWQgJiYgaSA8IHZhbGlkYXRlUGFyYW1zLnBhcmFtV2luVGV4dC52YWx1ZS5sZW5ndGg7ICsraSlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRTdHIuaW5kZXhPZih2YWxpZGF0ZVBhcmFtcy5wYXJhbVdpblRleHQudmFsdWVbaV0pICE9IC0xKSBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzRm9ybSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBBUklBTWFwcGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uXCI7XG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNGcmFtZTogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGhlIGZyYW1lIGVsZW1lbnQgaXMgbWlzc2luZyBhIHRpdGxlXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg2NFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0ZyYW1lX0hhc1RpdGxlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmZyYW1lLCBkb206aWZyYW1lXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBKQ0ggLSBOTyBPVVQgT0YgU0NPUEUgaGlkZGVuIGluIGNvbnRleHRcbiAgICAgICAgICAgIC8qcmVtb3ZlZCBvbmx5IHRoZSBjaGVjayBmb3Igcm9sZT1ub25lLiBBbHRob3VnaCByb2xlPXByZXNlbnRhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGVcbiAgICAgICAgICAgICBodHRwczovL3d3dy53My5vcmcvVFIvaHRtbC1hcmlhLyNkb2Njb25mb3JtYW5jZSAgdGFibGUsIHRoZSBjaGVjayBoYXMgYmVlbiBrZXB0IGR1ZSB0byB0aGVcbiAgICAgICAgICAgICBkZWNpc2lvbnMgdGFrZW4gaW4gREFQIFwiQ2hlY2sgaWZyYW1lcyB3aXRoIHJvbGU9XCJwcmVzZW50YXRpb25cIiBzaG91bGQgY29uc2lkZXIgcm9sZT1cIm5vbmVcIiBhbHNvICg5NjM5NSkqL1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgXCJwcmVzZW50YXRpb25cIikgfHwgIVJQVFV0aWwuaXNUYWJiYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQVJJQU1hcHBlci5jb21wdXRlTmFtZShydWxlQ29udGV4dCkudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGhlIGZyYW1lIGVsZW1lbnQgcG9pbnRzIGF0IHNvbWV0aGluZyB0aGF0IGlzbid0IGh0bWxcbiAgICAgICAgICogT3JpZ2luOiBWYWxlcmllXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJWYWxlcmllX0ZyYW1lX1NyY0h0bWxcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZnJhbWUsIGRvbTppZnJhbWVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInNyY1wiKSAmJlxuICAgICAgICAgICAgICAgIFJQVFV0aWwuaXNIdG1sRXh0KFJQVFV0aWwuZ2V0RmlsZUV4dChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJzcmNcIikpKTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzRnJhbWUgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgUlBUVXRpbCwgTm9kZVdhbGtlciB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzSGVhZGluZzogUnVsZVtdID0gW1xuXG4gICAgeyAvLyBFcnJvclxuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaGVhZGVycyB0aGF0IGFyZSBlbXB0eVxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzQ4OVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0hlYWRlcl9IYXNDb250ZW50XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmgxLCBkb206aDIsIGRvbTpoMywgZG9tOmg0LCBkb206aDUsIGRvbTpoNlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHsgLy8gV2FybmluZ1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIGFsbCBoZWFkaW5nIGVsZW1lbnRzXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiA0ODlcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9IZWFkZXJfVHJpZ2dlclwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpoMSwgZG9tOmgyLCBkb206aDMsIGRvbTpoNCwgZG9tOmg1LCBkb206aDZcIixcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBbXCJSUFRfSGVhZGVyX0hhc0NvbnRlbnRcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC50cmlnZ2VyT25jZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9IZWFkZXJfVHJpZ2dlclwiLCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBvbiBoZWFkZXJzICg8aDE+LCA8aDI+LCA8aDM+LCA8aDQ+LDxoNT4sIDxoNj4pIHRoYXQgaGF2ZSBtb3JlIHRoYW4gTiB3b3Jkcy5cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfSGVhZGVyc19GZXdXb3Jkc1wiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpoMSwgZG9tOmgyLCBkb206aDMsIGRvbTpoNCwgZG9tOmg1LCBkb206aDZcIixcbiAgICAgICAgZGVwZW5kZW5jaWVzOiBbXCJSUFRfSGVhZGVyX0hhc0NvbnRlbnRcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIGhlYWRpbmdMZW5ndGhUaHJlc2g6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDIwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgaGVhZGluZ0xlbmd0aFRocmVzaCA9IHZhbGlkYXRlUGFyYW1zLmhlYWRpbmdMZW5ndGhUaHJlc2gudmFsdWU7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC53b3JkQ291bnQoUlBUVXRpbC5nZXRJbm5lclRleHQocnVsZUNvbnRleHQpKSA8PSBoZWFkaW5nTGVuZ3RoVGhyZXNoO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBvbiA8cD4sIDxkaXY+LCBvciBiZXR3ZWVuIDxicj4ncyB3aG9zZSB0ZXh0IGNvbnRlbnQgaXMgbGVzcyB0aGFuIE4gd29yZHNcbiAgICAgICAgICogYW5kIGlzIGFsbCBlbXBoYXNpemVkLlxuICAgICAgICAgKiBFbXBoYXNpemVkIHRleHQgaXMgY29udGFpbmVkIGluIGEgPGI+LCA8ZW0+LCA8aT4sIDxzdHJvbmc+LCA8dT4gb3IgYSA8Zm9udD4gd2l0aCBzaXplID4gXCI0XCJcbiAgICAgICAgICogb3IgYSByZWxhdGl2ZSBpbmNyZWFzZWQgc2l6ZS5cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEczMjJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdcIixcbiAgICAgICAgY29udGV4dDogXCJkb206cCwgZG9tOmRpdiwgZG9tOmJyXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlUGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIG51bVdvcmRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG51bVdvcmRzID0gdmFsaWRhdGVQYXJhbXMubnVtV29yZHMudmFsdWU7XG4gICAgICAgICAgICBsZXQgd29yZHNTZWVuID0gMDtcbiAgICAgICAgICAgIGxldCB3b3JkU3RyIDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGxldCBlbXBoYXNpemVkVGV4dCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgd2hpbGUgKCFwYXNzZWQgJiZcbiAgICAgICAgICAgICAgICBudy5uZXh0Tm9kZSgpICYmXG4gICAgICAgICAgICAgICAgbncubm9kZSAhPT0gcnVsZUNvbnRleHQgJiZcbiAgICAgICAgICAgICAgICBudy5ub2RlICE9PSBET01VdGlsLnBhcmVudE5vZGUocnVsZUNvbnRleHQpICYmXG4gICAgICAgICAgICAgICAgIVtcImJyXCIsIFwiZGl2XCIsIFwicFwiXS5pbmNsdWRlcyhudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKSAvLyBEb24ndCByZXBvcnQgdHdpY2VcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgbndOYW1lID0gbncubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICgobndOYW1lID09IFwiYlwiIHx8IG53TmFtZSA9PSBcImVtXCIgfHwgbndOYW1lID09IFwiaVwiIHx8XG4gICAgICAgICAgICAgICAgICAgIG53TmFtZSA9PSBcInN0cm9uZ1wiIHx8IG53TmFtZSA9PSBcInVcIiB8fCBud05hbWUgPT0gXCJmb250XCIpICYmICFSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4obncubm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRTdHIgPSBSUFRVdGlsLmdldElubmVyVGV4dChudy5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHdjID0gUlBUVXRpbC53b3JkQ291bnQobmV4dFN0cik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3YyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRTdHIucHVzaChuZXh0U3RyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtcGhhc2l6ZWRUZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzU2VlbiArPSB3YztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB3b3Jkc1NlZW4gPiBudW1Xb3JkcztcbiAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCB0aGlzIG5vZGUgYmVjYXVzZSBpdCdzIGVtcGhhc2l6ZWRcbiAgICAgICAgICAgICAgICAgICAgbncuYkVuZFRhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChudy5ub2RlLm5vZGVUeXBlID09IDEgJiYgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShudy5ub2RlLCBcImFsdFwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChud05hbWUgPT0gXCJhcHBsZXRcIiB8fCBud05hbWUgPT0gXCJlbWJlZFwiIHx8IG53TmFtZSA9PSBcImltZ1wiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChud05hbWUgPT09IFwiaW5wdXRcIiAmJiBudy5lbGVtKCkuaGFzQXR0cmlidXRlKFwidHlwZVwiKSAmJiBudy5lbGVtKCkuZ2V0QXR0cmlidXRlKFwidHlwZVwiKSA9PSBcImltYWdlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG53TmFtZSA9PT0gXCIjdGV4dFwiICYmIG53Lm5vZGUubm9kZVZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2l2ZSB0aGVtIHRoZSBiZW5lZml0IG9mIHRoZSBkb3VidCBpZiB0aGVyZSdzIGEgbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG53TmFtZSA9PT0gXCJhXCIgJiYgbncuZWxlbSgpLmhhc0F0dHJpYnV0ZShcImhyZWZcIikgJiYgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShudy5ub2RlLCBcImhyZWZcIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3b3Jkc1NlZW4gPT0gMCkgcGFzc2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgeyBcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2UgeyBcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFt3b3JkU3RyLmpvaW4oXCIgXCIpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNIZWFkaW5nIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi4vLi4vLi4vZG9tL0RPTVV0aWxcIjtcbmltcG9ydCB7IEZyYWdtZW50VXRpbCB9IGZyb20gXCIuLi91dGlsL2ZyYWdtZW50XCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNIaWVyOiBSdWxlW10gPSBbe1xuICAgIC8qKlxuICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBsaXN0IHdpZGdldCB1c2luZyBncm91cCByb2xlIGFuZCBoYXMgY2hpbGRyZW4gdGhhdCBhcmUgbm90IGxpc3RpdGVtIHJvbGVcbiAgICAgKiBPcmlnaW46ICBXQUktQVJJQSAxLjFcbiAgICAgKi9cbiAgICBpZDogXCJIQUFDX0xpc3RfR3JvdXBfTGlzdEl0ZW1cIixcbiAgICBjb250ZXh0OiBcImFyaWE6Z3JvdXBcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGxldCBwYXJlbnQgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocnVsZUNvbnRleHQpO1xuICAgICAgICBpZiAoIVJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHBhcmVudCwgXCJsaXN0XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICBsZXQgY2hpbGRyZW4gPSBydWxlQ29udGV4dC5jaGlsZHJlbjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IHBhc3NlZCAmJiBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKGNoaWxkcmVuW2ldLCBcImxpc3RpdGVtXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgIH1cbiAgICB9XG59LFxuXG57XG4gICAgLyoqXG4gICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQgaXMgbm90IGEgZGVzY2VuZGFudCBieSBuYXR1cmUsIGJ5IGFyaWEtb3ducyBvciBhcmlhLWNvbnRyb2xzLlxuICAgICAqIE9yaWdpbjogIFdBSS1BUklBIDEuMVxuICAgICAqICAgICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS0xLjEvI2FyaWEtYWN0aXZlZGVzY2VuZGFudFxuICAgICAqL1xuICAgIGlkOiBcIkhBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrXCIsXG4gICAgY29udGV4dDogXCJkb206KlthcmlhLWFjdGl2ZWRlc2NlbmRhbnRdXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAvLyBjb21ib2JveCBhY3RpdmUgZGVzY2VuZGFudHMgaGFuZGxlZCBieSAnY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnQnXG4gICAgICAgIGlmIChSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgXCJjb21ib2JveFwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVzY2VuZGFudF9pZCA9IFJQVFV0aWwuZ2V0QXJpYUF0dHJpYnV0ZShydWxlQ29udGV4dCwgXCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIik7XG4gICAgICAgIC8vIFBPRjE6IFRoZSBhdHRyaWJ1dGUgaXMgZW1wdHlcbiAgICAgICAgaWYgKCFkZXNjZW5kYW50X2lkIHx8IGRlc2NlbmRhbnRfaWQudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGVzY2VuZGFudCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBkZXNjZW5kYW50X2lkLnRyaW0oKSk7XG4gICAgICAgIGlmICghZGVzY2VuZGFudCkge1xuICAgICAgICAgICAgLy8gVGhlIHJlZmVyZW5jZWQgZWxlbWVudCBkb2Vzbid0IGV4aXN0LiBXZSBsZXQgMTA3NyB0byB0cmlnZ2VyIHRoZSBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShkZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgLy8gUE9GMjogYXJpYS1hY3RpdmVkZXNjZW5kYW50IHJlZmVyZW5jZXMgYSBoaWRkZW4gbm9kZVxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMS4gVGhlIHZhbHVlIG9mIGFyaWEtYWN0aXZlZGVzY2VuZGFudCByZWZlcnMgdG8gYW4gZWxlbWVudCB0aGF0IGlzIGVpdGhlciBhIGRlc2NlbmRhbnQgb2YgXG4gICAgICAgIC8vIHRoZSBlbGVtZW50IHdpdGggRE9NIGZvY3VzXG4gICAgICAgIGlmIChydWxlQ29udGV4dC5jb250YWlucyhkZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBvZklkID0gMjtcblxuICAgICAgICAvLyBvciBpcyBhIGxvZ2ljYWwgZGVzY2VuZGFudCBhcyBpbmRpY2F0ZWQgYnkgdGhlIGFyaWEtb3ducyBhdHRyaWJ1dGUuXG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIikpIHtcbiAgICAgICAgICAgIGxldCBvd25lZF9pZHMgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1vd25zXCIpLnRyaW0oKSkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvd25lZF9pZHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgb3duZWRfZWxlID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIG93bmVkX2lkc1tpXSk7XG4gICAgICAgICAgICAgICAgaWYgKG93bmVkX2VsZS5jb250YWlucyhkZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gVGhlIGVsZW1lbnQgd2l0aCBET00gZm9jdXMgaXMgYSB0ZXh0Ym94IHdpdGggYXJpYS1jb250cm9scyByZWZlcnJpbmcgdG8gYW4gZWxlbWVudCB0aGF0IFxuICAgICAgICAvLyAgc3VwcG9ydHMgYXJpYS1hY3RpdmVkZXNjZW5kYW50LCBhbmQgdGhlIHZhbHVlIG9mIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBzcGVjaWZpZWQgZm9yIHRoZSBcbiAgICAgICAgLy8gIHRleHRib3ggcmVmZXJzIHRvIGVpdGhlciBhIGRlc2NlbmRhbnQgb2YgdGhlIGVsZW1lbnQgY29udHJvbGxlZCBieSB0aGUgdGV4dGJveCBvciBpcyBhIGxvZ2ljYWwgXG4gICAgICAgIC8vICBkZXNjZW5kYW50IG9mIHRoYXQgY29udHJvbGxlZCBlbGVtZW50IGFzIGluZGljYXRlZCBieSB0aGUgYXJpYS1vd25zIGF0dHJpYnV0ZS5cbiAgICAgICAgLy9cbiAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcInRleHRib3hcIikgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1jb250cm9sc1wiKSkge1xuICAgICAgICAgICAgcG9mSWQgPSAzO1xuICAgICAgICAgICAgbGV0IGNvbnRyb2xsZWRfaWRzID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtY29udHJvbHNcIikudHJpbSgpKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRyb2xsZWRfaWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbnRyb2xsZWRfZWxlID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGNvbnRyb2xsZWRfaWRzW2ldKTtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbGxlZF9lbGUuY29udGFpbnMoZGVzY2VuZGFudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbGxlZF9lbGUuaGFzQXR0cmlidXRlKFwiYXJpYS1vd25zXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvd25zX2lkcyA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhjb250cm9sbGVkX2VsZS5nZXRBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIikudHJpbSgpKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgb3duc19pZHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvd25lZF9lbGUgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgb3duc19pZHNbal0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG93bmVkX2VsZS5jb250YWlucyhkZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBPRjM6IEknbSBub3QgYSBjb21ib2JveCwgYW5kIHRoZSByZWZlcmVuY2VkIGFjdGl2ZS1kZXNjZW5kYW50IGlzIG5vdCBhIGRlc2NlbmRhbnQgYW5kIG5vdCBvd25lZCBieSB0aGUgZWxlbWVudCBcbiAgICAgICAgLy8gdGhhdCByZWZlcmVuY2VkIGl0LlxuICAgICAgICBpZiAocG9mSWQgPT0gMykge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsOyAgICAgICAgXG4gICAgfVxufVxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNIaWVyIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MsIFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5pbXBvcnQgeyBBbmNlc3RvclV0aWwgfSBmcm9tIFwiLi4vdXRpbC9hbmNlc3RvclwiO1xuaW1wb3J0IHsgRnJhZ21lbnRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvZnJhZ21lbnRcIjtcbmltcG9ydCB7IExhbmdVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGFuZ1wiO1xuXG5sZXQgYTExeVJ1bGVzSHRtbDogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGhlIGRvY3VtZW50IGxhbmd1YWdlIGlzIGludmFsaWRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDU3XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfSHRtbF9IYXNMYW5nXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmh0bWxcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSwgY29udGV4dEhpZXJhcmNoaWVzPzogUnVsZUNvbnRleHRIaWVyYXJjaHkpOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIC8vIFRoaXMgcnVsZSBkb2VzIG5vdCBhcHBseSBpbnNpZGUgYSBwcmVzZW50YXRpb25hbCBmcmFtZVxuICAgICAgICAgICAgaWYgKEFuY2VzdG9yVXRpbC5pc1ByZXNlbnRhdGlvbkZyYW1lKGNvbnRleHRIaWVyYXJjaGllcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgZG9jdHlwZVN0cmluZyA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuZG9jdHlwZSA/IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuZG9jdHlwZS5wdWJsaWNJZCA6IFwiXCI7XG4gICAgICAgICAgICBpZiAoIWRvY3R5cGVTdHJpbmcpIGRvY3R5cGVTdHJpbmcgPSBcIlwiO1xuICAgICAgICAgICAgbGV0IGxhbmcgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJsYW5nXCIpO1xuICAgICAgICAgICAgbGV0IGxhbmdYTUwgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKTtcblxuICAgICAgICAgICAgaWYgKGRvY3R5cGVTdHJpbmcuaW5jbHVkZXMoJ1hIVE1MJykgJiYgIWRvY3R5cGVTdHJpbmcuaW5jbHVkZXMoXCIxLjBcIikpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWxhbmdYTUwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gWEhUTUwgIT0gMS4wIChtdXN0IGhhdmUgeG1sOmxhbmdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiLFtsYW5nWE1MXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N0eXBlU3RyaW5nLmluY2x1ZGVzKCdYSFRNTCcpICYmIGRvY3R5cGVTdHJpbmcuaW5jbHVkZXMoXCIxLjBcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgWEhUTUwgMS4wXG4gICAgICAgICAgICAgICAgLy8gSWYgbmVpdGhlciBpcyBwcm92aWRlZCwgaXQncyBhIGZhaWx1cmVcbiAgICAgICAgICAgICAgICBpZiAoIWxhbmcgJiYgIWxhbmdYTUwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gWEhUTUwgYW5kIG5vIGxhbmdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFuZyAmJiBsYW5nWE1MKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYW5nICE9PSBsYW5nWE1MKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLnZhbGlkUHJpbWFyeUxhbmcobGFuZykgfHwgIUxhbmdVdGlsLnZhbGlkUHJpbWFyeUxhbmcobGFuZ1hNTCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgRWxlbV9MYW5nX1ZhbGlkIGhhbmRsZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmdVdGlsLm1hdGNoUHJpbWFyeUxhbmcobGFuZywgbGFuZ1hNTCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCBhbmQgbGFuZyBhbmQgeG1sOmxhbmcsIGJ1dCB0aGV5IGRvbid0IG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF80XCIsIFtsYW5nLCBsYW5nWE1MXSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzVcIiwgW2xhbmcsIGxhbmdYTUxdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCBhbmQgbGFuZyBhbmQgeG1sOmxhbmcgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiLFtsYW5nXSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFuZykge1xuICAgICAgICAgICAgICAgICAgICAvLyBYSFRNTCBhbmQgb25seSBsYW5nIChva2F5IGlmIG9ubHkgZGVsaXZlcmVkIHZpYSB0ZXh0L2h0bWwpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzVcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gWEhUTUwgYW5kIG9ubHkgeG1sOmxhbmcgKG9rYXkgaWYgb25seSBkZWxpdmVyZWQgdmlhIHhtbCBtaW1lIHR5cGUpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzZcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWxhbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGFuZyAmJiBsYW5nWE1MKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhUTUw1IHBvbHlnbG90IGRvY3VtZW50c1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFuZyAhPT0gbGFuZ1hNTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFMYW5nVXRpbC52YWxpZFByaW1hcnlMYW5nKGxhbmcpIHx8ICFMYW5nVXRpbC52YWxpZFByaW1hcnlMYW5nKGxhbmdYTUwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IEVsZW1fTGFuZ19WYWxpZCBoYW5kbGUgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFMYW5nVXRpbC5tYXRjaFByaW1hcnlMYW5nKGxhbmcsIGxhbmdYTUwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWEhUTUwgYW5kIGxhbmcgYW5kIHhtbDpsYW5nLCBidXQgdGhleSBkb24ndCBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfNFwiLCBbbGFuZywgbGFuZ1hNTF0sIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF81XCIsIFtsYW5nLCBsYW5nWE1MXSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gWEhUTUwgYW5kIGxhbmcgYW5kIHhtbDpsYW5nIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIixbbGFuZ10pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIixbbGFuZ10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBza2lwIG5hdmlnYXRpb24gaXMgbWlzc2luZyAoaGVhZGVycywgZnJhbWVzLCBvciBza2lwIGxpbmtzIGNvdW50KVxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzQ4MVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX0h0bWxfU2tpcE5hdlwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpodG1sXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZnJhbWVzID0gUlBUVXRpbC5nZXREb2NFbGVtZW50c0J5VGFnKHJ1bGVDb250ZXh0LCBcImZyYW1lXCIpO1xuICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSBSUFRVdGlsLmdldERvY0VsZW1lbnRzQnlUYWcocnVsZUNvbnRleHQsIFwiaDFcIik7XG5cbiAgICAgICAgICAgIGlmICgoZnJhbWVzICE9IG51bGwgJiYgZnJhbWVzLmxlbmd0aCA+IDApIHx8IChoZWFkZXJzICE9IG51bGwgJiYgaGVhZGVycy5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIGZyYW1lcyBvciBoZWFkaW5ncyBhcmUgdXNlZCwgcGFzc1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIHNraXAgYW5jaG9yc1xuICAgICAgICAgICAgICAgIGxldCBhbmNob3JzID0gUlBUVXRpbC5nZXREb2NFbGVtZW50c0J5VGFnKHJ1bGVDb250ZXh0LCBcImFcIik7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldHMgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyAhcGFzc2VkICYmIGlkeCA8IGFuY2hvcnMubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYW5jaG9yc1tpZHhdLmhhc0F0dHJpYnV0ZShcImhyZWZcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBocmVmID0gYW5jaG9yc1tpZHhdLmhyZWY7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGhyZWYgIT09IHR5cGVvZiBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhyZWYuYmFzZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmID0gaHJlZi5iYXNlVmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWYgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0bXBMb2NhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKChydWxlQ29udGV4dC5vd25lckRvY3VtZW50IGFzIGFueSkubG9jYXRpb25Gcm9tREFQKSAhPSBcInVuZGVmaW5lZFwiICYmIChydWxlQ29udGV4dC5vd25lckRvY3VtZW50IGFzIGFueSkubG9jYXRpb25Gcm9tREFQICE9IG51bGwpIHsgLy8gREFQIHNldHMgaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBMb2NhdGlvbiA9IChydWxlQ29udGV4dC5vd25lckRvY3VtZW50IGFzIGFueSkubG9jYXRpb25Gcm9tREFQO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gc2VydmVyIHNjYW4gaGFzIHRoZSBsb2NhdGlvbiBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBMb2NhdGlvbiA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQubG9jYXRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG9jSHJlZiA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wTG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NIcmVmID0gdG1wTG9jYXRpb24uaHJlZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeCB3ZWlyZCBidWdzIHdpdGggaG93IHZhcmlvdXMgcGFyc2VycyByZXBvcnQgb24gZmlsZTogdXJsJ3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaHJlZi5zdGFydHNXaXRoKFwiZmlsZTovLy9cIikpIGhyZWYgPSBcImZpbGU6L1wiICsgaHJlZi5zdWJzdHJpbmcoXCJmaWxlOi8vL1wiLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jSHJlZi5zdGFydHNXaXRoKFwiZmlsZTovLy9cIikpIGRvY0hyZWYgPSBcImZpbGU6L1wiICsgZG9jSHJlZi5zdWJzdHJpbmcoXCJmaWxlOi8vL1wiLmxlbmd0aCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChocmVmLmNoYXJBdCgwKSA9PSBcIiNcIiB8fCBocmVmLnN0YXJ0c1dpdGgoZG9jSHJlZiArIFwiI1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBSUFRVdGlsLmdldEZpbGVBbmNob3IoaHJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCB0YXJnZXQpICE9IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzW3RhcmdldF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFuY2hvcnNbaWR4XS5oYXNBdHRyaWJ1dGUoXCJuYW1lXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBc3N1bWUgZm9yd2FyZCBqdW1waW5nIHRhcmdldHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gYW5jaG9yc1tpZHhdLmdldEF0dHJpYnV0ZShcIm5hbWVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5pbmRleE9mKFwiI1wiKSAhPSAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gUlBUVXRpbC5nZXRGaWxlQW5jaG9yKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gbmFtZSBpbiB0YXJnZXRzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzSHRtbCB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNJbWc6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhbiBpbWFnZSBoYXMgbm8gYWx0IGF0dHJpYnV0ZVxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMzdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbWdfSGFzQWx0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gSWYgbm90IHZpc2libGUgdG8gdGhlIHNjcmVlbiByZWFkZXIsIGlnbm9yZVxuICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmlzTm9kZVZpc2libGUocnVsZUNvbnRleHQpIHx8IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSW1hZ2VzIHdpdGggZGlmZmVyZW50IHJvbGVzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IG90aGVyIEFSSUEgcnVsZXNcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJvbGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpO1xuICAgICAgICAgICAgICAgIGlmIChyb2xlID09PSBcInByZXNlbnRhdGlvblwiIHx8IHJvbGUgPT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzVGFiYmFibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgdGhlIHJvbGVcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFsdFwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBhbHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIik7XG4gICAgICAgICAgICAgICAgaWYgKGFsdC50cmltKCkubGVuZ3RoID09PSAwICYmIGFsdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWx0LCBidXQgaXQncyB3aGl0ZXNwYWNlIChhbHQ9XCIgXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0aXRsZVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInRpdGxlXCIpO1xuICAgICAgICAgICAgICAgIGlmICh0aXRsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2FtZSBhcyBubyBhbHRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGl0bGUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB0aXRsZSA9IFwiIFwiXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfM1wiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyB3aGVuIGEgbm9uLW51bGwgYWx0IGF0dHJpYnV0ZSBpcyBhcHBsaWVkIHRvIGFuIGltYWdlIGFuZCByb2xlPVwicHJlc2VudGF0aW9uXCIgb3Igcm9sZT1cIm5vbmVcIiAgaXMgc2V0IG9uIHRoZSBpbWFnZS5cbiAgICAgICAgICogT3JpZ2luOiBDSTE2MiBDaGVja3BvaW50IDEuMWFcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbWdbYWx0XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgXCJwcmVzZW50YXRpb25cIikgfHwgUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcIm5vbmVcIikpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikubGVuZ3RoID09IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiB0aGVyZSBhcmUgcmVkdW5kYW5jaWVzIGJldHdlZW4gbGluayB0ZXh0IGFuZCBpbWFnZSBhbHQgdGV4dC5cbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgV0NBR19IMlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19MaW5rVGV4dE5vdFJlZHVuZGFudFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbWdbYWx0XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGFOb2RlID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJhXCIpO1xuICAgICAgICAgICAgLy9JZiBub3QgaW4gYW4gYW5jaG9yLCBPdXQgb2YgU2NvcGVcbiAgICAgICAgICAgIGlmIChhTm9kZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgbGV0IGFsdFRleHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoYWx0VGV4dC5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIElmIGFsdCB0ZXh0IGlzIGVtcHR5LCB0aGVyZSdzIG5vIHRleHQgdG8gYmUgcmVkdW5kYW50IC0gbGV0IFdDQUcyMF9BX0hhc1RleHRcbiAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGluIHRoYXQgY2FzZS5cbiAgICAgICAgICAgICAgICAvLyBTbyBPdXQgb2YgU2NvcGUgZm9yIHRoaXMgcnVsZVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGlubmVyVGV4dCA9IGFOb2RlLmlubmVyVGV4dDtcbiAgICAgICAgICAgIGxldCBsaW5rVGV4dCA9IFwiXCI7XG5cbiAgICAgICAgICAgIGlmIChpbm5lclRleHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxpbmtUZXh0ID0gaW5uZXJUZXh0LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmtUZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoYWx0VGV4dCA9PSBsaW5rVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUZXh0IGluIGxpbmtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgLy9hbHQgaXMgbm9uLXplcm8sIGJ1dCBubyBsaW5rIHRleHQgLSBlbnN1cmUgYWRqYWNlbnQgbGluayB0ZXh0IGlzbid0IHJlZHVuZGFudFxuICAgICAgICAgICAgICAgIGxldCB3YWxrID0gbmV3IE5vZGVXYWxrZXIoYU5vZGUpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgd2Fsay5wcmV2Tm9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgbm9kZSBhbmQgbm9kZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSB3YWxrLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChub2RlTmFtZSA9PSBcIiN0ZXh0XCIgJiYgbm9kZS5ub2RlVmFsdWUubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChub2RlTmFtZSA9PSBcImltZ1wiICYmIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobm9kZSwgXCJhbHRcIikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb21wbHkgd2l0aCB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgU2V0dGluZyBpZiB0aGUgYSBlbGVtZW50IHNob3VsZCBiZSBjaGVja2VkIG9yIG5vdFxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlTmFtZSA9PT0gXCJhXCIgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGV4dCBiZWZvcmUgaW1hZ2UgbGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gKChub2RlIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQgfHwgbm9kZS50ZXh0Q29udGVudCB8fCBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKSAhPSBhbHRUZXh0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2FsayA9IG5ldyBOb2RlV2Fsa2VyKGFOb2RlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIHdhbGsubmV4dE5vZGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIG5vZGUgYW5kIG5vZGVOYW1lXG4gICAgICAgICAgICAgICAgICAgIGxldCBub2RlID0gd2Fsay5ub2RlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKChub2RlTmFtZSA9PSBcIiN0ZXh0XCIgJiYgbm9kZS5ub2RlVmFsdWUubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChub2RlTmFtZSA9PSBcImltZ1wiICYmIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobm9kZSwgXCJhbHRcIikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDb21wbHkgd2l0aCB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgU2V0dGluZyBpZiB0aGUgYSBlbGVtZW50IHNob3VsZCBiZSBjaGVja2VkIG9yIG5vdFxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChub2RlTmFtZSA9PSBcImFcIiAmJiAhUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAobm9kZSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LnRyaW0oKS50b0xvd2VyQ2FzZSgpICE9IGFsdFRleHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGV4dCBhZnRlciBpbWFnZSBsaW5rXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfM1wiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhbiBpbWFnZSBoYXMgYWx0IHRleHRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDM3LCBSUFQgNS42IEc0NzNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbWdfQWx0VHJpZ2dlck5vbkRlY29yYXRpdmVcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW1nW2FsdF1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgYnVsbGV0TWF4OiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAzMCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhvcml6TWluV2lkdGg6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDQwMCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGhvcml6TWF4SGVpZ2h0OiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAzMCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgXCJwcmVzZW50YXRpb25cIikgfHwgUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcIm5vbmVcIikgfHwgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWx0XCIpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gdmFsaWRhdGVQYXJhbXM7XG4gICAgICAgICAgICBsZXQgbXlIZWlnaHQgPSAtMTtcbiAgICAgICAgICAgIGxldCBteVdpZHRoID0gLTE7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiaGVpZ2h0XCIpKSB7XG4gICAgICAgICAgICAgICAgbXlIZWlnaHQgPSBwYXJzZUludChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIndpZHRoXCIpKSB7XG4gICAgICAgICAgICAgICAgbXlXaWR0aCA9IHBhcnNlSW50KHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBteUhlaWdodCAhPSAtMSAmJiBteVdpZHRoICE9IC0xICYmXG4gICAgICAgICAgICAgICAgKChteVdpZHRoIDw9IHBhcmFtcy5idWxsZXRNYXgudmFsdWUgJiYgbXlIZWlnaHQgPD0gcGFyYW1zLmJ1bGxldE1heC52YWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKG15V2lkdGggPj0gcGFyYW1zLmhvcml6TWluV2lkdGgudmFsdWUgJiYgbXlIZWlnaHQgPD0gcGFyYW1zLmhvcml6TWF4SGVpZ2h0LnZhbHVlKSk7XG5cbiAgICAgICAgICAgIHJldHVybiBwYXNzZWQgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKSA6IFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGl0bGUgaXMgbm9uLWVtcHR5IHdoZW4gYWx0IGlzIG51bGxcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDY3XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbWdbYWx0XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdlIGhhdmUgYSB0aXRsZSwgYnV0IGFsdCBpcyBlbXB0eVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwidGl0bGVcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IEVuc3VyZSB0aGF0IGltYWdlIHdpdGggc2VydmVyIHNpZGUgbWFwcyBhbHNvIGhhdmUgYVxuICAgICAgICAgKiBmdW5jdGlvbmluZyB1c2VyIHNpZGUgbWFwLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzExXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfSW1nX1VzZW1hcFZhbGlkXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1tpc21hcF1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidXNlbWFwXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHVzZW1hcCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInVzZW1hcFwiKTtcbiAgICAgICAgICAgICAgICB1c2VtYXAgPSB1c2VtYXAudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgbGV0IGlkeCA9IHVzZW1hcC5pbmRleE9mKFwiI1wiKTtcbiAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKVxuICAgICAgICAgICAgICAgICAgICB1c2VtYXAgPSB1c2VtYXAuc3Vic3RyKGlkeCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHVzZW1hcC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBtYXBzID0gUlBUVXRpbC5nZXREb2NFbGVtZW50c0J5VGFnKHJ1bGVDb250ZXh0LCBcIm1hcFwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFwYXNzZWQgJiYgaSA8IG1hcHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IG1hcHNbaV0uaGFzQXR0cmlidXRlKFwibmFtZVwiKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHNbaV0uZ2V0QXR0cmlidXRlKFwibmFtZVwiKS50b0xvd2VyQ2FzZSgpID09IHVzZW1hcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBJZiB0aGUgaW1hZ2UgaGFzIGEgbm9uLWVtcHR5IHVzZW1hcCwgZW5zdXJlIHRoYXQgaXQgYWxzbyBoYXMgYWx0IHRleHQuXG4gICAgICAgICAqIE9yaWdpbjogQ0kxNjJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfSW1nX1VzZW1hcEFsdFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbWdbdXNlbWFwXSwgZG9tOmltZ1tpc21hcF1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhbHRcIikgfHxcbiAgICAgICAgICAgICAgICAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImlzbWFwXCIpICYmICFSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInVzZW1hcFwiKSk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYW4gaW1hZ2UncyBhbHQgdGV4dCB1c2VzIGNvbW1vbiBtaXN1c2VzXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDUzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfSW1nX0FsdENvbW1vbk1pc3VzZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbWcsIGRvbTphcmVhLCBkb206aW5wdXRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgYmFkVGV4dDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW1wic2hvcnQgZGVzY3JpcHRpb25cIl0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiW3N0cmluZ11cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gQWx0IHRleHQgY2hlY2sgYXJlIGVsc2V3aGVyZSAoU2VlIDQxLCAyNDAsIDQ1NSlcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhbHRcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgYWx0VGV4dCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKGFsdFRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYmFkVGV4dCA9IHZhbGlkYXRlUGFyYW1zLmJhZFRleHQudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBwYXNzZWQgJiYgaSA8IGJhZFRleHQubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGFsdFRleHQuaW5kZXhPZihiYWRUZXh0W2ldKSA9PSAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3JjID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKChub2RlTmFtZSA9PSBcImFyZWFcIikgPyBcImhyZWZcIiA6IFwic3JjXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgaXQgdG8gcGFzcyBpZiB0aGVyZSdzIG5vIHNyYyAtIGNhbid0IGRldGVybWluZSB0aGVzZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcmMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhaWwgaWYgdGhlIGFsdCBtYXRjaGVzIHRoZSBzcmMgZXhhY3RseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFsc28gZmFpbCBpZiB0aGUgYWx0IGhhcyBhIC4gaW4gaXQgYW5kIGVpdGhlciB0aGUgc3JjIGlzIGluIHRoZSBhbHQgb3IgdGhlIGFsdCBpcyBpbiB0aGUgc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gc3JjLnRyaW0oKSAhPSBhbHRUZXh0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbHRUZXh0LmluZGV4T2YoXCIuXCIpID09IC0xIHx8IChhbHRUZXh0LmluZGV4T2Yoc3JjKSA9PSAtMSAmJiBzcmMuaW5kZXhPZihhbHRUZXh0KSA9PSAtMSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIGFuIGltYWdlIGRvZXMgbm90IGhhdmUgYSBsb25nIGRlc2NyaXB0aW9uXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDU0IEVycm9yc1xuICAgICAgICAgKiBUb2RvOiBpc0JhZCBVUkwgQ2hlY2tcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9JbWdfTG9uZ0Rlc2NyaXB0aW9uMlwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbWdbbG9uZ2Rlc2NdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IGxvbmdkZXNjID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwibG9uZ2Rlc2NcIik7XG4gICAgICAgICAgICAvLyBpZiAobG9uZ2Rlc2MgaXMgYmFkIFVSTCkgcGFzc2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGxldCBleHQgPSBSUFRVdGlsLmdldEZpbGVFeHQobG9uZ2Rlc2MpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGV4dC5sZW5ndGggIT0gMCAmJiBSUFRVdGlsLmlzSHRtbEV4dChleHQpXG4gICAgICAgICAgICAgICAgfHwgbG9uZ2Rlc2Muc3RhcnRzV2l0aChcIiNcIilcbiAgICAgICAgICAgICAgICB8fCBsb25nZGVzYy5zdGFydHNXaXRoKFwiaHR0cDovL1wiKVxuICAgICAgICAgICAgICAgIHx8IGxvbmdkZXNjLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKVxuICAgICAgICAgICAgICAgIHx8IGxvbmdkZXNjLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKTtcblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgYW4gZWxlbWVudCBoYXMgYSBiYWNrZ3JvdW5kIGltYWdlIGFuZCBoYXMgdGV4dCBvciBoYXMgdGl0bGVcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgMS4xLjEgRjMuIEcxMTMyXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0JhY2tncm91bmRJbWdfSGFzVGV4dE9yVGl0bGVcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICAgICAgbGV0IHN0eWxlID0gZG9jLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKHN0eWxlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgYmFja2dyb3VuZEltZ3MgPSBzdHlsZS5iYWNrZ3JvdW5kSW1hZ2U7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGJhY2tncm91bmRJbWdzICE9IG51bGwgJiYgYmFja2dyb3VuZEltZ3MgIT0gXCJcIiAmJiBiYWNrZ3JvdW5kSW1ncyAhPSAnbm9uZScgJiYgYmFja2dyb3VuZEltZ3MgIT0gJ2luaGVyaXQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmlubmVySFRNTCAhPSBudWxsICYmIHJ1bGVDb250ZXh0LmlubmVySFRNTC50cmltKCkubGVuZ3RoICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKCd0aXRsZScpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGUgIT0gbnVsbCAmJiB0aXRsZS5sZW5ndGggIT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZU1hbnVhbChcIk1hbnVhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIGltYWdlIHJvbGUgZG9lcyBub3QgaGF2ZSBhIG1lYW5pbmdmdWwgYWx0ZXJuYXRlIHRleHQuXG4gICAgICAgICAqIE9yaWdpbjogIEhBQUMsIEcxMTI4XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0FyaWFfSW1nQWx0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTppbWdcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBubyByb2xlLCB0aGlzIGlzIGltcGxpY2l0LCBhbmQgY292ZXJlZCBieSBXQ0FHMjBfSW1nX0hhc0FsdFxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogcmVtb3ZlZCB0aGUgcm9sZSBjaGVjayByb2xlPSBwcmVzZW50YXRpb24gc2luY2UgaWYgYW4gZWxlbWVudCBoYXMgcm9sZT1pbWcsIHRoZW4gdGhlcmUgbmVlZHMgdG8gYmUgYSBjaGVjayBmb3IgYWx0IGF0dHJpYnV0ZSByZWdhcmRsZXNzIG9mIHRoZSBwcmVzZWNuZSBvZiByb2xlPXByZXNlbnRhdGlvblxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgXCJwcmVzZW50YXRpb25cIikgfHwgUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcIm5vbmVcIikpe1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoMSk7XG4gICAgICAgICAgICB9Ki9cblxuICAgICAgICAgICAgLyogSkNIIC0gUG9pbnRzIG9mIGZhaWx1cmVcbiAgICAgICAgICAgICAqICAgIDAuIE1pc3NpbmcgYWx0IGF0dHIgd2l0aCB2YWx1ZVxuICAgICAgICAgICAgICogICAgMS4gTWlzc2luZyBhcmlhLWxhYmVsIG9yIGFyaWEtbGFiZWxsZWRieVxuICAgICAgICAgICAgICogICAgMi4gTWlzc2luZyB0aXRsZSBhdHRyIHdpdGggdmFsdWVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgLy8gU2tpcCBhbiBpbWFnZSB3aXRoIGEgc3RydWN0dXJhbCByb2xlIC0gaW1nIG11c3QgYmUgaW4gdGhlIHJvbGUgbGlzdCBhdCBsZWFzdFxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpID09PSBcInRydWVcIikgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIElmIHJvbGUgPT09IGltZywgeW91IG11c3QgdXNlIGFuIGFyaWEgbGFiZWxcbiAgICAgICAgICAgIC8vY2hlY2sgYXR0cmlidXRlcyBhcmlhLWxhYmVsIGFuZCBhcmlhLWxhYmVsbGVkYnkgZm9yIG90aGVyIHRhZ3MgKGUuZy4gPGRpdj4sIDxzcGFuPiwgZXRjKVxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KS5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInN2Z1wiKSB7XG4gICAgICAgICAgICAgICAgbGV0IHN2Z1RpdGxlID0gcnVsZUNvbnRleHQucXVlcnlTZWxlY3RvcihcInRpdGxlXCIpO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHN2Z1RpdGxlICYmIFJQVFV0aWwuaGFzSW5uZXJDb250ZW50KHN2Z1RpdGxlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvL2NoZWNrIHRpdGxlIGF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGd1aWRlIHBlb3BsZSB0byB1c2UgYWx0IG9yIGxhYmVsIC0gdGhpcyBpcyBqdXN0IGEgc2Vjb25kYXJ5IGFwcHJvYWNoIHRvIHNpbGVuY2UgdGhlIHJ1bGUuXG4gICAgICAgICAgICAgICAgLy8gU28sIHdlIHNob3VsZCBrZWVwIHRoZSBQT0YgZnJvbSBhYm92ZS5cbiAgICAgICAgICAgICAgICAvLyBpZiAoIXBhc3NlZCkgUE9GID0gXCJGYWlsXzNcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vcmV0dXJuIG5ldyBWYWxpZGF0aW9uUmVzdWx0KHBhc3NlZCwgW3J1bGVDb250ZXh0XSwgJ3JvbGUnLCAnJywgW10pO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBhIGltYWdlIHJvbGUgZG9lcyBub3QgaGF2ZSBhIG1lYW5pbmdmdWwgYWx0ZXJuYXRlIHRleHQuXG4gICAgICAgICAqIE9yaWdpbjogIEhBQUMsIEcxMTI4XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0FyaWFfU3ZnQWx0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpncmFwaGljcy1kb2N1bWVudCxhcmlhOmdyYXBoaWNzLXN5bWJvbFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJvbGVcIikgfHwgIXJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikuaW5jbHVkZXMoXCJncmFwaGljcy1cIikpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvKiByZW1vdmVkIHRoZSByb2xlIGNoZWNrIHJvbGU9IHByZXNlbnRhdGlvbiBzaW5jZSBpZiBhbiBlbGVtZW50IGhhcyByb2xlPWltZywgdGhlbiB0aGVyZSBuZWVkcyB0byBiZSBhIGNoZWNrIGZvciBhbHQgYXR0cmlidXRlIHJlZ2FyZGxlc3Mgb2YgdGhlIHByZXNlY25lIG9mIHJvbGU9cHJlc2VudGF0aW9uXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcInByZXNlbnRhdGlvblwiKSB8fCBSUFRVdGlsLmhhc1JvbGUocnVsZUNvbnRleHQsIFwibm9uZVwiKSl7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgICAgIH0qL1xuXG4gICAgICAgICAgICAvKiBKQ0ggLSBQb2ludHMgb2YgZmFpbHVyZVxuICAgICAgICAgICAgICogICAgMC4gTWlzc2luZyBhbHQgYXR0ciB3aXRoIHZhbHVlXG4gICAgICAgICAgICAgKiAgICAxLiBNaXNzaW5nIGFyaWEtbGFiZWwgb3IgYXJpYS1sYWJlbGxlZGJ5XG4gICAgICAgICAgICAgKiAgICAyLiBNaXNzaW5nIHRpdGxlIGF0dHIgd2l0aCB2YWx1ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAvLyBTa2lwIGFuIGltYWdlIHdpdGggYSBzdHJ1Y3R1cmFsIHJvbGUgLSBpbWcgbXVzdCBiZSBpbiB0aGUgcm9sZSBsaXN0IGF0IGxlYXN0XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIikgPT09IFwidHJ1ZVwiKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gSWYgcm9sZSA9PT0gaW1nLCB5b3UgbXVzdCB1c2UgYW4gYXJpYSBsYWJlbFxuICAgICAgICAgICAgLy9jaGVjayBhdHRyaWJ1dGVzIGFyaWEtbGFiZWwgYW5kIGFyaWEtbGFiZWxsZWRieSBmb3Igb3RoZXIgdGFncyAoZS5nLiA8ZGl2PiwgPHNwYW4+LCBldGMpXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5nZXRBcmlhTGFiZWwocnVsZUNvbnRleHQpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic3ZnXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgc3ZnVGl0bGUgPSBydWxlQ29udGV4dC5xdWVyeVNlbGVjdG9yKFwidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gc3ZnVGl0bGUgJiYgUlBUVXRpbC5oYXNJbm5lckNvbnRlbnQoc3ZnVGl0bGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIC8vY2hlY2sgdGl0bGUgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgZ3VpZGUgcGVvcGxlIHRvIHVzZSBhbHQgb3IgbGFiZWwgLSB0aGlzIGlzIGp1c3QgYSBzZWNvbmRhcnkgYXBwcm9hY2ggdG8gc2lsZW5jZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBTbywgd2Ugc2hvdWxkIGtlZXAgdGhlIFBPRiBmcm9tIGFib3ZlLlxuICAgICAgICAgICAgICAgIC8vIGlmICghcGFzc2VkKSBQT0YgPSBcIkZhaWxfM1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAncm9sZScsICcnLCBbXSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzJcIiwgW3J1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIildKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNJbWcgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBET01XYWxrZXIgfSBmcm9tIFwiLi4vLi4vLi4vZG9tL0RPTVdhbGtlclwiO1xuaW1wb3J0IHsgRnJhZ21lbnRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvZnJhZ21lbnRcIjtcbmltcG9ydCB7IFJQVFV0aWwsIE5vZGVXYWxrZXIgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0lucHV0OiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhbiBpbnB1dCBpc24ndCBsYWJlbGVkIG9yIHRpdGxlZFxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINDQsIEg2NSwgSDkxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbFwiLFxuICAgICAgICBjb250ZXh0OiBcImFyaWE6YnV0dG9uLGFyaWE6Y2hlY2tib3gsYXJpYTpjb21ib2JveCxhcmlhOmxpc3Rib3gsYXJpYTptZW51aXRlbWNoZWNrYm94XCJcbiAgICAgICAgICAgICtcIixhcmlhOm1lbnVpdGVtcmFkaW8sYXJpYTpyYWRpbyxhcmlhOnNlYXJjaGJveCxhcmlhOnNsaWRlcixhcmlhOnNwaW5idXR0b25cIlxuICAgICAgICAgICAgK1wiLGFyaWE6c3dpdGNoLGFyaWE6dGV4dGJveCxhcmlhOnByb2dyZXNzYmFyLGRvbTppbnB1dFt0eXBlPWZpbGVdLGRvbTpvdXRwdXQsZG9tOm1ldGVyLGRvbTppbnB1dFt0eXBlPXBhc3N3b3JkXVwiLCBcblxuICAgICAgICAvLyB0aGUgZGF0YWxpc3QgZWxlbWVudCBkbyBub3QgcmVxdWlyZSBhbnkgZXhwbGljaXQgb3IgaW1wbGljaXQgbGFiZWwsIG1pZ2h0IG5lZWQgdG8gZXhjbHVkZSBpdCBmcm9tIHRoZSBzY29wZSBvZiB0aGUgcnVsZXNcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuXG4gICAgICAgICAgICAvKiByZW1vdmVkIHRoZSAgY2hlY2sgcm9sZT0gcHJlc2VudGF0aW9uIHNpbmNlIGFjY29yZGluZyB0byBsYXRlc3QgbmF0aXZlIGhvc3Qgc2VtYW50aWNzIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sLWFyaWEvI2RvY2NvbmZvcm1hbmNlICB0YWJsZSwgIHRoZXNlIHR3byByb2xlcyBhcmUgbm90IGFwcGxpY2FibGUgdG8gdGhlIGVsZW1lbnRzIGFyZSBpbiB0aGUgIHNjb3BlIG9mIHRoaXMgcm9sZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZShydWxlQ29udGV4dCwgXCJwcmVzZW50YXRpb25cIikgfHwgUlBUVXRpbC5oYXNSb2xlKHJ1bGVDb250ZXh0LCBcIm5vbmVcIikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgaW5wdXQgdHlwZVxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHR5cGUgPSBcInRleHRcIjtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImlucHV0XCIgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgIHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09PSBcImJ1dHRvblwiIHx8IFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImJ1dHRvblwiKSkge1xuICAgICAgICAgICAgICAgIHR5cGUgPSBcImJ1dHRvbmVsZW1cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImlucHV0XCIgJiYgdHlwZSA9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGUgPT09IFwiaW1hZ2VcIikge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZWQgYnkgV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgUE9GID0gLTE7XG4gICAgICAgICAgICBsZXQgdGV4dFR5cGVzID0gW1xuICAgICAgICAgICAgICAgIFwidGV4dFwiLCBcImZpbGVcIiwgXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIFwiY2hlY2tib3hcIiwgXCJyYWRpb1wiLFxuICAgICAgICAgICAgICAgIFwic2VhcmNoXCIsIFwidGVsXCIsIFwidXJsXCIsIFwiZW1haWxcIiwgIC8vSFRNTCA1LiBOb3RlOiB0eXBlID0gXCJoaWRkZW5cIiBkb2Vzbid0IHJlcXVpcmUgdGV4dFxuICAgICAgICAgICAgICAgIFwiZGF0ZVwiLCBcIm51bWJlclwiLCBcInJhbmdlXCIsIC8vSFRNTCA1LiB0eXBlID0gXCJpbWFnZVwiIGlzIGNoZWNrZWQgaW4gZzEwLlxuICAgICAgICAgICAgICAgIFwidGltZVwiLCBcImNvbG9yXCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGxldCBidXR0b25UeXBlcyA9IFtcbiAgICAgICAgICAgICAgICBcImJ1dHRvblwiLCBcInJlc2V0XCIsIFwic3VibWl0XCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIGxldCBidXR0b25UeXBlc1dpdGhEZWZhdWx0cyA9IFtcInJlc2V0XCIsIFwic3VibWl0XCJdOyAvLyAnc3VibWl0JyBhbmQgJ3Jlc2V0JyBoYXZlIHZpc2libGUgZGVmYXVsdHMuXG4gICAgICAgICAgICBpZiAodGV4dFR5cGVzLmluZGV4T2YodHlwZSkgIT09IC0xKSB7IC8vIElmIHR5cGUgaXMgaW4gdGhlIGxpc3RcbiAgICAgICAgICAgICAgICAvLyBHZXQgb25seSB0aGUgbm9uLWhpZGRlbiBsYWJlbHMgZm9yIGVsZW1lbnQsIGluIHRoZSBjYXNlIHRoYXQgYW4gbGFiZWwgaXMgaGlkZGVuIHRoZW4gaXQgaXMgYSB2aW9sYXRpb25cbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBsYWJlbFtmb3JdIGRvZXMgbm90IHdvcmsgZm9yIEFSSUEtZGVmaW5lZCBpbnB1dHNcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWxFbGVtID0gcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicm9sZVwiKSA/IG51bGwgOiBSUFRVdGlsLmdldExhYmVsRm9yRWxlbWVudEhpZGRlbihydWxlQ29udGV4dCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgbGV0IGhhc0xhYmVsRWxlbUNvbnRlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAobGFiZWxFbGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihsYWJlbEVsZW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNMYWJlbEVsZW1Db250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobGFiZWxFbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikgfHwgXCJcIikudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0xhYmVsRWxlbUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhYmVsRWxlbS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbGxlZEJ5RWxlbSA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKGxhYmVsRWxlbSwgbGFiZWxFbGVtLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsbGVkQnlFbGVtICYmIFJQVFV0aWwuaGFzSW5uZXJDb250ZW50KGxhYmVsbGVkQnlFbGVtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0xhYmVsRWxlbUNvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhc3NlZCA9ICghIWxhYmVsRWxlbSAmJiBoYXNMYWJlbEVsZW1Db250ZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICAoIWxhYmVsRWxlbSAmJiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInRpdGxlXCIpIHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwicGxhY2Vob2xkZXJcIikpIHx8XG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuZ2V0QXJpYUxhYmVsKHJ1bGVDb250ZXh0KS50cmltKCkubGVuZ3RoID4gMCB8fCBSUFRVdGlsLmhhc0ltcGxpY2l0TGFiZWwocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSBQT0YgPSAyICsgdGV4dFR5cGVzLmluZGV4T2YodHlwZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1dHRvblR5cGVzLmluZGV4T2YodHlwZSkgIT09IC0xKSB7IC8vIElmIHR5cGUgaXMgYSBidXR0b25cbiAgICAgICAgICAgICAgICBpZiAoYnV0dG9uVHlwZXNXaXRoRGVmYXVsdHMuaW5kZXhPZih0eXBlKSAhPT0gLTEgJiYgIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInZhbHVlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vICdzdWJtaXQnIGFuZCAncmVzZXQnIGhhdmUgdmlzaWJsZSBkZWZhdWx0cyBzbyBwYXNzIGlmIHRoZXJlIGlzIG5vICd2YWx1ZScgYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ2YWx1ZVwiKSB8fCBSUFRVdGlsLmhhc0FyaWFMYWJlbChydWxlQ29udGV4dCkgfHwgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJ0aXRsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIFBPRiA9IDIgKyB0ZXh0VHlwZXMubGVuZ3RoICsgYnV0dG9uVHlwZXMuaW5kZXhPZih0eXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJidXR0b25lbGVtXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBJIGFtIGFuIGltYWdlIGFuZCBJIGhhdmUgYWx0IHRleHQgLSBhY2Nlc3NpYmlsaXR5LXdlYi1lbmdpbmUjMjY5XG4gICAgICAgICAgICAgICAgbGV0IGJBbHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbWdcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhbHRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFsdCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsdC50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiQWx0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiQWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpIHx8IFJQVFV0aWwuaGFzQXJpYUxhYmVsKHJ1bGVDb250ZXh0KSB8fCBiQWx0IHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwidGl0bGVcIik7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkgUE9GID0gMiArIHRleHRUeXBlcy5sZW5ndGggKyBidXR0b25UeXBlcy5sZW5ndGggKyAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBScHRfQXJpYV9WYWxpZElkUmVmIGRldGVybWluZXMgaWYgdGhlIGFyaWEtbGFiZWxsZWRieSBpZCBwb2ludHMgdG8gYSB2YWxpZCBlbGVtZW50XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiAoYnV0dG9uVHlwZXMuaW5kZXhPZih0eXBlKSAhPT0gLTEpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImNsYXNzXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImNsYXNzXCIpID09IFwiZGlqaXRPZmZTY3JlZW5cIiAmJiBET01VdGlsLnBhcmVudEVsZW1lbnQocnVsZUNvbnRleHQpLmhhc0F0dHJpYnV0ZShcIndpZGdldGlkXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGRpaml0IGJ1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsSWQgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocnVsZUNvbnRleHQpLmdldEF0dHJpYnV0ZShcIndpZGdldGlkXCIpICsgXCJfbGFiZWxcIjtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIGxhYmVsSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFiZWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4obGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtZWFucyBJIGZhaWxlZCBhYm92ZSBhbHNvXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkgUE9GID0gMiArIHRleHRUeXBlcy5sZW5ndGggKyBidXR0b25UeXBlcy5sZW5ndGggKyA0ICsgYnV0dG9uVHlwZXMuaW5kZXhPZih0eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgbm9kZU5hbWUgPT0gXCJvcHRncm91cFwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsYWJlbFwiKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkgUE9GID0gMiArIHRleHRUeXBlcy5sZW5ndGggKyBidXR0b25UeXBlcy5sZW5ndGggKyAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgbm9kZU5hbWUgPT0gXCJvcHRpb25cIikge1xuICAgICAgICAgICAgICAgIC8vIElzIGEgbm9uLWVtcHR5IHZhbHVlIGF0dHJpYnV0ZSBhbHNvIGVub3VnaCBmb3IgYW4gb3B0aW9uIGVsZW1lbnQ/XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsYWJlbFwiKSB8fCBydWxlQ29udGV4dC5pbm5lckhUTUwudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIFBPRiA9IDIgKyB0ZXh0VHlwZXMubGVuZ3RoICsgYnV0dG9uVHlwZXMubGVuZ3RoICsgMztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicm9sZVwiKSAmJiBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIsIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJvbGVcIikuc3BsaXQoXCIgXCIpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIFtub2RlTmFtZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhbiBpbWFnZSBpbnB1dCBkb2VzIG5vdCBoYXZlIGFsdC5cbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDkxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbEltYWdlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmlucHV0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMS9UZWNobmlxdWVzL2ZhaWx1cmVzL0Y2NVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSB8fCBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCkgIT0gXCJpbWFnZVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhbHRcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFJQVFV0aWwuaGFzQXJpYUxhYmVsKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidGl0bGVcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidGl0bGVcIikubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxcIik7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHRoZSBsYWJlbCBpcyBzdXBwb3NlZCB0byBiZSBiZWZvcmUgdGhlIGlucHV0LCBidXQgaXMgbm90LlxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINDRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9MYWJlbEJlZm9yZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbnB1dCwgZG9tOnRleHRhcmVhLCBkb206c2VsZWN0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImlucHV0XCIgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFwidGV4dFwiICYmIHR5cGUgIT0gXCJmaWxlXCIgJiYgdHlwZSAhPSBcInBhc3N3b3JkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgb25seSB0aGUgbm9uLWhpZGRlbiBsYWJlbHMgZm9yIGVsZW1lbnRcbiAgICAgICAgICAgIGxldCBsYWJlbEVsZW0gPSBSUFRVdGlsLmdldExhYmVsRm9yRWxlbWVudEhpZGRlbihydWxlQ29udGV4dCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGlmIChsYWJlbEVsZW0gPT0gbnVsbCB8fCAhUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4obGFiZWxFbGVtKSkge1xuICAgICAgICAgICAgICAgIC8vIER1ZSB0byBkZXBlbmRlbmN5LCBsYWJlbCBtdXN0IGJlIGRvbmUgdmlhIHRpdGxlIC0gdGhpcyBydWxlIGRvZXNuJ3QgYXBwbHlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHZhbHVlID0gUlBUVXRpbC5jb21wYXJlTm9kZU9yZGVyKGxhYmVsRWxlbSwgcnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IC0yKSB7XG4gICAgICAgICAgICAgICAgLy8gaW5wdXQgbmVzdGVkIGluIGxhYmVsXG4gICAgICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCB3YWxrTm9kZSA9IHJ1bGVDb250ZXh0LnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgICAgICB3aGlsZSAoIXBhc3NlZCAmJiB3YWxrTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAoKHdhbGtOb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCIjdGV4dFwiICYmIHdhbGtOb2RlLm5vZGVWYWx1ZS50cmltKCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICh3YWxrTm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwic3BhblwiICYmIHdhbGtOb2RlLnRleHRDb250ZW50LnRyaW0oKS5sZW5ndGggPiAwKSk7XG4gICAgICAgICAgICAgICAgICAgIHdhbGtOb2RlID0gd2Fsa05vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJbnB1dCBuZXN0ZWQgaW4gbGFiZWwgYW5kIHRleHQgYWZ0ZXIgaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlzIGFmdGVyIGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBIYXZlbid0IHJldHVybmVkIHlldCwgdGhlbiBJIHBhc3NcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGUgbGFiZWwgaXMgc3VwcG9zZWQgdG8gYmUgYWZ0ZXIgdGhlIGlucHV0LCBidXQgaXMgbm90LlxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINDRcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9MYWJlbEFmdGVyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmlucHV0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IFwiXCI7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSlcbiAgICAgICAgICAgICAgICB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHR5cGUgIT0gXCJjaGVja2JveFwiICYmIHR5cGUgIT0gXCJyYWRpb1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdldCBvbmx5IHRoZSBub24taGlkZGVuIGxhYmVscyBmb3IgZWxlbWVudFxuICAgICAgICAgICAgbGV0IGxhYmVsRWxlbSA9IFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKHJ1bGVDb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChsYWJlbEVsZW0gPT09IG51bGwgfHwgIVJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKGxhYmVsRWxlbSkpIHtcbiAgICAgICAgICAgICAgICAvLyBEdWUgdG8gZGVwZW5kZW5jeSwgbGFiZWwgbXVzdCBiZSBkb25lIHZpYSB0aXRsZSAtIHRoaXMgcnVsZSBkb2Vzbid0IGFwcGx5XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBSUFRVdGlsLmNvbXBhcmVOb2RlT3JkZXIobGFiZWxFbGVtLCBydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSAtMikge1xuICAgICAgICAgICAgICAgIC8vIGlucHV0IG5lc3RlZCBpbiBsYWJlbFxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGxldCB3YWxrTm9kZSA9IG5ldyBOb2RlV2Fsa2VyKGxhYmVsRWxlbSk7XG4gICAgICAgICAgICAgICAgd2Fsa05vZGUubm9kZSA9IHJ1bGVDb250ZXh0O1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIHdhbGtOb2RlLm5leHROb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gKCh3YWxrTm9kZS5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiI3RleHRcIiAmJiB3YWxrTm9kZS5ub2RlLm5vZGVWYWx1ZS50cmltKCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICh3YWxrTm9kZS5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic3BhblwiICYmIHdhbGtOb2RlLm5vZGUudGV4dENvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5wdXQgbmVzdGVkIGluIGxhYmVsIGFuZCB0ZXh0IGJlZm9yZSBpbnB1dFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBsYWJlbCBpcyBiZWZvcmUgaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgbm9uLXJhZGlvL2NoayBpbnB1dHMgYXJlIG5vdCBpbiBhIGZpZWxkc2V0XG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg3MVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0luRmllbGRTZXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW5wdXQsIGRvbTp0ZXh0YXJlYSwgZG9tOnNlbGVjdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBmb3Igb3RoZXIgaW5wdXQgdHlwZXMgb3IgaWYgd2UncmUgaW4gYSBmaWVsZHNldFxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJpbnB1dFwiICYmIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZSAhPSBcInRleHRcIiAmJiB0eXBlICE9IFwiZmlsZVwiICYmIHR5cGUgIT0gXCJwYXNzd29yZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJmaWVsZHNldFwiKSAhPSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcblxuICAgICAgICAgICAgLy8gTm8gZmllbGRzZXQgLSBzZWUgaWYgdGhpcyBpbnB1dCBpcyBhbGwgYnkgaXRzZWxmIC0gbm8gbmVlZCB0byBncm91cCBzaW5nbGUgaW5wdXRzXG4gICAgICAgICAgICBsZXQgcGFyZW50ID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgW1wiZm9ybVwiLCBcImJvZHlcIl0pO1xuICAgICAgICAgICAgbGV0IGNoZWNrVHlwZXMgPSBbXCJpbnB1dFwiLCBcInRleHRhcmVhXCIsIFwic2VsZWN0XCJdO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBwYXNzZWQgJiYgaSA8IGNoZWNrVHlwZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBsZXQgY29udHJvbHMgPSBwYXJlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoY2hlY2tUeXBlc1tpXSk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IHBhc3NlZCAmJiBqIDwgY29udHJvbHMubGVuZ3RoOyArK2opIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbm9kZSBzaG91bGQgYmUgc2tpcHBlZCBvciBub3QgYmFzZWQgb24gdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgYW5kIGlmIHRoZSBub2RlIGlzVmlzaWJsZSBvclxuICAgICAgICAgICAgICAgICAgICAvLyBub3QuXG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4oY29udHJvbHNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0ZXh0YXJlYXMgYW5kIHNlbGVjdHMgd2lsbCBiZSBjYWxsZWQgdHlwZT0ndGV4dCdcbiAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBjb250cm9sc1tqXS5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpID8gY29udHJvbHNbal0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpIDogXCJ0ZXh0XCI7XG4gICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgZmFpbCBpZiB0aGlzIGlzIGFub3RoZXIgY29udHJvbCBpbiB0aGUgZm9ybSBhbmQgaXRzIHR5cGUgaXMgYW5vdGhlciB0ZXh0LWxpa2UgaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gY29udHJvbHNbal0gPT0gcnVsZUNvbnRleHQgfHwgKHR5cGUgIT0gXCJ0ZXh0XCIgJiYgdHlwZSAhPSBcInBhc3N3b3JkXCIgJiYgdHlwZSAhPSBcImZpbGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgYSByYWRpby9jaGVja2JveCB3aXRoIHNhbWUgbmFtZSBpcyBub3QgZ3JvdXBlZFxuICAgICAgICAgKiAoZS5nLiwgaW4gYSBmaWVsZHNldCwgd2l0aCByb2xlID0gXCJncm91cFwiLCBldGMuKVxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBINzEsIEg5MVxuICAgICAgICAgKlxuICAgICAgICAgKiBGYWlsdXJlczpcbiAgICAgICAgICogMGEuIHJhZGlvIG5vdCBpbiBmaWVsZHNldCwgZ3JvdXAgb3IgcmFkaW9ncm91cCAtIEFORCBJIGZpbmQgYW5vdGhlciByYWRpbyBvciBjaGVjayB3aXRoIHRoZSBzYW1lICduYW1lJyBhdHRyaWJ1dGUtIEFORCBJJ20gbm90IGluIGEgdGFibGVcbiAgICAgICAgICogMGIuIGNoZWNrYm94IG5vdCBpbiBmaWVsZHNldCBvciBncm91cCAtIEFORCBJIGZpbmQgYW5vdGhlciByYWRpbyBvciBjaGVjayB3aXRoIHRoZSBzYW1lICduYW1lJyBhdHRyaWJ1dGUgLSBBTkQgSSdtIG5vdCBpbiBhIHRhYmxlXG4gICAgICAgICAqIDEuIHJhZGlvIG9yIGNoZWNrYm94IG1pc3NpbmcgYSBuYW1lIFtJR05PUkU/XVxuICAgICAgICAgKiAyLiByYWRpbyBvciBjaGVja2JveCBoYXMgdGhlIHNhbWUgXCJuYW1lXCIgYXR0cmlidXRlIGFzIGFub3RoZXIgcmFkaW8gb3IgY2hlY2tib3ggaW4gYSBzZXBhcmF0ZSBmaWVsZHNldCwgZ3JvdXAgb3IgcmFkaW9ncm91cFxuICAgICAgICAgKiAzLiBhbSBpbiB0YWJsZSBhbmQgc29tZSBjb21iaW5hdGlvbiBvZiB0aGUgYWJvdmVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW5wdXRcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChjb250ZXh0W1wiYXJpYVwiXS5yb2xlID09PSAnbm9uZScgfHwgY29udGV4dFtcImFyaWFcIl0ucm9sZSA9PT0gJ3ByZXNlbnRhdGlvbicpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBnZXRHcm91cCA9IChlIDogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByZXRWYWwgPSBSUFRVdGlsLmdldEFuY2VzdG9yKGUsIFwiZmllbGRzZXRcIilcbiAgICAgICAgICAgICAgICAgICAgfHwgUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKGUsIFwicmFkaW9ncm91cFwiKVxuICAgICAgICAgICAgICAgICAgICB8fCBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUoZSwgXCJncm91cFwiKVxuICAgICAgICAgICAgICAgICAgICB8fCBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUoZSwgXCJncmlkXCIpXG4gICAgICAgICAgICAgICAgICAgIHx8IFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShlLCBcInRhYmxlXCIpO1xuICAgICAgICAgICAgICAgIGlmICghcmV0VmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IoZSwgXCJ0YWJsZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldFZhbCAmJiAhUlBUVXRpbC5pc0RhdGFUYWJsZShyZXRWYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE9ubHkgcmFkaW8gYnV0dG9ucyBhbmQgY2hlY2tib3hlcyBhcmUgaW4gc2NvcGVcbiAgICAgICAgICAgIGxldCBjdHhUeXBlID0gcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSA/IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKSA6IFwidGV4dFwiO1xuICAgICAgICAgICAgaWYgKGN0eFR5cGUgIT09IFwiY2hlY2tib3hcIiAmJiBjdHhUeXBlICE9PSBcInJhZGlvXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZvcm0gd2UncmUgaW4gKGlmIGFueSkgdG8gZGV0ZXJtaW5lIG91ciBzY29wZVxuICAgICAgICAgICAgbGV0IGN0eEZvcm0gPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiZm9ybVwiKVxuICAgICAgICAgICAgICAgIHx8IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFwiaHRtbFwiKVxuICAgICAgICAgICAgICAgIHx8IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBHZXQgZGF0YSBhYm91dCBhbGwgb2YgdGhlIHZpc2libGUgY2hlY2tib3hlcyBhbmQgcmFkaW9zIGluIHRoZSBzY29wZSBvZiB0aGlzIGZvcm1cbiAgICAgICAgICAgIC8vIGFuZCBjYWNoZSBpdCBmb3IgYWxsIG9mIHRoZSBvdGhlciBpbnB1dHMgaW4gdGhpcyBzY29wZVxuICAgICAgICAgICAgbGV0IGZvcm1DYWNoZSA9IFJQVFV0aWwuZ2V0Q2FjaGUoY3R4Rm9ybSwgXCJXQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0XCIsIG51bGwpO1xuICAgICAgICAgICAgaWYgKCFmb3JtQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICBmb3JtQ2FjaGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrYm94QnlOYW1lOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgcmFkaW9zQnlOYW1lOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZVRvR3JvdXA6IHtcblxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBudW1DaGVja2JveGVzOiAwLFxuICAgICAgICAgICAgICAgICAgICBudW1SYWRpb3M6IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gR2V0IGFsbCBvZiB0aGUgY2hlY2tib3hlcyBpbiB0aGUgZm9ybSBvciBib2R5IChidXQgbm90IG5lc3RlZCBpbiBzb21ldGhpbmcgZWxzZSBhbmQgbm90IGhpZGRlbilcbiAgICAgICAgICAgICAgICAvLyBBbmQgZ2V0IGEgbWFwcGluZyBvZiB0aGVzZSBjaGVja2JveGVzIHRvXG4gICAgICAgICAgICAgICAgbGV0IGNXYWxrZXIgPSBuZXcgRE9NV2Fsa2VyKGN0eEZvcm0sIGZhbHNlLCBjdHhGb3JtKTtcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tib3hRID0gW107XG4gICAgICAgICAgICAgICAgbGV0IHJhZGlvc1EgPSBbXTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoY1dhbGtlci5uZXh0Tm9kZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY1dhbGtlci5iRW5kVGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiBjV2Fsa2VyLm5vZGUubm9kZVR5cGUgPT09IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGNXYWxrZXIubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShjV2Fsa2VyLm5vZGUpKVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IChjV2Fsa2VyLm5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwidHlwZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBcImNoZWNrYm94XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2JveFEucHVzaChjV2Fsa2VyLm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBcInJhZGlvXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpb3NRLnB1c2goY1dhbGtlci5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBsZXQgY2hlY2tib3hRID0gY3R4Rm9ybS5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbdHlwZT1jaGVja2JveF1cIik7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaWR4PTA7IGlkeDxjaGVja2JveFEubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYiA9IGNoZWNrYm94UVtpZHhdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKFJQVFV0aWwuZ2V0QW5jZXN0b3JXaXRoUm9sZShjYiwgXCJmb3JtXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBcImh0bWxcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSA9PT0gY3R4Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihjYikpXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBjYi5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpIHx8IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybUNhY2hlLmNoZWNrYm94QnlOYW1lW25hbWVdID0gZm9ybUNhY2hlLmNoZWNrYm94QnlOYW1lW25hbWVdIHx8IFtdKS5wdXNoKGNiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1DYWNoZS5uYW1lVG9Hcm91cFtuYW1lXSA9IGZvcm1DYWNoZS5uYW1lVG9Hcm91cFtuYW1lXSB8fCBnZXRHcm91cChjYik7XG4gICAgICAgICAgICAgICAgICAgICAgICArK2Zvcm1DYWNoZS5udW1DaGVja2JveGVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEdldCBhbGwgb2YgdGhlIHJhZGlvcyBpbiB0aGUgZm9ybSBvciBib2R5IChidXQgbm90IG5lc3RlZCBpbiBzb21ldGhpbmcgZWxzZSBhbmQgbm90IGhpZGRlbilcbiAgICAgICAgICAgICAgICAvLyBsZXQgcmFkaW9zUSA9IGN0eEZvcm0ucXVlcnlTZWxlY3RvckFsbChcImlucHV0W3R5cGU9cmFkaW9dXCIpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGlkeD0wOyBpZHg8cmFkaW9zUS5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSByYWRpb3NRW2lkeF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhZEN0eCA9IChSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUociwgXCJmb3JtXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBSUFRVdGlsLmdldEFuY2VzdG9yKHJ1bGVDb250ZXh0LCBcImh0bWxcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJhZEN0eCA9PT0gY3R4Rm9ybVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihyKSlcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHIuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSB8fCBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1DYWNoZS5yYWRpb3NCeU5hbWVbbmFtZV0gPSBmb3JtQ2FjaGUucmFkaW9zQnlOYW1lW25hbWVdIHx8IFtdKS5wdXNoKHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNhY2hlLm5hbWVUb0dyb3VwW25hbWVdID0gZm9ybUNhY2hlLm5hbWVUb0dyb3VwW25hbWVdIHx8IGdldEdyb3VwKHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgKytmb3JtQ2FjaGUubnVtUmFkaW9zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoY3R4Rm9ybSwgXCJXQ0FHMjBfSW5wdXRfUmFkaW9DaGtJbkZpZWxkU2V0XCIsIGZvcm1DYWNoZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8gQ2FsY3VsYXRlZCBldmVyeXRoaW5nLCBub3cgY2hlY2sgdGhlIHZhcmlvdXMgY2FzZXNcblxuICAgICAgICAgICAgY29uc3QgY3R4TmFtZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcIm5hbWVcIik7XG4gICAgICAgICAgICBjb25zdCBjdHhHcm91cCA9IGdldEdyb3VwKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGN0eFR5cGUgPSBjdHhUeXBlID09PSBcInJhZGlvXCIgPyBcIlJhZGlvXCIgOiBcIkNoZWNrYm94XCI7XG5cbiAgICAgICAgICAgIGlmICghY3R4TmFtZSB8fCBjdHhOYW1lID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgLy8gRmlyc3QgcHJvY2VzcyBjYXNlcyB3aGVyZSB0aGUgY29udHJvbCBpcyBub3QgbmFtZWRcbiAgICAgICAgICAgICAgICBpZiAoY3R4VHlwZSA9PT0gXCJSYWRpb1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJhZGlvcyB3aXRob3V0IG5hbWVzIGRvbid0IGFjdCBsaWtlIGdyb3Vwcywgc28gZG9uJ3QgZW5mb3JjZSBncm91cGluZ1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3R4R3JvdXAgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfUmFkaW9Ob05hbWVcIiwgW2N0eFR5cGVdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfR3JvdXBlZFwiLCBbY3R4VHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTXVzdCBiZSBhbiB1bm5hbWVkIGNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHhHcm91cCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmb3JtQ2FjaGUuY2hlY2tib3hCeU5hbWVbXCJcIl0gfHwgW10pLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF9Vbm5hbWVkQ2hlY2tib3hcIiwgW2N0eFR5cGVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19Mb25lTm9ncm91cFwiLCBbY3R4VHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19Hcm91cGVkXCIsIFtjdHhUeXBlXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIENvbnNpZGVyaW5nIGEgbmFtZWQgY2hlY2tib3hcbiAgICAgICAgICAgICAgICBjb25zdCBudW1SYWRpb3NXaXRoTmFtZSA9IChmb3JtQ2FjaGUucmFkaW9zQnlOYW1lW2N0eE5hbWVdIHx8IFtdKS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtQ2hlY2tib3hlc1dpdGhOYW1lID0gKGZvcm1DYWNoZS5jaGVja2JveEJ5TmFtZVtjdHhOYW1lXSB8fCBbXSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIC8vIENhcGl0YWxpemUgdGhlIGlucHV0IHR5cGUgZm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgaWYgKG51bVJhZGlvc1dpdGhOYW1lID4gMCAmJiBudW1DaGVja2JveGVzV2l0aE5hbWUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBuYW1pbmcgbWlzbWF0Y2ggYmV0d2VlbiBkaWZmZXJlbnQgY29udHJvbHNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF9Db250cm9sTmFtZU1pc21hdGNoXCIsIFtjdHhUeXBlLCBjdHhUeXBlID09PSBcImNoZWNrYm94XCI/XCJyYWRpb1wiOlwiY2hlY2tib3hcIiwgY3R4TmFtZV0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3R4VHlwZSA9PT0gXCJSYWRpb1wiICYmIChmb3JtQ2FjaGUubnVtUmFkaW9zID09PSAxIHx8IG51bVJhZGlvc1dpdGhOYW1lID09PSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgY3R4VHlwZSA9PT0gXCJDaGVja2JveFwiICYmIGZvcm1DYWNoZS5udW1DaGVja2JveGVzID09PSAxKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGxvbmUgY29udHJvbCAoZWl0aGVyIG9ubHkgY29udHJvbCBvZiB0aGlzIHR5cGUgb24gdGhlIHBhZ2UsIG9yIGEgcmFkaW8gYnV0dG9uIHdpdGhvdXQgYW55IG90aGVycyBieSB0aGF0IG5hbWUpXG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIHBhc3MgdGhpcyBjb250cm9sIGluIGFsbCBjYXNlc1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3R4R3JvdXAgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfTG9uZU5vZ3JvdXBcIiwgW2N0eFR5cGVdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfR3JvdXBlZFwiLCBbY3R4VHlwZV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdHhUeXBlID09PSBcIkNoZWNrYm94XCIgJiYgZm9ybUNhY2hlLm51bUNoZWNrYm94ZXMgPiAxICYmIG51bUNoZWNrYm94ZXNXaXRoTmFtZSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG9ubHkgb25lIGNoZWNrYm94IHdpdGggdGhpcyBuYW1lLCBidXQgdGhlcmUgYXJlIG90aGVyIGNoZWNrYm94ZXMgaW4gdGhlIGZvcm0uXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIG5vdCBncm91cGVkLCBhc2sgdGhlbSB0byBleGFtaW5lIGl0XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdHhHcm91cCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfTG9uZUNoZWNrYm94XCIsIFtjdHhUeXBlXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzX0dyb3VwZWRcIiwgW2N0eFR5cGVdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIHNoYXJlIGEgbmFtZSB3aXRoIGFub3RoZXIgc2ltaWxhciBjb250cm9sLiBBcmUgd2UgZ3JvdXBlZCB0b2dldGhlcj9cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN0eEdyb3VwID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybUNhY2hlLm5hbWVUb0dyb3VwW2N0eE5hbWVdICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UncmUgbm90IGdyb3VwZWQsIGJ1dCBzb21lIGNvbnRyb2wgd2l0aCB0aGUgc2FtZSBuYW1lIGlzIGluIGEgZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsX05vdEdyb3VwZWRPdGhlckdyb3VwZWRcIiwgW2N0eFR5cGUsIGN0eE5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9uZSBvZiB1cyBhcmUgZ3JvdXBlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfTm90R3JvdXBlZE90aGVyTm90R3JvdXBlZFwiLCBbY3R4VHlwZSwgY3R4TmFtZV0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9ybUNhY2hlLm5hbWVUb0dyb3VwW2N0eE5hbWVdICE9PSBjdHhHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UncmUgbm90IGluIHRoZSBtYWluIGdyb3VwIHdpdGggdGhlIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF9Ob3RTYW1lR3JvdXBcIiwgW2N0eFR5cGUsIGN0eE5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3JlIGFsbCBncm91cGVkIHVwIVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19Hcm91cGVkXCIsIFtjdHhUeXBlXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBpbnB1dCBoYXMgYW4gb25jaGFuZ2UgZXZlbnQgaGFuZGxlclxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBHMTNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9IYXNPbmNoYW5nZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbnB1dCwgZG9tOnRleHRhcmVhLCBkb206c2VsZWN0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImlucHV0XCIgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IFwidGV4dFwiICYmIHR5cGUgIT0gXCJmaWxlXCIgJiYgdHlwZSAhPSBcInBhc3N3b3JkXCIgJiYgdHlwZSAhPSBcImNoZWNrYm94XCIgJiYgdHlwZSAhPSBcInJhZGlvXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9ICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJvbmNoYW5nZVwiKTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBpbnB1dCBoYXMgYSBIVE1MIDUgcmVxdWlyZWQgcHJvcGVydHk6IEhBQUMsIEcxMTI0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJIQUFDX0lucHV0X0hhc1JlcXVpcmVkXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmlucHV0LCBkb206dGV4dGFyZWEsIGRvbTpzZWxlY3RcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlcXVpcmVkXCIpKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VycyBpZiBwbGFjZWhvbGRlciBpcyB1c2VkIGFzIGEgcmVwbGFjZW1lbnQgb2YgbGFiZWxcbiAgICAgICAgICpcbiAgICAgICAgICogT3JpZ2luOiAgSFRNTCA1IC0gcGVyIFJpY2hhcmQgU2Nod2VyZHRmZWdlcidzIHJlcXVpcmVtZW50cy4gZzExNDVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfSW5wdXRfUGxhY2Vob2xkZXJcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aW5wdXRbcGxhY2Vob2xkZXJdLCBkb206dGV4dGFyZWFbcGxhY2Vob2xkZXJdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFwiaGlkZGVuXCIgfHwgdHlwZSA9PSBcImJ1dHRvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJoaWRkZW5cIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgaGlkZGVuID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaGlkZGVuXCIpO1xuICAgICAgICAgICAgICAgIGlmIChoaWRkZW4gPT0gXCJcIiB8fCBoaWRkZW4udG9Mb3dlckNhc2UoKSA9PSBcImhpZGRlblwiKSB7IC8vIHdoZW4gaGlkZGVuIGlzIGVtcHR5IGluIHRoZSBlbGVtZW50LCBcIlwiIGlzIHJldHVybmVkLCBzYW1lIGFzIGl0IGhhcyBhIHZhbHVlIG9mIFwiXCIuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJpZFwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBpZCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImlkXCIpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVmSWRzID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpLnRyaW0oKS5zcGxpdCgvXFxzKy8pOyAvLyBzZXBhcmF0ZWQgYnkgb25lIG9yIG1vcmUgd2hpdGUgc3BhY2VzXG4gICAgICAgICAgICAgICAgaWYgKCFyZWZJZHMuaW5jbHVkZXMoaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8yXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBDaGVja3MgdGhhdCB0aGUgSFRNTCBhdXRvY29tcGxldGUgYXR0cmlidXRlIGhhcyBhIGNvcnJlY3QgdmFsdWUuXG4gICAgICAgICAqIFRoZSBydWxlIGFwcGxpZXMgdG8gYW55IEhUTUwgaW5wdXQsIHNlbGVjdCBhbmQgdGV4dGFyZWEgZWxlbWVudCB3aXRoIGEgbm9uLWVtcHR5IEhUTUwgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZSBleGNlcHQgd2hlbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOlxuICAgICAgICAgKiAgLSBUaGUgZWxlbWVudCBpcyBub3QgdmlzaWJsZSBvbiB0aGUgcGFnZSwgbm90IGluY2x1ZGVkIGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUsIGFuZCBub3QgZm9jdXNhYmxlXG4gICAgICAgICAqICAtIFRoZSBlbGVtZW50IGlzIGFuIGlucHV0IGVsZW1lbnQgd2l0aCBhIHR5cGUgcHJvcGVydHkgb2YgaGlkZGVuLCBidXR0b24sIHN1Ym1pdCBvciByZXNldFxuICAgICAgICAgKiAgLSBUaGUgZWxlbWVudCBoYXMgYSBkaXNhYmxlZCBvciBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIGF0dHJpYnV0ZVxuICAgICAgICAgKiAgLSBUaGUgZWxlbWVudCBoYXMgdGFiaW5kZXg9XCItMVwiIGFuZCBoYXMgYSBzZW1hbnRpYyByb2xlIHRoYXQgaXMgbm90IGEgd2lkZ2V0LiAoRGlzYWJsZWQgZm9yIG5vdylcblxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4xIFN1Y2Nlc3MgQ3JpdGVyaW9uIDEuMy41IChJZGVudGlmeSBJbnB1dCBQdXJwb3NlKVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTppbnB1dFthdXRvY29tcGxldGVdLCBkb206dGV4dGFyZWFbYXV0b2NvbXBsZXRlXSwgZG9tOnNlbGVjdFthdXRvY29tcGxldGVdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0ge1xuICAgICAgICAgICAgICAgIFwidG9rZW5zT25PZmZcIjogW1wib25cIiwgXCJvZmZcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbk9wdGlvbmFsU2VjdGlvblwiOiBcInNlY3Rpb24tXCIsXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNPcHRpb25hbFB1cnBvc2VcIjogW1wic2hpcHBpbmdcIiwgXCJiaWxsaW5nXCJdLFxuICAgICAgICAgICAgICAgIFwidG9rZW5zTWFuZGF0b3J5R3JvdXAxX3Bhc3N3b3JkXCI6IFtcIm5ldy1wYXNzd29yZFwiLCBcImN1cnJlbnQtcGFzc3dvcmRcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDFfbXVsdGlsaW5lXCI6IFtcInN0cmVldC1hZGRyZXNzXCJdLFxuICAgICAgICAgICAgICAgIFwidG9rZW5zTWFuZGF0b3J5R3JvdXAxX21vbnRoXCI6IFtcImNjLWV4cFwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMV9udW1lcmljXCI6IFtcImNjLWV4cC1tb250aFwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWV4cC15ZWFyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhbnNhY3Rpb24tYW1vdW50XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmRheS1kYXlcIixcbiAgICAgICAgICAgICAgICAgICAgXCJiZGF5LW1vbnRoXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmRheS15ZWFyXCJdLFxuICAgICAgICAgICAgICAgIFwidG9rZW5zTWFuZGF0b3J5R3JvdXAxX2RhdGVcIjogW1wiYmRheVwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMV91cmxcIjogW1widXJsXCIsIFwicGhvdG9cIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDFfdGV4dFwiOiBbXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaG9ub3JpZmljLXByZWZpeFwiLFxuICAgICAgICAgICAgICAgICAgICBcImdpdmVuLW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRpdGlvbmFsLW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmYW1pbHktbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImhvbm9yaWZpYy1zdWZmaXhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuaWNrbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInVzZXJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwib3JnYW5pemF0aW9uLXRpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwib3JnYW5pemF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1saW5lMVwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGluZTJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxpbmUzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1sZXZlbDRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxldmVsM1wiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGV2ZWwyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1sZXZlbDFcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjb3VudHJ5XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY291bnRyeS1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwicG9zdGFsLWNvZGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtZ2l2ZW4tbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWFkZGl0aW9uYWwtbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWZhbWlseS1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtbnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtY3NjXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtdHlwZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRyYW5zYWN0aW9uLWN1cnJlbmN5XCIsXG4gICAgICAgICAgICAgICAgICAgIFwibGFuZ3VhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzZXhcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDFfYWxsXCI6IFtcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJob25vcmlmaWMtcHJlZml4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiZ2l2ZW4tbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwtbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImZhbWlseS1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaG9ub3JpZmljLXN1ZmZpeFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5pY2tuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXNlcm5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuZXctcGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjdXJyZW50LXBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwib3JnYW5pemF0aW9uLXRpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwib3JnYW5pemF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic3RyZWV0LWFkZHJlc3NcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxpbmUxXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1saW5lMlwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGluZTNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxldmVsNFwiLFxuICAgICAgICAgICAgICAgICAgICBcImFkZHJlc3MtbGV2ZWwzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzcy1sZXZlbDJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJhZGRyZXNzLWxldmVsMVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNvdW50cnlcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjb3VudHJ5LW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJwb3N0YWwtY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1naXZlbi1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtYWRkaXRpb25hbC1uYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiY2MtZmFtaWx5LW5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1udW1iZXJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1leHBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1leHAtbW9udGhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjYy1leHAteWVhclwiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLWNzY1wiLFxuICAgICAgICAgICAgICAgICAgICBcImNjLXR5cGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0cmFuc2FjdGlvbi1jdXJyZW5jeVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRyYW5zYWN0aW9uLWFtb3VudFwiLFxuICAgICAgICAgICAgICAgICAgICBcImxhbmd1YWdlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmRheVwiLFxuICAgICAgICAgICAgICAgICAgICBcImJkYXktZGF5XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYmRheS1tb250aFwiLFxuICAgICAgICAgICAgICAgICAgICBcImJkYXkteWVhclwiLFxuICAgICAgICAgICAgICAgICAgICBcInNleFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICBcInBob3RvXCJdLFxuICAgICAgICAgICAgICAgIFwidG9rZW5zT3B0aW9uYWxHcm91cDJcIjogW1wiaG9tZVwiLFxuICAgICAgICAgICAgICAgICAgICBcIndvcmtcIixcbiAgICAgICAgICAgICAgICAgICAgXCJtb2JpbGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJmYXhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJwYWdlclwiXSxcblxuICAgICAgICAgICAgICAgIFwidG9rZW5zTWFuZGF0b3J5R3JvdXAyX3RlbFwiOiBbXCJ0ZWxcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDJfZW1haWxcIjogW1wiZW1haWxcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDJfdXJsXCI6IFtcImltcHBcIl0sXG4gICAgICAgICAgICAgICAgXCJ0b2tlbnNNYW5kYXRvcnlHcm91cDJfdGV4dFwiOiBbXCJ0ZWwtY291bnRyeS1jb2RlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLW5hdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWFyZWEtY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1sb2NhbFwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1sb2NhbC1wcmVmaXhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtbG9jYWwtc3VmZml4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWV4dGVuc2lvblwiXSxcbiAgICAgICAgICAgICAgICBcInRva2Vuc01hbmRhdG9yeUdyb3VwMl9hbGxcIjogW1widGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWNvdW50cnktY29kZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1uYXRpb25hbFwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1hcmVhLWNvZGVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtbG9jYWxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZWwtbG9jYWwtcHJlZml4XCIsXG4gICAgICAgICAgICAgICAgICAgIFwidGVsLWxvY2FsLXN1ZmZpeFwiLFxuICAgICAgICAgICAgICAgICAgICBcInRlbC1leHRlbnNpb25cIixcbiAgICAgICAgICAgICAgICAgICAgXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgICAgICBcImltcHBcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgZm91bmRNYW5kYXRvcnlUb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKHJ1bGVDb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgIFJQVFV0aWwuaXNOb2RlRGlzYWJsZWQocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB0eXBlID0gcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSA/IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkgOiBcInRleHRcIjtcblxuICAgICAgICAgICAgbGV0IGF1dG9jb21wbGV0ZUF0dHIgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGxldCB0b2tlbnMgPSBhdXRvY29tcGxldGVBdHRyLnNwbGl0KC9cXHMrLyk7XG5cbiAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAwIHx8IGF1dG9jb21wbGV0ZUF0dHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB0b2tlbnNNYW5kYXRvcnlHcm91cDEgPSBbXTtcbiAgICAgICAgICAgIGxldCB0b2tlbnNNYW5kYXRvcnlHcm91cDIgPSBbXTtcblxuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSBcInRleHRhcmVhXCIgfHwgbm9kZU5hbWUgPT09IFwic2VsZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAvLyBhY2NlcHQgYWxsIHRva2Vuc1xuICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9hbGw7XG4gICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAyID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAyX2FsbDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIikge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSB0aGUgdmFyaW91cyAnaW5wdXQnIHR5cGVzXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSBjaGVjayBmb3IgaW5wdXQgdHlwZT1oaWRkZW4gZm9yIG5vdyBiYXNlZCBvbiBzY3J1bSBkaXNjdXNzaW9uXG4gICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJoaWRkZW5cIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2VwdCBhbGwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDEgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfYWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAyID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAyX2FsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWFyY2hcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV90ZXh0LmNvbmNhdChjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfcGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAxX3VybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfbnVtZXJpYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfbW9udGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAxX2RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAyID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAyX2FsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicGFzc3dvcmRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9wYXNzd29yZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidXJsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDEgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfdXJsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAyID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAyX3VybDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZW1haWxcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMiA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMl9lbWFpbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidGVsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDIgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDJfdGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc01hbmRhdG9yeUdyb3VwMSA9IGNhY2hlLnRva2Vuc01hbmRhdG9yeUdyb3VwMV9udW1lcmljO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtb250aFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTWFuZGF0b3J5R3JvdXAxID0gY2FjaGUudG9rZW5zTWFuZGF0b3J5R3JvdXAxX21vbnRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNNYW5kYXRvcnlHcm91cDEgPSBjYWNoZS50b2tlbnNNYW5kYXRvcnlHcm91cDFfZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5zdXBwb3J0ZWQgdHlwZSBmb3IgdGhpcyBydWxlLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBuZXZlciBnZXQgaGVyZS5cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRGlzYWJsZSBjaGVjayBmb3IgaW5wdXQgdHlwZT1oaWRkZW4gZm9yIG5vdyBiYXNlZCBvbiBzY3J1bSBkaXNjdXNzaW9uXG4gICAgICAgICAgICBsZXQgYXV0b2ZpbGxNYW50bGUgPSAvKiAobm9kZU5hbWU9PT1cImlucHV0XCIgJiYgdHlwZT09PVwiaGlkZGVuXCIpID8gXCJhbmNob3JcIiA6ICovIFwiZXhwZWN0YXRpb25cIjtcblxuICAgICAgICAgICAgaWYgKGF1dG9maWxsTWFudGxlID09PSBcImV4cGVjdGF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBvbnxvZmYgZm9yIGV4cGVjdGF0aW9uIG1hbnRsZS5cbiAgICAgICAgICAgICAgICBpZiAodG9rZW5zLmluY2x1ZGVzKFwib25cIikgfHwgdG9rZW5zLmluY2x1ZGVzKFwib2ZmXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9ufG9mZiBzaG91bGQgYmUgdGhlIG9ubHkgdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbCgyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gY2hlY2sgZGV0YWlsIGF1dG9maWxsIHRva2Vuc1xuICAgICAgICAgICAgbGV0IGN1cnJJbmRleCA9IDA7XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIG9wdGlvbmFsICdzZWN0aW9uLSonIHRva2Vuc1xuICAgICAgICAgICAgaWYgKHRva2Vuc1tjdXJySW5kZXhdLnN0YXJ0c1dpdGgoY2FjaGUudG9rZW5PcHRpb25hbFNlY3Rpb24pICYmXG4gICAgICAgICAgICAgICAgdG9rZW5zW2N1cnJJbmRleF0ubGVuZ3RoID4gOCkge1xuICAgICAgICAgICAgICAgIGN1cnJJbmRleCsrOyAvLyBjb25zdW1lIHRva2VuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIG9wdGlvbmFsICdzaGlwcGluZ3xiaWxsaW5nJyB0b2tlbnNcbiAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID4gY3VyckluZGV4ICYmXG4gICAgICAgICAgICAgICAgY2FjaGUudG9rZW5zT3B0aW9uYWxQdXJwb3NlLmluY2x1ZGVzKHRva2Vuc1tjdXJySW5kZXhdKSkge1xuICAgICAgICAgICAgICAgIGN1cnJJbmRleCsrOyAvLyBjb25zdW1lICB0b2tlblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBjaGVjayBlaXRoZXIgbWFuZGF0b3J5IGdyb3VwIDEgb3IgMiB0b2tlbnNcbiAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID4gY3VyckluZGV4KSB7XG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgbWFuZGF0b3J5IGdyb3VwIDFcbiAgICAgICAgICAgICAgICBpZiAodG9rZW5zTWFuZGF0b3J5R3JvdXAxLmluY2x1ZGVzKHRva2Vuc1tjdXJySW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZE1hbmRhdG9yeVRva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY3VyckluZGV4Kys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgb3B0aW9uYWwgdG9rZW5zIGZvciBncm91cCAyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZS50b2tlbnNPcHRpb25hbEdyb3VwMi5pbmNsdWRlcyh0b2tlbnNbY3VyckluZGV4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJJbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIG1hbmRhdG9yeSBncm91cCAyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbnNNYW5kYXRvcnlHcm91cDIuaW5jbHVkZXModG9rZW5zW2N1cnJJbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1hbmRhdG9yeVRva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJJbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBPbmx5IHBhc3MgaWYgd2UgaGF2ZSBzZWVuIGVpdGhlciBvZiB0aGUgbWFuZGF0b3J5IGdyb3VwcyBhbmQgYWxsIHRva2VucyBoYXZlIGJlZW4gY29uc3VtZWRcbiAgICAgICAgICAgIGlmIChmb3VuZE1hbmRhdG9yeVRva2VuICYmIHRva2Vucy5sZW5ndGggPT09IGN1cnJJbmRleCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGFuIGlucHV0IGRvZXMgbm90IGhhdmUgYSB2aXNpYmxlIGxhYmVsXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgU3VjY2VzcyBDcml0ZXJpb24gMy4zLjJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9WaXNpYmxlTGFiZWxcIixcbiAgICAgICAgY29udGV4dDogXCJhcmlhOmJ1dHRvbixhcmlhOmNoZWNrYm94LGFyaWE6Y29tYm9ib3gsYXJpYTpsaXN0Ym94LGFyaWE6bWVudWl0ZW1jaGVja2JveFwiXG4gICAgICAgICAgICArXCIsYXJpYTptZW51aXRlbXJhZGlvLGFyaWE6cmFkaW8sYXJpYTpzZWFyY2hib3gsYXJpYTpzbGlkZXIsYXJpYTpzcGluYnV0dG9uXCJcbiAgICAgICAgICAgICtcIixhcmlhOnN3aXRjaCxhcmlhOnRleHRib3gsYXJpYTpwcm9ncmVzc2Jhcixkb206aW5wdXRbdHlwZT1maWxlXSxkb206b3V0cHV0XCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShydWxlQ29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmlzTm9kZURpc2FibGVkKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB3aGVuIGluIGEgY29tYm9ib3gsIG9ubHkgbG9vayBhdCB0aGUgaW5wdXQgdGV4dGJveC5cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiY29tYm9ib3hcIikgJiZcbiAgICAgICAgICAgICAgICAhKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcInRleHRib3hcIikgfHwgUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwic2VhcmNoYm94XCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgKG5vZGVOYW1lID09PSBcInNlbGVjdFwiICYmIFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHJ1bGVDb250ZXh0LCBcImNvbWJvYm94XCIpKSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGF2b2lkIGRpYWdub3NpbmcgdGhlIHBvcHVwIGxpc3Qgb2YgYSBjb21ib2JveC5cbiAgICAgICAgICAgIGxldCByb2xlc1RvQ2hlY2sgPSBbXCJsaXN0Ym94XCIsIFwidHJlZVwiLCBcImdyaWRcIiwgXCJkaWFsb2dcIl07XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHJvbGVzVG9DaGVjay5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhydWxlQ29udGV4dCwgcm9sZXNUb0NoZWNrW2pdKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29tYm9ib3hlcyA9IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4ocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJjb21ib2JveFwiLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBjb21ib2JveGVzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tYm9ib3ggPSBjb21ib2JveGVzW2tdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFyaWFfb3ducyA9IFJQVFV0aWwuZ2V0RWxlbWVudEF0dHJpYnV0ZShjb21ib2JveCwgXCJhcmlhLW93bnNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJpYV9vd25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG93bnMgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcoYXJpYV9vd25zLnRyaW0oKSkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3ducy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3duZWQgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChydWxlQ29udGV4dCwgb3duc1tpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvd25lZCA9PT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIGlucHV0IHR5cGVcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBsZXQgdHlwZSA9IFwidGV4dFwiO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiaW5wdXRcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09IFwiYnV0dG9uXCIgfHwgUlBUVXRpbC5oYXNSb2xlSW5TZW1hbnRpY3MocnVsZUNvbnRleHQsIFwiYnV0dG9uXCIpKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IFwiYnV0dG9uZWxlbVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiaW5wdXRcIiAmJiB0eXBlID09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICB0eXBlID0gXCJ0ZXh0XCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB0ZXh0VHlwZXMgPSBbXCJ0ZXh0XCIsIFwiZmlsZVwiLCBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgXCJjaGVja2JveFwiLCBcInJhZGlvXCIsXG4gICAgICAgICAgICAgICAgXCJzZWFyY2hcIiwgXCJ0ZWxcIiwgXCJ1cmxcIiwgXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgIFwiZGF0ZVwiLCBcIm51bWJlclwiLCBcInJhbmdlXCIsXG4gICAgICAgICAgICAgICAgXCJ0aW1lXCIsIFwiY29sb3JcIixcbiAgICAgICAgICAgICAgICBcIm1vbnRoXCIsIFwid2Vla1wiLCBcImRhdGV0aW1lLWxvY2FsXCJdO1xuICAgICAgICAgICAgbGV0IGJ1dHRvblR5cGVzID0gW1wiYnV0dG9uXCIsIFwicmVzZXRcIiwgXCJzdWJtaXRcIl07XG4gICAgICAgICAgICBsZXQgYnV0dG9uVHlwZXNXaXRoRGVmYXVsdHMgPSBbXCJyZXNldFwiLCBcInN1Ym1pdFwiXTsgLy8gJ3N1Ym1pdCcgYW5kICdyZXNldCcgaGF2ZSB2aXNpYmxlIGRlZmF1bHRzLlxuICAgICAgICAgICAgaWYgKHRleHRUeXBlcy5pbmRleE9mKHR5cGUpICE9PSAtMSkgeyAvLyBJZiB0eXBlIGlzIGluIHRoZSBsaXN0XG4gICAgICAgICAgICAgICAgLy8gR2V0IG9ubHkgdGhlIG5vbi1oaWRkZW4gbGFiZWxzIGZvciBlbGVtZW50LCBpbiB0aGUgY2FzZSB0aGF0IGFuIGxhYmVsIGlzIGhpZGRlbiB0aGVuIGl0IGlzIGEgdmlvbGF0aW9uXG4gICAgICAgICAgICAgICAgbGV0IGxhYmVsRWxlbSA9IFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKHJ1bGVDb250ZXh0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSAobGFiZWxFbGVtICE9IG51bGwgJiYgUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4obGFiZWxFbGVtKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5oYXNJbXBsaWNpdExhYmVsKHJ1bGVDb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBcImZpbGVcIjsgLy8gaW5wdXQgdHlwZT1maWxlIGhhcyBhIHZpc2libGUgZGVmYXVsdC5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uVHlwZXMuaW5kZXhPZih0eXBlKSAhPT0gLTEgfHwgdHlwZSA9PSBcImJ1dHRvbmVsZW1cIikge1xuICAgICAgICAgICAgICAgIC8vIEJ1dHRvbnMgYXJlIG5vdCBpbiBzY29wZSBmb3IgdGhpcyBzdWNjZXNzIGNyaXRlcmlhIChJQk1hL2VxdWFsLWFjY2VzcyMyMDQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGEgdmlzaWJsZSBsYWJlbCBwb2ludGVkIHRvIGJ5IHRoZSBhcmlhLWxhYmVsbGVkYnkgYXR0cmlidXRlLlxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGhlTGFiZWwgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIik7XG4gICAgICAgICAgICAgICAgbGV0IGxhYmVsVmFsdWVzID0gdGhlTGFiZWwuc3BsaXQoL1xccysvKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxhYmVsVmFsdWVzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50QnlJZCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBsYWJlbFZhbHVlc1tqXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50QnlJZCAmJiBSUFRVdGlsLmlzTm9kZVZpc2libGUoZWxlbWVudEJ5SWQpICYmIFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKGVsZW1lbnRCeUlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCAmJiBub2RlTmFtZSA9PSBcIm9wdGdyb3VwXCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxhYmVsXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgbm9kZU5hbWUgPT0gXCJvcHRpb25cIikge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwibGFiZWxcIikgfHwgcnVsZUNvbnRleHQuaW5uZXJIVE1MLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBPbmUgbGFzdCBjaGVjayBmb3Igcm9sZXMgdGhhdCBzdXBwb3J0IG5hbWUgZnJvbSBjb250ZW50XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIC8vIGxpc3QgZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNuYW1lZnJvbWNvbnRlbnRcbiAgICAgICAgICAgICAgICBsZXQgcm9sZXNXaXRoTmFtZUZyb21Db250ZW50ID0gW1wiYnV0dG9uXCIsIFwiY2VsbFwiLCBcImNoZWNrYm94XCIsIFwiY29sdW1uaGVhZGVyXCIsIFwiZ3JpZGNlbGxcIiwgXCJoZWFkaW5nXCIsIFwibGlua1wiLFxuICAgICAgICAgICAgICAgICAgICBcIm1lbnVpdGVtXCIsIFwibWVudWl0ZW1jaGVja2JveFwiLCBcIm1lbnVpdGVtcmFkaW9cIiwgXCJvcHRpb25cIiwgXCJyYWRpb1wiLCBcInJvd1wiLFxuICAgICAgICAgICAgICAgICAgICBcInJvd2dyb3VwXCIsIFwicm93aGVhZGVyXCIsIFwic3dpdGNoXCIsIFwidGFiXCIsIFwidG9vbHRpcFwiLC8qXCJ0cmVlXCIsKi9cInRyZWVpdGVtXCJdO1xuICAgICAgICAgICAgICAgIC8vZ2V0IGF0dHJpYnV0ZSByb2xlcyBhcyB3ZWxsIGFzIGltcGxpY2l0IHJvbGVzLlxuICAgICAgICAgICAgICAgIGxldCByb2xlcyA9IFJQVFV0aWwuZ2V0Um9sZXMocnVsZUNvbnRleHQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm9sZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvbGVzV2l0aE5hbWVGcm9tQ29udGVudC5pbmRleE9mKHJvbGVzW2ldKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyByZWZlcmVuY2VkIGJ5IGEgY29tYm9ib3guIElmIHNvLCB0aGUgbGFiZWwgYmVsb25ncyB0byB0aGUgY29tYm9ib3hcbiAgICAgICAgICAgIGxldCBpZCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImlkXCIpO1xuICAgICAgICAgICAgaWYgKGlkICYmIGlkLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihgKlthcmlhLWNvbnRyb2xzPScke2lkfSddW3JvbGU9J2NvbWJvYm94J11gKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc0lucHV0IH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgRnJhZ21lbnRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvZnJhZ21lbnRcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9sZWdhY3lcIjtcblxubGV0IGExMXlSdWxlc0xhYmVsOiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogUmFpc2UgaWYgbW9yZSB0aGFuIG9uZSA8bGFiZWw+IGZvdW5kIHdpdGggdGhlIHNhbWUgZm9yIHZhbHVlLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9MYWJlbF9VbmlxdWVGb3JcIixcbiAgICAgICAgY29udGV4dDogXCJkb206bGFiZWxbZm9yXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gSkNIIC0gTk8gT1VUIE9GIFNDT1BFIGhpZGRlbiBpbiBjb250ZXh0XG4gICAgICAgICAgICBsZXQgbGFiZWxJZHMgPSBSUFRVdGlsLmdldENhY2hlKEZyYWdtZW50VXRpbC5nZXRPd25lckZyYWdtZW50KHJ1bGVDb250ZXh0KSwgXCJSUFRfTGFiZWxfU2luZ2xlXCIsIHt9KVxuICAgICAgICAgICAgbGV0IGlkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiZm9yXCIpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9ICEoaWQgaW4gbGFiZWxJZHMpO1xuICAgICAgICAgICAgbGFiZWxJZHNbaWRdID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGxhYmVsIGhhcyBubyBjb250ZW50XG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmxhYmVsXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW4ocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc19SZWd1bGFyXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSB8fCBcIlwiKS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfQXJpYUxhYmVsXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWxFbGVtID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JykpO1xuICAgICAgICAgICAgICAgIGlmIChsYWJlbEVsZW0gJiYgUlBUVXRpbC5oYXNJbm5lckNvbnRlbnQobGFiZWxFbGVtKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzX0xhYmVsbGVkQnlcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBsYWJlbCBmb3IgcG9pbnRzIHRvIGFuIGludmFsaWQgaWRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgRjE3XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfTGFiZWxfUmVmVmFsaWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206bGFiZWxbZm9yXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGlkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiZm9yXCIpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBpZCk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGVzIG51bGwgYW5kIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0Lmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmFpbCBpZiB3ZSdyZSBwb2ludGluZyBhdCBzb21ldGhpbmcgdGhhdCBpcyBsYWJlbGxlZCBieSBhbm90aGVyIG1lY2hhbmlzbVxuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSB0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gbm9kZU5hbWUgPT0gXCJpbnB1dFwiIHx8IG5vZGVOYW1lID09IFwic2VsZWN0XCIgfHwgbm9kZU5hbWUgPT0gXCJ0ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlTmFtZSA9PSBcImJ1dHRvblwiIHx8IG5vZGVOYW1lID09IFwiZGF0YWxpc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZU5hbWUgPT0gXCJvcHRncm91cFwiIHx8IG5vZGVOYW1lID09IFwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGVOYW1lID09IFwia2V5Z2VuXCIgfHwgbm9kZU5hbWUgPT0gXCJvdXRwdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZU5hbWUgPT0gXCJwcm9ncmVzc1wiIHx8IG5vZGVOYW1lID09IFwibWV0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZU5hbWUgPT0gXCJmaWVsZHNldFwiIHx8IG5vZGVOYW1lID09IFwibGVnZW5kXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImlucHV0XCIgJiYgdGFyZ2V0Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gdGFyZ2V0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHR5cGUgPT0gXCJ0ZXh0XCIgfHwgdHlwZSA9PSBcInBhc3N3b3JkXCIgfHwgdHlwZSA9PSBcImZpbGVcIiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gXCJjaGVja2JveFwiIHx8IHR5cGUgPT0gXCJyYWRpb1wiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBcImhpZGRlblwiIHx8IHR5cGUgPT0gXCJzZWFyY2hcIiB8fCB0eXBlID09IFwidGVsXCIgfHwgdHlwZSA9PSBcInVybFwiIHx8IHR5cGUgPT0gXCJlbWFpbFwiIHx8ICAvL0hUTUwgNVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gXCJkYXRlXCIgfHwgdHlwZSA9PSBcIm51bWJlclwiIHx8IHR5cGUgPT0gXCJyYW5nZVwiIHx8IHR5cGUgPT0gXCJpbWFnZVwiIHx8IC8vSFRNTCA1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBcInRpbWVcIiB8fCB0eXBlID09IFwiY29sb3JcIiB8fCAgLy8gSFRNTCA1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBcImRhdGV0aW1lXCIgfHwgdHlwZSA9PSBcIm1vbnRoXCIgfHwgdHlwZSA9PSBcIndlZWtcIjsgLy9IVE1MNS4xXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBBZGQgb25lIG1vcmUgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSB0YXJnZXQgZWxlbWVudCBpcyBOT1QgaGlkZGVuLCBpbiB0aGUgY2FzZSB0aGUgdGFyZ2V0IGlzIGhpZGRlblxuICAgICAgICAgICAgICAgIC8vIGZsYWcgYSB2aW9sYXRpb24gcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIGlzLlxuICAgICAgICAgICAgICAgIGlmIChwYXNzZWQgJiYgIVJQVFV0aWwuaXNOb2RlVmlzaWJsZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByZXRUb2tlbiA6IHN0cmluZ1tdID0gW107XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldFRva2VuLnB1c2goaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9yZXR1cm4gbmV3IFZhbGlkYXRpb25SZXN1bHQocGFzc2VkLCBbcnVsZUNvbnRleHRdLCAnJywgJycsIHBhc3NlZCA9PSB0cnVlID8gW10gOiBbcmV0VG9rZW5dKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIsIHJldFRva2VuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBsYWJlbCBcImZvclwiIHBvaW50cyB0byBhbiBoaWRkZW4gZWxlbWVudC5cbiAgICAgICAgICogTm90ZTogUlBUIGRvZXNuJ3Qgc3VwcG9ydCBxdWVyeWluZyBzdHlsZSBpbmZvcm1hdGlvbiwgXG4gICAgICAgICAqIHNvIHRoaXMgcnVsZSBvbmx5IGFkZHJlc3NlcyB0eXBlPVwiaGlkZGVuXCIgZWxlbWVudHMuXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEY2OFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX0xhYmVsX1RhcmdldEludmlzaWJsZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpsYWJlbFtmb3JdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IGlkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiZm9yXCIpO1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBpZCk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRFbGVtZW50QXR0cmlidXRlKHRhcmdldCwgXCJ0eXBlXCIpICE9IFwiaGlkZGVuXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBGbGFnIGEgdmlvbGF0aW9uIGlmIEFjY2Vzc2libGUgbmFtZSBkb2VzIG5vdCBtYXRjaCBvciBjb250YWluIHRoZSB2aXNpYmxlIGxhYmVsIHRleHQuXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjEgU3VjY2VzcyBDcml0ZXJpb24gMi41LjM6IExhYmVsIGluIE5hbWVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMV9MYWJlbF9BY2Nlc3NpYmxlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiYXJpYTpidXR0b24sYXJpYTpjaGVja2JveCxhcmlhOmdyaWRjZWxsLGFyaWE6bGluayxhcmlhOm1lbnVpdGVtLGFyaWE6bWVudWl0ZW1jaGVja2JveFwiXG4gICAgICAgICAgICArXCIsYXJpYTptZW51aXRlbXJhZGlvLGFyaWE6b3B0aW9uLGFyaWE6cmFkaW8sYXJpYTpzd2l0Y2gsYXJpYTp0YWIsYXJpYTp0cmVlaXRlbVwiXG4gICAgICAgICAgICArXCIsZG9tOmlucHV0LGRvbTp0ZXh0YXJlYSxkb206c2VsZWN0LGRvbTpvdXRwdXQsZG9tOm1ldGVyXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShydWxlQ29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmlzTm9kZURpc2FibGVkKHJ1bGVDb250ZXh0KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGxldCBpc0lucHV0QnV0dG9uID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgYnV0dG9uVHlwZXMgPSBbXCJidXR0b25cIiwgXCJyZXNldFwiLCBcInN1Ym1pdFwiLyosIFwiaW1hZ2VcIiovXTtcbiAgICAgICAgICAgIGxldCBpbnB1dFR5cGUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgIGlucHV0VHlwZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoYnV0dG9uVHlwZXMuaW5kZXhPZihpbnB1dFR5cGUpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpc0lucHV0QnV0dG9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB0aGVMYWJlbEJ5ID0gUlBUVXRpbC5nZXRBcmlhQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtbGFiZWxsZWRieVwiKTtcbiAgICAgICAgICAgIGlmICh0aGVMYWJlbEJ5ICYmICFpc0lucHV0QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgLy8gc2tpcCB0aGUgY2hlY2tzIGlmIGl0IGhhcyBhbiBhcmlhLWxhYmVsbGVkYnkgc2luY2UgaXQgdGFrZXMgcHJlY2VkZW5jZS5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHRoZUxhYmVsID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodGhlTGFiZWxCeSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxWYWx1ZXMgPSB0aGVMYWJlbEJ5LnNwbGl0KC9cXHMrLyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGFiZWxWYWx1ZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50QnlJZCA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKHJ1bGVDb250ZXh0LCBsYWJlbFZhbHVlc1tqXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEJ5SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVMYWJlbCA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KGVsZW1lbnRCeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoZUxhYmVsID0gUlBUVXRpbC5nZXRBcmlhQXR0cmlidXRlKHJ1bGVDb250ZXh0LCBcImFyaWEtbGFiZWxcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGVMYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgdGV4dCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNJbnB1dEJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAvKiBOb3RlOiBEaXNhYmxlIHRoZSBhbHQgY2hlY2sgaW4gaW1hZ2VzIHVudGlsIHdlIGdldCBjb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0VHlwZT09PVwiaW1hZ2VcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhbHRcIikpe1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlICdhbHQnIGF0dHJpYnV0ZSBhcyB2aXNpYmxlIHRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIik7XG4gICAgICAgICAgICAgICAgICAgIH1lbHNlIFxuICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwidmFsdWVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSAndmFsdWUnIGF0dHJpYnV0ZSBhcyB2aXNpYmxlIHRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRUeXBlID09PSBcInN1Ym1pdFwiLyp8fGlucHV0VHlwZT09PVwiaW1hZ2VcIiovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IFwic3VibWl0XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0VHlwZSA9PT0gXCJyZXNldFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IFwicmVzZXRcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGxvb2sgZm9yIGEgPGxhYmVsPiBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbEVsZW0gPSBSUFRVdGlsLmdldExhYmVsRm9yRWxlbWVudEhpZGRlbihydWxlQ29udGV4dCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbGFiZWxFbGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50Tm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZShydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImxhYmVsXCIgLyomJiBSUFRVdGlsLmlzRmlyc3RGb3JtRWxlbWVudChwYXJlbnROb2RlLCBydWxlQ29udGV4dCkqLykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXJlbnRDbG9uZSA9IHBhcmVudE5vZGUuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4Y2x1ZGUgYWxsIGZvcm0gZWxlbWVudHMgZnJvbSB0aGUgbGFiZWwgc2luY2UgdGhleSBtaWdodCBhbHNvIGhhdmUgaW5uZXIgY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRWxlbSA9IFJQVFV0aWwucmVtb3ZlQWxsRm9ybUVsZW1lbnRzRnJvbUxhYmVsKHBhcmVudENsb25lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gbGFiZWxFbGVtID8gbGFiZWxFbGVtIDogcnVsZUNvbnRleHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzVG9Ta2lwQ29udGVudENoZWNrID0gW1wibWV0ZXJcIiwgXCJvdXRwdXRcIiwgXCJwcm9ncmVzc1wiLCBcInNlbGVjdFwiLCBcInRleHRhcmVhXCJdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWxhYmVsRWxlbSAmJiBlbGVtZW50c1RvU2tpcENvbnRlbnRDaGVjay5pbmRleE9mKG5vZGVOYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBcIlwiOyAvLyBza2lwIGNvbnRlbnQgY2hlY2sgZm9yIHNvbWUgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgdmlzaWJsZSB0ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gUlBUVXRpbC5nZXRJbm5lclRleHQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvKiBOb3RlOiBEaXNhYmxlIHRoaXMgYWx0IGNoZWNrIGluIGltYWdlcyBmb3Igbm93IHVudGlsIHdlIGdldCBjb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgLy8gTG9vayBmb3IgdGhlIGFsdCBhdHRyaWJ1dGUgb2YgYW4gaW1hZ2Ugd2hpY2ggaXMgY29uc2lkZXJlZCB2aXNpYmxlIHRleHQuXG4gICAgICAgICAgICAgICAgICAgIGxldCBoYXNJbWdBbHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZmlyc3RDaGlsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbncgPSBSUFRVdGlsLm5ldyBOb2RlV2Fsa2VyKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFoYXNJbWdBbHQgJiYgbncubmV4dE5vZGUoKSAmJiBudy5ub2RlICE9IGVsZW1lbnQgJiYgbncubm9kZSAhPSBlbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzSW1nQWx0ID0gKG53Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImltZ1wiICYmIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobncubm9kZSwgXCJhbHRcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbWdBbHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQgPyB0ZXh0ICsgbncubm9kZS5nZXRBdHRyaWJ1dGUoXCJhbHRcIikgOiBudy5ub2RlLmdldEF0dHJpYnV0ZShcImFsdFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgbm9uYWxwaGFudW1lcmljID0gL1teYS16QS1aMC05XS9nO1xuXG4gICAgICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShub25hbHBoYW51bWVyaWMsIFwiIFwiKTsgLy8gb25seSBjb25zaWRlciBhbHBoYW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkVGV4dCA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyh0ZXh0KS50b0xvd2VyQ2FzZSgpOyAvLyBMZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBkaWZmZXJlbmNlIGluIGNhc2Ugc2Vuc2l0aXZpdHkgc2hvdWxkIGJlIGlnbm9yZWQuXG5cbiAgICAgICAgICAgICAgICB0aGVMYWJlbCA9IHRoZUxhYmVsLnJlcGxhY2Uobm9uYWxwaGFudW1lcmljLCBcIiBcIik7IC8vIG9ubHkgY29uc2lkZXIgYWxwaGFudW1lcmljIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZExhYmVsID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHRoZUxhYmVsKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRUZXh0Lmxlbmd0aCA+IDEpIHsgLy8gc2tpcCBub24tdGV4dCBjb250ZW50LiBlLmcuIDxidXR0b24gYXJpYS1sYWJlbD1cImNsb3NlXCI+WDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSBub3JtYWxpemVkTGFiZWwuaW5kZXhPZihub3JtYWxpemVkVGV4dCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgbWF0Y2hpbmcgcGFydGlhbCB3b3Jkcy5lLmcuIHRleHQgXCJuYW1lXCIgc2hvdWxkIG5vdCBtYXRjaCAnc3VybmFtZScgb3IgJ25hbWVzJ1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24gPj0gMCAmJiBub3JtYWxpemVkTGFiZWwubGVuZ3RoID4gbm9ybWFsaXplZFRleHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGV0dGVycyA9IC9eWzAtOWEtekEtWl0rJC87XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGxvY2F0aW9uICsgbm9ybWFsaXplZFRleHQubGVuZ3RoKSA8IG5vcm1hbGl6ZWRMYWJlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBlbmRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGhlQ2hhciA9IG5vcm1hbGl6ZWRMYWJlbC5jaGFyQXQobG9jYXRpb24gKyBub3JtYWxpemVkVGV4dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGVDaGFyLm1hdGNoKGxldHRlcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXNzZWQgJiYgbG9jYXRpb24gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgYmVnaW5uaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRoZUNoYXIgPSBub3JtYWxpemVkTGFiZWwuY2hhckF0KGxvY2F0aW9uIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoZUNoYXIubWF0Y2gobGV0dGVycykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbiA9PT0gLTEpIHsgLy8gY2hlY2sgdGhhdCB2aXNpYmxlIHRleHQgY29udGVudCBvZiB0aGUgdGFyZ2V0IGlzIGNvbnRhaW5lZCB3aXRoaW4gaXRzIGFjY2Vzc2libGUgbmFtZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbl1cblxuZXhwb3J0IHsgYTExeVJ1bGVzTGFiZWwgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCwgTm9kZVdhbGtlciB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzTGlzdDogUnVsZVtdID0gW1xuXG4gICAge1xuICAgICAgICBpZDogXCJSUFRfTGlzdF9NaXN1c2VcIixcbiAgICAgICAgY29udGV4dDogXCJkb206ZGwsIGRvbTp1bCwgZG9tOm9sLCBkb206ZGlyLCBkb206bWVudSwgZG9tOmxpLCBkb206ZGQsIGRvbTpkdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KSA6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIEdldCBhbGwgdGhlIGNoaWxkcmVucyBvZiB0aGUgcnVsZUNvbnRleHRcbiAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHJ1bGVDb250ZXh0LmNoaWxkcmVuXG5cbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImRsXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlyc3QgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGxldCBsYXN0ID0gXCJcIjtcbiAgICAgICAgICAgICAgICBsZXQgd2Fsa0NoaWxkcmVuID0gcnVsZUNvbnRleHQuZmlyc3RDaGlsZCBhcyBOb2RlO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgbGV0IHByZXNlbnRhdGlvbmFsRm91bmQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBjaGlsZHJlbnMgc2V0IGFzIHBhc3NlZCwgc2luY2UgZGwgZWxlbWVudHMgY2FuIGhhdmVcbiAgICAgICAgICAgICAgICAvLyB6ZXJvIG9yIG1vcmUgb2Y6IG9uZSBvciBtb3JlIGR0IGVsZW1lbnRzLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBkZCBlbGVtZW50c1xuICAgICAgICAgICAgICAgIGlmICghcnVsZUNvbnRleHQuY2hpbGRyZW4gfHwgcnVsZUNvbnRleHQuY2hpbGRyZW4ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIHdhbGtDaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Fsa0NoaWxkcmVuLm5vZGVUeXBlID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSB3YWxrQ2hpbGRyZW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdoaWxlIHdhbGtpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgdW5kZXIgZGwsIGlmIHdlIGZpbmQgYSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmVzZW50YXRpb25hbCBlbGVtZW50IHdlIG1vdmUgdG8gdGhlIG5leHQgZWxlbWVudCBhcyBwcmVzZW50YXRpb25hbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRzIGFyZSBhbGxvd2VkIHVuZGVyIGxpc3QgZWxlbWVudHMgYXMgdGhleSBhcmUgb25seSBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtYXR0aW5nIHRleHQgbm9kZXMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNQcmVzZW50YXRpb25hbEVsZW1lbnQod2Fsa0NoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb25hbEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa0NoaWxkcmVuID0gd2Fsa0NoaWxkcmVuLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHNldCB0byBwYXNzIGlmIHdlIGZpbmQgZGQgb3IgZHQgZWxlbWVudCwgaW4gdGhlIGNhc2Ugb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbiBlbGVtZW50IHRoYXQgaXMgbm90IHN1cHBvcnRlZCB3ZSB3aWxsIGNhdGNoIGl0IGhlcmUuIGkuZS4gaW1nIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBub2RlTmFtZSA9PSBcImRkXCIgfHwgbm9kZU5hbWUgPT0gXCJkdFwiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBmaXJzdCBhbmQgbGFzdCBub2RlIGRlcGVuZGluZyBvbiB3aGljaCBpcyBmb3VuZCBmaXJzdCBhbmQgbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdCA9PSBcIlwiKSBmaXJzdCA9IG5vZGVOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBub2RlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdhbGtDaGlsZHJlbiA9IHdhbGtDaGlsZHJlbi5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHdlIGhhdmUgZm91bmQgZHQgYW5kIGRkIGVsZW1lbnRzIHVuZGVyIGRsIHdlIHBhc3MgcmlnaHQgYXdheS5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB0aGVyZSBpcyBubyBkdCBvciBkZCBlbGVtZW50LCBidXQgYnVuY2ggb2YgcHJlc2VudGF0aW9uYWwgZWxlbWVudHMgd2UgbWFyayB0aGlzIGFzIGFcbiAgICAgICAgICAgICAgICAgICAgLy8gcGFzcy4gSW4gdGhlIGNhc2UgdGhhdCB0aGVyZSBhcmUgb3RoZXIgZWxlbWVudHMgc3VjaCBhcyBpbWcgd2Ugd2lsbCBzdGlsbCB0cmlnZ2VyIGEgdmlvbGF0aW9uLlxuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAocGFzc2VkICYmIGZpcnN0ID09IFwiZHRcIiAmJiBsYXN0ID09IFwiZGRcIikgfHwgKHBhc3NlZCAmJiBwcmVzZW50YXRpb25hbEZvdW5kKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09IFwibGlcIikge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFtcInVsXCIsIFwib2xcIiwgXCJkaXJcIiwgXCJtZW51XCJdKSAhPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlTmFtZSA9PSBcImRkXCIgfHwgbm9kZU5hbWUgPT0gXCJkdFwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJkbFwiKSAhPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgd2Fsa0NoaWxkcmVuID0gcnVsZUNvbnRleHQuZmlyc3RDaGlsZCBhcyBOb2RlO1xuICAgICAgICAgICAgICAgIC8vIFplcm8gb3IgbW9yZSBsaSBlbGVtZW50cyBhcmUgcGVybWl0dGVkIGluc2lkZSBvZiA8b2w+LCA8dWw+IG9yIDxtZW51PiBlbGVtZW50cyBub3cgYXMgcGVyIHRoZSBodG1sNSBzcGVjLiBUaGlzIGhhbmRsZXMgdGhlIGNhc2VcbiAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZXJlIGFyZSB6ZXJvIGVsZW1lbnRzIHVuZGVyIHRoZSA8b2w+LCA8dWw+IG9yIDxtZW51Pi5cbiAgICAgICAgICAgICAgICBpZiAoKG5vZGVOYW1lID09IFwidWxcIiB8fCBub2RlTmFtZSA9PSBcIm9sXCIgfHwgbm9kZU5hbWUgPT0gXCJtZW51XCIpICYmICghcnVsZUNvbnRleHQuY2hpbGRyZW4gfHwgcnVsZUNvbnRleHQuY2hpbGRyZW4ubGVuZ3RoID09IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpRm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXNlbnRhdGlvbmFsRm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiB3YWxrQ2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hpbGUgd2Fsa2luZyB0aHJvdWdoIHRoZSBsaXN0IGVsZW1lbnRzLCBpZiB3ZSBmaW5kIGEgXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmVzZW50YXRpb25hbCBlbGVtZW50IHdlIHNraXAgY2hlY2tpbmcgYXMgcHJlc2VudGF0aW9uYWxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRzIGFyZSBhbGxvd2VkIHVuZGVyIGxpc3QgZWxlbWVudHMgYXMgdGhleSBhcmUgb25seSBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvcm1hdHRpbmcgdGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzUHJlc2VudGF0aW9uYWxFbGVtZW50KHdhbGtDaGlsZHJlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb25hbEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWxrQ2hpbGRyZW4gPSB3YWxrQ2hpbGRyZW4ubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhc3MgaWYgdGhlIG5vZGUgdHlwZSBpcyBhbnl0aGluZyBidXQgMSwgb3IgaW4gdGhlIGNhc2UgdGhhdCBpdCBpcyBhIGxpIGVsZW1lbnQuIEZvciBhbnkgb3RoZXIgbm9kZSBcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0IHdpbGwgYmUgY2F1Z2h0IGhlcmUgdGhhdCBlbGVtZW50IGlzIG5vdCBhbGxvd2VkIHVuZGVyIGxpc3Qgbm9kZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZ1cnRoZXJtb3JlIGluIHRoZSBjYXNlIHRoYXQgdGhlcmUgaXMgYSB0ZW1wbGF0ZSBlbGVtZW50IHdpdGggdGhlIHBhcmVudCBiZWluZyB1bC9vbCBkb24ndCBmbGFnIGEgdmlvbGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB3YWxrQ2hpbGRyZW4ubm9kZVR5cGUgIT0gMSB8fCB3YWxrQ2hpbGRyZW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImxpXCIgfHwgKHdhbGtDaGlsZHJlbi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwidGVtcGxhdGVcIiAmJiAobm9kZU5hbWUgPT0gXCJ1bFwiIHx8IG5vZGVOYW1lID09IFwib2xcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgbGkgZm91bmQgdG8gdHJ1ZSBpZiB0aGUgY3VycmVudCBlbGVtZW50IChub2RlVHlwZT0xKSBpcyBhbiBsaSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBsaUZvdW5kID0gbGlGb3VuZCB8fCAod2Fsa0NoaWxkcmVuLm5vZGVUeXBlID09IDEgJiYgd2Fsa0NoaWxkcmVuLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJsaVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhbGtDaGlsZHJlbiA9IHdhbGtDaGlsZHJlbi5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IGl0IGhhcyBwYXNzZWQgYW5kIGFsc28gbGkgZWxlbWVudCBpcyBmb3VuZCB1bmRlciBsaXN0IG5vZGUsIHdlIHBhc3MgcmlnaHQgYXdheS5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB0aGVyZSBpcyBubyBsaSBlbGVtZW50LCBidXQgYnVuY2ggb2YgcHJlc2VudGF0aW9uYWwgZWxlbWVudHMgd2UgbWFyayB0aGlzIGFzIGFcbiAgICAgICAgICAgICAgICAgICAgLy8gcGFzcy4gSW4gdGhlIGNhc2UgdGhhdCB0aGVyZSBhcmUgb3RoZXIgZWxlbWVudHMgc3VjaCBhcyBpbWcgd2Ugd2lsbCBzdGlsbCB0cmlnZ2VyIGEgdmlvbGF0aW9uLlxuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAocGFzc2VkICYmIGxpRm91bmQpIHx8IChwYXNzZWQgJiYgcHJlc2VudGF0aW9uYWxGb3VuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogXCJSUFRfTGlzdF9Vc2VNYXJrdXBcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgd2Fsa05vZGUgPSBydWxlQ29udGV4dC5maXJzdENoaWxkIGFzIE5vZGU7XG4gICAgICAgICAgICB3aGlsZSAocGFzc2VkICYmIHdhbGtOb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gQ29tcGx5IHRvIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBzZXR0aW5nIHdpbGwgYmUgZG9uZSBieSBkZWZhdWx0IGFzIHRoaXMgcnVsZSB0cmlnZ2VycyBvbiBlYWNoIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAvLyBhbmQgZm9yIGVhY2ggZWxlbWVudCBpdCBvbmx5IGNoZWNrcyB0aGF0IHNpbmdsZSBlbGVtZW50cyB0ZXh0IG5vZGVzIGFuZCBub3RoaW5nIGVsc2UuIFNvIGFsbCBpbm5lciBlbGVtZW50cyB3aWxsIGJlXG4gICAgICAgICAgICAgICAgLy8gY292ZXJlZCBvbiB0aGVpciBvd24uIEN1cnJlbnRseSBmb3IgdGhpcyBydWxlIGJ5IGRlZmF1bHQgQ2hlY2sgSGlkZGVuIENvbnRlbnQgd2lsbCB3b3JrLCBhcyB3ZSBhcmUgZG9pbmdcbiAgICAgICAgICAgICAgICAvLyBhIG5vZGUgd2FsayBvbmx5IG9uIHNpYmxpbmdzIHNvIGl0IHdvdWxkIG5vdCBnZXQgdGV4dCBub2RlcyBmcm9tIG90aGVyIHNpYmxpbmdzIGF0IGFsbC5cbiAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSBpbiB0aGUgZnV0dXJlIHNvbWV0aGluZyBjaG5nZXMsIGp1c3QgbmVlZCB0byBhZGQgJiYgIVJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih3YWxrTm9kZSkgdG8gdGhlIGJlbG93XG4gICAgICAgICAgICAgICAgLy8gaWYuXG4gICAgICAgICAgICAgICAgaWYgKHdhbGtOb2RlLm5vZGVOYW1lID09IFwiI3RleHRcIikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHh0VmFsID0gd2Fsa05vZGUubm9kZVZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmFpbHVyZSA9IC9eWyBcXHRcXHJcXG5dKlsoIF0qWzEtOV0qW1xcKlxcLSkuXVsgXFx0XVtBLVosYS16XSsvLnRlc3QodHh0VmFsKTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gIWZhaWx1cmU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGVyZSdzIHNvbWUgc29ydCBvZiBibG9jayBsZXZlbCBlbGVtZW50IGJlZm9yZSB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBkdWUgdG8gdGhpbmdzIGxpa2UgPGk+U29tZSBzZW50ZW5jZTwvaT4uIE5ldyBzZW50ZW5jZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHdhbGtOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIG53LnByZXZOb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtcImJsb2NrcXVvdGVcIiwgXCJjZW50ZXJcIiwgXCJkaXJcIiwgXCJkaXZcIiwgXCJmb3JtXCIsIFwiaDFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoMlwiLCBcImgzXCIsIFwiaDRcIiwgXCJoNVwiLCBcImg2XCIsIFwiaHJcIiwgXCJiclwiLCBcIm1lbnVcIiwgXCJwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwicHJlXCJdLmluY2x1ZGVzKG5vZGVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09IFwiI3RleHRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHh0ID0gbncubm9kZS5ub2RlVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHR4dC5sZW5ndGggPiAwICYmICFbXCIgXCIsIFwiXFx0XCIsIFwiXFxuXCJdLmluY2x1ZGVzKHR4dC5jaGFyQXQodHh0Lmxlbmd0aCAtIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIGlmIHdlJ3JlIG5vdCBpbiB0aGUgYm9keSBvciBpZiB3ZSdyZSBpbiBhIHNjcmlwdFxuICAgICAgICAgICAgICAgIGxldCBjaGVja0FuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgW1wiYm9keVwiLCBcInNjcmlwdFwiXSk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gY2hlY2tBbmNlc3RvciA9PSBudWxsIHx8IGNoZWNrQW5jZXN0b3Iubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcImJvZHlcIjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzTGlzdCB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNNYXJxdWVlOiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgdGhlcmUgaXMgYSBtYXJxdWVlIGVsZW1lbnRcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc1XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfTWFycXVlZV9UcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOm1hcnF1ZWVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNNYXJxdWVlIH1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzTWVkaWE6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBSYWlzZSBlcnJvciBpZiBudW1iZXIgb2YgYWx0IGNoYXJhY3RlcnMgaXMgZ3JlYXRlciB0aGFuIE4uXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNlxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0FsdEJyaWVmXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmltZ1thbHRdLCBkb206YXBwbGV0W2FsdF0sIGRvbTphcmVhW2FsdF0sIGRvbTplbWJlZFthbHRdLCBkb206aW5wdXRbdHlwZV1bYWx0XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBtYXhBbHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDE1MCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBhbHRMZW5ndGggPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikudHJpbSgpLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBhbHRMZW5ndGggPD0gdmFsaWRhdGVQYXJhbXMubWF4QWx0LnZhbHVlO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIHZhcmlvdXMgbWVkaWEgdHlwZXNcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEcyNFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0F1ZGlvVHJpZ2dlclwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpiZ3NvdW5kLCBkb206YVtocmVmXSwgZG9tOmFyZWFbaHJlZl0sIGRvbTplbWJlZCwgZG9tOm9iamVjdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQ7XG4gICAgICAgICAgICBsZXQgdGhpc05vZGUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXNOb2RlID09IFwiYmdzb3VuZFwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9ICFSUFRVdGlsLmlzQXVkaW9PYmpFbWJlZExpbmsocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIG51bGw7IC8vIE91dCBvZiBTY29wZVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlTWFudWFsKFwiTWFudWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIHBvc3NpYmxlIHZpZGVvXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDU5XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfTWVkaWFfVmlkZW9SZWZlcmVuY2VUcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmFbaHJlZl0sIGRvbTphcmVhW2hyZWZdLCBkb206YXBwbGV0LCBkb206ZW1iZWQsIGRvbTpvYmplY3RcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImFwcGxldFwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9ICFSUFRVdGlsLmlzVmlkZW9PYmpFbWJlZExpbmsocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZU1hbnVhbChcIk1hbnVhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciBhdWRpby92aWRlbyB3aXRoIGFuIGFsdCBhdHRyaWJ1dGVcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NjBcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9NZWRpYV9BdWRpb1ZpZGVvQWx0RmlsZW5hbWVcIixcbiAgICAgICAgY29udGV4dDogXCJkb206YXJlYVthbHRdLCBkb206ZW1iZWRbYWx0XVwiLCAvLyBEb24ndCBjaGVjayBhcmVhIC0gaXQncyBhIGR1cGUgd2l0aCBnNDUzXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHVyaSA9IFwiXCI7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImFyZWFcIikge1xuICAgICAgICAgICAgICAgIHVyaSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImhyZWZcIilcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdXJpID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwic3JjXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodXJpID09IG51bGwpIHVyaSA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgZXh0ID0gUlBUVXRpbC5nZXRGaWxlRXh0KHVyaSk7XG4gICAgICAgICAgICBsZXQgaXNBdWRWaWQgPSBleHQubGVuZ3RoICE9IDAgJiYgKFJQVFV0aWwuaXNBdWRpb0V4dChleHQpIHx8IFJQVFV0aWwuaXNWaWRlb0V4dChleHQpKTtcbiAgICAgICAgICAgIGxldCBhbHRUZXh0ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiYWx0XCIpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9ICFpc0F1ZFZpZCB8fCAoYWx0VGV4dC5sZW5ndGggPiAwICYmIGFsdFRleHQuaW5kZXhPZihleHQpID09IC0xKTtcblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIHBvc3NpYmxlIHZpZGVvXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNTAxXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfTWVkaWFfVmlkZW9PYmplY3RUcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmVtYmVkLCBkb206b2JqZWN0XCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gIVJQVFV0aWwuaXNWaWRlb09iakVtYmVkTGluayhydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZU1hbnVhbChcIk1hbnVhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgdmFyaW91cyBpbWFnZSBhbmQgY29sb3IgdXNhZ2VcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEcyNDVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9NZWRpYV9JbWdDb2xvclVzYWdlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmVtYmVkLCBkb206b2JqZWN0LCBkb206aW1nLCBkb206YXBwbGV0LCBkb206c2NyaXB0LCBkb206c3R5bGUsIGRvbTppbnB1dCwgZG9tOmxpbmssXCIgK1xuICAgICAgICAgICAgXCJkb206KltzdHlsZV0sIGRvbTpmb250W2NvbG9yXSwgZG9tOnRyW2JnY29sb3JdLCBkb206dGhbYmdjb2xvcl0sIFwiICtcbiAgICAgICAgICAgIFwiZG9tOnRkW2JnY29sb3JdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBzdHlsZSB1c2VkLCBpdCBmYWlscyBhbnl3YXlcbiAgICAgICAgICAgIGlmICghcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwic3R5bGVcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImlucHV0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInR5cGVcIikudG9Mb3dlckNhc2UoKSAhPSAnaW1hZ2UnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJsaW5rXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlbFwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicmVsXCIpLnRvTG93ZXJDYXNlKCkgIT0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHRyaWdnZXIgb24gb25lIGxpbmsgdG8gcHJvbXB0IHRoZSBtYW51YWwgY2hlY2sgLSB0aGF0J3MgZW5vdWdoXG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwudHJpZ2dlck9uY2UocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJSUFRfTWVkaWFfSW1nQ29sb3JVc2FnZV9MaW5rc1wiLCBwYXNzZWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJlbWJlZFwiIHx8IG5vZGVOYW1lID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInR5cGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwidHlwZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHR5cGUuc3RhcnRzV2l0aChcInRleHRcIikgfHwgdHlwZS5zdGFydHNXaXRoKFwiYXVkaW9cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiY29kZXR5cGVcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiY29kZXR5cGVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSB0eXBlLnN0YXJ0c1dpdGgoXCJ0ZXh0XCIpIHx8IHR5cGUuc3RhcnRzV2l0aChcImF1ZGlvXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoKG5vZGVOYW1lID09IFwiZW1iZWRcIikgPyBcInNyY1wiIDogXCJkYXRhXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVuYW1lID09IG51bGwpIGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHQgPSBSUFRVdGlsLmdldEZpbGVFeHQoZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZXh0Lmxlbmd0aCA+IDAgJiYgUlBUVXRpbC5pc0F1ZGlvRXh0KGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09IFwic2NyaXB0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSB0cmlnZ2VyIG9uIG9uZSBzY3JpcHQgdG8gcHJvbXB0IHRoZSBtYW51YWwgY2hlY2sgLSB0aGF0J3MgZW5vdWdoXG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IFJQVFV0aWwudHJpZ2dlck9uY2UocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJSUFRfTWVkaWFfSW1nQ29sb3JVc2FnZV9TY3JpcHRzXCIsIHBhc3NlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgbGlua3MgdG8gZG9jdW1lbnRzXG4gICAgICAgICAqIE9yaWdpbjogQ0kxNjJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfTWVkaWFfRG9jdW1lbnRUcmlnZ2VyMlwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTphW2hyZWZdLGRvbTphcmVhW2hyZWZdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IGhyZWYgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpO1xuICAgICAgICAgICAgbGV0IGV4dCA9IFJQVFV0aWwuZ2V0RmlsZUV4dChocmVmKTtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSAhW1wiLmRvY3hcIiwgXCIuZG9jXCIsIFwiLnBkZlwiLCBcIi5vZHRcIl0uaW5jbHVkZXMoZXh0KTtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlTWFudWFsKFwiTWFudWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzTWVkaWEgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNNZXRhOiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBtZXRhIHJlZGlyZWN0IGlzIG5vbi16ZXJvXG4gICAgICAgICAqIE9yaWdpbjogSDc2LCBGNDEsIFJQVCA1LjYgRzI1NFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX01ldGFfUmVkaXJlY3RaZXJvXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOm1ldGFbaHR0cC1lcXVpdl1bY29udGVudF1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE5PIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImh0dHAtZXF1aXZcIikudG9Mb3dlckNhc2UoKSAhPT0gJ3JlZnJlc2gnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgLy8gSW52YWxpZCBjb250ZW50IGZpZWxkXG4gICAgICAgICAgICBpZiAoIWNvbnRlbnQubWF0Y2goL15cXGQrJC8pICYmICFjb250ZW50Lm1hdGNoKC9eXFxkKzsvKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZhaWwgPSBjb250ZW50Lm1hdGNoKC9eXFxkKzsgK1teIF0vKSAmJiAhY29udGVudC5zdGFydHNXaXRoKFwiMDtcIik7XG4gICAgICAgICAgICBpZiAoZmFpbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBtZXRhIHJlZnJlc2hcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEczM1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX01ldGFfUmVmcmVzaFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTptZXRhW2h0dHAtZXF1aXZdW2NvbnRlbnRdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaHR0cC1lcXVpdlwiKS50b0xvd2VyQ2FzZSgpICE9PSAncmVmcmVzaCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIGxldCBjb250ZW50ID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgLy8gSW52YWxpZCBjb250ZW50IGZpZWxkXG4gICAgICAgICAgICBpZiAoIWNvbnRlbnQubWF0Y2goL15cXGQrJC8pICYmICFjb250ZW50Lm1hdGNoKC9eXFxkKzsvKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZhaWwgPSAhY29udGVudC5tYXRjaCgvXlxcZCs7ICtbXiBdLyk7XG4gICAgICAgICAgICByZXR1cm4gIWZhaWwgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKSA6IFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIHZpZXdwb3J0XG4gICAgICAgICAqIE9yaWdpbjogQUNUIGI0ZjBjMyBodHRwczovL2FjdC1ydWxlcy5naXRodWIuaW8vcnVsZXMvYjRmMGMzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJtZXRhX3ZpZXdwb3J0X3pvb21cIixcbiAgICAgICAgY29udGV4dDogXCJkb206bWV0YVtuYW1lXVtjb250ZW50XVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwibmFtZVwiKS50b0xvd2VyQ2FzZSgpICE9PSAndmlld3BvcnQnKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBsZXQgY29udGVudCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIikudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIC8vIG5laXRoZXIgbWF4aW11bS1zY2FsZSBub3IgdXNlci1zY2FsYWJsZSAoZGVmYXVsdCB5ZXMpXG4gICAgICAgICAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudC50cmltKCkgPT09ICcnfHwgKCFjb250ZW50LmluY2x1ZGVzKCdtYXhpbXVtLXNjYWxlJykgJiYgIWNvbnRlbnQuaW5jbHVkZXMoJ3VzZXItc2NhbGFibGUnKSkpIFxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgdXNlcl9tc2cgPSBudWxsO1xuICAgICAgICAgICAgbGV0IG1heF9tc2cgPSBudWxsOyBcbiAgICAgICAgICAgIGNvbnN0IHByb3BzID0gY29udGVudC5zcGxpdChcIixcIik7ICAgIFxuICAgICAgICAgICAgbGV0IHVzZXJfc2NhbGVfdmFsdWUgPSAneWVzJztcbiAgICAgICAgICAgIGxldCBtYXhpbXVtX3NjYWxlX3ZhbHVlID0gJzIuMCc7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHByb3AgIG9mIHByb3BzKSAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpZWNlcyA9IHByb3AudHJpbSgpLnNwbGl0KCc9Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHBpZWNlcy5sZW5ndGggPCAyKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBpZiAocHJvcC5pbmNsdWRlcygndXNlci1zY2FsYWJsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJfbXNnID0gcHJvcDtcbiAgICAgICAgICAgICAgICAgICAgdXNlcl9zY2FsZV92YWx1ZSA9IHBpZWNlc1sxXS50cmltKCk7IFxuICAgICAgICAgICAgICAgICAgICBpZiAodXNlcl9zY2FsZV92YWx1ZS5zdGFydHNXaXRoKFwiJ1wiKSB8fCB1c2VyX3NjYWxlX3ZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfc2NhbGVfdmFsdWUgPSB1c2VyX3NjYWxlX3ZhbHVlLnN1YnN0cmluZygxLCB1c2VyX3NjYWxlX3ZhbHVlLmxlbmd0aC0xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcC5pbmNsdWRlcygnbWF4aW11bS1zY2FsZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heF9tc2cgPSBwcm9wO1xuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtX3NjYWxlX3ZhbHVlID0gcGllY2VzWzFdLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1heGltdW1fc2NhbGVfdmFsdWUuc3RhcnRzV2l0aChcIidcIikgfHwgbWF4aW11bV9zY2FsZV92YWx1ZS5zdGFydHNXaXRoKCdcIicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtX3NjYWxlX3ZhbHVlID0gbWF4aW11bV9zY2FsZV92YWx1ZS5zdWJzdHJpbmcoMSwgbWF4aW11bV9zY2FsZV92YWx1ZS5sZW5ndGgtMSkudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBOdW1iZXIodXNlcl9zY2FsZV92YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKHZhbHVlKSkgeyBcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPj0xIHx8IHZhbHVlIDw9IC0xKSB1c2VyX3NjYWxlX3ZhbHVlID0gJ3llcyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBtYXhpbXVtX3NjYWxlID0gMi4wOyBcbiAgICAgICAgICAgIHZhbHVlID0gTnVtYmVyKG1heGltdW1fc2NhbGVfdmFsdWUpO1xuICAgICAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkpIHsgXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkgbWF4aW11bV9zY2FsZSA9IDIuMDtcbiAgICAgICAgICAgICAgICBlbHNlIG1heGltdW1fc2NhbGUgPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heGltdW1fc2NhbGVfdmFsdWUgPT09ICd5ZXMnKSBtYXhpbXVtX3NjYWxlID0gMS4wO1xuICAgICAgICAgICAgICAgIGVsc2UgbWF4aW11bV9zY2FsZSA9IDAuMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICAvLyB1c2VyLXNjYWxhYmxlIGlzIG5vdCBzZXQgdG8gJ3llcycsIGlnbm9yZSBtYXhpbXVtX3NjYWxlXG4gICAgICAgICAgICBpZiAodXNlcl9zY2FsZV92YWx1ZSAhPT0gJ3llcycgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiLCBbdXNlcl9tc2ddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHVzZXItc2NhbGFibGUgaXMgJ3llcycsIGJ1dCBtYXhpbXVtX3NjYWxlIGlzIHRvbyBzbWFsbFxuICAgICAgICAgICAgaWYgKG1heGltdW1fc2NhbGUgPCAyLjAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiLCBbbWF4X21zZ10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc01ldGEgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQVJJQU1hcHBlciB9IGZyb20gXCIuLi8uLi8uLi8uLlwiO1xuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzT2JqZWN0OiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiBhbiBvYmplY3QgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGlubmVyIHRleHRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDI3LCBINTNcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9PYmplY3RfSGFzVGV4dFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpvYmplY3RcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAvLyBKQ0ggLSBOTyBPVVQgT0YgU0NPUEUgaGlkZGVuIGluIGNvbnRleHRcblxuICAgICAgICAgICAgLy8gRGV0ZWN0IGlmIHRoaXMgb2JqZWN0IGlzIG9mIHR5cGUgdGV4dCwgYnkgY2hlY2tpbmcgdGhlIG9iamVjdCB0eXBlIGluIHRoZSBjYXNlIGl0IGlzIHRleHQgdGhlbiBkbyBub3QgdHJpZ2dlciB0aGlzIHJ1bGVcbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0eXBlXCIpICYmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpKS5pbmRleE9mKFwidGV4dFwiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCByb2xlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKTtcbiAgICAgICAgICAgIGlmIChyb2xlID09PSBcInByZXNlbnRhdGlvblwiIHx8IHJvbGUgPT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFBlciBBQ1QsIGlnbm9yZSBlbWJlZGRlZCBIVE1MIGZpbGVzXG4gICAgICAgICAgICBsZXQgZGF0YSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImRhdGFcIik7XG4gICAgICAgICAgICBsZXQgZXh0ID0gZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gdHlwZW9mIFwiXCIgPyBkYXRhLnN1YnN0cmluZyhkYXRhLmxhc3RJbmRleE9mKFwiLlwiKSkgOiBcIlwiO1xuICAgICAgICAgICAgaWYgKGV4dCA9PT0gXCIuaHRtbFwiIHx8IGV4dCA9PT0gXCIuaHRtXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHJ1bGVDb250ZXh0KSB8fCBBUklBTWFwcGVyLmNvbXB1dGVOYW1lKHJ1bGVDb250ZXh0KS50cmltKCkubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNPYmplY3QgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNTY3JpcHQ6IFJ1bGVbXSA9IFtcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciB3aGVuIG9uY2xpY2sgZXZlbnRzIGFyZSB1c2VkIG9uIGVsZW1lbnRzIG90aGVyIHRoYW4gbGlua3MsIGFuZCByZWZlcmVuY2VcbiAgICAgICAgICogYW4gSFRNTCBwYWdlLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzQ3MCBFcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KltvbmNsaWNrXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBmYWlsU3Vic3RyaW5nOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXCIuYXNwXCIsIFwiLmFzcHhcIiwgXCIuY2ZtXCIsIFwiLmNmbWxcIiwgXCIuY2dpXCIsIFwiLmh0bVwiLCBcIi5odG1sXCIsIFwiLnNodG1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLnNodG1sXCIsIFwiLnBocFwiLCBcIi5wbFwiLCBcIi5weVwiLCBcIi5zaHRtXCIsIFwiLnNodG1sXCIsIFwiLnhodG1sXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImxvY2F0aW9uLmhyZWZcIl0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiW3N0cmluZ11cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhbiBhcmlhLXJvbGUgc3BlY2lmaWVkLCBkb24ndCB0cmlnZ2VyIHRoaXMuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJyb2xlXCIpO1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBhIG9yIGFyZWEsIGRvbid0IHRyaWdnZXIgaWYgdGhlcmUncyBhbiBocmVmLlxuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHBhc3NlZCA9IHBhc3NlZCB8fCAoKG5vZGVOYW1lID09IFwiYVwiIHx8IG5vZGVOYW1lID09IFwiYXJlYVwiKSAmJiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImhyZWZcIikpO1xuXG4gICAgICAgICAgICAvLyBJZiB0aGUgZ3VhcmRzIGZhaWxlZCwgY2hlY2sgdG8gc2VlIGlmIHRoZXkncmUgbG9va2luZyBhdCBsaW5rc1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmFpbFN1YnN0cmluZyA9IHZhbGlkYXRlUGFyYW1zLmZhaWxTdWJzdHJpbmcudmFsdWU7O1xuICAgICAgICAgICAgICAgIGxldCBvbmNsaWNrID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwib25jbGlja1wiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IHBhc3NlZCAmJiBpIDwgZmFpbFN1YnN0cmluZy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBvbmNsaWNrLmluZGV4T2YoZmFpbFN1YnN0cmluZ1tpXSkgPT0gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciB3aGVuIG9uY2xpY2sgZXZlbnRzIGFyZSB1c2VkLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjYgRzQ3MCBXYXJuaW5nXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMlwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW29uY2xpY2tdXCIsXG4gICAgICAgIGRlcGVuZGVuY2llczogW1wiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFcIl0sXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIHRoaXMgZm9yIFNWRyBlbGVtZW50IGZvciBub3cgdW50aWwgYSBkZXRlcm1pbmF0aW9uIGlzIG1hZGUgKGJ5IFJpY2gpXG4gICAgICAgICAgICAvLyB0byBzdXBwb3J0IFNWRyBhdCBhIHBvaW50IHdoZW4gdGhlIFNWRyBhMTF5IHNwZWMgaXMgcmVhZHkuXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJzdmdcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGFyaWEtcm9sZSBzcGVjaWZpZWQsIGRvbid0IHRyaWdnZXIgdGhpcy5cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInJvbGVcIikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuXG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IG5vZGVOYW1lID09IFwiYVwiIHx8IG5vZGVOYW1lID09IFwiYXJlYVwiIHx8IG5vZGVOYW1lID09IFwiaW5wdXRcIjtcbiAgICAgICAgICAgIGlmIChwYXNzZWQpIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSByZXR1cm4gUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuXG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXJzIGlmIHRoZSBzY3JpcHQgYmx1cnMgb24gZm9jdXNcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBGNTVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9TY3JpcHRfRm9jdXNCbHVyc1wiLFxuICAgICAgICBjb250ZXh0OiBcImRvbToqW29uZm9jdXNdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwib25mb2N1c1wiKS5pbmRleE9mKFwiLmJsdXIoXCIpID09IC0xO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNTY3JpcHQgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzU2VsZWN0OiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgc2VsZWN0IGhhcyBqYXZhc2NyaXB0IGZvciBvbmNoYW5nZSBvciBvbmZvY3VzXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEg4NFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvblwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpzZWxlY3RcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwib25jaGFuZ2VcIikgJiYgIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm9uZm9jdXNcIik7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgc2VsZWN0IGhhcyBtb3JlIHRoYW4gWCBvcHRpb25zIGFuZCBubyBvcHRncm91cHNcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDg1XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnNlbGVjdFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBwYXJhbU51bU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDEwLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2VzIHdoZXJlIG9wdGdyb3VwIGlzIGhpZGRlbiwgd2hpY2ggc2hvdWxkIHRyaWdnZXIgYSB2aW9sYXRpb25zXG4gICAgICAgICAgICAvLyBidXQgaW4gdGhlIGNhc2UgdGhhdCBDaGVjayBoaWRkZW4gb3B0aW9uIGlzIHNldCB0aGVuIHNob3VsZCBub3QgdHJpZ2dlciBhIHZpb2xhdGlvbi5cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSBSUFRVdGlsLmdldENoaWxkQnlUYWdIaWRkZW4ocnVsZUNvbnRleHQsIFwib3B0Z3JvdXBcIiwgZmFsc2UsIHRydWUpLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmdldENoaWxkQnlUYWdIaWRkZW4ocnVsZUNvbnRleHQsIFwib3B0aW9uXCIsIGZhbHNlLCB0cnVlKS5sZW5ndGggPD1cbiAgICAgICAgICAgICAgICB2YWxpZGF0ZVBhcmFtcy5wYXJhbU51bU9wdGlvbnMudmFsdWU7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfVxuXG5dXG5cbmV4cG9ydCB7IGExMXlSdWxlc1NlbGVjdCB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsLCBOb2RlV2Fsa2VyIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNTdHlsZTogUnVsZVtdID0gW1xuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIG9uIGFsbCBwYWdlcyBjb250YWluaW5nIENTUyAodHJpZ2dlciBvbmNlKVxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9TdHlsZV9UcmlnZ2VyMlwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpzdHlsZSwgZG9tOmxpbmssIGRvbToqW3N0eWxlXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PT0gXCJsaW5rXCIgJiZcbiAgICAgICAgICAgICAgICAoIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInJlbFwiKSB8fCBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyZWxcIikudG9Mb3dlckNhc2UoKSAhPSBcInN0eWxlc2hlZXRcIikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKG5vZGVOYW1lICE9IFwic3R5bGVcIiAmJiBub2RlTmFtZSAhPSBcImxpbmtcIiAmJlxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInN0eWxlXCIpICYmIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpLnRyaW0oKS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBsZXQgdHJpZ2dlcmVkID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9TdHlsZV9UcmlnZ2VyMlwiLCBmYWxzZSk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJpZ2dlcmVkO1xuICAgICAgICAgICAgLy8gICAgICAgIFBhY2thZ2VzLmphdmEubGFuZy5TeXN0ZW0ub3V0LnByaW50bG4odHJpZ2dlcmVkKTtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJSUFRfU3R5bGVfVHJpZ2dlcjJcIiwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVNYW51YWwoXCJNYW51YWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGZvciB1c2Ugb2YgQ1NTIGJhY2tncm91bmQgaW1hZ2VzXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDU2XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnN0eWxlLCBkb206KltzdHlsZV1cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcImxpbmtcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZWxcIikgJiZcbiAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyZWxcIikudG9Mb3dlckNhc2UoKSA9PSBcInN0eWxlc2hlZXRcIikge1xuICAgICAgICAgICAgICAgIC8vIEV4dGVybmFsIHN0eWxlc2hlZXQgLSB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC50cmlnZ2VyT25jZShydWxlQ29udGV4dCwgXCJSUFRfU3R5bGVfQmFja2dyb3VuZEltYWdlXCIsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzZWQgJiYgbm9kZU5hbWUgPT0gXCJzdHlsZVwiIHx8IHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInN0eWxlXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHN0eWxlVGV4dDtcbiAgICAgICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJzdHlsZVwiKVxuICAgICAgICAgICAgICAgICAgICBzdHlsZVRleHQgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBzdHlsZVRleHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgICAgICAgICBsZXQgYmdNYXRjaGVzID0gc3R5bGVUZXh0Lm1hdGNoKC9iYWNrZ3JvdW5kOlteO10qL2cpO1xuICAgICAgICAgICAgICAgIGlmIChiZ01hdGNoZXMgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCBiZ01hdGNoZXMubGVuZ3RoOyArK2kpXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBiZ01hdGNoZXNbaV0uaW5kZXhPZihcInVybChcIikgPT0gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgd2hlbiBjb2xvciBpcyB1c2VkLCBidXQgaGFzIG5vIHNlbWFudGljIG1lYW5pbmcuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDY2IEVycm9yXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnN0eWxlLCBkb206KltzdHlsZV0sIGRvbTpmb250W2NvbG9yXSwgZG9tOmxpbmtcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgc3R5bGVUZXh0ID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBzdHlsZVRleHQgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBpbXBvcnRcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzSW5kZXggPSAwOyBzSW5kZXggPCBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgc0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWV0ID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tzSW5kZXhdIGFzIENTU1N0eWxlU2hlZXQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGVldCAmJiBzaGVldC5vd25lck5vZGUgPT0gcnVsZUNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlUnVsZXMgPSBzaGVldC5jc3NSdWxlcyA/IHNoZWV0LmNzc1J1bGVzIDogc2hlZXQucnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3R5bGVSdWxlSW5kZXggPSAwOyBzdHlsZVJ1bGVJbmRleCA8IHN0eWxlUnVsZXMubGVuZ3RoOyBzdHlsZVJ1bGVJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZVJ1bGUgPSBzdHlsZVJ1bGVzW3N0eWxlUnVsZUluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlSW1wb3J0UnVsZTogQ1NTSW1wb3J0UnVsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlUnVsZS50eXBlICYmIHN0eWxlUnVsZS50eXBlID09PSBDU1NSdWxlLklNUE9SVF9SVUxFICYmIChzdHlsZUltcG9ydFJ1bGUgPSBzdHlsZVJ1bGUgYXMgQ1NTSW1wb3J0UnVsZSkuc3R5bGVTaGVldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltcG9ydFJ1bGVzID0gc3R5bGVJbXBvcnRSdWxlLnN0eWxlU2hlZXQuY3NzUnVsZXMgPyBzdHlsZUltcG9ydFJ1bGUuc3R5bGVTaGVldC5jc3NSdWxlcyA6IHN0eWxlSW1wb3J0UnVsZS5zdHlsZVNoZWV0LnJ1bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgckluZGV4ID0gMDsgckluZGV4IDwgaW1wb3J0UnVsZXMubGVuZ3RoOyBySW5kZXgrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpUnVsZSA9IGltcG9ydFJ1bGVzW3JJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVUZXh0ICs9IGlSdWxlLmNzc1RleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2lsZW5jZSBjc3MgYWNjZXNzIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwic3R5bGVcIikpIHtcbiAgICAgICAgICAgICAgICBzdHlsZVRleHQgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJsaW5rXCIgJiYgLy9jaGVjayBleHRlcm5hbCBzdHlsZXNcbiAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZWxcIikgJiZcbiAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyZWxcIikudG9Mb3dlckNhc2UoKSA9PSBcInN0eWxlc2hlZXRcIiAmJlxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImhyZWZcIikgJiZcbiAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpLnRyaW0oKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzSW5kZXggPSAwOyBzSW5kZXggPCBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgc0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWV0ID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tzSW5kZXhdIGFzIENTU1N0eWxlU2hlZXQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGVldCAmJiBzaGVldC5vd25lck5vZGUgPT09IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IHNoZWV0LmNzc1J1bGVzID8gc2hlZXQuY3NzUnVsZXMgOiBzaGVldC5ydWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBySW5kZXggPSAwOyBySW5kZXggPCBydWxlcy5sZW5ndGg7IHJJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlVGV4dCArPSBydWxlc1tySW5kZXhdLmNzc1RleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbGVuY2UgY3NzIGFjY2VzcyBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAvLyBEZWZlY3QgMTAyMjogRmluZCB1c2VzIG9mICdjb2xvcicgYW5kICcqYmFja2dyb3VuZConIG9ubHlcbiAgICAgICAgICAgIGxldCBpc0JnVXNlZCA9IHN0eWxlVGV4dC5tYXRjaCgvXFxiYmFja2dyb3VuZFxcYi9pKTtcblxuICAgICAgICAgICAgbGV0IHRoZUNvbG9yU3R5bGVUb0NoZWNrID0gc3R5bGVUZXh0LnJlcGxhY2UoLy1jb2xvci9nLCBcIlwiKTtcbiAgICAgICAgICAgIGxldCBpc0NvbG9yVXNlZCA9IHRoZUNvbG9yU3R5bGVUb0NoZWNrLm1hdGNoKC9cXGJjb2xvclxcYi9pKTtcblxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImNvbG9yXCIpIHx8IGlzQ29sb3JVc2VkIHx8IGlzQmdVc2VkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGdvb2RUYWdOYW1lcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgXCJlbVwiOiBcIlwiLCBcInN0cm9uZ1wiOiBcIlwiLCBcImNpdGVcIjogXCJcIiwgXCJkZm5cIjogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJjb2RlXCI6IFwiXCIsIFwic2FtcFwiOiBcIlwiLCBcImtiZFwiOiBcIlwiLCBcInZhclwiOiBcIlwiLCBcImFiYnJcIjogXCJcIiwgXCJhY3JvbnltXCI6IFwiXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQ29sb3IgdXNlZCDvv70gYXJlIHRoZXJlIHNlbWFudGljcyBpbnZvbHZlZD9cbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBub2RlTmFtZSBpbiBnb29kVGFnTmFtZXMgfHxcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgZ29vZFRhZ05hbWVzKSAhPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHJ1bGVDb250ZXh0Lmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihydWxlQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2VkICYmIG53Lm5leHROb2RlKCkgJiYgbncubm9kZSAhPSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gbncubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIGluIGdvb2RUYWdOYW1lcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRyaWdnZXIgb25seSBvbmNlXG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyZWQgPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQsIFwiUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMVwiLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gdHJpZ2dlcmVkO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJSUFRfU3R5bGVfQ29sb3JTZW1hbnRpY3MxXCIsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciB3aGVuIGNvbG9yIGlzIHVzZWQsIGJ1dCBoYXMgbm8gc2VtYW50aWMgbWVhbmluZy5cbiAgICAgICAgICogT3JpZ2luOiBWYXJpb3VzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfU3R5bGVfRXh0ZXJuYWxTdHlsZVNoZWV0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmxpbmtbcmVsXSwgZG9tOnN0eWxlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gUlBUVXRpbC5nZXRJbm5lclRleHQocnVsZUNvbnRleHQpLmluZGV4T2YoXCJAaW1wb3J0IHVybFwiKSA9PSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT0gXCJsaW5rXCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSAhcnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicmVsXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInJlbFwiKS50b0xvd2VyQ2FzZSgpICE9IFwic3R5bGVzaGVldFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBvbiBDU1MgdGhhdCBhZmZlY3RzIHRoZSBmb2N1cyBib3hcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc1MDYgRXJyb3JcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9TdHlsZV9IaW5kZXJGb2N1czFcIixcbiAgICAgICAgY29udGV4dDogXCJkb206c3R5bGUsIGRvbToqW3N0eWxlXVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBza2lwTm9kZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcInRhYmxlXCJdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIltzdHJpbmddXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlZ2V4MToge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogLyhefH0pKFtee10qKXtbXn1dKihvdXRsaW5lfGJvcmRlcilbIFxcdF0qXFw6L2dpLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJlZ2V4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJlZ2V4Mjoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogLyhbYS16XSspWyBcXHRdKigsfCQpL2dpLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJlZ2V4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHNraXBOb2RlcyA9IHZhbGlkYXRlUGFyYW1zLnNraXBOb2Rlcy52YWx1ZTtcblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAvLyBOb3RlOiBsaW5rIHRvIGJlIGhhbmRsZWQgYnkgUlBUX1N0eWxlX0V4dGVybmFsU3R5bGVTaGVldFxuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgdGV4dFZhbHVlID0gUlBUVXRpbC5nZXRJbm5lclRleHQocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGxldCByID0gdmFsaWRhdGVQYXJhbXMucmVnZXgxLnZhbHVlO1xuICAgICAgICAgICAgICAgIHIubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbTsgbGV0IG0yO1xuICAgICAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgKG0gPSByLmV4ZWModGV4dFZhbHVlKSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3IgPSBtWzJdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcjIgPSB2YWxpZGF0ZVBhcmFtcy5yZWdleDIudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHIyLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgKG0yID0gcjIuZXhlYyhzZWxlY3RvcikpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHNraXBOb2Rlcy5pbmNsdWRlcyhtMlsxXS50cmltKCkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSB8fFxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpLnRvTG93ZXJDYXNlKCkgPT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRleHRWYWx1ZSA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBza2lwTm9kZXMuaW5jbHVkZXMobm9kZU5hbWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICEoLyhvdXRsaW5lfGJvcmRlcilbIFxcdF0qXFw6Ly50ZXN0KHRleHRWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgOmJlZm9yZSBhbmQgOmFmdGVyIGFyZSB1c2VkIGluIENTUyAoSW50ZXJuYWwgYW5kIEV4dGVybmFsKSB3aXRoIGNvbnRlbnRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBGODdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIldDQUcyMF9TdHlsZV9CZWZvcmVBZnRlclwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTpzdHlsZSwgZG9tOmxpbmtcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy9jaGVjayBJbnRlcm5hbCBzdHlsZXMgICAgICAgIFxuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNzcyA9IFJQVFV0aWwuQ1NTKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgcGFzc2VkICYmIGkgPCBjc3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCBiYWQgQ1NTXG4gICAgICAgICAgICAgICAgICAgIGlmIChjc3NbaV0uc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IChjc3NbaV0uc2VsZWN0b3IuaW5kZXhPZihcIjpiZWZvcmVcIikgPT0gLTEgJiYgY3NzW2ldLnNlbGVjdG9yLmluZGV4T2YoXCI6YWZ0ZXJcIikgPT0gLTEpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIShcImNvbnRlbnRcIiBpbiBjc3NbaV0udmFsdWVzKSB8fCBjc3NbaV0udmFsdWVzW1wiY29udGVudFwiXS50cmltKCkubGVuZ3RoID09IDAgfHwgY3NzW2ldLnZhbHVlc1tcImNvbnRlbnRcIl0udHJpbSgpID09IFwiXFxcIlxcXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGNzc1tpXS52YWx1ZXNbXCJjb250ZW50XCJdLnRyaW0oKSA9PSBcIlxcJ1xcJ1wiIHx8IGNzc1tpXS52YWx1ZXNbXCJjb250ZW50XCJdLnRyaW0oKSA9PSBcIm5vbmVcIiB8fCBjc3NbaV0udmFsdWVzW1wiY29udGVudFwiXS50cmltKCkgPT0gXCJhdHRyKHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjc3NbaV0udmFsdWVzW1wiY29udGVudFwiXS50cmltKCkgPT0gXCJhdHRyKHkpXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBjaGVjayBzcGVjaWFsIHJ1bGVzIGluIHRoZSBzdHlsZXNoZWV0c1xuICAgICAgICAgICAgICAgIGlmIChwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc0luZGV4ID0gMDsgc0luZGV4IDwgcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7IHNJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2hlZXQgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzW3NJbmRleF0gYXMgQ1NTU3R5bGVTaGVldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGVldC5vd25lck5vZGUgPT09IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlUnVsZXMgPSBzaGVldC5jc3NSdWxlcyA/IHNoZWV0LmNzc1J1bGVzIDogc2hlZXQucnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZVJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzdHlsZVJ1bGVJbmRleCA9IDA7IHBhc3NlZCAmJiBzdHlsZVJ1bGVJbmRleCA8IHN0eWxlUnVsZXMubGVuZ3RoOyBzdHlsZVJ1bGVJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlUnVsZSA9IHN0eWxlUnVsZXNbc3R5bGVSdWxlSW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgQG1lZGlhIHJ1bGVzIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNoZWNrICdpZiAoc3R5bGVSdWxlIGluc3RhbmNlb2YgQ1NTTWVkaWFSdWxlKScgZG9lc24ndCB3b3JrIHdoZW4gcnVuIGluIEthcm1hKGJ1dCB3b3JrcyBpbiBEQVApIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIGxldCdzIGFjY2VzcyB0aGUgdHlwZSBkaXJlY3RseSBhcyBhIHdvcmthcm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGVNZWRpYVJ1bGU6IENTU01lZGlhUnVsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3R5bGVJbXBvcnRSdWxlOiBDU1NJbXBvcnRSdWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZVJ1bGUudHlwZSAmJiBzdHlsZVJ1bGUudHlwZSA9PT0gQ1NTUnVsZS5NRURJQV9SVUxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZU1lZGlhUnVsZSA9IHN0eWxlUnVsZSBhcyBDU1NNZWRpYVJ1bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZWRpYVJ1bGVzID0gc3R5bGVNZWRpYVJ1bGUuY3NzUnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZWRpYVJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBySW5kZXggPSAwOyBwYXNzZWQgJiYgckluZGV4IDwgbWVkaWFSdWxlcy5sZW5ndGg7IHJJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1SdWxlID0gbWVkaWFSdWxlc1tySW5kZXhdIGFzIGFueTsgLy8gc2VsZWN0b3JUZXh0IG5vdCByZWNvZ25pemVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1SdWxlLnNlbGVjdG9yVGV4dCAhPT0gbnVsbCAmJiBtUnVsZS5zZWxlY3RvclRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IG1SdWxlLnNlbGVjdG9yVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5pbmRleE9mKFwiOmJlZm9yZVwiKSAhPT0gLTEgfHwgcnVsZS5pbmRleE9mKFwiOmFmdGVyXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBtUnVsZS5zdHlsZVsnY29udGVudCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQudHJpbSgpICE9PSBcIlxcXCJcXFwiXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiXFwnXFwnXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwibm9uZVwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeClcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJhdHRyKHkpXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaW1wb3J0IHJ1bGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3R5bGVSdWxlLnR5cGUgJiYgc3R5bGVSdWxlLnR5cGUgPT09IENTU1J1bGUuSU1QT1JUX1JVTEUgJiYgKHN0eWxlSW1wb3J0UnVsZSA9IHN0eWxlUnVsZSBhcyBDU1NJbXBvcnRSdWxlKS5zdHlsZVNoZWV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IHN0eWxlSW1wb3J0UnVsZS5zdHlsZVNoZWV0LmNzc1J1bGVzID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlSW1wb3J0UnVsZS5zdHlsZVNoZWV0LmNzc1J1bGVzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlSW1wb3J0UnVsZS5zdHlsZVNoZWV0LnJ1bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJJbmRleCA9IDA7IHBhc3NlZCAmJiBySW5kZXggPCBydWxlcy5sZW5ndGg7IHJJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGltcG9ydGVkUnVsZSA9IHJ1bGVzW3JJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgQG1lZGlhIHJ1bGVzIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXBvcnRlZFJ1bGUudHlwZSAmJiBpbXBvcnRlZFJ1bGUudHlwZSA9PT0gQ1NTUnVsZS5NRURJQV9SVUxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtZWRpYVJ1bGVzID0gKGltcG9ydGVkUnVsZSBhcyBDU1NNZWRpYVJ1bGUpLmNzc1J1bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVkaWFSdWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbUluZGV4ID0gMDsgbUluZGV4IDwgbWVkaWFSdWxlcy5sZW5ndGg7IG1JbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1SdWxlID0gbWVkaWFSdWxlc1ttSW5kZXhdIGFzIGFueTsgLy8gc2VsZWN0b3JUZXh0IG5vdCByZWNvZ25pemVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1SdWxlLnNlbGVjdG9yVGV4dCAhPT0gbnVsbCAmJiBtUnVsZS5zZWxlY3RvclRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IG1SdWxlLnNlbGVjdG9yVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5pbmRleE9mKFwiOmJlZm9yZVwiKSAhPT0gLTEgfHwgcnVsZS5pbmRleE9mKFwiOmFmdGVyXCIpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBtUnVsZS5zdHlsZVsnY29udGVudCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQgJiYgY29udGVudC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQudHJpbSgpICE9PSBcIlxcXCJcXFwiXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiXFwnXFwnXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwibm9uZVwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeClcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJhdHRyKHkpXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChpbXBvcnRlZFJ1bGUgYXMgYW55KS5zZWxlY3RvclRleHQgIT09IG51bGwgJiYgKGltcG9ydGVkUnVsZSBhcyBhbnkpLnNlbGVjdG9yVGV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlID0gKGltcG9ydGVkUnVsZSBhcyBhbnkpLnNlbGVjdG9yVGV4dC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvcnQgYm90aCBzaW5nbGUgY29sb24gKDopIGFuZCBkb3VibGUgY29sb24gKDo6KSBwc2V1ZG8gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuaW5kZXhPZihcIjpiZWZvcmVcIikgIT09IC0xIHx8IHJ1bGUuaW5kZXhPZihcIjphZnRlclwiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID0gKGltcG9ydGVkUnVsZSBhcyBhbnkpLnN0eWxlWydjb250ZW50J107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudC50cmltKCkgIT09IFwiXFxcIlxcXCJcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJcXCdcXCdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJub25lXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiYXR0cih4KVwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeSlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBjc3MgYWNjZXNzIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9jaGVjayBleHRlcm5hbCBzdHlsZXMgXG4gICAgICAgICAgICBpZiAocnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImxpbmtcIiAmJiBydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZWxcIikgJiZcbiAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJyZWxcIikudG9Mb3dlckNhc2UoKSA9PSBcInN0eWxlc2hlZXRcIiAmJlxuICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImhyZWZcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKS50cmltKCkubGVuZ3RoICE9PSAwKSB7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzSW5kZXggPSAwOyBzSW5kZXggPCBydWxlQ29udGV4dC5vd25lckRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgc0luZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNoZWV0ID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0c1tzSW5kZXhdIGFzIENTU1N0eWxlU2hlZXQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGVldCAmJiBzaGVldC5vd25lck5vZGUgPT09IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlcyA9IHNoZWV0LmNzc1J1bGVzID8gc2hlZXQuY3NzUnVsZXMgOiBzaGVldC5ydWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgckluZGV4ID0gMDsgcGFzc2VkICYmIHJJbmRleCA8IHJ1bGVzLmxlbmd0aDsgckluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlRnJvbUxpbmsgPSBydWxlc1tySW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgQG1lZGlhIHJ1bGVzIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVGcm9tTGluay50eXBlICYmIHJ1bGVGcm9tTGluay50eXBlID09PSBDU1NSdWxlLk1FRElBX1JVTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWVkaWFSdWxlcyA9IChydWxlRnJvbUxpbmsgYXMgQ1NTTWVkaWFSdWxlKS5jc3NSdWxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVkaWFSdWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBtSW5kZXggPSAwOyBwYXNzZWQgJiYgbUluZGV4IDwgbWVkaWFSdWxlcy5sZW5ndGg7IG1JbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbVJ1bGUgPSBtZWRpYVJ1bGVzW21JbmRleF0gYXMgYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1SdWxlLnNlbGVjdG9yVGV4dCAhPT0gbnVsbCAmJiBtUnVsZS5zZWxlY3RvclRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlU2VsVHh0ID0gbVJ1bGUuc2VsZWN0b3JUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVTZWxUeHQuaW5kZXhPZihcIjpiZWZvcmVcIikgIT09IC0xIHx8IHJ1bGVTZWxUeHQuaW5kZXhPZihcIjphZnRlclwiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBtUnVsZS5zdHlsZVsnY29udGVudCddO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50LnRyaW0oKSAhPT0gXCJcXFwiXFxcIlwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudC50cmltKCkgIT09IFwiXFwnXFwnXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJub25lXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJhdHRyKHgpXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJhdHRyKHkpXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChydWxlc1tySW5kZXhdIGFzIGFueSkuc2VsZWN0b3JUZXh0ICE9PSBudWxsICYmIChydWxlc1tySW5kZXhdIGFzIGFueSkuc2VsZWN0b3JUZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZSA9IChydWxlc1tySW5kZXhdIGFzIGFueSkuc2VsZWN0b3JUZXh0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zdXBwb3J0IGJvdGggc2luZ2xlIGNvbG9uICg6KSBhbmQgZG91YmxlIGNvbG9uICg6OikgcHNldWRvICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuaW5kZXhPZihcIjpiZWZvcmVcIikgIT09IC0xIHx8IHJ1bGUuaW5kZXhPZihcIjphZnRlclwiKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSAocnVsZXNbckluZGV4XSBhcyBhbnkpLnN0eWxlWydjb250ZW50J107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnQudHJpbSgpICE9PSBcIlxcXCJcXFwiXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LnRyaW0oKSAhPT0gXCJcXCdcXCdcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcIm5vbmVcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeClcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQudHJpbSgpICE9PSBcImF0dHIoeSlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBjc3MgYWNjZXNzIGlzc3Vlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciB3aGVuIHZpZXdwb3J0IHVuaXRzIGFyZSB1c2VkIGZvciBmb250IHNpemUuXG4gICAgICAgICAqIE9yaWdpbjogVmFyaW91c1xuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIxX1N0eWxlX1ZpZXdwb3J0XCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmxpbmssIGRvbTpzdHlsZSwgZG9tOipbc3R5bGVdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCB0aGVQYXR0ZXJuID0gL1xcZCsodnd8dmh8dm1pbnx2bWF4KS9naTtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgc0luZGV4ID0gMDsgc0luZGV4IDwgcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7IHNJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzaGVldCA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHNbc0luZGV4XSBhcyBDU1NTdHlsZVNoZWV0XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaGVldC5vd25lck5vZGUgPT09IHJ1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZVJ1bGVzID0gc2hlZXQuY3NzUnVsZXMgPyBzaGVldC5jc3NSdWxlcyA6IHNoZWV0LnJ1bGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZVJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN0eWxlUnVsZUluZGV4ID0gMDsgcGFzc2VkICYmIHN0eWxlUnVsZUluZGV4IDwgc3R5bGVSdWxlcy5sZW5ndGg7IHN0eWxlUnVsZUluZGV4KyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlID0gc3R5bGVSdWxlc1tzdHlsZVJ1bGVJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS50eXBlICYmIHJ1bGUudHlwZSA9PT0gQ1NTUnVsZS5TVFlMRV9SVUxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN0eWxlUnVsZSA9IHJ1bGUgYXMgQ1NTU3R5bGVSdWxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZVJ1bGUuc3R5bGVbJ2ZvbnRTaXplJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvbnRTaXplID0gc3R5bGVSdWxlLnN0eWxlWydmb250U2l6ZSddLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZvdW5kID0gZm9udFNpemUubWF0Y2godGhlUGF0dGVybik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb250U2l6ZS5sZW5ndGggJiYgZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaW1wb3J0IHJ1bGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlLnR5cGUgJiYgcnVsZS50eXBlID09PSBDU1NSdWxlLklNUE9SVF9SVUxFICYmIChydWxlIGFzIENTU0ltcG9ydFJ1bGUpLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3J0UnVsZSA9IHJ1bGUgYXMgQ1NTSW1wb3J0UnVsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZXMgPSBpbXBvcnRSdWxlLnN0eWxlU2hlZXQuY3NzUnVsZXMgPyBpbXBvcnRSdWxlLnN0eWxlU2hlZXQuY3NzUnVsZXMgOiBpbXBvcnRSdWxlLnN0eWxlU2hlZXQucnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJJbmRleCA9IDA7IHBhc3NlZCAmJiBySW5kZXggPCBydWxlcy5sZW5ndGg7IHJJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaW1wb3J0ZWRSdWxlID0gcnVsZXNbckluZGV4XSBhcyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXBvcnRlZFJ1bGUudHlwZSAmJiBpbXBvcnRlZFJ1bGUudHlwZSA9PT0gQ1NTUnVsZS5TVFlMRV9SVUxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltcG9ydGVkUnVsZS5zdHlsZVsnZm9udFNpemUnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm9udFNpemUgPSBpbXBvcnRlZFJ1bGUuc3R5bGVbJ2ZvbnRTaXplJ10udHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmb250U2l6ZS5tYXRjaCh0aGVQYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbnRTaXplLmxlbmd0aCAmJiBmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGNzcyBhY2Nlc3MgaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGVOYW1lID09IFwibGlua1wiKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgc0luZGV4ID0gMDsgc0luZGV4IDwgcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7IHNJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzaGVldCA9IHJ1bGVDb250ZXh0Lm93bmVyRG9jdW1lbnQuc3R5bGVTaGVldHNbc0luZGV4XSBhcyBDU1NTdHlsZVNoZWV0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hlZXQgJiYgc2hlZXQub3duZXJOb2RlID09PSBydWxlQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZXMgPSBzaGVldC5jc3NSdWxlcyA/IHNoZWV0LmNzc1J1bGVzIDogc2hlZXQucnVsZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHJJbmRleCA9IDA7IHBhc3NlZCAmJiBySW5kZXggPCBydWxlcy5sZW5ndGg7IHJJbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcnVsZUZyb21MaW5rID0gcnVsZXNbckluZGV4XSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBydWxlcyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlRnJvbUxpbmsudHlwZSAmJiBydWxlRnJvbUxpbmsudHlwZSA9PT0gQ1NTUnVsZS5TVFlMRV9SVUxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVGcm9tTGluay5zdHlsZVsnZm9udFNpemUnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm9udFNpemUgPSBydWxlRnJvbUxpbmsuc3R5bGVbJ2ZvbnRTaXplJ10udHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBmb250U2l6ZS5tYXRjaCh0aGVQYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbnRTaXplLmxlbmd0aCAmJiBmb3VuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGNzcyBhY2Nlc3MgaXNzdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBzdHlsZVZhbHVlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKCdzdHlsZScpO1xuICAgICAgICAgICAgICAgIGlmIChzdHlsZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdHlsZVBhdHRlcm4gPSAvZm9udC1zaXplOlxccypcXGQrKHZ3fHZofHZtaW58dm1heCkvZ2k7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IHN0eWxlVmFsdWUubWF0Y2goc3R5bGVQYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNTdHlsZSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNUZXh0OiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgcG9zc2libGUgdXNlcyBvZiBzZW5zb3J5IHRleHRcbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc1MDJcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Ym9keSwgZG9tOmJvZHkgZG9tOipcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGVQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgc2Vuc29yeVRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcInRvcC1sZWZ0XCIsIFwidG9wLXJpZ2h0XCIsIFwiYm90dG9tLXJpZ2h0XCIsIFwiYm90dG9tLWxlZnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicm91bmRcIiwgXCJzcXVhcmVcIiwgXCJzaGFwZVwiLCBcInJlY3RhbmdsZVwiLCBcInRyaWFuZ2xlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInJpZ2h0XCIsIFwibGVmdFwiLCBcImFib3ZlXCIsIFwiYmVsb3dcIiwgXCJ0b3BcIiwgXCJib3R0b21cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidXBwZXJcIiwgXCJsb3dlclwiLCBcImNvcm5lclwiLCBcImJlc2lkZVwiXSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJbc3RyaW5nXVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzLmluY2x1ZGVzKHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEV4dHJhY3QgdGhlIG5vZGVOYW1lIG9mIHRoZSBjb250ZXh0IG5vZGVcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoaXMgaXMgYSBzdHlsZSBvciBsaW5rIGVsZW1lbnQsIHNraXAgdHJpZ2dlcmluZyBydWxlIGFzIHdlIGRvIG5vdCB3YW50IHRvIHNjYW5cbiAgICAgICAgICAgIC8vIENTUyBmb3Igc2Vuc29yeSB3b3JkcywgYXMgdGhlcmUgY2FuIGJlIENTUyBrZXlzIHdoaWNoIGNvbnRhaW4gdGhlc2VzIHNlbnNvcnkgdGV4dCB0aGF0IGlzIG1hdGNoaW5nLlxuICAgICAgICAgICAgaWYgKG5vZGVOYW1lID09PSBcInN0eWxlXCIgfHwgbm9kZU5hbWUgPT09IFwibGlua1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgdmlvbGF0ZWR0ZXh0QXJyYXkgPSBudWxsO1xuICAgICAgICAgICAgbGV0IHZpb2xhdGVkdGV4dCA9IG51bGw7XG4gICAgICAgICAgICBsZXQgc2Vuc29yeVJlZ2V4ID0gUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dC5vd25lckRvY3VtZW50LCBcIlJQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VcIiwgbnVsbCk7XG4gICAgICAgICAgICBpZiAoc2Vuc29yeVJlZ2V4ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2Vuc29yeVRleHQgPSB2YWxpZGF0ZVBhcmFtcy5zZW5zb3J5VGV4dC52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgcmVnZXhTdHIgPSBcIihcIiArIHNlbnNvcnlUZXh0WzBdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDwgc2Vuc29yeVRleHQubGVuZ3RoOyArK2opXG4gICAgICAgICAgICAgICAgICAgIHJlZ2V4U3RyICs9IFwifFwiICsgc2Vuc29yeVRleHRbal07XG4gICAgICAgICAgICAgICAgcmVnZXhTdHIgKz0gXCIpXFxcXFdcIjtcbiAgICAgICAgICAgICAgICBzZW5zb3J5UmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCBcImdpXCIpO1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUocnVsZUNvbnRleHQub3duZXJEb2N1bWVudCwgXCJSUFRfVGV4dF9TZW5zb3J5UmVmZXJlbmNlXCIsIHNlbnNvcnlSZWdleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCB3YWxrTm9kZSA9IHJ1bGVDb250ZXh0LmZpcnN0Q2hpbGQgYXMgTm9kZTtcbiAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgd2Fsa05vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBDb21wbHkgdG8gdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgd2lsbCBiZSBkb25lIGJ5IGRlZmF1bHQgYXMgdGhpcyBydWxlIHRyaWdnZXJzIG9uIGVhY2ggZWxlbWVudFxuICAgICAgICAgICAgICAgIC8vIGFuZCBmb3IgZWFjaCBlbGVtZW50IGl0IG9ubHkgY2hlY2tzIHRoYXQgc2luZ2xlIGVsZW1lbnRzIHRleHQgbm9kZXMgYW5kIG5vdGhpbmcgZWxzZS4gU28gYWxsIGlubmVyIGVsZW1lbnRzIHdpbGwgYmVcbiAgICAgICAgICAgICAgICAvLyBjb3ZlcmVkIG9uIHRoZWlyIG93bi4gQ3VycmVudGx5IGZvciB0aGlzIHJ1bGUgYnkgZGVmYXVsdCBDaGVjayBIaWRkZW4gQ29udGVudCB3aWxsIHdvcmssIGFzIHdlIGFyZSBkb2luZ1xuICAgICAgICAgICAgICAgIC8vIGEgbm9kZSB3YWxrIG9ubHkgb24gc2libGluZ3Mgc28gaXQgd291bGQgbm90IGdldCB0ZXh0IG5vZGVzIGZyb20gb3RoZXIgc2libGluZ3MgYXQgYWxsLlxuICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIGluIHRoZSBmdXR1cmUgc29tZXRoaW5nIGNobmdlcywganVzdCBuZWVkIHRvIGFkZCAmJiAhUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKHdhbGtOb2RlKSB0byB0aGUgYmVsb3dcbiAgICAgICAgICAgICAgICAvLyBpZi5cbiAgICAgICAgICAgICAgICBpZiAod2Fsa05vZGUubm9kZU5hbWUgPT0gXCIjdGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0eHRWYWwgPSB3YWxrTm9kZS5ub2RlVmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHh0VmFsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGVkdGV4dEFycmF5ID0gdHh0VmFsLm1hdGNoKHNlbnNvcnlSZWdleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmlvbGF0ZWR0ZXh0QXJyYXkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoYXNoID0ge30sIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleGVtcHRXb3JkcyA9IFtcInJpZ2h0LWNsaWNrXCIsIFwibGVmdC1jbGlja1wiLCBcInJpZ2h0LWNsaWNraW5nXCIsIFwicmlnaHQtY2xpY2tzXCIsIFwibGVmdC1jbGlja2luZ1wiLCBcImxlZnQtY2xpY2tzXCJdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogc3BsaXQoL1tcXG5cXHIgXSsvKSB3aWxsIHNwcmVhZCB0aGUgc3RyaW5nIGludG8gZ3JvdXAgb2Ygd29yZHMgdXNpbmcgc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGFzIHNlcGFyYXRvcnMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvdW50cyA9IHR4dFZhbC5zcGxpdCgvW1xcblxcciBdKy8pLnJlZHVjZShmdW5jdGlvbiAobWFwLCB3b3JkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZW5zb3J5VGV4dEFyciA9IHZhbGlkYXRlUGFyYW1zLnNlbnNvcnlUZXh0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd29yZFdvVHJhaWxpbmdQdW5jID0gd29yZC5yZXBsYWNlKC9bLj8hOjsoKSdcIixgXFxdXSskLywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsY1dvcmRXb1B1bmMgPSB3b3JkLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy4/ITo7KCknXCIsYFxcXV0vZywgXCJcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgY291bnRlciA9IDA7IGNvdW50ZXIgPCBzZW5zb3J5VGV4dEFyci5sZW5ndGg7IGNvdW50ZXIrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGEgPSBsY1dvcmRXb1B1bmMuaW5kZXhPZihzZW5zb3J5VGV4dEFycltjb3VudGVyXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYiA9IGV4ZW1wdFdvcmRzLmluZGV4T2YobGNXb3JkV29QdW5jKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZW5zb3J5V29yZExlbiA9IHNlbnNvcnlUZXh0QXJyW2NvdW50ZXJdLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjaGFyRm9sbG93U2Vuc29yeVRleHQgPSBsY1dvcmRXb1B1bmMuY2hhckF0KHNlbnNvcnlXb3JkTGVuICsgYSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3b3JkIGRvZXMgbm90IGNvbnRhaW5zIHN1YnN0cmluZyBvZiBzZW5zb3J5VGV4dEFycltjb3VudGVyXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvY2VlZCB0byB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbiBmb3IgbmV4dCBzZW5zb3J5VGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIDwgMCkgeyBjb250aW51ZTsgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQdW5jZm9sbG93aW5nID0gKChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcLScpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9PSAnXFwuJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXD8nKSB8fCAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXCEnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcOicpIHx8IChjaGFyRm9sbG93U2Vuc29yeVRleHQgPT0gJ1xcOycpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9PSAnXFwoJykgfHwgKGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9PSAnXFwpJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXCcnKSB8fCAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXFwiJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXCwnKSB8fCAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICcuXFxgJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhckZvbGxvd1NlbnNvcnlUZXh0ID09ICdcXFxcJykgfHwgKGNoYXJGb2xsb3dTZW5zb3J5VGV4dCA9PSAnXFxdJykpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNQdW5jUHJlY2VkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9IGxjV29yZFdvUHVuYy5jaGFyQXQoYSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHVuY1ByZWNlZGluZyA9ICgoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFwtJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcLicpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXD8nKSB8fCAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFwhJykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcOicpIHx8IChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXDsnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFwoJykgfHwgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcKScpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXCcnKSB8fCAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnXFxcIicpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXCwnKSB8fCAoY2hhclByZWNlZGVTZW5zb3J5VGV4dCA9PSAnLlxcYCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyUHJlY2VkZVNlbnNvcnlUZXh0ID09ICdcXFxcJykgfHwgKGNoYXJQcmVjZWRlU2Vuc29yeVRleHQgPT0gJ1xcXScpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKChsY1dvcmRXb1B1bmMubGVuZ3RoID09IHNlbnNvcnlXb3JkTGVuKSB8fCAoaXNQdW5jZm9sbG93aW5nID09IHRydWUpIHx8IChpc1B1bmNQcmVjZWRpbmcgPT0gdHJ1ZSkpICYmIChiIDwgMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc2guaGFzT3duUHJvcGVydHkod29yZFdvVHJhaWxpbmdQdW5jKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoW3dvcmRXb1RyYWlsaW5nUHVuY10gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh3b3JkV29UcmFpbGluZ1B1bmMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyID0gc2Vuc29yeVRleHRBcnIubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFt3b3JkV29UcmFpbGluZ1B1bmNdID0gKG1hcFt3b3JkV29UcmFpbGluZ1B1bmNdIHx8IDApICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9sYXRlZHRleHQgPSByZXN1bHQuam9pbihcIiwgXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhbGtOb2RlID0gd2Fsa05vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBpZiB3ZSdyZSBub3QgaW4gdGhlIGJvZHkgb3IgaWYgd2UncmUgaW4gYSBzY3JpcHRcbiAgICAgICAgICAgICAgICBsZXQgY2hlY2tBbmNlc3RvciA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFtcImJvZHlcIiwgXCJzY3JpcHRcIl0pO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IChjaGVja0FuY2VzdG9yID09IG51bGwgfHwgY2hlY2tBbmNlc3Rvci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwiYm9keVwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhc3NlZCA/IFJ1bGVQYXNzKFwiUGFzc18wXCIpIDogUnVsZVBvdGVudGlhbChcIlBvdGVudGlhbF8xXCIsIFt2aW9sYXRlZHRleHRdKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgZm9yIGRldGVjdGVkIGVtb3RpY29uc1xuICAgICAgICAgKiBPcmlnaW46IFdDQUcgSDg2XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfVGV4dF9FbW90aWNvbnNcIixcbiAgICAgICAgY29udGV4dDogXCJkb206KlwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZVBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBlbW90aWNvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcIjotKVwiLCBcIjopXCIsIFwiOm8pXCIsIFwiOl1cIiwgXCI6M1wiLCBcIjpjKVwiLCBcIjo+XCIsIFwiPV1cIiwgXCI4KVwiLCBcIj0pXCIsIFwiOkRcIiwgXCJDOlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI6LURcIiwgXCI6RFwiLCBcIjhEXCIsIFwiWERcIiwgXCI9RFwiLCBcIj0zXCIsIFwiPD0zXCIsIFwiPD04XCIsIFwiLS0hLS1cIiwgXCI6LShcIiwgXCI6KFwiLCBcIjpjXCIsIFwiOjxcIiwgXCI6W1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJEOlwiLCBcIkQ4XCIsIFwiRDtcIiwgXCJEPVwiLCBcIkRYXCIsIFwidi52XCIsIFwiOi05XCIsIFwiOy0pXCIsIFwiOylcIiwgXCIqKVwiLCBcIjtdXCIsIFwiO0RcIiwgXCI6LVBcIiwgXCI6UFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI6LXBcIiwgXCI6cFwiLCBcIj1wXCIsIFwiOi3DnlwiLCBcIjrDnlwiLCBcIjotYlwiLCBcIjpiXCIsIFwiOi1PXCIsIFwiOk9cIiwgXCJPX09cIiwgXCJvX29cIiwgXCI4T1wiLCBcIk93T1wiLCBcIk8tT1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCIwX29cIiwgXCJPX29cIiwgXCJPM09cIiwgXCJvMG/CoDtvX287XCIsIFwiby4uLm9cIiwgXCIwdzBcIiwgXCI6LS9cIiwgXCI6L1wiLCBcIjpcXFxcXCIsIFwiPS9cIiwgXCI9XFxcXFwiLCBcIjpTXCIsIFwiOnxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZDotKVwiLCBcInFCLSlcIiwgXCI6KX5cIiwgXCI6LSk+Li4uLlwiLCBcIjotWFwiLCBcIjpYXCIsIFwiOi0jXCIsIFwiOiNcIiwgXCJPOi0pXCIsIFwiMDozXCIsIFwiTzopXCIsIFwiOicoXCIsIFwiOyooXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlRfVFwiLCBcIlRUX1RUXCIsIFwiVC5UXCIsIFwiOi0qXCIsIFwiOipcIiwgXCJebylcIiwgXCI+OilcIiwgXCI+OylcIiwgXCI+Oi0pXCIsIFwiQilcIiwgXCJCLSlcIiwgXCI4KVwiLCBcIjgtKVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJePi4+XlwiLCBcIl48LjxeXCIsIFwiXj5fPl5cIiwgXCJePF88XlwiLCBcIkQ6PFwiLCBcIj46KFwiLCBcIkQtOjxcIiwgXCI+Oi0oXCIsIFwiOi1AWzFdXCIsIFwiOyhcIiwgXCJgX8K0XCIsIFwiRDxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPDNcIiwgXCI8MzMzXCIsIFwiPV5fXj1cIiwgXCI9Pi4+PVwiLCBcIj08Xzw9XCIsIFwiPT4uPD1cIiwgXCJcXFxcLCwvXCIsIFwiXFxcXG0vXCIsIFwiXFxcXG0vXFxcXD4uPC9cXFxcbS9cIiwgXCJcXFxcby9cIiwgXCJcXFxcbyBvL1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJvL1xcXFxvXCIsIFwiOiZcIiwgXCI6dVwiXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiW3N0cmluZ11cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBsZXQgZW1vdGljb25zID0gdmFsaWRhdGVQYXJhbXMuZW1vdGljb25zLnZhbHVlO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgdGVzdFRleHQgPSBcIlwiO1xuXG4gICAgICAgICAgICBsZXQgd2Fsa05vZGUgOiBOb2RlID0gcnVsZUNvbnRleHQuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIHdoaWxlICh3YWxrTm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIENvbXBseSB0byB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB3aWxsIGJlIGRvbmUgYnkgZGVmYXVsdCBhcyB0aGlzIHJ1bGUgdHJpZ2dlcnMgb24gZWFjaCBlbGVtZW50XG4gICAgICAgICAgICAgICAgLy8gYW5kIGZvciBlYWNoIGVsZW1lbnQgaXQgb25seSBjaGVja3MgdGhhdCBzaW5nbGUgZWxlbWVudHMgdGV4dCBub2RlcyBhbmQgbm90aGluZyBlbHNlLiBTbyBhbGwgaW5uZXIgZWxlbWVudHMgd2lsbCBiZVxuICAgICAgICAgICAgICAgIC8vIGNvdmVyZWQgb24gdGhlaXIgb3duLiBDdXJyZW50bHkgZm9yIHRoaXMgcnVsZSBieSBkZWZhdWx0IENoZWNrIEhpZGRlbiBDb250ZW50IHdpbGwgd29yaywgYXMgd2UgYXJlIGRvaW5nXG4gICAgICAgICAgICAgICAgLy8gYSBub2RlIHdhbGsgb25seSBvbiBzaWJsaW5ncyBzbyBpdCB3b3VsZCBub3QgZ2V0IHRleHQgbm9kZXMgZnJvbSBvdGhlciBzaWJsaW5ncyBhdCBhbGwuXG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgaW4gdGhlIGZ1dHVyZSBzb21ldGhpbmcgY2huZ2VzLCBqdXN0IG5lZWQgdG8gYWRkICYmICFSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4od2Fsa05vZGUpIHRvIHRoZSBiZWxvd1xuICAgICAgICAgICAgICAgIC8vIGlmLlxuICAgICAgICAgICAgICAgIGlmICh3YWxrTm9kZS5ub2RlTmFtZSA9PSBcIiN0ZXh0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGVzdFRleHQgKz0gXCIgXCIgKyB3YWxrTm9kZS5ub2RlVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdhbGtOb2RlID0gd2Fsa05vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0ZXN0VGV4dC50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBwYXNzZWQgJiYgaiA8IGVtb3RpY29ucy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZW1vdElkeCA9IHRlc3RUZXh0LmluZGV4T2YoZW1vdGljb25zW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVMbmd0aCA9IGVtb3RpY29uc1tqXS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChwYXNzZWQgJiYgZW1vdElkeCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFzc2VzIGlmOiB0aGUgZW1vdGljb24gaXMgbm90IHByZWNlZGVkIGJ5IHdoaXRlc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB0aGUgZW1vdGljb24gaXMgbm90IGZvbGxvd2VkIGJ5IHdoaXRlc3BhY2UgdW5sZXNzIGl0J3MgcHVuY3R1YXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvciBpdCdzIGluIGEgcHJlLCBjb2RlLCBvciBzY3JpcHRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtb3RJZHggPiAwICYmICEvXFxzLy50ZXN0KHRlc3RUZXh0LnN1YnN0cmluZyhlbW90SWR4IC0gMSwgZW1vdElkeCkpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbW90SWR4IDwgdGVzdFRleHQubGVuZ3RoIC0gZUxuZ3RoICYmICEvXFxzLy50ZXN0KHRlc3RUZXh0LnN1YnN0cmluZyhlbW90SWR4ICsgZUxuZ3RoLCBlbW90SWR4ICsgZUxuZ3RoICsgMSkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEvWy4sISdcIj9dLy50ZXN0KHRlc3RUZXh0LnN1YnN0cmluZyhlbW90SWR4ICsgZUxuZ3RoLCBlbW90SWR4ICsgZUxuZ3RoICsgMSkpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3cgdXNhZ2Ugb2YgKDogc3R1ZmYgOikgc2luY2UgdGhpcyBpcyBhIGNvbW1lbnQgaW4gc29tZSBsYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IHBhc3NlZCB8fCAoKGVtb3RpY29uc1tqXSA9PSBcIjopXCIgfHwgZW1vdGljb25zW2pdID09IFwiKDpcIikgJiYgL1xcKFxcOi4qXFw6XFwpLy50ZXN0KHRlc3RUZXh0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSBwYXNzZWQgfHwgKChlbW90aWNvbnNbal0gPT0gXCI7KVwiIHx8IGVtb3RpY29uc1tqXSA9PSBcIig7XCIpICYmIC9cXChcXDsuKlxcO1xcKS8udGVzdCh0ZXN0VGV4dCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZW1vdElkeCA9IHRlc3RUZXh0LmluZGV4T2YoZW1vdGljb25zW2pdLCBlbW90SWR4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBpZiB3ZSdyZSBub3QgaW4gdGhlIGJvZHkgb3IgaWYgd2UncmUgaW4gYSBzY3JpcHQsIHByZSwgY29kZVxuICAgICAgICAgICAgICAgIGxldCBjaGVja0FuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgW1wicHJlXCIsIFwiY29kZVwiLCBcInNjcmlwdFwiLCBcImJvZHlcIl0pO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IGNoZWNrQW5jZXN0b3IgPT0gbnVsbCB8fCBjaGVja0FuY2VzdG9yLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gXCJib2R5XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3Igd29yZHMgdGhhdCBhcmUgc3BhY2VkIG91dCAoZS5nLiwgSSBCIE0pLiAgQ1NTIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgZm9yIHRoaXNcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBGMzIsIEM4XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOipcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSkgOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgbGV0IHdhbGtOb2RlID0gcnVsZUNvbnRleHQuZmlyc3RDaGlsZCBhcyBOb2RlO1xuICAgICAgICAgICAgd2hpbGUgKHBhc3NlZCAmJiB3YWxrTm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIENvbXBseSB0byB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyB3aWxsIGJlIGRvbmUgYnkgZGVmYXVsdCBhcyB0aGlzIHJ1bGUgdHJpZ2dlcnMgb24gZWFjaCBlbGVtZW50XG4gICAgICAgICAgICAgICAgLy8gYW5kIGZvciBlYWNoIGVsZW1lbnQgaXQgb25seSBjaGVja3MgdGhhdCBzaW5nbGUgZWxlbWVudHMgdGV4dCBub2RlcyBhbmQgbm90aGluZyBlbHNlLiBTbyBhbGwgaW5uZXIgZWxlbWVudHMgd2lsbCBiZVxuICAgICAgICAgICAgICAgIC8vIGNvdmVyZWQgb24gdGhlaXIgb3duLiBDdXJyZW50bHkgZm9yIHRoaXMgcnVsZSBieSBkZWZhdWx0IENoZWNrIEhpZGRlbiBDb250ZW50IHdpbGwgd29yaywgYXMgd2UgYXJlIGRvaW5nXG4gICAgICAgICAgICAgICAgLy8gYSBub2RlIHdhbGsgb25seSBvbiBzaWJsaW5ncyBzbyBpdCB3b3VsZCBub3QgZ2V0IHRleHQgbm9kZXMgZnJvbSBvdGhlciBzaWJsaW5ncyBhdCBhbGwuXG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgaW4gdGhlIGZ1dHVyZSBzb21ldGhpbmcgY2huZ2VzLCBqdXN0IG5lZWQgdG8gYWRkICYmICFSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4od2Fsa05vZGUpIHRvIHRoZSBiZWxvd1xuICAgICAgICAgICAgICAgIC8vIGlmLlxuICAgICAgICAgICAgICAgIGlmICh3YWxrTm9kZS5ub2RlTmFtZSA9PSBcIiN0ZXh0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHR4dFZhbCA9IHdhbGtOb2RlLm5vZGVWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gISgvKF58XFxzKVthLXpBLVpdIFthLXpBLVpdIFthLXpBLVpdKCR8XFxzKS8udGVzdCh0eHRWYWwpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIGlmIHdlJ3JlIG5vdCBpbiB0aGUgYm9keSBvciBpZiB3ZSdyZSBpbiBhIHNjcmlwdFxuICAgICAgICAgICAgICAgIGxldCBjaGVja0FuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgW1wiYm9keVwiLCBcInNjcmlwdFwiLCBcImNvZGVcIl0pO1xuICAgICAgICAgICAgICAgIHBhc3NlZCA9IGNoZWNrQW5jZXN0b3IgPT0gbnVsbCB8fCBjaGVja0FuY2VzdG9yLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gXCJib2R5XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFzc2VkKSByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcblxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBmb3IgcG9zc2libGUgQVNDSUkgYXJ0IGluIGEgPHByZT5cbiAgICAgICAgICogT3JpZ2luOiBSUFQgNS42IEc0NThcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9QcmVfQVNDSUlBcnRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206cHJlLCBkb206bGlzdGluZywgZG9tOnhtcCwgZG9tOnBsYWludGV4dFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuXG4gICAgICAgICAgICAvLyBGaXggZm9yIElEV0Igd3JpdGVycy4gRG9uJ3QgdHJpZ2dlciBpZiBjb250ZW50IGlzIGluIGEgY29kZSBlbGVtZW50LiAgVGhlIGNvZGUgZWxlbWVudCBpcyBzZWFyY2hlZCBmb3JcbiAgICAgICAgICAgIC8vIGluIHZhcmlvdXMgcGxhY2VzIGJlY2F1c2Ugb2YgdGhlIHdlaXJkIHdheSB2YXJpb3VzIGJyb3dzZXJzIHJlbmRlciA8Y29kZT48cHJlPjwvcHJlPjwvY29kZS4gIEZpcmVmb3gsXG4gICAgICAgICAgICAvLyBIdG1sVW5pdCBhbmQgQ2hyb21lIGFsbCByZW5kZXIgZGlmZmVyZW50bHkuICBGaXJlZm94OiA8Y29kZT48L2NvZGU+PHByZT48L3ByZT4gIEh0bWxVbml0OiA8L2NvZGU+PHByZT48Y29kZT48L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAvLyBTZWUgdW5pdCB0ZXN0IENvZGVFbGVtZW50QWJvdmVQcmVFbGVtZW50Lmh0bWwuICBEb24ndCBrbm93IGhvdyBSUFQgcmVuZGVycywgc28gY292ZXIgYWxsIHRoZSBiYXNlcy5cbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09IFwicHJlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoKHJ1bGVDb250ZXh0LnByZXZpb3VzU2libGluZyAmJiBydWxlQ29udGV4dC5wcmV2aW91c1NpYmxpbmcubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImNvZGVcIikgfHxcbiAgICAgICAgICAgICAgICAgICAgcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJjb2RlXCIpLmxlbmd0aCA+IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRBbmNlc3RvcihydWxlQ29udGV4dCwgXCJjb2RlXCIpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgdHh0VmFsdWUgPSBSUFRVdGlsLmdldElubmVyVGV4dChydWxlQ29udGV4dCk7XG4gICAgICAgICAgICBsZXQgbm9uQWxwaGFOdW1lcmljTm9yU3BhY2VDb3VudCA9IDA7XG4gICAgICAgICAgICBsZXQgYWxwaE51bVNhbWVDaGFyYWN0ZXJDb3VudCA9IDA7XG4gICAgICAgICAgICBsZXQgbGFzdENoYXJhY3RlciA9IFwiXCI7XG5cbiAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdGV4dCBjb250ZW50XG4gICAgICAgICAgICBmb3IgKGxldCBpZHggPSAwOyBwYXNzZWQgJiYgKGlkeCA8IHR4dFZhbHVlLmxlbmd0aCk7ICsraWR4KSB7XG4gICAgICAgICAgICAgICAgbGV0IGNoU3RyID0gdHh0VmFsdWUuc3Vic3RyKGlkeCwgMSk7XG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaXQgaXMgYWxwaGFudW1lcmljIG9yIHB1bmN0dWF0aW9uXG4gICAgICAgICAgICAgICAgaWYgKC9bXFx3IUAjJCUmXFwqKCkuLD9cXFtcXF17fTw+PVwiOlxcL1xcXFwtXS8udGVzdChjaFN0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGV0ZWN0IHNhbWUgY2hhcmFjdGVyIHNlcXVlbmNlXG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Q2hhcmFjdGVyID09IGNoU3RyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbHBoTnVtU2FtZUNoYXJhY3RlckNvdW50ID0gYWxwaE51bVNhbWVDaGFyYWN0ZXJDb3VudCArIDE7O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxwaE51bVNhbWVDaGFyYWN0ZXJDb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKC9cXHMvLnRlc3QoY2hTdHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFscGhOdW1TYW1lQ2hhcmFjdGVyQ291bnQgPSAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5vbkFscGhhTnVtZXJpY05vclNwYWNlQ291bnQgPSBub25BbHBoYU51bWVyaWNOb3JTcGFjZUNvdW50ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgYWxwaE51bVNhbWVDaGFyYWN0ZXJDb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhc3RDaGFyYWN0ZXIgPSBjaFN0cjtcblxuICAgICAgICAgICAgICAgIC8vIE1ha2UgdGhlIGRlY2lzaW9uXG4gICAgICAgICAgICAgICAgaWYgKG5vbkFscGhhTnVtZXJpY05vclNwYWNlQ291bnQgPj0gNSB8fCBhbHBoTnVtU2FtZUNoYXJhY3RlckNvdW50ID49IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbl1cbmV4cG9ydCB7IGExMXlSdWxlc1RleHQgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzLCBSdWxlQ29udGV4dEhpZXJhcmNoeSB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuaW1wb3J0IHsgQW5jZXN0b3JVdGlsIH0gZnJvbSBcIi4uL3V0aWwvYW5jZXN0b3JcIjtcblxubGV0IGExMXlSdWxlc1RpdGxlOiBSdWxlW10gPSBbXG5cbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlcnMgaWYgYSBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIGEgdGl0bGVcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDI1XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfRG9jX0hhc1RpdGxlXCIsXG4gICAgICAgIC8vIE5vdGU6IGNvbnRleHQgaXMgSFRNTCwgYmVjYXVzZSBhIGRvY3VtZW50IHdpdGggbm8gaGVhZCBhdCBhbGwgaXMgYWxzbyBtaXNzaW5nIGEgdGl0bGUuXG4gICAgICAgIC8vIEhUTUxVbml0IHNlZW1zIHRvIGFkZCBhIGhlYWQgaW4gYW55d2F5LCBidXQgd2UgY2Fubm90IHJlbHkgb24gdGhhdC5cbiAgICAgICAgY29udGV4dDogXCJkb206aHRtbFwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9LCBjb250ZXh0SGllcmFyY2hpZXM/OiBSdWxlQ29udGV4dEhpZXJhcmNoeSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgLy8gVGhpcyBydWxlIGRvZXMgbm90IGFwcGx5IGluc2lkZSBhIHByZXNlbnRhdGlvbmFsIGZyYW1lXG4gICAgICAgICAgICBpZiAoQW5jZXN0b3JVdGlsLmlzRnJhbWUoY29udGV4dEhpZXJhcmNoaWVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgTm9kZTtcbiAgICAgICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBoZWFkIGVsZW1lbnRcbiAgICAgICAgICAgIGxldCBmaW5kSGVhZCA9IHJ1bGVDb250ZXh0LmZpcnN0Q2hpbGQgYXMgTm9kZTtcbiAgICAgICAgICAgIGxldCBmaW5kVGl0bGUgPSBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGZpbmRIZWFkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmluZEhlYWQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSBcImhlYWRcIilcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZmluZEhlYWQgPSBmaW5kSGVhZC5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwb3NzaWJsZVRpdGxlcyA9IChydWxlQ29udGV4dCBhcyBFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKFwidGl0bGVcIik7XG4gICAgICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4PHBvc3NpYmxlVGl0bGVzLmxlbmd0aDsgKytpZHgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIVJQVFV0aWwuZ2V0QW5jZXN0b3IocG9zc2libGVUaXRsZXNbaWR4XSwgW1wic3ZnXCJdKSkge1xuICAgICAgICAgICAgICAgICAgICBmaW5kVGl0bGUgPSBwb3NzaWJsZVRpdGxlc1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmluZEhlYWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZpbmRUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmluZFRpdGxlID09PSBudWxsKSB7IC8vIGRvbid0IGhhdmUgdGl0bGUgc2Vjb25kIFBvRlxuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMlwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSA8aGVhZD4gYW5kIDx0aXRsZT5cblxuICAgICAgICAgICAgaWYgKGZpbmRUaXRsZSAhPSBudWxsICYmIFJQVFV0aWwuZ2V0SW5uZXJUZXh0KGZpbmRUaXRsZSkudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyA8dGl0bGU+IGhhcyBubyBpbm5lckhUTUwgdGhpcmQgUG9GXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8zXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aXRsZSBjb250YWlucyBiYWQgdmFsdWVzXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHNDg0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfVGl0bGVfVmFsaWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206aGVhZCBkb206dGl0bGVcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcblxuICAgICAgICAgICAgbGV0IHRpdGxlU3RyID0gUlBUVXRpbC5nZXRJbm5lclRleHQocnVsZUNvbnRleHQpLnRyaW0oKTtcblxuICAgICAgICAgICAgLy8gYWxsb3cgLmNvbSwgLm5ldCBhbmQgLm9yZ1xuICAgICAgICAgICAgbGV0IHRpdGxlU3RyTG93ZXJjYXNlID0gdGl0bGVTdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmICh0aXRsZVN0ckxvd2VyY2FzZS5pbmNsdWRlcyhcIi5jb21cIikgfHwgdGl0bGVTdHJMb3dlcmNhc2UuaW5jbHVkZXMoXCIubmV0XCIpIHx8IHRpdGxlU3RyTG93ZXJjYXNlLmluY2x1ZGVzKFwiLm9yZ1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiLFt0aXRsZVN0cl0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGl0bGVTdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBjb3ZlcmVkIGJ5IFdDQUcyMF9Eb2NfSGFzVGl0bGVcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsvL1J1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFzc2VkID0gIS9eXFxTKlxcLlthLXpBLVpdezEsNH0oPyEuKXxeaHR0cHM/OlxcL1xcL1xcUyovaS50ZXN0KHRpdGxlU3RyKTtcblxuICAgICAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzJcIik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIsW3RpdGxlU3RyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5dXG5leHBvcnQgeyBhMTF5UnVsZXNUaXRsZSB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uL3V0aWwvbGVnYWN5XCI7XG5cbmxldCBhMTF5UnVsZXNWaWRlbzogUnVsZVtdID0gW1xuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIHZpZGVvIGlzIG1pc3NpbmcgVHJhY2sgd2l0aCBhbiBhdHRyaWJ1dGUga2luZD1cImNhcHRpb25cIlxuICAgICAgICAgKiBPcmlnaW46IENJMTYyLUhUTUwgNSwgRzExMTdcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTp2aWRlb1wiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBIVE1MVmlkZW9FbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyBpZ25vcmUgZGVjb3JhdGl2ZSB2aWRlbyBpZiB1c2VyIHVzZXMgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWhpZGRlblwiKSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHRyYWNrcyA9IHJ1bGVDb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidHJhY2tcIik7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJhY2tzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgcGFzc2VkID0gcGFzc2VkIHx8IHRyYWNrc1tpXS5nZXRBdHRyaWJ1dGUoXCJraW5kXCIpID09PSAnY2FwdGlvbnMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY2hlY2tzIGZvciBhZGRpdGlvbiBvZiBkeW5hbWljIHRyYWNrc1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0LnRleHRUcmFja3MgJiYgcnVsZUNvbnRleHQudGV4dFRyYWNrcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgcnVsZUNvbnRleHQudGV4dFRyYWNrcy5sZW5ndGg7IGkrKykgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gcGFzc2VkIHx8IHJ1bGVDb250ZXh0LnRleHRUcmFja3NbaV0ua2luZCAgPT09ICAnY2FwdGlvbnMnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQb3RlbnRpYWwoXCJQb3RlbnRpYWxfMVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgSFRNTDUgPGF1ZGlvPiBvciA8dmlkZW8+IGVsZW1lbnRzIGFyZSB1c2VkXG4gICAgICAgICAqIE9yaWdpbjogQ0kxNjItSFRNTCA1LCBHMTExOVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiSEFBQ19BdWRpb19WaWRlb19UcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOmF1ZGlvLCBkb206dmlkZW9cIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIC8vc2tpcCB0aGUgcnVsZVxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNOb2RlSGlkZGVuRnJvbUFUKHJ1bGVDb250ZXh0KSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxldCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJhdWRpb1wiIHx8IG5vZGVOYW1lID09PSBcInZpZGVvXCIpIHtcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXNzZWQgPyBSdWxlUGFzcyhcIlBhc3NfMFwiKSA6IFJ1bGVNYW51YWwoXCJNYW51YWxfMVwiKTtcbiAgICAgICAgfVxuICAgIH1cbl07XG5leHBvcnQgeyBhMTF5UnVsZXNWaWRlbyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MsIFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBGcmFnbWVudFV0aWwgfSBmcm9tIFwiLi4vdXRpbC9mcmFnbWVudFwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgYTExeVJ1bGVzVGFibGU6IFJ1bGVbXSA9IFtcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIGlmIGNhcHRpb24gYW5kIHN1bW1hcnkgc2F5IHRoZSBzYW1lIHRoaW5nXG4gICAgICAgICAqIE9yaWdpbjogV0NBRyAyLjAgVGVjaG5pcXVlIEgzOSwgSDczXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudFwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTp0YWJsZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBvZklkO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICBsZXQgc3VtU3RyO1xuICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcInN1bW1hcnlcIikpIHtcbiAgICAgICAgICAgICAgICBwb2ZJZCA9IDA7XG4gICAgICAgICAgICAgICAgc3VtU3RyID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwic3VtbWFyeVwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiKSkge1xuICAgICAgICAgICAgICAgIHBvZklkID0gMTtcbiAgICAgICAgICAgICAgICBsZXQgc3VtbWFyeU5vZGVJZHMgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICBsZXQgc3VtbWFyeU5vZGVDb25jYXQgPSBcIlwiO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxzdW1tYXJ5Tm9kZUlkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3VtbWFyeU5vZGVJZCA9IHN1bW1hcnlOb2RlSWRzW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VtbWFyeU5vZGVJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1bW1hcnlOb2RlID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQocnVsZUNvbnRleHQsIHN1bW1hcnlOb2RlSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1bW1hcnlOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyeU5vZGVDb25jYXQgKz0gXCIgXCIgKyBSUFRVdGlsLmdldElubmVyVGV4dChzdW1tYXJ5Tm9kZSkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3VtU3RyID0gc3VtbWFyeU5vZGVDb25jYXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN1bVN0cikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FwRWxlbXMgPSBydWxlQ29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImNhcHRpb25cIik7XG4gICAgICAgICAgICAgICAgaWYgKGNhcEVsZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN1bVN0ci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjYXBTdHIgPSBSUFRVdGlsLmdldElubmVyVGV4dChjYXBFbGVtc1swXSkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3VtU3RyLmluY2x1ZGVzKGNhcFN0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZXNjcmlwdGlvbjogRW5zdXJlIHRoYXQgdGFibGUgY2FwdGlvbnMgaGF2ZSBjb250ZW50XG4gICAgICAgICAqIE9yaWdpbjogVmFsZXJpZVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiVmFsZXJpZV9DYXB0aW9uX0hhc0NvbnRlbnRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Y2FwdGlvblwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuaGFzSW5uZXJDb250ZW50SGlkZGVuKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBFbnN1cmUgdGhhdCB0YWJsZSBjYXB0aW9ucyBhcmUgaW4gdGFibGVzXG4gICAgICAgICAqIE9yaWdpbjogVmFsZXJpZVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiVmFsZXJpZV9DYXB0aW9uX0luVGFibGVcIixcbiAgICAgICAgY29udGV4dDogXCJkb206Y2FwdGlvblwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFwidGFibGVcIikgIT0gbnVsbDtcbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8xXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFJlcXVpcmUgdGhhdCB0aGVyZSBiZSBhdCBsZWFzdCBvbmUgaGVhZGVyIHJvdyBvciBoZWFkZXIgY29sdW1uIGZvciBhIGRhdGEgdGFibGUuXG4gICAgICAgICAqIE9yaWdpbjogUlBUIDUuNiBHMTEzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJSUFRfVGFibGVfRGF0YUhlYWRpbmdzQXJpYVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTp0YWJsZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBIVE1MVGFibGVFbGVtZW50O1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGxheW91dCB0YWJsZSBvciB0aGVyZSBhcmUgbm8gcm93cywgdGhlIHJ1bGUgZG9lcyBub3QgYXBwbHkuXG4gICAgICAgICAgICBsZXQgcm93cyA9IHJ1bGVDb250ZXh0LnJvd3M7XG4gICAgICAgICAgICBpZiAoIVJQVFV0aWwuaXNEYXRhVGFibGUocnVsZUNvbnRleHQpIHx8IHJvd3MgPT0gbnVsbCB8fCByb3dzLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gUlBUVXRpbC5pc1RhYmxlSGVhZGVySW5GaXJzdFJvd09yQ29sdW1uKHJ1bGVDb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IEV2ZXJ5IGhlYWRpbmcgbXVzdCBwb2ludCB0byBzb21lIGNlbGwsIGFuZCBldmVyeSBjZWxsIG11c3QgcmVmZXJlbmNlXG4gICAgICAgICAqIHNvbWUgaGVhZGluZ1xuICAgICAgICAgKiBPcmlnaW46IFZhbGVyaWVcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnRkLCBkb206dGhcIixcbiAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXJlbnRUYWJsZSA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFwidGFibGVcIik7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbGF5b3V0IHRhYmxlIG9yIGEgc2ltcGxlIHRhYmxlIHRoZSBydWxlIGRvZXMgbm90IGFwcGx5LlxuICAgICAgICAgICAgaWYgKHBhcmVudFRhYmxlID09IG51bGwgfHwgIVJQVFV0aWwuaXNDb21wbGV4RGF0YVRhYmxlKHBhcmVudFRhYmxlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gSWYgdGhpcyB0YWJsZSBoYXNuJ3QgYmVlbiBwcmVwcm9jZXNzZWQsIHByb2Nlc3MgaXQuXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRDYWNoZShydWxlQ29udGV4dCwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLCBudWxsKSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIEJ1aWxkIGEgZ3JpZCB0aGF0J3MgYWN0dWFsbHkgdXNhYmxlIChyb3dzcGFuIGFuZCBjb2xzcGFuIGVsZW1lbnRzIGFyZSBkdXBsaWNhdGVkKVxuICAgICAgICAgICAgICAgIC8vIFRoaXMgYnVpbGRzIGEgcmVhbCAyZCB0YWJsZSBhcnJheS5cbiAgICAgICAgICAgICAgICBsZXQgZ3JpZCA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyZW50VGFibGUucm93cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm93ID0gcGFyZW50VGFibGUucm93c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFncmlkW2ldKSBncmlkW2ldID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm93LmNlbGxzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2VsbCA9IHJvdy5jZWxsc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoY2VsbCwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLCBpICsgXCI6XCIgKyBqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IHBhcnNlSW50KGNlbGwuZ2V0QXR0cmlidXRlKFwiY29sc3BhblwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpZHRoKSB3aWR0aCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGVpZ2h0ID0gcGFyc2VJbnQoY2VsbC5nZXRBdHRyaWJ1dGUoXCJyb3dzcGFuXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGVpZ2h0KSBoZWlnaHQgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdYID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChncmlkW2ldW2dYXSkgZ1ggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgaGVpZ2h0OyArK2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdyaWRbaSArIGtdKSBncmlkW2kgKyBrXSA9IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCB3aWR0aDsgKytsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWRbaSArIGtdW2dYICsgbF0gPSBjZWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdGFibGUgZ3JpZCBhbmQgcmVjb3JkIGhlYWRlcnMgdGhhdCBwb2ludCB0byBjZWxscyBhbmRcbiAgICAgICAgICAgICAgICAvLyBjZWxscyB0aGF0IGFyZSBwb2ludGVkIHRvIGJ5IGhlYWRlcnNcbiAgICAgICAgICAgICAgICBsZXQgZG9jID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudDtcbiAgICAgICAgICAgICAgICBsZXQgbG9va3VwID0ge31cbiAgICAgICAgICAgICAgICBsZXQgc2NvcGVkQ29scyA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JpZC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcm93U2NvcGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZ3JpZFtpXS5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyaWRDZWxsID0gZ3JpZFtpXVtqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncmlkTm9kZU5hbWUgPSBncmlkQ2VsbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyaWROb2RlTmFtZSA9PSBcInRoXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JpZENlbGwuZ2V0QXR0cmlidXRlKFwic2NvcGVcIikgPT0gXCJyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dTY29wZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGFuIGF4aXMgYXR0cmlidXRlLCBpdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlIGlzIG5vdCBlbm91Z2guXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShncmlkQ2VsbCwgXCJheGlzXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwW1JQVFV0aWwuZ2V0Q2FjaGUoZ3JpZENlbGwsIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbnVsbCldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdyaWRDZWxsLmdldEF0dHJpYnV0ZShcInNjb3BlXCIpID09IFwiY29sXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVkQ29sc1tqXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gYXhpcyBhdHRyaWJ1dGUsIGl0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NvcGUgaXMgbm90IGVub3VnaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGdyaWRDZWxsLCBcImF4aXNcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29rdXBbUlBUVXRpbC5nZXRDYWNoZShncmlkQ2VsbCwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLCBudWxsKV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIZWFkZXJzIGNhbiByZWZlciB0byBvdGhlciBoZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZ3JpZENlbGwsIFwiaGVhZGVyc1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGRycyA9IGdyaWRDZWxsLmdldEF0dHJpYnV0ZShcImhlYWRlcnNcIikuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGhkcnMubGVuZ3RoOyArK2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkRWxlbSA9IGRvYy5nZXRFbGVtZW50QnlJZChoZHJzW2tdLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZEVsZW0gJiYgUlBUVXRpbC5nZXRBbmNlc3RvcihoZWFkRWxlbSwgXCJ0YWJsZVwiKSA9PSBwYXJlbnRUYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFtSUFRVdGlsLmdldENhY2hlKGhlYWRFbGVtLCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsIG51bGwpXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdyaWROb2RlTmFtZSA9PSBcInRkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93U2NvcGVkIHx8IHNjb3BlZENvbHNbal0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwW1JQVFV0aWwuZ2V0Q2FjaGUoZ3JpZENlbGwsIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbnVsbCldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZ3JpZENlbGwsIFwiaGVhZGVyc1wiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGRycyA9IGdyaWRDZWxsLmdldEF0dHJpYnV0ZShcImhlYWRlcnNcIikuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGhkcnMubGVuZ3RoOyArK2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkRWxlbSA9IGRvYy5nZXRFbGVtZW50QnlJZChoZHJzW2tdLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZEVsZW0gJiYgUlBUVXRpbC5nZXRBbmNlc3RvcihoZWFkRWxlbSwgXCJ0YWJsZVwiKSA9PSBwYXJlbnRUYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cFtSUFRVdGlsLmdldENhY2hlKGdyaWRDZWxsLCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsIG51bGwpXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwW1JQVFV0aWwuZ2V0Q2FjaGUoaGVhZEVsZW0sIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbnVsbCldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHBhcmVudFRhYmxlLCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsIGxvb2t1cCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByY0luZm8gPSBSUFRVdGlsLmdldENhY2hlKHJ1bGVDb250ZXh0LCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsIG51bGwpO1xuICAgICAgICAgICAgbGV0IHRJbmZvID0gIFJQVFV0aWwuZ2V0Q2FjaGUocGFyZW50VGFibGUsIFwiVmFsZXJpZV9UYWJsZV9EYXRhQ2VsbFJlbGF0aW9uc2hpcHNcIiwgbnVsbCk7XG4gICAgICAgICAgICBsZXQgcGFzc2VkID0gcmNJbmZvICE9PSBudWxsICYmIHRJbmZvICE9PSBudWxsICYmIHJjSW5mbyBpbiB0SW5mbztcblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQgJiYgcmNJbmZvID09PSBcIjA6MFwiICYmXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRJbm5lclRleHQocnVsZUNvbnRleHQpLnRyaW0oKS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHRlc3QgaWYgaXQncyB0aGUgdXBwZXItbGVmdCBjZWxsIGFuZCBpdCdzIGVtcHR5XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZSB0YWJsZSBoYXMgbm8gdGgncywgaXQgbWF5IGp1c3QgYmUgdGhhdCB0aGlzIHdhcyBzdXBwb3NlZCB0byBiZSBhIGxheW91dFxuICAgICAgICAgICAgLy8gdGFibGUsIHdoaWNoIGludHJvZHVjZXMgYSBsb3Qgb2Ygbm9pc2UuICBJbiB0aGF0IGNhc2UsIG9ubHkgdHJpZ2dlciB0aGlzIGVycm9yXG4gICAgICAgICAgICAvLyBvbmNlIHBlciB0YWJsZS5cbiAgICAgICAgICAgIGlmICghcGFzc2VkICYmIHBhcmVudFRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGhcIikubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRDYWNoZShwYXJlbnRUYWJsZSwgXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc19UcmlnT25jZVwiLCBmYWxzZSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHBhcmVudFRhYmxlLCBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzX1RyaWdPbmNlXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoXCJGYWlsXzFcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcyhcIlBhc3NfMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgdGhlIHZhbHVlcyBpbiBzY29wZSBhdHRyaWJ1dGUgYXJlIGludmFsaWRcbiAgICAgICAgICogT3JpZ2luOiBXQ0FHIDIuMCBUZWNobmlxdWUgSDYzXG4gICAgICAgICAqL1xuICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfU2NvcGVfVmFsaWRcIixcbiAgICAgICAgY29udGV4dDogXCJkb206dGRbc2NvcGVdLCBkb206dGhbc2NvcGVdXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBub2RlTmFtZSA9IHJ1bGVDb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT09ICd0ZCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKFwiRmFpbF8yXCIpO1xuXG4gICAgICAgICAgICAvL29ubHkgY29udGludWUgZm9yICd0aCdcbiAgICAgICAgICAgIGxldCBzY29wZVZhbCA9IHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcInNjb3BlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9IC9eKHJvd3xjb2x8cm93Z3JvdXB8Y29sZ3JvdXApJC8udGVzdChzY29wZVZhbCk7XG4gICAgICAgICAgICBpZiAoIXBhc3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlc2NyaXB0aW9uOiBUcmlnZ2VyIG9uIGFsbCB0YWJsZXMgdGhhdCBhcmUgZGV0ZXJtaW5lZCB0byBiZSBsYXlvdXQgdGFibGVzLlxuICAgICAgICAgKiBPcmlnaW46IFJQVCA1LjZcbiAgICAgICAgICovXG4gICAgICAgIGlkOiBcIlJQVF9UYWJsZV9MYXlvdXRUcmlnZ2VyXCIsXG4gICAgICAgIGNvbnRleHQ6IFwiZG9tOnRhYmxlXCIsXG4gICAgICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgICAgICAvL3NraXAgdGhlIHJ1bGVcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUhpZGRlbkZyb21BVChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IHBhc3NlZCA9ICFSUFRVdGlsLmlzTGF5b3V0VGFibGUocnVsZUNvbnRleHQpO1xuICAgICAgICAgICAgaWYgKHBhc3NlZCkgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHJldHVybiBSdWxlUG90ZW50aWFsKFwiUG90ZW50aWFsXzFcIik7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogRGVzY3JpcHRpb246IFRyaWdnZXIgaWYgcm9sZT09XCJwcmVzZW50YXRpb25cIiBvciByb2xlPT1cIm5vbmVcIiBhbmQgaGFzIHRhYmxlIHN0cnVjdHVyZVxuICAgICAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMzksIEg0MywgSDczLCBSUFQgNS42IDQ3MVxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX1N0cnVjdHVyZVwiLFxuICAgICAgICBjb250ZXh0OiBcImRvbTp0YWJsZVwiLFxuICAgICAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgLy9za2lwIHRoZSBydWxlXG4gICAgICAgICAgICBpZiAoUlBUVXRpbC5pc05vZGVIaWRkZW5Gcm9tQVQocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIC8vIEpDSCAtIE9VVCBPRiBTQ09QRSBoaWRkZW4gaW4gY29udGV4dFxuICAgICAgICAgICAgaWYgKFJQVFV0aWwuaXNEYXRhVGFibGUocnVsZUNvbnRleHQpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZUluR3JpZChydWxlQ29udGV4dCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBsZXQgZXJyb3JOb2RlcyA9IFtdO1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwic3VtbWFyeVwiKSlcbiAgICAgICAgICAgICAgICBlcnJvck5vZGVzLnB1c2gocnVsZUNvbnRleHQpO1xuXG4gICAgICAgICAgICBsZXQgY2FwdGlvbkVsZW1zID0gcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJjYXB0aW9uXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXB0aW9uRWxlbXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRBbmNlc3RvcihjYXB0aW9uRWxlbXNbaV0sIFwidGFibGVcIikgPT0gcnVsZUNvbnRleHQpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbm9kZSBzaG91bGQgYmUgc2tpcHBlZCBvciBub3QgYmFzZWQgb24gdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgYW5kIGlmIHRoZSBub2RlIGlzVmlzaWJsZSBvclxuICAgICAgICAgICAgICAgICAgICAvLyBub3QuXG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4oY2FwdGlvbkVsZW1zW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIGVycm9yTm9kZXNcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JOb2Rlcy5wdXNoKGNhcHRpb25FbGVtc1tpXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgYXJlIG5vdCBhY3R1YWxseSBtYWtpbmcgdXNlIG9mIHRoZXNlcyBlcnJvck5vZGVzIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHBhc3NlZCBhbG9uZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRpb25SZXN1bHQsIHdlIGRvIG5vdCBuZWVkIHRvIGtlZXAgbG9vcGluZyBvdmVyIGFuZCBnZXR0aW5nIGV2ZXJ5IHNpbmdsZSB2aW9sYXRpbmcgbm9kZSB1bmRlclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcnVsZSBjb250ZXh0LiBUaGlzIGNhbiBiZSBhIGZ1dHVyZSBlbmhhbmNlbm1lbnQgd2hlcmUgd2UgYWN0dWFsbHkgbWFrZSB1c2Ugb2YgdGhlIGVycm9yIG5vZGVzIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgLy8gYXJlIHBhc3NlZCBhbG9uZy4gQWRkaW5nIHRoaXMgYnJlYWsgdG8gc3BlZWQgdXAgcGVyZm9ybWFuY2UgYXQgdGhpcyBwb2ludC5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoZXJlIGlzIG5vIHBvaW50IHRvIGtlZXAgYWRkaW5nIHRoZSBlcnJvciBub2Rlcywgc3RvcCBhZnRlciBmaW5kaW5nIHRoZSBmaXJzdCBvbmVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB0aE5vZGVzID0gcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0aFwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhOb2Rlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmdldEFuY2VzdG9yKHRoTm9kZXNbaV0sIFwidGFibGVcIikgPT0gcnVsZUNvbnRleHQpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgbm9kZSBzaG91bGQgYmUgc2tpcHBlZCBvciBub3QgYmFzZWQgb24gdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IHNldHRpbmcgYW5kIGlmIHRoZSBub2RlIGlzVmlzaWJsZSBvclxuICAgICAgICAgICAgICAgICAgICAvLyBub3QuXG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4odGhOb2Rlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRvIHRoZSBlcnJvck5vZGVzXG4gICAgICAgICAgICAgICAgICAgIGVycm9yTm9kZXMucHVzaCh0aE5vZGVzW2ldKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgbm90IGFjdHVhbGx5IG1ha2luZyB1c2Ugb2YgdGhlc2VzIGVycm9yTm9kZXMgZXZlbiB0aG91Z2ggdGhleSBhcmUgcGFzc2VkIGFsb25nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWRhdGlvblJlc3VsdCwgd2UgZG8gbm90IG5lZWQgdG8ga2VlcCBsb29waW5nIG92ZXIgYW5kIGdldHRpbmcgZXZlcnkgc2luZ2xlIHZpb2xhdGluZyBub2RlIHVuZGVyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBydWxlIGNvbnRleHQuIFRoaXMgY2FuIGJlIGEgZnV0dXJlIGVuaGFuY2VubWVudCB3aGVyZSB3ZSBhY3R1YWxseSBtYWtlIHVzZSBvZiB0aGUgZXJyb3Igbm9kZXMgdGhhdFxuICAgICAgICAgICAgICAgICAgICAvLyBhcmUgcGFzc2VkIGFsb25nLiBBZGRpbmcgdGhpcyBicmVhayB0byBzcGVlZCB1cCBwZXJmb3JtYW5jZSBhdCB0aGlzIHBvaW50LlxuICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gVGhlcmUgaXMgbm8gcG9pbnQgdG8ga2VlcCBhZGRpbmcgdGhlIGVycm9yIG5vZGVzLCBzdG9wIGFmdGVyIGZpbmRpbmcgdGhlIGZpcnN0IG9uZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0ZE5vZGVzID0gcnVsZUNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0ZFwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGROb2Rlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICgodGROb2Rlc1tpXS5oYXNBdHRyaWJ1dGUoXCJzY29wZVwiKSB8fCB0ZE5vZGVzW2ldLmhhc0F0dHJpYnV0ZShcImhlYWRlcnNcIikpICYmXG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuZ2V0QW5jZXN0b3IodGROb2Rlc1tpXSwgXCJ0YWJsZVwiKSA9PSBydWxlQ29udGV4dCkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBub2RlIHNob3VsZCBiZSBza2lwcGVkIG9yIG5vdCBiYXNlZCBvbiB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZyBhbmQgaWYgdGhlIG5vZGUgaXNWaXNpYmxlIG9yXG4gICAgICAgICAgICAgICAgICAgIC8vIG5vdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih0ZE5vZGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIGVycm9yTm9kZXNcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JOb2Rlcy5wdXNoKHRkTm9kZXNbaV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSBub3QgYWN0dWFsbHkgbWFraW5nIHVzZSBvZiB0aGVzZXMgZXJyb3JOb2RlcyBldmVuIHRob3VnaCB0aGV5IGFyZSBwYXNzZWQgYWxvbmcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAvLyBWYWxpZGF0aW9uUmVzdWx0LCB3ZSBkbyBub3QgbmVlZCB0byBrZWVwIGxvb3Bpbmcgb3ZlciBhbmQgZ2V0dGluZyBldmVyeSBzaW5nbGUgdmlvbGF0aW5nIG5vZGUgdW5kZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJ1bGUgY29udGV4dC4gVGhpcyBjYW4gYmUgYSBmdXR1cmUgZW5oYW5jZW5tZW50IHdoZXJlIHdlIGFjdHVhbGx5IG1ha2UgdXNlIG9mIHRoZSBlcnJvciBub2RlcyB0aGF0XG4gICAgICAgICAgICAgICAgICAgIC8vIGFyZSBwYXNzZWQgYWxvbmcuIEFkZGluZyB0aGlzIGJyZWFrIHRvIHNwZWVkIHVwIHBlcmZvcm1hbmNlIGF0IHRoaXMgcG9pbnQuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBUaGVyZSBpcyBubyBwb2ludCB0byBrZWVwIGFkZGluZyB0aGUgZXJyb3Igbm9kZXMsIHN0b3AgYWZ0ZXIgZmluZGluZyB0aGUgZmlyc3Qgb25lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIG5vZGUgbmFtZSBmb3IgdGhlIHJ1bGUgY29udGV4dCBlbGVtZW50IGluIHRoaXMgY2FzZSBpdCB3aWxsIGFsd2F5cyBiZSB0YWJsZVxuICAgICAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50VG9rZW4gPSBydWxlQ29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAvLyBDb25zdHJ1Y3QgYSBuZXcgYXJyYXkgd2hpY2ggd2lsbCBjb250YW4gb25seSB0aGUgZWxlbWVudCB0YWcgZm9yIHRoZSB2aW9sYXRpb24gZWxlbWVudHNcbiAgICAgICAgICAgIGxldCBzdHJ1Y3R1cmFsRWxlbWVudFRva2VucyA9IG5ldyBBcnJheSgpO1xuXG4gICAgICAgICAgICAvLyBDb25zdHJ1Y3QgYSBzZWVuIGhhc2ggdGhhdCB3aWxsIGtlZXAgdHJhc2sgb2YgYWxsIHRoZSBlbGVtZW50cyB0aGF0IHdlcmUgYWxyZWFkeSBhZGRlZCB0byB0aGUgdG9rZW4gYXJyYXksIHRvIG1ha2Ugc3VyZVxuICAgICAgICAgICAgLy8gd2UgZG8gbm90IGR1cGxpY2F0ZSBhbnkgb2YgdGhlIGVsZW1lbnRzLiBEdXBsaWNhdGUgZWxlbWVudCB0YWdzIGluIHRoZSB0b2tlbiBtZXNzYWdlIGxvb2tzIGJhZCBhbmQgY29uZnVzaW5nLlxuICAgICAgICAgICAgbGV0IHNlZW4gPSB7fTtcblxuICAgICAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB0aGUgdmlvbGF0aW5nIHN0cnVjdHVyYWwgZWxlbWVudHMgYW5kIGV4dHJhY3QgdGhlIGVsZW1lbnQgdGFnIHRvIGJlIHVzZWQgYXMgYSB0b2tlblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlcnJvck5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBub2RlIG5hbWUgKHRhZyBuYW1lKSBmb3IgdGhlIHZpb2xhdGluZyBzdHJ1Y3R1cmFsIGVsZW1lbnRcbiAgICAgICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBlcnJvck5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICAvLyBPbmx5IG5lZWQgdG8gYWRkIHRoZSB2aW9sYXRpbmcgZWxlbWVudCBvbmNlXG4gICAgICAgICAgICAgICAgaWYgKCFzZWVuLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBhcmUgYWRkaW5nIHRoZSB0b2tlbiBhcyBlbGVtZW50cyBhbmQgYXR0cmlidXRlcyB3ZSBuZWVkIHRvIGhhbmRsZVxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgc3VtbWFyeSBhdHRyaWJ1dGUgb24gdGhlIHJ1bGVDb250ZXh0ICh0YWJsZSkuIFdlIG9ubHkgYWRkIHN1bW1hcnkgb25jZSwgc2FtZSBhc1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZWxlbWVudHMgdG8gYXZvaWQgZHVwbGljYXRpb24gaW4gdGhlIG1lc3NhZ2UuIChTdW1tYXJ5IHNob3VsZCBub3QgZHVwbGljYXRlLCBidXQganVzdCBpbiBjYXNlKVxuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZU5hbWUgPT0gXCJ0YWJsZVwiICYmICFzZWVuLmhhc093blByb3BlcnR5W1wic3VtbWFyeVwiXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFyayB0aGlzIGFzIGEgbmV3IGF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VlbltcInN1bW1hcnlcIl0gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbmV3IHZpb2xhdGluZyBlbGVtZW50IGFkZCBpdCB0byB0aGUgc3RydWN0dXJhbCBlbGVtZW50IHRva2VucyBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJhbEVsZW1lbnRUb2tlbnMucHVzaChcInN1bW1hcnlcIik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXJrIHRoaXMgYXMgYSBuZXcgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbltub2RlTmFtZV0gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbmV3IHZpb2xhdGluZyBlbGVtZW50IGFkZCBpdCB0byB0aGUgc3RydWN0dXJhbCBlbGVtZW50IHRva2VucyBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJhbEVsZW1lbnRUb2tlbnMucHVzaChub2RlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdGFrZSB0aGUgYXJyYXkgb2Ygc3RydWN0dXJhbCBlbGVtZW50cyBhbmQgam9pbiB0aGVtIHdpdGggYSBjb21tYSBhbmQgYSBzcGFjZSB0byBtYWtlIGdyYW1tYXRpY2FsIGNvcnJlY3QgaW5cbiAgICAgICAgICAgIC8vIHRoZSBtZXNzYWdlLlxuICAgICAgICAgICAgbGV0IHN0cnVjdHVyYWxFbGVtZW50VG9rZW5zU3RyID0gc3RydWN0dXJhbEVsZW1lbnRUb2tlbnMuam9pbihcIiwgXCIpO1xuXG4gICAgICAgICAgICAvL3JldHVybiBuZXcgVmFsaWRhdGlvblJlc3VsdChlcnJvck5vZGVzLmxlbmd0aCA9PSAwLCBlcnJvck5vZGVzLCAnJywgJycsIFtjdXJyZW50RWxlbWVudFRva2VuLCBzdHJ1Y3R1cmFsRWxlbWVudFRva2Vuc10pO1xuICAgICAgICAgICAgaWYgKGVycm9yTm9kZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUnVsZVBhc3MoXCJQYXNzXzBcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcIkZhaWxfMVwiLCBbY3VycmVudEVsZW1lbnRUb2tlbiwgc3RydWN0dXJhbEVsZW1lbnRUb2tlbnNTdHJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9JQk1hL2VxdWFsLWFjY2Vzcy9pc3N1ZXMvMzcyXG4gICAgICAgICAqL1xuICAgICAgICAgaWQ6IFwidGFibGVfYXJpYV9kZXNjZW5kYW50c1wiLFxuICAgICAgICAgY29udGV4dDogXCJhcmlhOnRhYmxlIGRvbTp0cltyb2xlXSwgYXJpYTp0YWJsZSBkb206dGhbcm9sZV0sIGFyaWE6dGFibGUgZG9tOnRkW3JvbGVdXCJcbiAgICAgICAgICAgICsgXCIsIGFyaWE6Z3JpZCBkb206dHJbcm9sZV0sIGFyaWE6Z3JpZCBkb206dGhbcm9sZV0sIGFyaWE6Z3JpZCBkb206dGRbcm9sZV1cIlxuICAgICAgICAgICAgKyBcIiwgYXJpYTp0cmVlZ3JpZCBkb206dHJbcm9sZV0sIGFyaWE6dHJlZWdyaWQgZG9tOnRoW3JvbGVdLCBhcmlhOnRyZWVncmlkIGRvbTp0ZFtyb2xlXVwiLFxuICAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSwgaGllcmFyY2hpZXM/OiBSdWxlQ29udGV4dEhpZXJhcmNoeSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgIGxldCBwYXJlbnRSb2xlID0gaGllcmFyY2hpZXNbXCJhcmlhXCJdLmZpbHRlcihoaWVyID0+IFtcInRhYmxlXCIsIFwiZ3JpZFwiLCBcInRyZWVncmlkXCJdLmluY2x1ZGVzKGhpZXIucm9sZSkpO1xuICAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbChcImV4cGxpY2l0X3JvbGVcIiwgW2NvbnRleHRbXCJkb21cIl0ubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBwYXJlbnRSb2xlWzBdLnJvbGVdKTtcbiAgICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vSUJNYS9lcXVhbC1hY2Nlc3MvdHJlZS9zeWFuLTMxMzhcbiAgICAgICAgICovXG4gICAgICAgICBpZDogXCJ0YWJsZV9oZWFkZXJzX3JlZl92YWxpZFwiLFxuICAgICAgICAgY29udGV4dDogXCJkb206dGRbaGVhZGVyc10sIGRvbTp0aFtoZWFkZXJzXVwiLFxuICAgICAgICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSwgaGllcmFyY2hpZXM/OiBSdWxlQ29udGV4dEhpZXJhcmNoeSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCBwYXJlbnRUYWJsZSA9IFJQVFV0aWwuZ2V0QW5jZXN0b3IocnVsZUNvbnRleHQsIFwidGFibGVcIik7XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbGF5b3V0IHRhYmxlIG9yIGEgc2ltcGxlIHRhYmxlIHRoZSBydWxlIGRvZXMgbm90IGFwcGx5LlxuICAgICAgICAgICAgaWYgKHBhcmVudFRhYmxlID09IG51bGwgfHwgIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShwYXJlbnRUYWJsZSkgIHx8ICFSUFRVdGlsLmlzRGF0YVRhYmxlKHBhcmVudFRhYmxlKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwiaGVhZGVyc1wiKTtcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgbGV0IGlkcyA9IHZhbHVlLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgIGxldCBpbnZhbGlkSGVhZGVyVmFsdWVzID0gW107XG4gICAgICAgICAgICBsZXQgc2FtZU5vZGVIZWFkZXJWYWx1ZXMgPSBbXTtcbiAgICAgICAgICAgIGxldCBzYW1lVGFibGVIZWFkZXJWYWx1ZXMgPSBbXTtcbiAgICAgICAgICAgIGxldCBpbnZhbGlkRWxlbUhlYWRlclZhbHVlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgaWRzLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgICAgIGxldCBpZCA9IGlkc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoaWQudHJpbSgpID09PSAnJykgY29udGludWU7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IGRvYy5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbGVtKVxuICAgICAgICAgICAgICAgICAgICBpbnZhbGlkSGVhZGVyVmFsdWVzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKERPTVV0aWwuc2FtZU5vZGUoZWxlbSwgcnVsZUNvbnRleHQpKVxuICAgICAgICAgICAgICAgICAgICBzYW1lTm9kZUhlYWRlclZhbHVlcy5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghRE9NVXRpbC5pc0luU2FtZVRhYmxlKGVsZW0sIHJ1bGVDb250ZXh0KSlcbiAgICAgICAgICAgICAgICAgICAgc2FtZVRhYmxlSGVhZGVyVmFsdWVzLnB1c2goaWQpO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtTmFtZSAhPT0gJ3RoJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm9sZXMgPSBSUFRVdGlsLmdldFJvbGVzKGVsZW0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyb2xlcy5pbmNsdWRlcygnY29sdW1uaGVhZGVyJykgJiYgIXJvbGVzLmluY2x1ZGVzKCdyb3doZWFkZXInKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkRWxlbUhlYWRlclZhbHVlcy5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgIGlmIChpbnZhbGlkSGVhZGVyVmFsdWVzLmxlbmd0aCAhPSAwKVxuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChSdWxlRmFpbChcIkZhaWxfMVwiLCBbaW52YWxpZEhlYWRlclZhbHVlcy50b1N0cmluZygpXSkpO1xuICAgICAgICAgICAgaWYgKHNhbWVOb2RlSGVhZGVyVmFsdWVzLmxlbmd0aCAhPSAwKVxuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChSdWxlRmFpbChcIkZhaWxfMlwiLCBbc2FtZU5vZGVIZWFkZXJWYWx1ZXMudG9TdHJpbmcoKV0pKTtcbiAgICAgICAgICAgIGlmIChzYW1lVGFibGVIZWFkZXJWYWx1ZXMubGVuZ3RoICE9IDApXG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKFJ1bGVGYWlsKFwiRmFpbF8zXCIsIFtzYW1lVGFibGVIZWFkZXJWYWx1ZXMudG9TdHJpbmcoKV0pKTtcbiAgICAgICAgICAgIGlmIChpbnZhbGlkRWxlbUhlYWRlclZhbHVlcy5sZW5ndGggIT0gMClcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goUnVsZUZhaWwoXCJGYWlsXzRcIiwgW2ludmFsaWRFbGVtSGVhZGVyVmFsdWVzLnRvU3RyaW5nKCldKSk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKFwiUGFzc18wXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXVxuZXhwb3J0IHsgYTExeVJ1bGVzVGFibGUgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlc2V0IH0gZnJvbSBcIi4uLy4uL0NoZWNrZXJcIjtcbmltcG9ydCB7IGVSdWxlUG9saWN5LCBlUnVsZUNhdGVnb3J5LCBlVG9vbGtpdExldmVsLCBlUnVsZXNldFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcblxubGV0IGExMXlSdWxlc2V0czogUnVsZXNldFtdID0gW1xue1xuICAgIGlkOiBcIkVYVEVOU0lPTlNcIixcbiAgICBuYW1lOiBcIkV4dGVuc2lvbiBSdWxlc1wiLFxuICAgIGNhdGVnb3J5OiBlUnVsZUNhdGVnb3J5LkFDQ0VTU0lCSUxJVFksXG4gICAgZGVzY3JpcHRpb246IFwiUnVsZXMgZm9yIGVuYWJsaW5nIHRoZSBicm93c2VyIGV4dGVuc2lvbnNcIixcbiAgICB0eXBlOiBlUnVsZXNldFR5cGUuRVhURU5TSU9OLFxuICAgIGNoZWNrcG9pbnRzOiBbe1xuICAgICAgICBcIm51bVwiOiBcIjFcIixcbiAgICAgICAgbmFtZTogXCJFeHRlbnNpb24gQ1AgMVwiLFxuICAgICAgICB3Y2FnTGV2ZWw6IFwiQVwiLFxuICAgICAgICBzdW1tYXJ5OiBcIlJ1bGVzIGZvciBFeHRlbnNpb25cIixcbiAgICAgICAgcnVsZXM6IFt7XG4gICAgICAgICAgICBpZDogXCJkZXRlY3Rvcl90YWJiYWJsZVwiLFxuICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LklORk9STUFUSU9OLFxuICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgfV1cbiAgICB9XVxufSxcbntcbiAgICBpZDogXCJJQk1fQWNjZXNzaWJpbGl0eVwiLFxuICAgIG5hbWU6IFwiSUJNIEFjY2Vzc2liaWxpdHlcIixcbiAgICBjYXRlZ29yeTogZVJ1bGVDYXRlZ29yeS5BQ0NFU1NJQklMSVRZLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJ1bGVzIGZvciBXQ0FHIDIuMSBBQSBwbHVzIGFkZGl0aW9uYWwgSUJNIGNoZWNrbGlzdCBzdXBwbGVtZW50YWwgcmVxdWlyZW1lbnRzLlwiLFxuICAgIFwiY2hlY2twb2ludHNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJOb24tdGV4dCBDb250ZW50XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFsbCBub24tdGV4dCBjb250ZW50IHRoYXQgaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGhhcyBhIHRleHQgYWx0ZXJuYXRpdmUgdGhhdCBzZXJ2ZXMgdGhlIGVxdWl2YWxlbnQgcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxJbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9JbWdfVXNlbWFwVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfT2JqZWN0X0hhc1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQXBwbGV0X0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FyZWFfSGFzQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0ltZ19BbHRDb21tb25NaXN1c2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSW1nX0xvbmdEZXNjcmlwdGlvbjJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9QcmVfQVNDSUlBcnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfQXVkaW9WaWRlb0FsdEZpbGVuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX0JhY2tncm91bmRJbWFnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfTGlua1RleHROb3RSZWR1bmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX1RpdGxlRW1wdHlXaGVuQWx0TnVsbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfSW1nX1VzZW1hcEFsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UZXh0X0Vtb3RpY29uc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbWdfUHJlc2VudGF0aW9uSW1nSGFzTm9uTnVsbEFsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfRmlndXJlX2xhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWVkaWFfQWx0QnJpZWZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRW1iZWRfSGFzTm9FbWJlZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VtYmVkX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9UcmlnZ2VyMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0NhbnZhc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8tb25seSBhbmQgVmlkZW8tb25seSAoUHJlcmVjb3JkZWQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBwcmVyZWNvcmRlZCBhdWRpby1vbmx5IG9yIHZpZGVvLW9ubHkgbWVkaWEsIGFuIGFsdGVybmF0aXZlIHByb3ZpZGVzIGVxdWl2YWxlbnQgaW5mb3JtYXRpb24uXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9BdWRpb1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNhcHRpb25zIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ2FwdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBhbGwgcHJlcmVjb3JkZWQgYXVkaW8gY29udGVudCBpbiBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMi4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpbyBEZXNjcmlwdGlvbiBvciBNZWRpYSBBbHRlcm5hdGl2ZSAoUHJlcmVjb3JkZWQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFuIGFsdGVybmF0aXZlIGZvciB0aW1lLWJhc2VkIG1lZGlhIG9yIGF1ZGlvIGRlc2NyaXB0aW9uIG9mIHRoZSBwcmVyZWNvcmRlZCB2aWRlbyBjb250ZW50IGlzIHByb3ZpZGVkIGZvciBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNhcHRpb25zIChMaXZlKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ2FwdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBhbGwgbGl2ZSBhdWRpbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvT2JqZWN0VHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkF1ZGlvIERlc2NyaXB0aW9uIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkF1ZGlvIGRlc2NyaXB0aW9uIGlzIHByb3ZpZGVkIGZvciBhbGwgcHJlcmVjb3JkZWQgdmlkZW8gY29udGVudCBpbiBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkluZm8gYW5kIFJlbGF0aW9uc2hpcHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW5mb3JtYXRpb24sIHN0cnVjdHVyZSwgYW5kIHJlbGF0aW9uc2hpcHMgY29udmV5ZWQgdGhyb3VnaCBwcmVzZW50YXRpb24gY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCBvciBhcmUgYXZhaWxhYmxlIGluIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJ0YWJsZV9oZWFkZXJzX3JlZl92YWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSwgXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSGVhZGVyc19GZXdXb3Jkc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9CbG9ja3F1b3RlX0hhc0NpdGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9CbG9ja3F1b3RlX1dyYXBzVGV4dFF1b3RlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxvY2tfU2hvdWxkQmVIZWFkaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0xhYmVsX1VuaXF1ZUZvclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9MaXN0X1VzZU1hcmt1cFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1NjcmlwdF9PbmNsaWNrSFRNTDFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRmllbGRzZXRfSGFzTGVnZW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX0NhcFN1bW1SZWR1bmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UYWJsZV9TY29wZV9WYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9SYWRpb0Noa0luRmllbGRTZXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX0NhcHRpb25fSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfQ2FwdGlvbl9JblRhYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX1RhYmxlX0RhdGFDZWxsUmVsYXRpb25zaGlwc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UYWJsZV9EYXRhSGVhZGluZ3NBcmlhXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0xhYmVsX1JlZlZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1N0eWxlX0JlZm9yZUFmdGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTGlzdF9NaXN1c2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NlbGVjdF9IYXNPcHRHcm91cFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9JbkZpZWxkU2V0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfVGFibGVfTGF5b3V0VHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9UYWJsZV9TdHJ1Y3R1cmVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhcmlhX2hpZGRlbl9mb2N1c19taXN1c2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMy4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJNZWFuaW5nZnVsIFNlcXVlbmNlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldoZW4gdGhlIHNlcXVlbmNlIGluIHdoaWNoIGNvbnRlbnQgaXMgcHJlc2VudGVkIGFmZmVjdHMgaXRzIG1lYW5pbmcsIGEgY29ycmVjdCByZWFkaW5nIHNlcXVlbmNlIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfRWxlbV9EaXJWYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RleHRfTGV0dGVyU3BhY2luZ1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlNlbnNvcnkgQ2hhcmFjdGVyaXN0aWNzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkluc3RydWN0aW9ucyBwcm92aWRlZCBmb3IgdW5kZXJzdGFuZGluZyBhbmQgb3BlcmF0aW5nIGNvbnRlbnQgZG8gbm90IHJlbHkgc29sZWx5IG9uIHNlbnNvcnkgY2hhcmFjdGVyaXN0aWNzIG9mIGNvbXBvbmVudHMgc3VjaCBhcyBzaGFwZSwgc2l6ZSwgdmlzdWFsIGxvY2F0aW9uLCBvcmllbnRhdGlvbiwgb3Igc291bmQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiT3JpZW50YXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNvbnRlbnQgZG9lcyBub3QgcmVzdHJpY3QgaXRzIHZpZXcgYW5kIG9wZXJhdGlvbiB0byBhIHNpbmdsZSBkaXNwbGF5IG9yaWVudGF0aW9uLCBzdWNoIGFzIHBvcnRyYWl0IG9yIGxhbmRzY2FwZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiSWRlbnRpZnkgSW5wdXQgUHVycG9zZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIHB1cnBvc2Ugb2YgZWFjaCBpbnB1dCBmaWVsZCB0aGF0IGNvbGxlY3RzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2VyIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQgd2hlbiB0aGUgZmllbGQgc2VydmVzIGEgY29tbW9uIHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMV9JbnB1dF9BdXRvY29tcGxldGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJVc2Ugb2YgQ29sb3JcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29sb3IgaXMgbm90IHVzZWQgYXMgdGhlIG9ubHkgdmlzdWFsIG1lYW5zIG9mIGNvbnZleWluZyBpbmZvcm1hdGlvbiwgaW5kaWNhdGluZyBhbiBhY3Rpb24sIHByb21wdGluZyBhIHJlc3BvbnNlLCBvciBkaXN0aW5ndWlzaGluZyBhIHZpc3VhbCBlbGVtZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRm9udF9Db2xvckluRm9ybVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9Db2xvclNlbWFudGljczFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8gQ29udHJvbFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhbnkgYXVkaW8gcGxheXMgYXV0b21hdGljYWxseSBmb3IgbW9yZSB0aGFuIDMgc2Vjb25kcywgZWl0aGVyIGEgbWVjaGFuaXNtIGlzIGF2YWlsYWJsZSB0byBwYXVzZSBvciBzdG9wIHRoZSBhdWRpbywgb3IgYSBtZWNoYW5pc20gaXMgYXZhaWxhYmxlIHRvIGNvbnRyb2wgYXVkaW8gdm9sdW1lIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgb3ZlcmFsbCBzeXN0ZW0gdm9sdW1lIGxldmVsLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRW1iZWRfQXV0b1N0YXJ0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNvbnRyYXN0IChNaW5pbXVtKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIHZpc3VhbCBwcmVzZW50YXRpb24gb2YgdGV4dCBhbmQgaW1hZ2VzIG9mIHRleHQgaGFzIGEgY29udHJhc3QgcmF0aW8gb2YgYXQgbGVhc3QgNC41OjEsIHdpdGggYSAzOjEgcmF0aW8gZm9yIGxhcmdlLXNjYWxlIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQV9QVlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJSZXNpemUgVGV4dFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGV4dCBjYW4gYmUgcmVzaXplZCB3aXRob3V0IGFzc2lzdGl2ZSB0ZWNobm9sb2d5IHVwIHRvIDIwMCBwZXJjZW50IHdpdGhvdXQgbG9zcyBvZiBjb250ZW50IG9yIGZ1bmN0aW9uYWxpdHkuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMV9TdHlsZV9WaWV3cG9ydFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwibWV0YV92aWV3cG9ydF96b29tXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC41XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJJbWFnZXMgb2YgVGV4dFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgdGhlIHRlY2hub2xvZ2llcyBiZWluZyB1c2VkIGNhbiBhY2hpZXZlIHRoZSB2aXN1YWwgcHJlc2VudGF0aW9uLCB0ZXh0IGlzIHVzZWQgdG8gY29udmV5IGluZm9ybWF0aW9uIHJhdGhlciB0aGFuIGltYWdlcyBvZiB0ZXh0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xMFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUmVmbG93XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb250ZW50IGNhbiByZWZsb3cgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uIG9yIGZ1bmN0aW9uYWxpdHksIGFuZCB3aXRob3V0IHJlcXVpcmluZyBzY3JvbGxpbmcgaW4gdHdvIGRpbWVuc2lvbnMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIm1ldGFfdmlld3BvcnRfem9vbVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuMTFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk5vbi10ZXh0IENvbnRyYXN0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgcGFydHMgb2YgZ3JhcGhpY2FsIG9iamVjdHMgcmVxdWlyZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGVudCwgYW5kIHRoZSB2aXN1YWwgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gaWRlbnRpZnkgVUkgY29tcG9uZW50cyBhbmQgc3RhdGVzLCBoYXZlIGEgY29udHJhc3QgcmF0aW8gb2YgYXQgbGVhc3QgMzoxIGFnYWluc3QgYWRqYWNlbnQgY29sb3JzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVGV4dCBTcGFjaW5nXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJObyBsb3NzIG9mIGNvbnRlbnQgb3IgZnVuY3Rpb25hbGl0eSBvY2N1cnMgd2hlbiB1c2VycyBjaGFuZ2UgbGV0dGVyLCB3b3JkIGFuZCBwYXJhZ3JhcGggc3BhY2luZywgYXMgd2VsbCBhcyBsaW5lIGhlaWdodC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuMTNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNvbnRlbnQgb24gSG92ZXIgb3IgRm9jdXNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldoZXJlIGhvdmVyIG9yIGZvY3VzIGFjdGlvbnMgY2F1c2UgYWRkaXRpb25hbCBjb250ZW50IHRvIGJlY29tZSB2aXNpYmxlIGFuZCBoaWRkZW4sIHRoZSBhZGRpdGlvbmFsIGNvbnRlbnQgaXMgZGlzbWlzc2FibGUsIGhvdmVyYWJsZSBhbmQgcGVyc2lzdGVudC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjEuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiS2V5Ym9hcmRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGNvbnRlbnQgaXMgb3BlcmFibGUgdGhyb3VnaCBhIGtleWJvYXJkIGludGVyZmFjZSB3aXRob3V0IHJlcXVpcmluZyBzcGVjaWZpYyB0aW1pbmdzIGZvciBpbmRpdmlkdWFsIGtleXN0cm9rZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbGVtX0V2ZW50TW91c2VBbmRLZXlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0ludmFsaWRUYWJpbmRleEZvckFjdGl2ZWRlc2NlbmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NaXNzaW5nRm9jdXNhYmxlQ2hpbGRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NaXNzaW5nS2V5Ym9hcmRIYW5kbGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BdWRpb19WaWRlb19UcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcHBsaWNhdGlvbl9Sb2xlX1RleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjEuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTm8gS2V5Ym9hcmQgVHJhcFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBrZXlib2FyZCBmb2N1cyBjYW4gYmUgbW92ZWQgdG8gYSBjb21wb25lbnQgdXNpbmcgYSBrZXlib2FyZCBpbnRlcmZhY2UsIHRoZW4gZm9jdXMgY2FuIGJlIG1vdmVkIGF3YXkgZnJvbSB0aGF0IGNvbXBvbmVudCB1c2luZyBvbmx5IGEga2V5Ym9hcmQgaW50ZXJmYWNlLCBhbmQsIGlmIGl0IHJlcXVpcmVzIG1vcmUgdGhhbiB1bm1vZGlmaWVkIGFycm93IG9yIHRhYiBrZXlzIG9yIG90aGVyIHN0YW5kYXJkIGV4aXQgbWV0aG9kcywgdGhlIHVzZXIgaXMgYWR2aXNlZCBvZiB0aGUgbWV0aG9kIGZvciBtb3ZpbmcgZm9jdXMgYXdheS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19NZWRpYV9Eb2N1bWVudFRyaWdnZXIyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjEuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ2hhcmFjdGVyIEtleSBTaG9ydGN1dHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgYSBrZXlib2FyZCBzaG9ydGN1dCBpcyBpbXBsZW1lbnRlZCB1c2luZyBvbmx5IGxldHRlciwgcHVuY3R1YXRpb24sIG51bWJlciBvciBzeW1ib2wgY2hhcmFjdGVycywgdGhlbiB0aGUgc2hvcnRjdXQgY2FuIGJlIHR1cm5lZCBvZmYsIHJlbWFwcGVkIG9yIGFjdGl2YXRlZCBvbmx5IG9uIGZvY3VzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMi4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJUaW1pbmcgQWRqdXN0YWJsZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgZWFjaCB0aW1lIGxpbWl0IHRoYXQgaXMgc2V0IGJ5IHRoZSBjb250ZW50LCB0aGUgdXNlciBjYW4gdHVybiBvZmYsIGFkanVzdCwgb3IgZXh0ZW5kIHRoZSBsaW1pdC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01ldGFfUmVmcmVzaFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX01ldGFfUmVkaXJlY3RaZXJvXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjIuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUGF1c2UsIFN0b3AsIEhpZGVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIG1vdmluZywgYmxpbmtpbmcsIHNjcm9sbGluZywgb3IgYXV0by11cGRhdGluZyBpbmZvcm1hdGlvbiwgdGhlIHVzZXIgY2FuIHBhdXNlLCBzdG9wLCBoaWRlIG9yIGFkanVzdCB0aGUgaW5mb3JtYXRpb24uXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NYXJxdWVlX1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9CbGlua19BbHdheXNUcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0JsaW5rX0NTU1RyaWdnZXIxXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4zLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlRocmVlIEZsYXNoZXMgb3IgQmVsb3cgVGhyZXNob2xkXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNvbnRlbnQgZG9lcyBub3QgY29udGFpbiBhbnl0aGluZyB0aGF0IGZsYXNoZXMgbW9yZSB0aGFuIHRocmVlIHRpbWVzIGluIGFueSBvbmUgc2Vjb25kIHBlcmlvZCwgb3IgdGhlIGZsYXNoIGlzIGJlbG93IHRoZSBnZW5lcmFsIGZsYXNoIGFuZCByZWQgZmxhc2ggdGhyZXNob2xkcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQnlwYXNzIEJsb2Nrc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBIG1lY2hhbmlzbSBpcyBhdmFpbGFibGUgdG8gYnlwYXNzIGJsb2NrcyBvZiBjb250ZW50IHRoYXQgYXJlIHJlcGVhdGVkIG9uIG11bHRpcGxlIFdlYiBwYWdlcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ZyYW1lX0hhc1RpdGxlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSHRtbF9Ta2lwTmF2XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX0ZyYW1lX1NyY0h0bWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlU2VhcmNoTGFuZG1hcmtzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5TGFuZG1hcmtMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUFwcGxpY2F0aW9uTGFuZG1hcmtzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9BcHBsaWNhdGlvbkxhbmRtYXJrTGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlRG9jdW1lbnRSb2xlc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0JvZHlfRmlyc3RBU2tpcHNfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Cb2R5X0ZpcnN0QUNvbnRhaW5zU2tpcFRleHRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX09ycGhhbmVkQ29udGVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVnaW9uTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNWaXNpYmxlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVCYW5uZXJMYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29tcGxlbWVudGFyeUxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVDb250ZW50aW5mb0xhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVGb3JtTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZU5hdmlnYXRpb25MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFIFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvSW5TaWJsaW5nU2V0X0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBhZ2UgVGl0bGVkXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldlYiBwYWdlcywgbm9uLXdlYiBkb2N1bWVudHMsIGFuZCBzb2Z0d2FyZSBoYXZlIHRpdGxlcyB0aGF0IGRlc2NyaWJlIHRvcGljIG9yIHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Eb2NfSGFzVGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfVGl0bGVfVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRm9jdXMgT3JkZXJcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgY29udGVudCBjYW4gYmUgbmF2aWdhdGVkIHNlcXVlbnRpYWxseSBhbmQgdGhlIG5hdmlnYXRpb24gc2VxdWVuY2VzIGFmZmVjdCBtZWFuaW5nIG9yIG9wZXJhdGlvbiwgZm9jdXNhYmxlIGNvbXBvbmVudHMgcmVjZWl2ZSBmb2N1cyBpbiBhbiBvcmRlciB0aGF0IHByZXNlcnZlcyBtZWFuaW5nIGFuZCBvcGVyYWJpbGl0eS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Gb2N1c19UYWJiYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIklCTUFfRm9jdXNfTXVsdGlUYWJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGluayBQdXJwb3NlIChJbiBDb250ZXh0KVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgcHVycG9zZSBvZiBlYWNoIGxpbmsgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgbGluayB0ZXh0IGFsb25lIG9yIGZyb20gdGhlIGxpbmsgdGV4dCB0b2dldGhlciB3aXRoIGl0cyBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQgbGluayBjb250ZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQV9IYXNUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk11bHRpcGxlIFdheXNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIk1vcmUgdGhhbiBvbmUgd2F5IGlzIGF2YWlsYWJsZSB0byBsb2NhdGUgYSBXZWIgcGFnZSB3aXRoaW4gYSBzZXQgb2YgV2ViIHBhZ2VzLCBleGNlcHQgd2hlcmUgdGhlIFdlYiBQYWdlIGlzIHRoZSByZXN1bHQgb2YsIG9yIGEgc3RlcCBpbiwgYSBwcm9jZXNzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC42XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJIZWFkaW5ncyBhbmQgTGFiZWxzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJIZWFkaW5ncyBhbmQgbGFiZWxzIGRlc2NyaWJlIHRvcGljIG9yIHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IZWFkZXJfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC43XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGb2N1cyBWaXNpYmxlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbnkga2V5Ym9hcmQgb3BlcmFibGUgdXNlciBpbnRlcmZhY2UgaGFzIGEgbW9kZSBvZiBvcGVyYXRpb24gd2hlcmUgdGhlIGtleWJvYXJkIGZvY3VzIGluZGljYXRvciBpcyB2aXNpYmxlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU3R5bGVfSGluZGVyRm9jdXMxXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi41LjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBvaW50ZXIgR2VzdHVyZXNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQWxsIGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VzIG11bHRpcG9pbnQgb3IgcGF0aC1iYXNlZCBnZXN0dXJlcyBmb3Igb3BlcmF0aW9uIGNhbiBiZSBvcGVyYXRlZCB3aXRoIGEgc2luZ2xlIHBvaW50ZXIgd2l0aG91dCBhIHBhdGgtYmFzZWQgZ2VzdHVyZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjUuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUG9pbnRlciBDYW5jZWxsYXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGZ1bmN0aW9uYWxpdHkgdGhhdCBjYW4gYmUgb3BlcmF0ZWQgdXNpbmcgYSBzaW5nbGUgcG9pbnRlciwgY29tcGxldGlvbiBvZiB0aGUgZnVuY3Rpb24gaXMgb24gdGhlIHVwLWV2ZW50IHdpdGggYW4gYWJpbGl0eSB0byBhYm9ydCwgdW5kbyBvciByZXZlcnNlIHRoZSBvdXRjb21lLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNS4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYWJlbCBpbiBOYW1lXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciB1c2VyIGludGVyZmFjZSBjb21wb25lbnRzIHdpdGggbGFiZWxzIHRoYXQgaW5jbHVkZSB0ZXh0IG9yIGltYWdlcyBvZiB0ZXh0LCB0aGUgYWNjZXNzaWJsZSBuYW1lIGNvbnRhaW5zIHRoZSB0ZXh0IHRoYXQgaXMgcHJlc2VudGVkIHZpc3VhbGx5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjFfTGFiZWxfQWNjZXNzaWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNS40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJNb3Rpb24gQWN0dWF0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZ1bmN0aW9uYWxpdHkgdGhhdCBjYW4gYmUgb3BlcmF0ZWQgYnkgbW90aW9uIGNhbiBhbHNvIGJlIG9wZXJhdGVkIGJ5IHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudHMsIGFuZCB0aGUgbW90aW9uIHRyaWdnZXIgY2FuIGJlIGRpc2FibGVkLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYW5ndWFnZSBvZiBQYWdlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBkZWZhdWx0IGh1bWFuIGxhbmd1YWdlIG9mIFdlYiBwYWdlcywgbm9uLVdlYiBkb2N1bWVudHMsIG9yIHNvZnR3YXJlIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9IdG1sX0hhc0xhbmdcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjEuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGFuZ3VhZ2Ugb2YgUGFydHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBodW1hbiBsYW5ndWFnZSBvZiBlYWNoIHBhc3NhZ2Ugb3IgcGhyYXNlIGluIHRoZSBjb250ZW50IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9FbGVtX0xhbmdfVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJPbiBGb2N1c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJXaGVuIGFueSBjb21wb25lbnQgcmVjZWl2ZXMgZm9jdXMsIGl0IGRvZXMgbm90IGluaXRpYXRlIGEgY2hhbmdlIG9mIGNvbnRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TY3JpcHRfRm9jdXNCbHVyc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJPbiBJbnB1dFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDaGFuZ2luZyB0aGUgc2V0dGluZyBvZiBhbnkgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50IGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY2F1c2UgYSBjaGFuZ2Ugb2YgY29udGV4dCB1bmxlc3MgdGhlIHVzZXIgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgYmVoYXZpb3IgYmVmb3JlIHVzaW5nIHRoZSBjb21wb25lbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BX1RhcmdldEFuZFRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0Zvcm1fSGFzU3VibWl0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfSGFzT25jaGFuZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9Gb3JtX0NoYW5nZUVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDb25zaXN0ZW50IE5hdmlnYXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIk5hdmlnYXRpb25hbCBtZWNoYW5pc21zIHRoYXQgYXJlIHJlcGVhdGVkIG9uIG11bHRpcGxlIFdlYiBwYWdlcyB3aXRoaW4gYSBzZXQgb2YgV2ViIHBhZ2VzIG9jY3VyIGluIHRoZSBzYW1lIHJlbGF0aXZlIG9yZGVyIGVhY2ggdGltZSB0aGV5IGFyZSByZXBlYXRlZCwgdW5sZXNzIGEgY2hhbmdlIGlzIGluaXRpYXRlZCBieSB0aGUgdXNlci5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjIuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29uc2lzdGVudCBJZGVudGlmaWNhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29tcG9uZW50cyB0aGF0IGhhdmUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gYSBzZXQgb2YgV2ViIHBhZ2VzIGFyZSBpZGVudGlmaWVkIGNvbnNpc3RlbnRseS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRXJyb3IgSWRlbnRpZmljYXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgYW4gaW5wdXQgZXJyb3IgaXMgYXV0b21hdGljYWxseSBkZXRlY3RlZCwgdGhlIGl0ZW0gdGhhdCBpcyBpbiBlcnJvciBpcyBpZGVudGlmaWVkIGFuZCB0aGUgZXJyb3IgaXMgZGVzY3JpYmVkIHRvIHRoZSB1c2VyIGluIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9FcnJvck1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGFiZWxzIG9yIEluc3RydWN0aW9uc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJMYWJlbHMgb3IgaW5zdHJ1Y3Rpb25zIGFyZSBwcm92aWRlZCB3aGVuIGNvbnRlbnQgcmVxdWlyZXMgdXNlciBpbnB1dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0xhYmVsQWZ0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FjY2Vzc2tleV9OZWVkTGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19JbnB1dF9QbGFjZWhvbGRlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9WaXNpYmxlTGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4zLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkVycm9yIFN1Z2dlc3Rpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGFuIGlucHV0IGVycm9yIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYW5kIHN1Z2dlc3Rpb25zIGZvciBjb3JyZWN0aW9uIGFyZSBrbm93biwgdGhlbiB0aGUgc3VnZ2VzdGlvbnMgYXJlIHByb3ZpZGVkIHRvIHRoZSB1c2VyLCB1bmxlc3MgaXQgd291bGQgamVvcGFyZGl6ZSB0aGUgc2VjdXJpdHkgb3IgcHVycG9zZSBvZiB0aGUgY29udGVudC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRXJyb3IgUHJldmVudGlvbiAoTGVnYWwsIEZpbmFuY2lhbCwgRGF0YSlcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBjb250ZW50IHRoYXQgY2F1c2UgbGVnYWwgY29tbWl0bWVudHMgb3IgZmluYW5jaWFsIHRyYW5zYWN0aW9ucyBmb3IgdGhlIHVzZXIgdG8gb2NjdXIsIHRoYXQgbW9kaWZ5IG9yIGRlbGV0ZSB1c2VyLWNvbnRyb2xsYWJsZSBkYXRhIGluIGRhdGEgc3RvcmFnZSBzeXN0ZW1zLCBvciB0aGF0IHN1Ym1pdCB1c2VyIHRlc3QgcmVzcG9uc2VzLCB0aGUgdXNlciBjYW4gcmV2ZXJzZSwgY29ycmVjdCwgb3IgY29uZmlybSB0aGUgYWN0aW9uLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjQuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJQYXJzaW5nXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkluIGNvbnRlbnQgaW1wbGVtZW50ZWQgdXNpbmcgbWFya3VwIGxhbmd1YWdlcywgZWxlbWVudHMgaGF2ZSBjb21wbGV0ZSBzdGFydCBhbmQgZW5kIHRhZ3MsIGVsZW1lbnRzIGFyZSBuZXN0ZWQgYWNjb3JkaW5nIHRvIHRoZWlyIHNwZWNpZmljYXRpb25zLCBlbGVtZW50cyBkbyBub3QgY29udGFpbiBkdXBsaWNhdGUgYXR0cmlidXRlcywgYW5kIGFueSBJRHMgYXJlIHVuaXF1ZSwgZXhjZXB0IHdoZXJlIHRoZSBzcGVjaWZpY2F0aW9ucyBhbGxvdyB0aGVzZSBmZWF0dXJlcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VsZW1fVW5pcXVlSWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9FbGVtX1VuaXF1ZUFjY2Vzc0tleVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiNC4xLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk5hbWUsIFJvbGUsIFZhbHVlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBhbGwgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50cyAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGZvcm0gZWxlbWVudHMsIGxpbmtzIGFuZCBjb21wb25lbnRzIGdlbmVyYXRlZCBieSBzY3JpcHRzKSwgdGhlIG5hbWUgYW5kIHJvbGUgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZDsgc3RhdGVzLCBwcm9wZXJ0aWVzLCBhbmQgdmFsdWVzIHRoYXQgY2FuIGJlIHNldCBieSB0aGUgdXNlciBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBzZXQ7IGFuZCBub3RpZmljYXRpb24gb2YgY2hhbmdlcyB0byB0aGVzZSBpdGVtcyBpcyBhdmFpbGFibGUgdG8gdXNlciBhZ2VudHMsIGluY2x1ZGluZyBhc3Npc3RpdmUgdGVjaG5vbG9naWVzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfTGFiZWxfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUm9sZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInRhYmxlX2FyaWFfZGVzY2VuZGFudHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5VmFsdWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZElkUmVmXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRQcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfRW1wdHlQcm9wZXJ0eVZhbHVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9JbWdBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FyaWFfU3ZnQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19DYW52YXNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9zZW1hbnRpY3Nfcm9sZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfc2VtYW50aWNzX2F0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkQ2hpbGRyZW5fTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZFBhcmVudF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0V2ZW50SGFuZGxlck1pc3NpbmdSb2xlX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfV2lkZ2V0TGFiZWxzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19MaXN0X0dyb3VwX0xpc3RJdGVtXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BY3RpdmVEZXNjZW5kYW50Q2hlY2tcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZVRvb2xiYXJVbmlxdWVMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X3ZlcnNpb25cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9wb3B1cF9yZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9oYXNwb3B1cFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2ZvY3VzYWJsZV9lbGVtZW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2FjdGl2ZV9kZXNjZW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfYXV0b2NvbXBsZXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9oaWRkZW5fZm9jdXNfbWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICBdXG59LFxue1xuICAgIGlkOiBcIldDQUdfMl8xXCIsXG4gICAgbmFtZTogXCJXQ0FHIDIuMSAoQSwgQUEpXCIsXG4gICAgY2F0ZWdvcnk6IGVSdWxlQ2F0ZWdvcnkuQUNDRVNTSUJJTElUWSxcbiAgICBkZXNjcmlwdGlvbjogXCJSdWxlcyBmb3IgV0NBRyAyLjEgQUEuIFRoaXMgaXMgdGhlIGN1cnJlbnQgVzNDIHJlY29tbWVuZGF0aW9uLiBDb250ZW50IHRoYXQgY29uZm9ybXMgdG8gV0NBRyAyLjEgYWxzbyBjb25mb3JtcyB0byBXQ0FHIDIuMC5cIixcbiAgICBcImNoZWNrcG9pbnRzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjEuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTm9uLXRleHQgQ29udGVudFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbGwgbm9uLXRleHQgY29udGVudCB0aGF0IGlzIHByZXNlbnRlZCB0byB0aGUgdXNlciBoYXMgYSB0ZXh0IGFsdGVybmF0aXZlIHRoYXQgc2VydmVzIHRoZSBlcXVpdmFsZW50IHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSW1nX1VzZW1hcFZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX09iamVjdF9IYXNUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FwcGxldF9IYXNBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BcmVhX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9JbWdfQWx0Q29tbW9uTWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0ltZ19Mb25nRGVzY3JpcHRpb24yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19IYXNBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfUHJlX0FTQ0lJQXJ0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0F1ZGlvVmlkZW9BbHRGaWxlbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19UaXRsZUVtcHR5V2hlbkFsdE51bGxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0ltZ19Vc2VtYXBBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGV4dF9FbW90aWNvbnNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX1ByZXNlbnRhdGlvbkltZ0hhc05vbk51bGxBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0ZpZ3VyZV9sYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0FsdEJyaWVmXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRW1iZWRfSGFzTm9FbWJlZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbWJlZF9IYXNBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU3R5bGVfVHJpZ2dlcjJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0NhbnZhc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8tb25seSBhbmQgVmlkZW8tb25seSAoUHJlcmVjb3JkZWQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBwcmVyZWNvcmRlZCBhdWRpby1vbmx5IG9yIHZpZGVvLW9ubHkgbWVkaWEsIGFuIGFsdGVybmF0aXZlIHByb3ZpZGVzIGVxdWl2YWxlbnQgaW5mb3JtYXRpb24uXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9BdWRpb1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNhcHRpb25zIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ2FwdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBhbGwgcHJlcmVjb3JkZWQgYXVkaW8gY29udGVudCBpbiBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMi4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpbyBEZXNjcmlwdGlvbiBvciBNZWRpYSBBbHRlcm5hdGl2ZSAoUHJlcmVjb3JkZWQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFuIGFsdGVybmF0aXZlIGZvciB0aW1lLWJhc2VkIG1lZGlhIG9yIGF1ZGlvIGRlc2NyaXB0aW9uIG9mIHRoZSBwcmVyZWNvcmRlZCB2aWRlbyBjb250ZW50IGlzIHByb3ZpZGVkIGZvciBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNhcHRpb25zIChMaXZlKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ2FwdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBhbGwgbGl2ZSBhdWRpbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvT2JqZWN0VHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkF1ZGlvIERlc2NyaXB0aW9uIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkF1ZGlvIGRlc2NyaXB0aW9uIGlzIHByb3ZpZGVkIGZvciBhbGwgcHJlcmVjb3JkZWQgdmlkZW8gY29udGVudCBpbiBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkluZm8gYW5kIFJlbGF0aW9uc2hpcHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW5mb3JtYXRpb24sIHN0cnVjdHVyZSwgYW5kIHJlbGF0aW9uc2hpcHMgY29udmV5ZWQgdGhyb3VnaCBwcmVzZW50YXRpb24gY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCBvciBhcmUgYXZhaWxhYmxlIGluIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInRhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LCAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IZWFkZXJzX0Zld1dvcmRzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrcXVvdGVfSGFzQ2l0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTGFiZWxfVW5pcXVlRm9yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0xpc3RfVXNlTWFya3VwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfQ2FwdGlvbl9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9DYXB0aW9uX0luVGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RhYmxlX0RhdGFIZWFkaW5nc0FyaWFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfTGFiZWxfUmVmVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU3R5bGVfQmVmb3JlQWZ0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9MaXN0X01pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0luRmllbGRTZXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UYWJsZV9MYXlvdXRUcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX1N0cnVjdHVyZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMy4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJNZWFuaW5nZnVsIFNlcXVlbmNlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldoZW4gdGhlIHNlcXVlbmNlIGluIHdoaWNoIGNvbnRlbnQgaXMgcHJlc2VudGVkIGFmZmVjdHMgaXRzIG1lYW5pbmcsIGEgY29ycmVjdCByZWFkaW5nIHNlcXVlbmNlIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfRWxlbV9EaXJWYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RleHRfTGV0dGVyU3BhY2luZ1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlNlbnNvcnkgQ2hhcmFjdGVyaXN0aWNzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkluc3RydWN0aW9ucyBwcm92aWRlZCBmb3IgdW5kZXJzdGFuZGluZyBhbmQgb3BlcmF0aW5nIGNvbnRlbnQgZG8gbm90IHJlbHkgc29sZWx5IG9uIHNlbnNvcnkgY2hhcmFjdGVyaXN0aWNzIG9mIGNvbXBvbmVudHMgc3VjaCBhcyBzaGFwZSwgc2l6ZSwgdmlzdWFsIGxvY2F0aW9uLCBvcmllbnRhdGlvbiwgb3Igc291bmQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UZXh0X1NlbnNvcnlSZWZlcmVuY2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiT3JpZW50YXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29udGVudCBkb2VzIG5vdCByZXN0cmljdCBpdHMgdmlldyBhbmQgb3BlcmF0aW9uIHRvIGEgc2luZ2xlIGRpc3BsYXkgb3JpZW50YXRpb24sIHN1Y2ggYXMgcG9ydHJhaXQgb3IgbGFuZHNjYXBlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMy41XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJJZGVudGlmeSBJbnB1dCBQdXJwb3NlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgcHVycG9zZSBvZiBlYWNoIGlucHV0IGZpZWxkIHRoYXQgY29sbGVjdHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHVzZXIgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCB3aGVuIHRoZSBmaWVsZCBzZXJ2ZXMgYSBjb21tb24gcHVycG9zZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIxX0lucHV0X0F1dG9jb21wbGV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlVzZSBvZiBDb2xvclwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb2xvciBpcyBub3QgdXNlZCBhcyB0aGUgb25seSB2aXN1YWwgbWVhbnMgb2YgY29udmV5aW5nIGluZm9ybWF0aW9uLCBpbmRpY2F0aW5nIGFuIGFjdGlvbiwgcHJvbXB0aW5nIGEgcmVzcG9uc2UsIG9yIGRpc3Rpbmd1aXNoaW5nIGEgdmlzdWFsIGVsZW1lbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9Gb250X0NvbG9ySW5Gb3JtXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1N0eWxlX0NvbG9yU2VtYW50aWNzMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpbyBDb250cm9sXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGFueSBhdWRpbyBwbGF5cyBhdXRvbWF0aWNhbGx5IGZvciBtb3JlIHRoYW4gMyBzZWNvbmRzLCBlaXRoZXIgYSBtZWNoYW5pc20gaXMgYXZhaWxhYmxlIHRvIHBhdXNlIG9yIHN0b3AgdGhlIGF1ZGlvLCBvciBhIG1lY2hhbmlzbSBpcyBhdmFpbGFibGUgdG8gY29udHJvbCBhdWRpbyB2b2x1bWUgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBvdmVyYWxsIHN5c3RlbSB2b2x1bWUgbGV2ZWwuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbWJlZF9BdXRvU3RhcnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29udHJhc3QgKE1pbmltdW0pXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgdmlzdWFsIHByZXNlbnRhdGlvbiBvZiB0ZXh0IGFuZCBpbWFnZXMgb2YgdGV4dCBoYXMgYSBjb250cmFzdCByYXRpbyBvZiBhdCBsZWFzdCA0LjU6MSwgd2l0aCBhIDM6MSByYXRpbyBmb3IgbGFyZ2Utc2NhbGUgdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Db2xvcl9Db250cmFzdF9XQ0FHMkFBX1BWXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlJlc2l6ZSBUZXh0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUZXh0IGNhbiBiZSByZXNpemVkIHdpdGhvdXQgYXNzaXN0aXZlIHRlY2hub2xvZ3kgdXAgdG8gMjAwIHBlcmNlbnQgd2l0aG91dCBsb3NzIG9mIGNvbnRlbnQgb3IgZnVuY3Rpb25hbGl0eS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIxX1N0eWxlX1ZpZXdwb3J0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuNVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiSW1hZ2VzIG9mIFRleHRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIHRoZSB0ZWNobm9sb2dpZXMgYmVpbmcgdXNlZCBjYW4gYWNoaWV2ZSB0aGUgdmlzdWFsIHByZXNlbnRhdGlvbiwgdGV4dCBpcyB1c2VkIHRvIGNvbnZleSBpbmZvcm1hdGlvbiByYXRoZXIgdGhhbiBpbWFnZXMgb2YgdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuMTBcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlJlZmxvd1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29udGVudCBjYW4gcmVmbG93IHdpdGhvdXQgbG9zcyBvZiBpbmZvcm1hdGlvbiBvciBmdW5jdGlvbmFsaXR5LCBhbmQgd2l0aG91dCByZXF1aXJpbmcgc2Nyb2xsaW5nIGluIHR3byBkaW1lbnNpb25zLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTm9uLXRleHQgQ29udHJhc3RcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBwYXJ0cyBvZiBncmFwaGljYWwgb2JqZWN0cyByZXF1aXJlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZW50LCBhbmQgdGhlIHZpc3VhbCBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpZGVudGlmeSBVSSBjb21wb25lbnRzIGFuZCBzdGF0ZXMsIGhhdmUgYSBjb250cmFzdCByYXRpbyBvZiBhdCBsZWFzdCAzOjEgYWdhaW5zdCBhZGphY2VudCBjb2xvcnMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjEyXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJUZXh0IFNwYWNpbmdcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIk5vIGxvc3Mgb2YgY29udGVudCBvciBmdW5jdGlvbmFsaXR5IG9jY3VycyB3aGVuIHVzZXJzIGNoYW5nZSBsZXR0ZXIsIHdvcmQgYW5kIHBhcmFncmFwaCBzcGFjaW5nLCBhcyB3ZWxsIGFzIGxpbmUgaGVpZ2h0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29udGVudCBvbiBIb3ZlciBvciBGb2N1c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2hlcmUgaG92ZXIgb3IgZm9jdXMgYWN0aW9ucyBjYXVzZSBhZGRpdGlvbmFsIGNvbnRlbnQgdG8gYmVjb21lIHZpc2libGUgYW5kIGhpZGRlbiwgdGhlIGFkZGl0aW9uYWwgY29udGVudCBpcyBkaXNtaXNzYWJsZSwgaG92ZXJhYmxlIGFuZCBwZXJzaXN0ZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJLZXlib2FyZFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgY29udGVudCBpcyBvcGVyYWJsZSB0aHJvdWdoIGEga2V5Ym9hcmQgaW50ZXJmYWNlIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpZmljIHRpbWluZ3MgZm9yIGluZGl2aWR1YWwga2V5c3Ryb2tlcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0VsZW1fRXZlbnRNb3VzZUFuZEtleVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfSW52YWxpZFRhYmluZGV4Rm9yQWN0aXZlZGVzY2VuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX01pc3NpbmdGb2N1c2FibGVDaGlsZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX01pc3NpbmdLZXlib2FyZEhhbmRsZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0F1ZGlvX1ZpZGVvX1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FwcGxpY2F0aW9uX1JvbGVfVGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJObyBLZXlib2FyZCBUcmFwXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIklmIGtleWJvYXJkIGZvY3VzIGNhbiBiZSBtb3ZlZCB0byBhIGNvbXBvbmVudCB1c2luZyBhIGtleWJvYXJkIGludGVyZmFjZSwgdGhlbiBmb2N1cyBjYW4gYmUgbW92ZWQgYXdheSBmcm9tIHRoYXQgY29tcG9uZW50IHVzaW5nIG9ubHkgYSBrZXlib2FyZCBpbnRlcmZhY2UsIGFuZCwgaWYgaXQgcmVxdWlyZXMgbW9yZSB0aGFuIHVubW9kaWZpZWQgYXJyb3cgb3IgdGFiIGtleXMgb3Igb3RoZXIgc3RhbmRhcmQgZXhpdCBtZXRob2RzLCB0aGUgdXNlciBpcyBhZHZpc2VkIG9mIHRoZSBtZXRob2QgZm9yIG1vdmluZyBmb2N1cyBhd2F5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX01lZGlhX0RvY3VtZW50VHJpZ2dlcjJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMS40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDaGFyYWN0ZXIgS2V5IFNob3J0Y3V0c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhIGtleWJvYXJkIHNob3J0Y3V0IGlzIGltcGxlbWVudGVkIHVzaW5nIG9ubHkgbGV0dGVyLCBwdW5jdHVhdGlvbiwgbnVtYmVyIG9yIHN5bWJvbCBjaGFyYWN0ZXJzLCB0aGVuIHRoZSBzaG9ydGN1dCBjYW4gYmUgdHVybmVkIG9mZiwgcmVtYXBwZWQgb3IgYWN0aXZhdGVkIG9ubHkgb24gZm9jdXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4yLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlRpbWluZyBBZGp1c3RhYmxlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBlYWNoIHRpbWUgbGltaXQgdGhhdCBpcyBzZXQgYnkgdGhlIGNvbnRlbnQsIHRoZSB1c2VyIGNhbiB0dXJuIG9mZiwgYWRqdXN0LCBvciBleHRlbmQgdGhlIGxpbWl0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWV0YV9SZWZyZXNoXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMi4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJQYXVzZSwgU3RvcCwgSGlkZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgbW92aW5nLCBibGlua2luZywgc2Nyb2xsaW5nLCBvciBhdXRvLXVwZGF0aW5nIGluZm9ybWF0aW9uLCB0aGUgdXNlciBjYW4gcGF1c2UsIHN0b3AsIGhpZGUgb3IgYWRqdXN0IHRoZSBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01hcnF1ZWVfVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0JsaW5rX0Fsd2F5c1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxpbmtfQ1NTVHJpZ2dlcjFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVGhyZWUgRmxhc2hlcyBvciBCZWxvdyBUaHJlc2hvbGRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29udGVudCBkb2VzIG5vdCBjb250YWluIGFueXRoaW5nIHRoYXQgZmxhc2hlcyBtb3JlIHRoYW4gdGhyZWUgdGltZXMgaW4gYW55IG9uZSBzZWNvbmQgcGVyaW9kLCBvciB0aGUgZmxhc2ggaXMgYmVsb3cgdGhlIGdlbmVyYWwgZmxhc2ggYW5kIHJlZCBmbGFzaCB0aHJlc2hvbGRzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJCeXBhc3MgQmxvY2tzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkEgbWVjaGFuaXNtIGlzIGF2YWlsYWJsZSB0byBieXBhc3MgYmxvY2tzIG9mIGNvbnRlbnQgdGhhdCBhcmUgcmVwZWF0ZWQgb24gbXVsdGlwbGUgV2ViIHBhZ2VzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRnJhbWVfSGFzVGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IdG1sX1NraXBOYXZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfRnJhbWVfU3JjSHRtbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXBwbGljYXRpb25MYW5kbWFya3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0FwcGxpY2F0aW9uTGFuZG1hcmtMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0JvZHlfRmlyc3RBQ29udGFpbnNTa2lwVGV4dF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQmFubmVyTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlRm9ybUxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVOYXZpZ2F0aW9uTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvSW5TaWJsaW5nU2V0X0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBhZ2UgVGl0bGVkXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldlYiBwYWdlcywgbm9uLXdlYiBkb2N1bWVudHMsIGFuZCBzb2Z0d2FyZSBoYXZlIHRpdGxlcyB0aGF0IGRlc2NyaWJlIHRvcGljIG9yIHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Eb2NfSGFzVGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfVGl0bGVfVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRm9jdXMgT3JkZXJcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgY29udGVudCBjYW4gYmUgbmF2aWdhdGVkIHNlcXVlbnRpYWxseSBhbmQgdGhlIG5hdmlnYXRpb24gc2VxdWVuY2VzIGFmZmVjdCBtZWFuaW5nIG9yIG9wZXJhdGlvbiwgZm9jdXNhYmxlIGNvbXBvbmVudHMgcmVjZWl2ZSBmb2N1cyBpbiBhbiBvcmRlciB0aGF0IHByZXNlcnZlcyBtZWFuaW5nIGFuZCBvcGVyYWJpbGl0eS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Gb2N1c19UYWJiYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIklCTUFfRm9jdXNfTXVsdGlUYWJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGluayBQdXJwb3NlIChJbiBDb250ZXh0KVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgcHVycG9zZSBvZiBlYWNoIGxpbmsgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgbGluayB0ZXh0IGFsb25lIG9yIGZyb20gdGhlIGxpbmsgdGV4dCB0b2dldGhlciB3aXRoIGl0cyBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQgbGluayBjb250ZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQV9IYXNUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk11bHRpcGxlIFdheXNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIk1vcmUgdGhhbiBvbmUgd2F5IGlzIGF2YWlsYWJsZSB0byBsb2NhdGUgYSBXZWIgcGFnZSB3aXRoaW4gYSBzZXQgb2YgV2ViIHBhZ2VzLCBleGNlcHQgd2hlcmUgdGhlIFdlYiBQYWdlIGlzIHRoZSByZXN1bHQgb2YsIG9yIGEgc3RlcCBpbiwgYSBwcm9jZXNzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC42XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJIZWFkaW5ncyBhbmQgTGFiZWxzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJIZWFkaW5ncyBhbmQgbGFiZWxzIGRlc2NyaWJlIHRvcGljIG9yIHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IZWFkZXJfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC43XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGb2N1cyBWaXNpYmxlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbnkga2V5Ym9hcmQgb3BlcmFibGUgdXNlciBpbnRlcmZhY2UgaGFzIGEgbW9kZSBvZiBvcGVyYXRpb24gd2hlcmUgdGhlIGtleWJvYXJkIGZvY3VzIGluZGljYXRvciBpcyB2aXNpYmxlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU3R5bGVfSGluZGVyRm9jdXMxXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi41LjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBvaW50ZXIgR2VzdHVyZXNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQWxsIGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VzIG11bHRpcG9pbnQgb3IgcGF0aC1iYXNlZCBnZXN0dXJlcyBmb3Igb3BlcmF0aW9uIGNhbiBiZSBvcGVyYXRlZCB3aXRoIGEgc2luZ2xlIHBvaW50ZXIgd2l0aG91dCBhIHBhdGgtYmFzZWQgZ2VzdHVyZS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjUuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUG9pbnRlciBDYW5jZWxsYXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGZ1bmN0aW9uYWxpdHkgdGhhdCBjYW4gYmUgb3BlcmF0ZWQgdXNpbmcgYSBzaW5nbGUgcG9pbnRlciwgY29tcGxldGlvbiBvZiB0aGUgZnVuY3Rpb24gaXMgb24gdGhlIHVwLWV2ZW50IHdpdGggYW4gYWJpbGl0eSB0byBhYm9ydCwgdW5kbyBvciByZXZlcnNlIHRoZSBvdXRjb21lLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNS4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYWJlbCBpbiBOYW1lXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciB1c2VyIGludGVyZmFjZSBjb21wb25lbnRzIHdpdGggbGFiZWxzIHRoYXQgaW5jbHVkZSB0ZXh0IG9yIGltYWdlcyBvZiB0ZXh0LCB0aGUgYWNjZXNzaWJsZSBuYW1lIGNvbnRhaW5zIHRoZSB0ZXh0IHRoYXQgaXMgcHJlc2VudGVkIHZpc3VhbGx5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjFfTGFiZWxfQWNjZXNzaWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNS40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJNb3Rpb24gQWN0dWF0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZ1bmN0aW9uYWxpdHkgdGhhdCBjYW4gYmUgb3BlcmF0ZWQgYnkgbW90aW9uIGNhbiBhbHNvIGJlIG9wZXJhdGVkIGJ5IHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudHMsIGFuZCB0aGUgbW90aW9uIHRyaWdnZXIgY2FuIGJlIGRpc2FibGVkLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMS4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYW5ndWFnZSBvZiBQYWdlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBkZWZhdWx0IGh1bWFuIGxhbmd1YWdlIG9mIFdlYiBwYWdlcywgbm9uLVdlYiBkb2N1bWVudHMsIG9yIHNvZnR3YXJlIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9IdG1sX0hhc0xhbmdcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjEuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGFuZ3VhZ2Ugb2YgUGFydHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIlRoZSBodW1hbiBsYW5ndWFnZSBvZiBlYWNoIHBhc3NhZ2Ugb3IgcGhyYXNlIGluIHRoZSBjb250ZW50IGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9FbGVtX0xhbmdfVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJPbiBGb2N1c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJXaGVuIGFueSBjb21wb25lbnQgcmVjZWl2ZXMgZm9jdXMsIGl0IGRvZXMgbm90IGluaXRpYXRlIGEgY2hhbmdlIG9mIGNvbnRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TZWxlY3RfTm9DaGFuZ2VBY3Rpb25cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9TY3JpcHRfRm9jdXNCbHVyc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJPbiBJbnB1dFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDaGFuZ2luZyB0aGUgc2V0dGluZyBvZiBhbnkgdXNlciBpbnRlcmZhY2UgY29tcG9uZW50IGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY2F1c2UgYSBjaGFuZ2Ugb2YgY29udGV4dCB1bmxlc3MgdGhlIHVzZXIgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgYmVoYXZpb3IgYmVmb3JlIHVzaW5nIHRoZSBjb21wb25lbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BX1RhcmdldEFuZFRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0Zvcm1fSGFzU3VibWl0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRm9ybV9UYXJnZXRBbmRUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfSGFzT25jaGFuZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9Gb3JtX0NoYW5nZUVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDb25zaXN0ZW50IE5hdmlnYXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIk5hdmlnYXRpb25hbCBtZWNoYW5pc21zIHRoYXQgYXJlIHJlcGVhdGVkIG9uIG11bHRpcGxlIFdlYiBwYWdlcyB3aXRoaW4gYSBzZXQgb2YgV2ViIHBhZ2VzIG9jY3VyIGluIHRoZSBzYW1lIHJlbGF0aXZlIG9yZGVyIGVhY2ggdGltZSB0aGV5IGFyZSByZXBlYXRlZCwgdW5sZXNzIGEgY2hhbmdlIGlzIGluaXRpYXRlZCBieSB0aGUgdXNlci5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjIuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ29uc2lzdGVudCBJZGVudGlmaWNhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29tcG9uZW50cyB0aGF0IGhhdmUgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSB3aXRoaW4gYSBzZXQgb2YgV2ViIHBhZ2VzIGFyZSBpZGVudGlmaWVkIGNvbnNpc3RlbnRseS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRXJyb3IgSWRlbnRpZmljYXRpb25cIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgYW4gaW5wdXQgZXJyb3IgaXMgYXV0b21hdGljYWxseSBkZXRlY3RlZCwgdGhlIGl0ZW0gdGhhdCBpcyBpbiBlcnJvciBpcyBpZGVudGlmaWVkIGFuZCB0aGUgZXJyb3IgaXMgZGVzY3JpYmVkIHRvIHRoZSB1c2VyIGluIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9FcnJvck1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGFiZWxzIG9yIEluc3RydWN0aW9uc1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJMYWJlbHMgb3IgaW5zdHJ1Y3Rpb25zIGFyZSBwcm92aWRlZCB3aGVuIGNvbnRlbnQgcmVxdWlyZXMgdXNlciBpbnB1dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0xhYmVsQmVmb3JlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0xhYmVsQWZ0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FjY2Vzc2tleV9OZWVkTGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9Pcl9IVE1MNV9BdHRyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19JbnB1dF9QbGFjZWhvbGRlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9WaXNpYmxlTGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIzLjMuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRXJyb3IgU3VnZ2VzdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgYW4gaW5wdXQgZXJyb3IgaXMgYXV0b21hdGljYWxseSBkZXRlY3RlZCBhbmQgc3VnZ2VzdGlvbnMgZm9yIGNvcnJlY3Rpb24gYXJlIGtub3duLCB0aGVuIHRoZSBzdWdnZXN0aW9ucyBhcmUgcHJvdmlkZWQgdG8gdGhlIHVzZXIsIHVubGVzcyBpdCB3b3VsZCBqZW9wYXJkaXplIHRoZSBzZWN1cml0eSBvciBwdXJwb3NlIG9mIHRoZSBjb250ZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFcnJvciBQcmV2ZW50aW9uIChMZWdhbCwgRmluYW5jaWFsLCBEYXRhKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGNvbnRlbnQgdGhhdCBjYXVzZSBsZWdhbCBjb21taXRtZW50cyBvciBmaW5hbmNpYWwgdHJhbnNhY3Rpb25zIGZvciB0aGUgdXNlciB0byBvY2N1ciwgdGhhdCBtb2RpZnkgb3IgZGVsZXRlIHVzZXItY29udHJvbGxhYmxlIGRhdGEgaW4gZGF0YSBzdG9yYWdlIHN5c3RlbXMsIG9yIHRoYXQgc3VibWl0IHVzZXIgdGVzdCByZXNwb25zZXMsIHRoZSB1c2VyIGNhbiByZXZlcnNlLCBjb3JyZWN0LCBvciBjb25maXJtIHRoZSBhY3Rpb24uXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiNC4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBhcnNpbmdcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW4gY29udGVudCBpbXBsZW1lbnRlZCB1c2luZyBtYXJrdXAgbGFuZ3VhZ2VzLCBlbGVtZW50cyBoYXZlIGNvbXBsZXRlIHN0YXJ0IGFuZCBlbmQgdGFncywgZWxlbWVudHMgYXJlIG5lc3RlZCBhY2NvcmRpbmcgdG8gdGhlaXIgc3BlY2lmaWNhdGlvbnMsIGVsZW1lbnRzIGRvIG5vdCBjb250YWluIGR1cGxpY2F0ZSBhdHRyaWJ1dGVzLCBhbmQgYW55IElEcyBhcmUgdW5pcXVlLCBleGNlcHQgd2hlcmUgdGhlIHNwZWNpZmljYXRpb25zIGFsbG93IHRoZXNlIGZlYXR1cmVzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRWxlbV9VbmlxdWVJZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0VsZW1fVW5pcXVlQWNjZXNzS2V5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCI0LjEuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTmFtZSwgUm9sZSwgVmFsdWVcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiRm9yIGFsbCB1c2VyIGludGVyZmFjZSBjb21wb25lbnRzIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZm9ybSBlbGVtZW50cywgbGlua3MgYW5kIGNvbXBvbmVudHMgZ2VuZXJhdGVkIGJ5IHNjcmlwdHMpLCB0aGUgbmFtZSBhbmQgcm9sZSBjYW4gYmUgcHJvZ3JhbW1hdGljYWxseSBkZXRlcm1pbmVkOyBzdGF0ZXMsIHByb3BlcnRpZXMsIGFuZCB2YWx1ZXMgdGhhdCBjYW4gYmUgc2V0IGJ5IHRoZSB1c2VyIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IHNldDsgYW5kIG5vdGlmaWNhdGlvbiBvZiBjaGFuZ2VzIHRvIHRoZXNlIGl0ZW1zIGlzIGF2YWlsYWJsZSB0byB1c2VyIGFnZW50cywgaW5jbHVkaW5nIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9MYWJlbF9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRSb2xlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwidGFibGVfYXJpYV9kZXNjZW5kYW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlWYWx1ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkSWRSZWZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZFByb3BlcnRpZXNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9FbXB0eVByb3BlcnR5VmFsdWVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZFByb3BlcnR5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX0ltZ0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXJpYV9TdmdBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0NhbnZhc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhcmlhX3NlbWFudGljc19yb2xlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiYXJpYV9zZW1hbnRpY3NfYXR0cmlidXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRDaGlsZHJlbl9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkUGFyZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfRXZlbnRIYW5kbGVyTWlzc2luZ1JvbGVfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9XaWRnZXRMYWJlbHNfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0xpc3RfR3JvdXBfTGlzdEl0ZW1cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FjdGl2ZURlc2NlbmRhbnRDaGVja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlVG9vbGJhclVuaXF1ZUxhYmVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfdmVyc2lvblwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X3BvcHVwX3JlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2hhc3BvcHVwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfZm9jdXNhYmxlX2VsZW1lbnRzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfYWN0aXZlX2Rlc2NlbmRhbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9hdXRvY29tcGxldGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhcmlhX2hpZGRlbl9mb2N1c19taXN1c2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIF1cbn0sXG57XG4gICAgaWQ6IFwiV0NBR18yXzBcIixcbiAgICBuYW1lOiBcIldDQUcgMi4wIChBLCBBQSlcIixcbiAgICBjYXRlZ29yeTogZVJ1bGVDYXRlZ29yeS5BQ0NFU1NJQklMSVRZLFxuICAgIGRlc2NyaXB0aW9uOiBcIlJ1bGVzIGZvciBXQ0FHIDIuMCBBQS4gUmVmZXJlbmNlZCBieSBVUyBTZWN0aW9uIDUwOCwgYnV0IG5vdCB0aGUgbGF0ZXN0IFczQyByZWNvbW1lbmRhdGlvbi5cIixcbiAgICBcImNoZWNrcG9pbnRzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjEuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTm9uLXRleHQgQ29udGVudFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbGwgbm9uLXRleHQgY29udGVudCB0aGF0IGlzIHByZXNlbnRlZCB0byB0aGUgdXNlciBoYXMgYSB0ZXh0IGFsdGVybmF0aXZlIHRoYXQgc2VydmVzIHRoZSBlcXVpdmFsZW50IHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9FeHBsaWNpdExhYmVsSW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfSW1nX1VzZW1hcFZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX09iamVjdF9IYXNUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FwcGxldF9IYXNBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfRXhwbGljaXRMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9BcmVhX0hhc0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9JbWdfQWx0Q29tbW9uTWlzdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0ltZ19Mb25nRGVzY3JpcHRpb24yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19IYXNBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfUHJlX0FTQ0lJQXJ0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0F1ZGlvVmlkZW9BbHRGaWxlbmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9CYWNrZ3JvdW5kSW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX0xpbmtUZXh0Tm90UmVkdW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0ltZ19UaXRsZUVtcHR5V2hlbkFsdE51bGxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0ltZ19Vc2VtYXBBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGV4dF9FbW90aWNvbnNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW1nX1ByZXNlbnRhdGlvbkltZ0hhc05vbk51bGxBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0ZpZ3VyZV9sYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX0FsdEJyaWVmXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRW1iZWRfSGFzTm9FbWJlZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9GT1VSXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbWJlZF9IYXNBbHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU3R5bGVfVHJpZ2dlcjJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQmFja2dyb3VuZEltZ19IYXNUZXh0T3JUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9Ob2VtYmVkX0hhc0NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfRk9VUlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0NhbnZhc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjIuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8tb25seSBhbmQgVmlkZW8tb25seSAoUHJlcmVjb3JkZWQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBwcmVyZWNvcmRlZCBhdWRpby1vbmx5IG9yIHZpZGVvLW9ubHkgbWVkaWEsIGFuIGFsdGVybmF0aXZlIHByb3ZpZGVzIGVxdWl2YWxlbnQgaW5mb3JtYXRpb24uXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9BdWRpb1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNhcHRpb25zIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ2FwdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBhbGwgcHJlcmVjb3JkZWQgYXVkaW8gY29udGVudCBpbiBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfVmlkZW9fSGFzTm9UcmFja1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuMi4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBdWRpbyBEZXNjcmlwdGlvbiBvciBNZWRpYSBBbHRlcm5hdGl2ZSAoUHJlcmVjb3JkZWQpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFuIGFsdGVybmF0aXZlIGZvciB0aW1lLWJhc2VkIG1lZGlhIG9yIGF1ZGlvIGRlc2NyaXB0aW9uIG9mIHRoZSBwcmVyZWNvcmRlZCB2aWRlbyBjb250ZW50IGlzIHByb3ZpZGVkIGZvciBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNhcHRpb25zIChMaXZlKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ2FwdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBhbGwgbGl2ZSBhdWRpbyBjb250ZW50IGluIHN5bmNocm9uaXplZCBtZWRpYS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19WaWRlb19IYXNOb1RyYWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01lZGlhX1ZpZGVvT2JqZWN0VHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4yLjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkF1ZGlvIERlc2NyaXB0aW9uIChQcmVyZWNvcmRlZClcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkF1ZGlvIGRlc2NyaXB0aW9uIGlzIHByb3ZpZGVkIGZvciBhbGwgcHJlcmVjb3JkZWQgdmlkZW8gY29udGVudCBpbiBzeW5jaHJvbml6ZWQgbWVkaWEuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9NZWRpYV9WaWRlb1JlZmVyZW5jZVRyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkluZm8gYW5kIFJlbGF0aW9uc2hpcHNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW5mb3JtYXRpb24sIHN0cnVjdHVyZSwgYW5kIHJlbGF0aW9uc2hpcHMgY29udmV5ZWQgdGhyb3VnaCBwcmVzZW50YXRpb24gY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZCBvciBhcmUgYXZhaWxhYmxlIGluIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImxhbmRtYXJrX25hbWVfdW5pcXVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcInRhYmxlX2hlYWRlcnNfcmVmX3ZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LCBcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IZWFkZXJzX0Zld1dvcmRzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrcXVvdGVfSGFzQ2l0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Jsb2NrcXVvdGVfV3JhcHNUZXh0UXVvdGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9CbG9ja19TaG91bGRCZUhlYWRpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTGFiZWxfVW5pcXVlRm9yXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0xpc3RfVXNlTWFya3VwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU2NyaXB0X09uY2xpY2tIVE1MMVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9GaWVsZHNldF9IYXNMZWdlbmRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGFibGVfQ2FwU3VtbVJlZHVuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX1Njb3BlX1ZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1JhZGlvQ2hrSW5GaWVsZFNldFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfQ2FwdGlvbl9IYXNDb250ZW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9DYXB0aW9uX0luVGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfVGFibGVfRGF0YUNlbGxSZWxhdGlvbnNoaXBzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RhYmxlX0RhdGFIZWFkaW5nc0FyaWFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfTGFiZWxfUmVmVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU3R5bGVfQmVmb3JlQWZ0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9MaXN0X01pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfU2VsZWN0X0hhc09wdEdyb3VwXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TY3JpcHRfT25jbGlja0hUTUwyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0luRmllbGRTZXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9UYWJsZV9MYXlvdXRUcmlnZ2VyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX0ZPVVJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1RhYmxlX1N0cnVjdHVyZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS4zLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk1lYW5pbmdmdWwgU2VxdWVuY2VcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiV2hlbiB0aGUgc2VxdWVuY2UgaW4gd2hpY2ggY29udGVudCBpcyBwcmVzZW50ZWQgYWZmZWN0cyBpdHMgbWVhbmluZywgYSBjb3JyZWN0IHJlYWRpbmcgc2VxdWVuY2UgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiVmFsZXJpZV9FbGVtX0RpclZhbGlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfVGV4dF9MZXR0ZXJTcGFjaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjMuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiU2Vuc29yeSBDaGFyYWN0ZXJpc3RpY3NcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIGZvciB1bmRlcnN0YW5kaW5nIGFuZCBvcGVyYXRpbmcgY29udGVudCBkbyBub3QgcmVseSBzb2xlbHkgb24gc2Vuc29yeSBjaGFyYWN0ZXJpc3RpY3Mgb2YgY29tcG9uZW50cyBzdWNoIGFzIHNoYXBlLCBzaXplLCB2aXN1YWwgbG9jYXRpb24sIG9yaWVudGF0aW9uLCBvciBzb3VuZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX1RleHRfU2Vuc29yeVJlZmVyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJVc2Ugb2YgQ29sb3JcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29sb3IgaXMgbm90IHVzZWQgYXMgdGhlIG9ubHkgdmlzdWFsIG1lYW5zIG9mIGNvbnZleWluZyBpbmZvcm1hdGlvbiwgaW5kaWNhdGluZyBhbiBhY3Rpb24sIHByb21wdGluZyBhIHJlc3BvbnNlLCBvciBkaXN0aW5ndWlzaGluZyBhIHZpc3VhbCBlbGVtZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRm9udF9Db2xvckluRm9ybVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9TdHlsZV9Db2xvclNlbWFudGljczFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIxLjQuMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiQXVkaW8gQ29udHJvbFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhbnkgYXVkaW8gcGxheXMgYXV0b21hdGljYWxseSBmb3IgbW9yZSB0aGFuIDMgc2Vjb25kcywgZWl0aGVyIGEgbWVjaGFuaXNtIGlzIGF2YWlsYWJsZSB0byBwYXVzZSBvciBzdG9wIHRoZSBhdWRpbywgb3IgYSBtZWNoYW5pc20gaXMgYXZhaWxhYmxlIHRvIGNvbnRyb2wgYXVkaW8gdm9sdW1lIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgb3ZlcmFsbCBzeXN0ZW0gdm9sdW1lIGxldmVsLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRW1iZWRfQXV0b1N0YXJ0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNvbnRyYXN0IChNaW5pbXVtKVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIHZpc3VhbCBwcmVzZW50YXRpb24gb2YgdGV4dCBhbmQgaW1hZ2VzIG9mIHRleHQgaGFzIGEgY29udHJhc3QgcmF0aW8gb2YgYXQgbGVhc3QgNC41OjEsIHdpdGggYSAzOjEgcmF0aW8gZm9yIGxhcmdlLXNjYWxlIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIklCTUFfQ29sb3JfQ29udHJhc3RfV0NBRzJBQV9QVlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjEuNC40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJSZXNpemUgVGV4dFwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGV4dCBjYW4gYmUgcmVzaXplZCB3aXRob3V0IGFzc2lzdGl2ZSB0ZWNobm9sb2d5IHVwIHRvIDIwMCBwZXJjZW50IHdpdGhvdXQgbG9zcyBvZiBjb250ZW50IG9yIGZ1bmN0aW9uYWxpdHkuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMV9TdHlsZV9WaWV3cG9ydFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMS40LjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkltYWdlcyBvZiBUZXh0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiB0aGUgdGVjaG5vbG9naWVzIGJlaW5nIHVzZWQgY2FuIGFjaGlldmUgdGhlIHZpc3VhbCBwcmVzZW50YXRpb24sIHRleHQgaXMgdXNlZCB0byBjb252ZXkgaW5mb3JtYXRpb24gcmF0aGVyIHRoYW4gaW1hZ2VzIG9mIHRleHQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIktleWJvYXJkXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSBjb250ZW50IGlzIG9wZXJhYmxlIHRocm91Z2ggYSBrZXlib2FyZCBpbnRlcmZhY2Ugd2l0aG91dCByZXF1aXJpbmcgc3BlY2lmaWMgdGltaW5ncyBmb3IgaW5kaXZpZHVhbCBrZXlzdHJva2VzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfRWxlbV9FdmVudE1vdXNlQW5kS2V5XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9JbnZhbGlkVGFiaW5kZXhGb3JBY3RpdmVkZXNjZW5kYW50XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTWlzc2luZ0ZvY3VzYWJsZUNoaWxkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTWlzc2luZ0tleWJvYXJkSGFuZGxlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXVkaW9fVmlkZW9fVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVFdPXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQXBwbGljYXRpb25fUm9sZV9UZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4xLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk5vIEtleWJvYXJkIFRyYXBcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYga2V5Ym9hcmQgZm9jdXMgY2FuIGJlIG1vdmVkIHRvIGEgY29tcG9uZW50IHVzaW5nIGEga2V5Ym9hcmQgaW50ZXJmYWNlLCB0aGVuIGZvY3VzIGNhbiBiZSBtb3ZlZCBhd2F5IGZyb20gdGhhdCBjb21wb25lbnQgdXNpbmcgb25seSBhIGtleWJvYXJkIGludGVyZmFjZSwgYW5kLCBpZiBpdCByZXF1aXJlcyBtb3JlIHRoYW4gdW5tb2RpZmllZCBhcnJvdyBvciB0YWIga2V5cyBvciBvdGhlciBzdGFuZGFyZCBleGl0IG1ldGhvZHMsIHRoZSB1c2VyIGlzIGFkdmlzZWQgb2YgdGhlIG1ldGhvZCBmb3IgbW92aW5nIGZvY3VzIGF3YXkuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfTWVkaWFfRG9jdW1lbnRUcmlnZ2VyMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi4yLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlRpbWluZyBBZGp1c3RhYmxlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkZvciBlYWNoIHRpbWUgbGltaXQgdGhhdCBpcyBzZXQgYnkgdGhlIGNvbnRlbnQsIHRoZSB1c2VyIGNhbiB0dXJuIG9mZiwgYWRqdXN0LCBvciBleHRlbmQgdGhlIGxpbWl0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfTWV0YV9SZWZyZXNoXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfTWV0YV9SZWRpcmVjdFplcm9cIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuMi4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJQYXVzZSwgU3RvcCwgSGlkZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgbW92aW5nLCBibGlua2luZywgc2Nyb2xsaW5nLCBvciBhdXRvLXVwZGF0aW5nIGluZm9ybWF0aW9uLCB0aGUgdXNlciBjYW4gcGF1c2UsIHN0b3AsIGhpZGUgb3IgYWRqdXN0IHRoZSBpbmZvcm1hdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX01hcnF1ZWVfVHJpZ2dlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0JsaW5rX0Fsd2F5c1RyaWdnZXJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfQmxpbmtfQ1NTVHJpZ2dlcjFcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RXT1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjMuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVGhyZWUgRmxhc2hlcyBvciBCZWxvdyBUaHJlc2hvbGRcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiQ29udGVudCBkb2VzIG5vdCBjb250YWluIGFueXRoaW5nIHRoYXQgZmxhc2hlcyBtb3JlIHRoYW4gdGhyZWUgdGltZXMgaW4gYW55IG9uZSBzZWNvbmQgcGVyaW9kLCBvciB0aGUgZmxhc2ggaXMgYmVsb3cgdGhlIGdlbmVyYWwgZmxhc2ggYW5kIHJlZCBmbGFzaCB0aHJlc2hvbGRzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJCeXBhc3MgQmxvY2tzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkEgbWVjaGFuaXNtIGlzIGF2YWlsYWJsZSB0byBieXBhc3MgYmxvY2tzIG9mIGNvbnRlbnQgdGhhdCBhcmUgcmVwZWF0ZWQgb24gbXVsdGlwbGUgV2ViIHBhZ2VzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRnJhbWVfSGFzVGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IdG1sX1NraXBOYXZcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlZhbGVyaWVfRnJhbWVfU3JjSHRtbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVTZWFyY2hMYW5kbWFya3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbXBsZW1lbnRhcnlMYW5kbWFya0xhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQXBwbGljYXRpb25MYW5kbWFya3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0FwcGxpY2F0aW9uTGFuZG1hcmtMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVEb2N1bWVudFJvbGVzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQm9keV9GaXJzdEFTa2lwc19OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0JvZHlfRmlyc3RBQ29udGFpbnNTa2lwVGV4dF9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfT3JwaGFuZWRDb250ZW50X05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlZ2lvbkxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZU1haW5zVmlzaWJsZUxhYmVsX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQmFubmVyTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbXBsZW1lbnRhcnlMYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlQ29udGVudGluZm9MYW5kbWFya3NfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlRm9ybUxhbmRtYXJrc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVOYXZpZ2F0aW9uTGFuZG1hcmtzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUFydGljbGVSb2xlc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVHcm91cFJvbGVzX0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9NdWx0aXBsZUNvbnRlbnRpbmZvSW5TaWJsaW5nU2V0X0ltcGxpY2l0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9PbmVCYW5uZXJJblNpYmxpbmdTZXRfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0NvbnRlbnRpbmZvV2l0aE5vTWFpbl9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9Db21wbGVtZW50YXJ5UmVxdWlyZWRMYWJlbF9JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVSZWdpb25zVW5pcXVlTGFiZWxfSW1wbGljaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX011bHRpcGxlTWFpbnNSZXF1aXJlTGFiZWxfSW1wbGljaXRfMlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlBhZ2UgVGl0bGVkXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldlYiBwYWdlcywgbm9uLXdlYiBkb2N1bWVudHMsIGFuZCBzb2Z0d2FyZSBoYXZlIHRpdGxlcyB0aGF0IGRlc2NyaWJlIHRvcGljIG9yIHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Eb2NfSGFzVGl0bGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfVGl0bGVfVmFsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuM1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRm9jdXMgT3JkZXJcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiSWYgY29udGVudCBjYW4gYmUgbmF2aWdhdGVkIHNlcXVlbnRpYWxseSBhbmQgdGhlIG5hdmlnYXRpb24gc2VxdWVuY2VzIGFmZmVjdCBtZWFuaW5nIG9yIG9wZXJhdGlvbiwgZm9jdXNhYmxlIGNvbXBvbmVudHMgcmVjZWl2ZSBmb2N1cyBpbiBhbiBvcmRlciB0aGF0IHByZXNlcnZlcyBtZWFuaW5nIGFuZCBvcGVyYWJpbGl0eS5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSUJNQV9Gb2N1c19UYWJiYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIklCTUFfRm9jdXNfTXVsdGlUYWJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCIyLjQuNFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiTGluayBQdXJwb3NlIChJbiBDb250ZXh0KVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJUaGUgcHVycG9zZSBvZiBlYWNoIGxpbmsgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgbGluayB0ZXh0IGFsb25lIG9yIGZyb20gdGhlIGxpbmsgdGV4dCB0b2dldGhlciB3aXRoIGl0cyBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQgbGluayBjb250ZW50LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfQV9IYXNUZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9UV09cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMi40LjVcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk11bHRpcGxlIFdheXNcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQUFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIk1vcmUgdGhhbiBvbmUgd2F5IGlzIGF2YWlsYWJsZSB0byBsb2NhdGUgYSBXZWIgcGFnZSB3aXRoaW4gYSBzZXQgb2YgV2ViIHBhZ2VzLCBleGNlcHQgd2hlcmUgdGhlIFdlYiBQYWdlIGlzIHRoZSByZXN1bHQgb2YsIG9yIGEgc3RlcCBpbiwgYSBwcm9jZXNzLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC42XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJIZWFkaW5ncyBhbmQgTGFiZWxzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJIZWFkaW5ncyBhbmQgbGFiZWxzIGRlc2NyaWJlIHRvcGljIG9yIHB1cnBvc2UuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9IZWFkZXJfSGFzQ29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjIuNC43XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGb2N1cyBWaXNpYmxlXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJBbnkga2V5Ym9hcmQgb3BlcmFibGUgdXNlciBpbnRlcmZhY2UgaGFzIGEgbW9kZSBvZiBvcGVyYXRpb24gd2hlcmUgdGhlIGtleWJvYXJkIGZvY3VzIGluZGljYXRvciBpcyB2aXNpYmxlLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJSUFRfU3R5bGVfSGluZGVyRm9jdXMxXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4xLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhbmd1YWdlIG9mIFBhZ2VcIixcbiAgICAgICAgICAgIFwid2NhZ0xldmVsXCI6IFwiQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIGRlZmF1bHQgaHVtYW4gbGFuZ3VhZ2Ugb2YgV2ViIHBhZ2VzLCBub24tV2ViIGRvY3VtZW50cywgb3Igc29mdHdhcmUgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0h0bWxfSGFzTGFuZ1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYW5ndWFnZSBvZiBQYXJ0c1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiVGhlIGh1bWFuIGxhbmd1YWdlIG9mIGVhY2ggcGFzc2FnZSBvciBwaHJhc2UgaW4gdGhlIGNvbnRlbnQgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgZGV0ZXJtaW5lZC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0VsZW1fTGFuZ19WYWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjFcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk9uIEZvY3VzXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIldoZW4gYW55IGNvbXBvbmVudCByZWNlaXZlcyBmb2N1cywgaXQgZG9lcyBub3QgaW5pdGlhdGUgYSBjaGFuZ2Ugb2YgY29udGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NlbGVjdF9Ob0NoYW5nZUFjdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX1NjcmlwdF9Gb2N1c0JsdXJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIk9uIElucHV0XCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkNoYW5naW5nIHRoZSBzZXR0aW5nIG9mIGFueSB1c2VyIGludGVyZmFjZSBjb21wb25lbnQgZG9lcyBub3QgYXV0b21hdGljYWxseSBjYXVzZSBhIGNoYW5nZSBvZiBjb250ZXh0IHVubGVzcyB0aGUgdXNlciBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBiZWhhdmlvciBiZWZvcmUgdXNpbmcgdGhlIGNvbXBvbmVudC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0FfVGFyZ2V0QW5kVGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRm9ybV9IYXNTdWJtaXRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9Gb3JtX1RhcmdldEFuZFRleHRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIldDQUcyMF9JbnB1dF9IYXNPbmNoYW5nZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUlBUX0Zvcm1fQ2hhbmdlRW1wdHlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlJFQ09NTUVOREFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfVEhSRUVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4yLjNcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkNvbnNpc3RlbnQgTmF2aWdhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBQVwiLFxuICAgICAgICAgICAgXCJzdW1tYXJ5XCI6IFwiTmF2aWdhdGlvbmFsIG1lY2hhbmlzbXMgdGhhdCBhcmUgcmVwZWF0ZWQgb24gbXVsdGlwbGUgV2ViIHBhZ2VzIHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMgb2NjdXIgaW4gdGhlIHNhbWUgcmVsYXRpdmUgb3JkZXIgZWFjaCB0aW1lIHRoZXkgYXJlIHJlcGVhdGVkLCB1bmxlc3MgYSBjaGFuZ2UgaXMgaW5pdGlhdGVkIGJ5IHRoZSB1c2VyLlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMi40XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJDb25zaXN0ZW50IElkZW50aWZpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJDb21wb25lbnRzIHRoYXQgaGF2ZSB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5IHdpdGhpbiBhIHNldCBvZiBXZWIgcGFnZXMgYXJlIGlkZW50aWZpZWQgY29uc2lzdGVudGx5LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4xXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFcnJvciBJZGVudGlmaWNhdGlvblwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhbiBpbnB1dCBlcnJvciBpcyBhdXRvbWF0aWNhbGx5IGRldGVjdGVkLCB0aGUgaXRlbSB0aGF0IGlzIGluIGVycm9yIGlzIGlkZW50aWZpZWQgYW5kIHRoZSBlcnJvciBpcyBkZXNjcmliZWQgdG8gdGhlIHVzZXIgaW4gdGV4dC5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX0Vycm9yTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJMYWJlbHMgb3IgSW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFcIixcbiAgICAgICAgICAgIFwic3VtbWFyeVwiOiBcIkxhYmVscyBvciBpbnN0cnVjdGlvbnMgYXJlIHByb3ZpZGVkIHdoZW4gY29udGVudCByZXF1aXJlcyB1c2VyIGlucHV0LlwiLFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfTGFiZWxCZWZvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfSW5wdXRfTGFiZWxBZnRlclwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQWNjZXNza2V5X05lZWRMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuUkVDT01NRU5EQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX09yX0hUTUw1X0F0dHJcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0lucHV0X1BsYWNlaG9sZGVyXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X1Zpc2libGVMYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjMuMy4zXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFcnJvciBTdWdnZXN0aW9uXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJZiBhbiBpbnB1dCBlcnJvciBpcyBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIGFuZCBzdWdnZXN0aW9ucyBmb3IgY29ycmVjdGlvbiBhcmUga25vd24sIHRoZW4gdGhlIHN1Z2dlc3Rpb25zIGFyZSBwcm92aWRlZCB0byB0aGUgdXNlciwgdW5sZXNzIGl0IHdvdWxkIGplb3BhcmRpemUgdGhlIHNlY3VyaXR5IG9yIHB1cnBvc2Ugb2YgdGhlIGNvbnRlbnQuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMy4zLjRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkVycm9yIFByZXZlbnRpb24gKExlZ2FsLCBGaW5hbmNpYWwsIERhdGEpXCIsXG4gICAgICAgICAgICBcIndjYWdMZXZlbFwiOiBcIkFBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgY29udGVudCB0aGF0IGNhdXNlIGxlZ2FsIGNvbW1pdG1lbnRzIG9yIGZpbmFuY2lhbCB0cmFuc2FjdGlvbnMgZm9yIHRoZSB1c2VyIHRvIG9jY3VyLCB0aGF0IG1vZGlmeSBvciBkZWxldGUgdXNlci1jb250cm9sbGFibGUgZGF0YSBpbiBkYXRhIHN0b3JhZ2Ugc3lzdGVtcywgb3IgdGhhdCBzdWJtaXQgdXNlciB0ZXN0IHJlc3BvbnNlcywgdGhlIHVzZXIgY2FuIHJldmVyc2UsIGNvcnJlY3QsIG9yIGNvbmZpcm0gdGhlIGFjdGlvbi5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgXCJudW1cIjogXCI0LjEuMVwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUGFyc2luZ1wiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJJbiBjb250ZW50IGltcGxlbWVudGVkIHVzaW5nIG1hcmt1cCBsYW5ndWFnZXMsIGVsZW1lbnRzIGhhdmUgY29tcGxldGUgc3RhcnQgYW5kIGVuZCB0YWdzLCBlbGVtZW50cyBhcmUgbmVzdGVkIGFjY29yZGluZyB0byB0aGVpciBzcGVjaWZpY2F0aW9ucywgZWxlbWVudHMgZG8gbm90IGNvbnRhaW4gZHVwbGljYXRlIGF0dHJpYnV0ZXMsIGFuZCBhbnkgSURzIGFyZSB1bmlxdWUsIGV4Y2VwdCB3aGVyZSB0aGUgc3BlY2lmaWNhdGlvbnMgYWxsb3cgdGhlc2UgZmVhdHVyZXMuXCIsXG4gICAgICAgICAgICBcInJ1bGVzXCI6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJQVF9FbGVtX1VuaXF1ZUlkXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9USFJFRVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJXQ0FHMjBfRWxlbV9VbmlxdWVBY2Nlc3NLZXlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjQuMS4yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJOYW1lLCBSb2xlLCBWYWx1ZVwiLFxuICAgICAgICAgICAgXCJ3Y2FnTGV2ZWxcIjogXCJBXCIsXG4gICAgICAgICAgICBcInN1bW1hcnlcIjogXCJGb3IgYWxsIHVzZXIgaW50ZXJmYWNlIGNvbXBvbmVudHMgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBmb3JtIGVsZW1lbnRzLCBsaW5rcyBhbmQgY29tcG9uZW50cyBnZW5lcmF0ZWQgYnkgc2NyaXB0cyksIHRoZSBuYW1lIGFuZCByb2xlIGNhbiBiZSBwcm9ncmFtbWF0aWNhbGx5IGRldGVybWluZWQ7IHN0YXRlcywgcHJvcGVydGllcywgYW5kIHZhbHVlcyB0aGF0IGNhbiBiZSBzZXQgYnkgdGhlIHVzZXIgY2FuIGJlIHByb2dyYW1tYXRpY2FsbHkgc2V0OyBhbmQgbm90aWZpY2F0aW9uIG9mIGNoYW5nZXMgdG8gdGhlc2UgaXRlbXMgaXMgYXZhaWxhYmxlIHRvIHVzZXIgYWdlbnRzLCBpbmNsdWRpbmcgYXNzaXN0aXZlIHRlY2hub2xvZ2llcy5cIixcbiAgICAgICAgICAgIFwicnVsZXNcIjogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiV0NBRzIwX0lucHV0X0V4cGxpY2l0TGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJWYWxlcmllX0xhYmVsX0hhc0NvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9WYWxpZFJvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJ0YWJsZV9hcmlhX2Rlc2NlbmRhbnRzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRQcm9wZXJ0eVZhbHVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfVmFsaWRJZFJlZlwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1JlcXVpcmVkUHJvcGVydGllc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX0VtcHR5UHJvcGVydHlWYWx1ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1ZhbGlkUHJvcGVydHlcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJIQUFDX0FyaWFfSW1nQWx0XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiSEFBQ19BcmlhX1N2Z0FsdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQ2FudmFzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5SRUNPTU1FTkRBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX1RIUkVFXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfc2VtYW50aWNzX3JvbGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJhcmlhX3NlbWFudGljc19hdHRyaWJ1dGVcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9SZXF1aXJlZENoaWxkcmVuX05hdGl2ZV9Ib3N0X1NlbWF0aWNzXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfUmVxdWlyZWRQYXJlbnRfTmF0aXZlX0hvc3RfU2VtYXRpY3NcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJScHRfQXJpYV9FdmVudEhhbmRsZXJNaXNzaW5nUm9sZV9OYXRpdmVfSG9zdF9TZW1hdGljc1wiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIlJwdF9BcmlhX1dpZGdldExhYmVsc19JbXBsaWNpdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfTGlzdF9Hcm91cF9MaXN0SXRlbVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIkhBQUNfQWN0aXZlRGVzY2VuZGFudENoZWNrXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiUnB0X0FyaWFfTXVsdGlwbGVUb29sYmFyVW5pcXVlTGFiZWxcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF92ZXJzaW9uXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfcG9wdXBfcmVmZXJlbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT04sXG4gICAgICAgICAgICAgICAgICAgIHRvb2xraXRMZXZlbDogZVRvb2xraXRMZXZlbC5MRVZFTF9PTkVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiY29tYm9ib3hfaGFzcG9wdXBcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9mb2N1c2FibGVfZWxlbWVudHNcIixcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGVSdWxlUG9saWN5LlZJT0xBVElPTixcbiAgICAgICAgICAgICAgICAgICAgdG9vbGtpdExldmVsOiBlVG9vbGtpdExldmVsLkxFVkVMX09ORVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJjb21ib2JveF9hY3RpdmVfZGVzY2VuZGFudFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImNvbWJvYm94X2F1dG9jb21wbGV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImFyaWFfaGlkZGVuX2ZvY3VzX21pc3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OLFxuICAgICAgICAgICAgICAgICAgICB0b29sa2l0TGV2ZWw6IGVUb29sa2l0TGV2ZWwuTEVWRUxfT05FXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gICAgXVxufVxuXVxuXG5leHBvcnQgeyBhMTF5UnVsZXNldHMgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlQ29udGV4dEhpZXJhcmNoeSB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuXG5leHBvcnQgY2xhc3MgQW5jZXN0b3JVdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGlzUHJlc2VudGF0aW9uRnJhbWUoY29udGV4dEhpZXJhcmNoeTogUnVsZUNvbnRleHRIaWVyYXJjaHkpIDogYm9vbGVhbiB7XG4gICAgICAgIGlmIChjb250ZXh0SGllcmFyY2h5ICYmIGNvbnRleHRIaWVyYXJjaHkuZG9tKSB7XG4gICAgICAgICAgICAvLyBTa2lwIGN1cnJlbnQgbm9kZSBiZWNhdXNlIHdlIHdhbnQgYW5jZXN0cnlcbiAgICAgICAgICAgIGZvciAobGV0IGlkeD1jb250ZXh0SGllcmFyY2h5LmRvbS5sZW5ndGgtMjsgaWR4ID49IDA7IC0taWR4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IChjb250ZXh0SGllcmFyY2h5LmRvbVtpZHhdLm5vZGUgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtLm5vZGVUeXBlID09PSAxIFxuICAgICAgICAgICAgICAgICAgICAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaWZyYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgJiYgKGVsZW0uZ2V0QXR0cmlidXRlKFwicm9sZVwiKSA9PT0gXCJwcmVzZW50YXRpb25cIiB8fCBlbGVtLmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpID09PSBcInRydWVcIikpIFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzRnJhbWUoY29udGV4dEhpZXJhcmNoeTogUnVsZUNvbnRleHRIaWVyYXJjaHkpIDogYm9vbGVhbiB7XG4gICAgICAgIGlmIChjb250ZXh0SGllcmFyY2h5ICYmIGNvbnRleHRIaWVyYXJjaHkuZG9tKSB7XG4gICAgICAgICAgICAvLyBTa2lwIGN1cnJlbnQgbm9kZSBiZWNhdXNlIHdlIHdhbnQgYW5jZXN0cnlcbiAgICAgICAgICAgIGZvciAobGV0IGlkeD1jb250ZXh0SGllcmFyY2h5LmRvbS5sZW5ndGgtMjsgaWR4ID49IDA7IC0taWR4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbSA9IChjb250ZXh0SGllcmFyY2h5LmRvbVtpZHhdLm5vZGUgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtLm5vZGVUeXBlID09PSAxICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpZnJhbWVcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGVDb250ZXh0SGllcmFyY2h5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5cbmV4cG9ydCBjbGFzcyBGcmFnbWVudFV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0T3duZXJGcmFnbWVudChub2RlOiBOb2RlKSA6IERvY3VtZW50IHwgRG9jdW1lbnRGcmFnbWVudCB7XG4gICAgICAgIGxldCBuIDogTm9kZSA9IG5vZGU7XG4gICAgICAgIHdoaWxlKG4ucGFyZW50Tm9kZSAmJiAobiA9IG4ucGFyZW50Tm9kZSkpe1xuICAgICAgICAgICAgaWYgKG4ubm9kZVR5cGUgPT09IDExKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG4gYXMgRG9jdW1lbnRGcmFnbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QnlJZChub2RlOiBOb2RlLCBpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE93bmVyRnJhZ21lbnQobm9kZSkuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QW5jZXN0b3IoaGllcmFyY2hpZXM6IFJ1bGVDb250ZXh0SGllcmFyY2h5LCBlbGVtTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGxldCBtYXRjaGVzID0gaGllcmFyY2hpZXNbXCJkb21cIl0uZmlsdGVyKGluZm8gPT4gaW5mby5yb2xlID09PSBlbGVtTmFtZSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aCA+IDAgJiYgbWF0Y2hlc1swXS5ub2RlIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBbmNlc3RvcldpdGhSb2xlKGhpZXJhcmNoaWVzOiBSdWxlQ29udGV4dEhpZXJhcmNoeSwgcm9sZTogc3RyaW5nKSB7XG4gICAgICAgIGxldCBtYXRjaGVzID0gaGllcmFyY2hpZXNbXCJhcmlhXCJdLmZpbHRlcihpbmZvID0+IGluZm8ucm9sZSA9PT0gcm9sZSk7XG4gICAgICAgIHJldHVybiBtYXRjaGVzLmxlbmd0aCA+IDAgJiYgbWF0Y2hlc1swXS5ub2RlIHx8IG51bGw7XG4gICAgfVxufSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMS0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy8gRnJvbSBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5XG5jb25zdCB2YWxpZFByaW1hcnlMYW5ncyA9IFsgLy8gXCJxYWEuLnF0elwiLFxuWyBcImFhXCIsXCJhYlwiLFwiYWVcIixcImFmXCIsXCJha1wiLFwiYW1cIixcImFuXCIsXCJhclwiLFwiYXNcIixcImF2XCIsXCJheVwiLFwiYXpcIixcImFhYVwiLFwiYWFiXCIsXCJhYWNcIixcImFhZFwiLFwiYWFlXCIsXCJhYWZcIixcImFhZ1wiLFwiYWFoXCIsXCJhYWlcIixcImFha1wiLFwiYWFsXCIsXCJhYW1cIixcImFhblwiLFwiYWFvXCIsXCJhYXBcIixcImFhcVwiLFwiYWFzXCIsXCJhYXRcIixcImFhdVwiLFwiYWF2XCIsXCJhYXdcIixcImFheFwiLFwiYWF6XCIsXCJhYmFcIixcImFiYlwiLFwiYWJjXCIsXCJhYmRcIixcImFiZVwiLFwiYWJmXCIsXCJhYmdcIixcImFiaFwiLFwiYWJpXCIsXCJhYmpcIixcImFibFwiLFwiYWJtXCIsXCJhYm5cIixcImFib1wiLFwiYWJwXCIsXCJhYnFcIixcImFiclwiLFwiYWJzXCIsXCJhYnRcIixcImFidVwiLFwiYWJ2XCIsXCJhYndcIixcImFieFwiLFwiYWJ5XCIsXCJhYnpcIixcImFjYVwiLFwiYWNiXCIsXCJhY2RcIixcImFjZVwiLFwiYWNmXCIsXCJhY2hcIixcImFjaVwiLFwiYWNrXCIsXCJhY2xcIixcImFjbVwiLFwiYWNuXCIsXCJhY3BcIixcImFjcVwiLFwiYWNyXCIsXCJhY3NcIixcImFjdFwiLFwiYWN1XCIsXCJhY3ZcIixcImFjd1wiLFwiYWN4XCIsXCJhY3lcIixcImFjelwiLFwiYWRhXCIsXCJhZGJcIixcImFkZFwiLFwiYWRlXCIsXCJhZGZcIixcImFkZ1wiLFwiYWRoXCIsXCJhZGlcIixcImFkalwiLFwiYWRsXCIsXCJhZG5cIixcImFkb1wiLFwiYWRwXCIsXCJhZHFcIixcImFkclwiLFwiYWRzXCIsXCJhZHRcIixcImFkdVwiLFwiYWR3XCIsXCJhZHhcIixcImFkeVwiLFwiYWR6XCIsXCJhZWFcIixcImFlYlwiLFwiYWVjXCIsXCJhZWRcIixcImFlZVwiLFwiYWVrXCIsXCJhZWxcIixcImFlbVwiLFwiYWVuXCIsXCJhZXFcIixcImFlclwiLFwiYWVzXCIsXCJhZXVcIixcImFld1wiLFwiYWV5XCIsXCJhZXpcIixcImFmYVwiLFwiYWZiXCIsXCJhZmRcIixcImFmZVwiLFwiYWZnXCIsXCJhZmhcIixcImFmaVwiLFwiYWZrXCIsXCJhZm5cIixcImFmb1wiLFwiYWZwXCIsXCJhZnNcIixcImFmdFwiLFwiYWZ1XCIsXCJhZnpcIixcImFnYVwiLFwiYWdiXCIsXCJhZ2NcIixcImFnZFwiLFwiYWdlXCIsXCJhZ2ZcIixcImFnZ1wiLFwiYWdoXCIsXCJhZ2lcIixcImFnalwiLFwiYWdrXCIsXCJhZ2xcIixcImFnbVwiLFwiYWduXCIsXCJhZ29cIixcImFncFwiLFwiYWdxXCIsXCJhZ3JcIixcImFnc1wiLFwiYWd0XCIsXCJhZ3VcIixcImFndlwiLFwiYWd3XCIsXCJhZ3hcIixcImFneVwiLFwiYWd6XCIsXCJhaGFcIixcImFoYlwiLFwiYWhnXCIsXCJhaGhcIixcImFoaVwiLFwiYWhrXCIsXCJhaGxcIixcImFobVwiLFwiYWhuXCIsXCJhaG9cIixcImFocFwiLFwiYWhyXCIsXCJhaHNcIixcImFodFwiLFwiYWlhXCIsXCJhaWJcIixcImFpY1wiLFwiYWlkXCIsXCJhaWVcIixcImFpZlwiLFwiYWlnXCIsXCJhaWhcIixcImFpaVwiLFwiYWlqXCIsXCJhaWtcIixcImFpbFwiLFwiYWltXCIsXCJhaW5cIixcImFpb1wiLFwiYWlwXCIsXCJhaXFcIixcImFpclwiLFwiYWlzXCIsXCJhaXRcIixcImFpd1wiLFwiYWl4XCIsXCJhaXlcIixcImFqYVwiLFwiYWpnXCIsXCJhamlcIixcImFqblwiLFwiYWpwXCIsXCJhanRcIixcImFqdVwiLFwiYWp3XCIsXCJhanpcIixcImFrYlwiLFwiYWtjXCIsXCJha2RcIixcImFrZVwiLFwiYWtmXCIsXCJha2dcIixcImFraFwiLFwiYWtpXCIsXCJha2pcIixcImFra1wiLFwiYWtsXCIsXCJha21cIixcImFrb1wiLFwiYWtwXCIsXCJha3FcIixcImFrclwiLFwiYWtzXCIsXCJha3RcIixcImFrdVwiLFwiYWt2XCIsXCJha3dcIixcImFreFwiLFwiYWt5XCIsXCJha3pcIixcImFsYVwiLFwiYWxjXCIsXCJhbGRcIixcImFsZVwiLFwiYWxmXCIsXCJhbGdcIixcImFsaFwiLFwiYWxpXCIsXCJhbGpcIixcImFsa1wiLFwiYWxsXCIsXCJhbG1cIixcImFsblwiLFwiYWxvXCIsXCJhbHBcIixcImFscVwiLFwiYWxyXCIsXCJhbHNcIixcImFsdFwiLFwiYWx1XCIsXCJhbHZcIixcImFsd1wiLFwiYWx4XCIsXCJhbHlcIixcImFselwiLFwiYW1hXCIsXCJhbWJcIixcImFtY1wiLFwiYW1lXCIsXCJhbWZcIixcImFtZ1wiLFwiYW1pXCIsXCJhbWpcIixcImFta1wiLFwiYW1sXCIsXCJhbW1cIixcImFtblwiLFwiYW1vXCIsXCJhbXBcIixcImFtcVwiLFwiYW1yXCIsXCJhbXNcIixcImFtdFwiLFwiYW11XCIsXCJhbXZcIixcImFtd1wiLFwiYW14XCIsXCJhbXlcIixcImFtelwiLFwiYW5hXCIsXCJhbmJcIixcImFuY1wiLFwiYW5kXCIsXCJhbmVcIixcImFuZlwiLFwiYW5nXCIsXCJhbmhcIixcImFuaVwiLFwiYW5qXCIsXCJhbmtcIixcImFubFwiLFwiYW5tXCIsXCJhbm5cIixcImFub1wiLFwiYW5wXCIsXCJhbnFcIixcImFuclwiLFwiYW5zXCIsXCJhbnRcIixcImFudVwiLFwiYW52XCIsXCJhbndcIixcImFueFwiLFwiYW55XCIsXCJhbnpcIixcImFvYVwiLFwiYW9iXCIsXCJhb2NcIixcImFvZFwiLFwiYW9lXCIsXCJhb2ZcIixcImFvZ1wiLFwiYW9oXCIsXCJhb2lcIixcImFvalwiLFwiYW9rXCIsXCJhb2xcIixcImFvbVwiLFwiYW9uXCIsXCJhb3JcIixcImFvc1wiLFwiYW90XCIsXCJhb3VcIixcImFveFwiLFwiYW96XCIsXCJhcGFcIixcImFwYlwiLFwiYXBjXCIsXCJhcGRcIixcImFwZVwiLFwiYXBmXCIsXCJhcGdcIixcImFwaFwiLFwiYXBpXCIsXCJhcGpcIixcImFwa1wiLFwiYXBsXCIsXCJhcG1cIixcImFwblwiLFwiYXBvXCIsXCJhcHBcIixcImFwcVwiLFwiYXByXCIsXCJhcHNcIixcImFwdFwiLFwiYXB1XCIsXCJhcHZcIixcImFwd1wiLFwiYXB4XCIsXCJhcHlcIixcImFwelwiLFwiYXFhXCIsXCJhcWNcIixcImFxZFwiLFwiYXFnXCIsXCJhcWtcIixcImFxbFwiLFwiYXFtXCIsXCJhcW5cIixcImFxcFwiLFwiYXFyXCIsXCJhcXRcIixcImFxelwiLFwiYXJiXCIsXCJhcmNcIixcImFyZFwiLFwiYXJlXCIsXCJhcmhcIixcImFyaVwiLFwiYXJqXCIsXCJhcmtcIixcImFybFwiLFwiYXJuXCIsXCJhcm9cIixcImFycFwiLFwiYXJxXCIsXCJhcnJcIixcImFyc1wiLFwiYXJ0XCIsXCJhcnVcIixcImFydlwiLFwiYXJ3XCIsXCJhcnhcIixcImFyeVwiLFwiYXJ6XCIsXCJhc2FcIixcImFzYlwiLFwiYXNjXCIsXCJhc2RcIixcImFzZVwiLFwiYXNmXCIsXCJhc2dcIixcImFzaFwiLFwiYXNpXCIsXCJhc2pcIixcImFza1wiLFwiYXNsXCIsXCJhc25cIixcImFzb1wiLFwiYXNwXCIsXCJhc3FcIixcImFzclwiLFwiYXNzXCIsXCJhc3RcIixcImFzdVwiLFwiYXN2XCIsXCJhc3dcIixcImFzeFwiLFwiYXN5XCIsXCJhc3pcIixcImF0YVwiLFwiYXRiXCIsXCJhdGNcIixcImF0ZFwiLFwiYXRlXCIsXCJhdGdcIixcImF0aFwiLFwiYXRpXCIsXCJhdGpcIixcImF0a1wiLFwiYXRsXCIsXCJhdG1cIixcImF0blwiLFwiYXRvXCIsXCJhdHBcIixcImF0cVwiLFwiYXRyXCIsXCJhdHNcIixcImF0dFwiLFwiYXR1XCIsXCJhdHZcIixcImF0d1wiLFwiYXR4XCIsXCJhdHlcIixcImF0elwiLFwiYXVhXCIsXCJhdWJcIixcImF1Y1wiLFwiYXVkXCIsXCJhdWVcIixcImF1ZlwiLFwiYXVnXCIsXCJhdWhcIixcImF1aVwiLFwiYXVqXCIsXCJhdWtcIixcImF1bFwiLFwiYXVtXCIsXCJhdW5cIixcImF1b1wiLFwiYXVwXCIsXCJhdXFcIixcImF1clwiLFwiYXVzXCIsXCJhdXRcIixcImF1dVwiLFwiYXV3XCIsXCJhdXhcIixcImF1eVwiLFwiYXV6XCIsXCJhdmJcIixcImF2ZFwiLFwiYXZpXCIsXCJhdmtcIixcImF2bFwiLFwiYXZtXCIsXCJhdm5cIixcImF2b1wiLFwiYXZzXCIsXCJhdnRcIixcImF2dVwiLFwiYXZ2XCIsXCJhd2FcIixcImF3YlwiLFwiYXdjXCIsXCJhd2RcIixcImF3ZVwiLFwiYXdnXCIsXCJhd2hcIixcImF3aVwiLFwiYXdrXCIsXCJhd21cIixcImF3blwiLFwiYXdvXCIsXCJhd3JcIixcImF3c1wiLFwiYXd0XCIsXCJhd3VcIixcImF3dlwiLFwiYXd3XCIsXCJhd3hcIixcImF3eVwiLFwiYXhiXCIsXCJheGVcIixcImF4Z1wiLFwiYXhrXCIsXCJheGxcIixcImF4bVwiLFwiYXh4XCIsXCJheWFcIixcImF5YlwiLFwiYXljXCIsXCJheWRcIixcImF5ZVwiLFwiYXlnXCIsXCJheWhcIixcImF5aVwiLFwiYXlrXCIsXCJheWxcIixcImF5blwiLFwiYXlvXCIsXCJheXBcIixcImF5cVwiLFwiYXlyXCIsXCJheXNcIixcImF5dFwiLFwiYXl1XCIsXCJheXhcIixcImF5eVwiLFwiYXl6XCIsXCJhemFcIixcImF6YlwiLFwiYXpjXCIsXCJhemRcIixcImF6Z1wiLFwiYXpqXCIsXCJhem1cIixcImF6blwiLFwiYXpvXCIsXCJhenRcIixcImF6elwiXVxuLFsgXCJiYVwiLFwiYmVcIixcImJnXCIsXCJiaFwiLFwiYmlcIixcImJtXCIsXCJiblwiLFwiYm9cIixcImJyXCIsXCJic1wiLFwiYmFhXCIsXCJiYWJcIixcImJhY1wiLFwiYmFkXCIsXCJiYWVcIixcImJhZlwiLFwiYmFnXCIsXCJiYWhcIixcImJhaVwiLFwiYmFqXCIsXCJiYWxcIixcImJhblwiLFwiYmFvXCIsXCJiYXBcIixcImJhclwiLFwiYmFzXCIsXCJiYXRcIixcImJhdVwiLFwiYmF2XCIsXCJiYXdcIixcImJheFwiLFwiYmF5XCIsXCJiYXpcIixcImJiYVwiLFwiYmJiXCIsXCJiYmNcIixcImJiZFwiLFwiYmJlXCIsXCJiYmZcIixcImJiZ1wiLFwiYmJoXCIsXCJiYmlcIixcImJialwiLFwiYmJrXCIsXCJiYmxcIixcImJibVwiLFwiYmJuXCIsXCJiYm9cIixcImJicFwiLFwiYmJxXCIsXCJiYnJcIixcImJic1wiLFwiYmJ0XCIsXCJiYnVcIixcImJidlwiLFwiYmJ3XCIsXCJiYnhcIixcImJieVwiLFwiYmJ6XCIsXCJiY2FcIixcImJjYlwiLFwiYmNjXCIsXCJiY2RcIixcImJjZVwiLFwiYmNmXCIsXCJiY2dcIixcImJjaFwiLFwiYmNpXCIsXCJiY2pcIixcImJja1wiLFwiYmNsXCIsXCJiY21cIixcImJjblwiLFwiYmNvXCIsXCJiY3BcIixcImJjcVwiLFwiYmNyXCIsXCJiY3NcIixcImJjdFwiLFwiYmN1XCIsXCJiY3ZcIixcImJjd1wiLFwiYmN5XCIsXCJiY3pcIixcImJkYVwiLFwiYmRiXCIsXCJiZGNcIixcImJkZFwiLFwiYmRlXCIsXCJiZGZcIixcImJkZ1wiLFwiYmRoXCIsXCJiZGlcIixcImJkalwiLFwiYmRrXCIsXCJiZGxcIixcImJkbVwiLFwiYmRuXCIsXCJiZG9cIixcImJkcFwiLFwiYmRxXCIsXCJiZHJcIixcImJkc1wiLFwiYmR0XCIsXCJiZHVcIixcImJkdlwiLFwiYmR3XCIsXCJiZHhcIixcImJkeVwiLFwiYmR6XCIsXCJiZWFcIixcImJlYlwiLFwiYmVjXCIsXCJiZWRcIixcImJlZVwiLFwiYmVmXCIsXCJiZWdcIixcImJlaFwiLFwiYmVpXCIsXCJiZWpcIixcImJla1wiLFwiYmVtXCIsXCJiZW9cIixcImJlcFwiLFwiYmVxXCIsXCJiZXJcIixcImJlc1wiLFwiYmV0XCIsXCJiZXVcIixcImJldlwiLFwiYmV3XCIsXCJiZXhcIixcImJleVwiLFwiYmV6XCIsXCJiZmFcIixcImJmYlwiLFwiYmZjXCIsXCJiZmRcIixcImJmZVwiLFwiYmZmXCIsXCJiZmdcIixcImJmaFwiLFwiYmZpXCIsXCJiZmpcIixcImJma1wiLFwiYmZsXCIsXCJiZm1cIixcImJmblwiLFwiYmZvXCIsXCJiZnBcIixcImJmcVwiLFwiYmZyXCIsXCJiZnNcIixcImJmdFwiLFwiYmZ1XCIsXCJiZndcIixcImJmeFwiLFwiYmZ5XCIsXCJiZnpcIixcImJnYVwiLFwiYmdiXCIsXCJiZ2NcIixcImJnZFwiLFwiYmdlXCIsXCJiZ2ZcIixcImJnZ1wiLFwiYmdpXCIsXCJiZ2pcIixcImJna1wiLFwiYmdsXCIsXCJiZ21cIixcImJnblwiLFwiYmdvXCIsXCJiZ3BcIixcImJncVwiLFwiYmdyXCIsXCJiZ3NcIixcImJndFwiLFwiYmd1XCIsXCJiZ3ZcIixcImJnd1wiLFwiYmd4XCIsXCJiZ3lcIixcImJnelwiLFwiYmhhXCIsXCJiaGJcIixcImJoY1wiLFwiYmhkXCIsXCJiaGVcIixcImJoZlwiLFwiYmhnXCIsXCJiaGhcIixcImJoaVwiLFwiYmhqXCIsXCJiaGtcIixcImJobFwiLFwiYmhtXCIsXCJiaG5cIixcImJob1wiLFwiYmhwXCIsXCJiaHFcIixcImJoclwiLFwiYmhzXCIsXCJiaHRcIixcImJodVwiLFwiYmh2XCIsXCJiaHdcIixcImJoeFwiLFwiYmh5XCIsXCJiaHpcIixcImJpYVwiLFwiYmliXCIsXCJiaWNcIixcImJpZFwiLFwiYmllXCIsXCJiaWZcIixcImJpZ1wiLFwiYmlqXCIsXCJiaWtcIixcImJpbFwiLFwiYmltXCIsXCJiaW5cIixcImJpb1wiLFwiYmlwXCIsXCJiaXFcIixcImJpclwiLFwiYml0XCIsXCJiaXVcIixcImJpdlwiLFwiYml3XCIsXCJiaXhcIixcImJpeVwiLFwiYml6XCIsXCJiamFcIixcImJqYlwiLFwiYmpjXCIsXCJiamRcIixcImJqZVwiLFwiYmpmXCIsXCJiamdcIixcImJqaFwiLFwiYmppXCIsXCJiampcIixcImJqa1wiLFwiYmpsXCIsXCJiam1cIixcImJqblwiLFwiYmpvXCIsXCJianBcIixcImJqcVwiLFwiYmpyXCIsXCJianNcIixcImJqdFwiLFwiYmp1XCIsXCJianZcIixcImJqd1wiLFwiYmp4XCIsXCJianlcIixcImJqelwiLFwiYmthXCIsXCJia2JcIixcImJrY1wiLFwiYmtkXCIsXCJia2ZcIixcImJrZ1wiLFwiYmtoXCIsXCJia2lcIixcImJralwiLFwiYmtrXCIsXCJia2xcIixcImJrbVwiLFwiYmtuXCIsXCJia29cIixcImJrcFwiLFwiYmtxXCIsXCJia3JcIixcImJrc1wiLFwiYmt0XCIsXCJia3VcIixcImJrdlwiLFwiYmt3XCIsXCJia3hcIixcImJreVwiLFwiYmt6XCIsXCJibGFcIixcImJsYlwiLFwiYmxjXCIsXCJibGRcIixcImJsZVwiLFwiYmxmXCIsXCJibGdcIixcImJsaFwiLFwiYmxpXCIsXCJibGpcIixcImJsa1wiLFwiYmxsXCIsXCJibG1cIixcImJsblwiLFwiYmxvXCIsXCJibHBcIixcImJscVwiLFwiYmxyXCIsXCJibHNcIixcImJsdFwiLFwiYmx2XCIsXCJibHdcIixcImJseFwiLFwiYmx5XCIsXCJibHpcIixcImJtYVwiLFwiYm1iXCIsXCJibWNcIixcImJtZFwiLFwiYm1lXCIsXCJibWZcIixcImJtZ1wiLFwiYm1oXCIsXCJibWlcIixcImJtalwiLFwiYm1rXCIsXCJibWxcIixcImJtbVwiLFwiYm1uXCIsXCJibW9cIixcImJtcFwiLFwiYm1xXCIsXCJibXJcIixcImJtc1wiLFwiYm10XCIsXCJibXVcIixcImJtdlwiLFwiYm13XCIsXCJibXhcIixcImJteVwiLFwiYm16XCIsXCJibmFcIixcImJuYlwiLFwiYm5jXCIsXCJibmRcIixcImJuZVwiLFwiYm5mXCIsXCJibmdcIixcImJuaVwiLFwiYm5qXCIsXCJibmtcIixcImJubFwiLFwiYm5tXCIsXCJibm5cIixcImJub1wiLFwiYm5wXCIsXCJibnFcIixcImJuclwiLFwiYm5zXCIsXCJibnRcIixcImJudVwiLFwiYm52XCIsXCJibndcIixcImJueFwiLFwiYm55XCIsXCJibnpcIixcImJvYVwiLFwiYm9iXCIsXCJib2VcIixcImJvZlwiLFwiYm9nXCIsXCJib2hcIixcImJvaVwiLFwiYm9qXCIsXCJib2tcIixcImJvbFwiLFwiYm9tXCIsXCJib25cIixcImJvb1wiLFwiYm9wXCIsXCJib3FcIixcImJvclwiLFwiYm90XCIsXCJib3VcIixcImJvdlwiLFwiYm93XCIsXCJib3hcIixcImJveVwiLFwiYm96XCIsXCJicGFcIixcImJwYlwiLFwiYnBkXCIsXCJicGVcIixcImJwZ1wiLFwiYnBoXCIsXCJicGlcIixcImJwalwiLFwiYnBrXCIsXCJicGxcIixcImJwbVwiLFwiYnBuXCIsXCJicG9cIixcImJwcFwiLFwiYnBxXCIsXCJicHJcIixcImJwc1wiLFwiYnB0XCIsXCJicHVcIixcImJwdlwiLFwiYnB3XCIsXCJicHhcIixcImJweVwiLFwiYnB6XCIsXCJicWFcIixcImJxYlwiLFwiYnFjXCIsXCJicWRcIixcImJxZlwiLFwiYnFnXCIsXCJicWhcIixcImJxaVwiLFwiYnFqXCIsXCJicWtcIixcImJxbFwiLFwiYnFtXCIsXCJicW5cIixcImJxb1wiLFwiYnFwXCIsXCJicXFcIixcImJxclwiLFwiYnFzXCIsXCJicXRcIixcImJxdVwiLFwiYnF2XCIsXCJicXdcIixcImJxeFwiLFwiYnF5XCIsXCJicXpcIixcImJyYVwiLFwiYnJiXCIsXCJicmNcIixcImJyZFwiLFwiYnJmXCIsXCJicmdcIixcImJyaFwiLFwiYnJpXCIsXCJicmpcIixcImJya1wiLFwiYnJsXCIsXCJicm1cIixcImJyblwiLFwiYnJvXCIsXCJicnBcIixcImJycVwiLFwiYnJyXCIsXCJicnNcIixcImJydFwiLFwiYnJ1XCIsXCJicnZcIixcImJyd1wiLFwiYnJ4XCIsXCJicnlcIixcImJyelwiLFwiYnNhXCIsXCJic2JcIixcImJzY1wiLFwiYnNlXCIsXCJic2ZcIixcImJzZ1wiLFwiYnNoXCIsXCJic2lcIixcImJzalwiLFwiYnNrXCIsXCJic2xcIixcImJzbVwiLFwiYnNuXCIsXCJic29cIixcImJzcFwiLFwiYnNxXCIsXCJic3JcIixcImJzc1wiLFwiYnN0XCIsXCJic3VcIixcImJzdlwiLFwiYnN3XCIsXCJic3hcIixcImJzeVwiLFwiYnRhXCIsXCJidGJcIixcImJ0Y1wiLFwiYnRkXCIsXCJidGVcIixcImJ0ZlwiLFwiYnRnXCIsXCJidGhcIixcImJ0aVwiLFwiYnRqXCIsXCJidGtcIixcImJ0bFwiLFwiYnRtXCIsXCJidG5cIixcImJ0b1wiLFwiYnRwXCIsXCJidHFcIixcImJ0clwiLFwiYnRzXCIsXCJidHRcIixcImJ0dVwiLFwiYnR2XCIsXCJidHdcIixcImJ0eFwiLFwiYnR5XCIsXCJidHpcIixcImJ1YVwiLFwiYnViXCIsXCJidWNcIixcImJ1ZFwiLFwiYnVlXCIsXCJidWZcIixcImJ1Z1wiLFwiYnVoXCIsXCJidWlcIixcImJ1alwiLFwiYnVrXCIsXCJidW1cIixcImJ1blwiLFwiYnVvXCIsXCJidXBcIixcImJ1cVwiLFwiYnVzXCIsXCJidXRcIixcImJ1dVwiLFwiYnV2XCIsXCJidXdcIixcImJ1eFwiLFwiYnV5XCIsXCJidXpcIixcImJ2YVwiLFwiYnZiXCIsXCJidmNcIixcImJ2ZFwiLFwiYnZlXCIsXCJidmZcIixcImJ2Z1wiLFwiYnZoXCIsXCJidmlcIixcImJ2alwiLFwiYnZrXCIsXCJidmxcIixcImJ2bVwiLFwiYnZuXCIsXCJidm9cIixcImJ2cFwiLFwiYnZxXCIsXCJidnJcIixcImJ2dFwiLFwiYnZ1XCIsXCJidnZcIixcImJ2d1wiLFwiYnZ4XCIsXCJidnlcIixcImJ2elwiLFwiYndhXCIsXCJid2JcIixcImJ3Y1wiLFwiYndkXCIsXCJid2VcIixcImJ3ZlwiLFwiYndnXCIsXCJid2hcIixcImJ3aVwiLFwiYndqXCIsXCJid2tcIixcImJ3bFwiLFwiYndtXCIsXCJid25cIixcImJ3b1wiLFwiYndwXCIsXCJid3FcIixcImJ3clwiLFwiYndzXCIsXCJid3RcIixcImJ3dVwiLFwiYnd3XCIsXCJid3hcIixcImJ3eVwiLFwiYnd6XCIsXCJieGFcIixcImJ4YlwiLFwiYnhjXCIsXCJieGRcIixcImJ4ZVwiLFwiYnhmXCIsXCJieGdcIixcImJ4aFwiLFwiYnhpXCIsXCJieGpcIixcImJ4a1wiLFwiYnhsXCIsXCJieG1cIixcImJ4blwiLFwiYnhvXCIsXCJieHBcIixcImJ4cVwiLFwiYnhyXCIsXCJieHNcIixcImJ4dVwiLFwiYnh2XCIsXCJieHdcIixcImJ4eFwiLFwiYnh6XCIsXCJieWFcIixcImJ5YlwiLFwiYnljXCIsXCJieWRcIixcImJ5ZVwiLFwiYnlmXCIsXCJieWdcIixcImJ5aFwiLFwiYnlpXCIsXCJieWpcIixcImJ5a1wiLFwiYnlsXCIsXCJieW1cIixcImJ5blwiLFwiYnlvXCIsXCJieXBcIixcImJ5cVwiLFwiYnlyXCIsXCJieXNcIixcImJ5dFwiLFwiYnl2XCIsXCJieXdcIixcImJ5eFwiLFwiYnl5XCIsXCJieXpcIixcImJ6YVwiLFwiYnpiXCIsXCJiemNcIixcImJ6ZFwiLFwiYnplXCIsXCJiemZcIixcImJ6Z1wiLFwiYnpoXCIsXCJiemlcIixcImJ6alwiLFwiYnprXCIsXCJiemxcIixcImJ6bVwiLFwiYnpuXCIsXCJiem9cIixcImJ6cFwiLFwiYnpxXCIsXCJienJcIixcImJ6c1wiLFwiYnp0XCIsXCJienVcIixcImJ6dlwiLFwiYnp3XCIsXCJienhcIixcImJ6eVwiLFwiYnp6XCJdXG4sWyBcImNhXCIsXCJjZVwiLFwiY2hcIixcImNvXCIsXCJjclwiLFwiY3NcIixcImN1XCIsXCJjdlwiLFwiY3lcIixcImNhYVwiLFwiY2FiXCIsXCJjYWNcIixcImNhZFwiLFwiY2FlXCIsXCJjYWZcIixcImNhZ1wiLFwiY2FoXCIsXCJjYWlcIixcImNhalwiLFwiY2FrXCIsXCJjYWxcIixcImNhbVwiLFwiY2FuXCIsXCJjYW9cIixcImNhcFwiLFwiY2FxXCIsXCJjYXJcIixcImNhc1wiLFwiY2F1XCIsXCJjYXZcIixcImNhd1wiLFwiY2F4XCIsXCJjYXlcIixcImNhelwiLFwiY2JhXCIsXCJjYmJcIixcImNiY1wiLFwiY2JkXCIsXCJjYmVcIixcImNiZ1wiLFwiY2JoXCIsXCJjYmlcIixcImNialwiLFwiY2JrXCIsXCJjYmxcIixcImNiblwiLFwiY2JvXCIsXCJjYnFcIixcImNiclwiLFwiY2JzXCIsXCJjYnRcIixcImNidVwiLFwiY2J2XCIsXCJjYndcIixcImNieVwiLFwiY2NhXCIsXCJjY2NcIixcImNjZFwiLFwiY2NlXCIsXCJjY2dcIixcImNjaFwiLFwiY2NqXCIsXCJjY2xcIixcImNjbVwiLFwiY2NuXCIsXCJjY29cIixcImNjcFwiLFwiY2NxXCIsXCJjY3JcIixcImNjc1wiLFwiY2RhXCIsXCJjZGNcIixcImNkZFwiLFwiY2RlXCIsXCJjZGZcIixcImNkZ1wiLFwiY2RoXCIsXCJjZGlcIixcImNkalwiLFwiY2RtXCIsXCJjZG5cIixcImNkb1wiLFwiY2RyXCIsXCJjZHNcIixcImNkeVwiLFwiY2R6XCIsXCJjZWFcIixcImNlYlwiLFwiY2VnXCIsXCJjZWtcIixcImNlbFwiLFwiY2VuXCIsXCJjZXRcIixcImNleVwiLFwiY2ZhXCIsXCJjZmRcIixcImNmZ1wiLFwiY2ZtXCIsXCJjZ2FcIixcImNnY1wiLFwiY2dnXCIsXCJjZ2tcIixcImNoYlwiLFwiY2hjXCIsXCJjaGRcIixcImNoZlwiLFwiY2hnXCIsXCJjaGhcIixcImNoalwiLFwiY2hrXCIsXCJjaGxcIixcImNobVwiLFwiY2huXCIsXCJjaG9cIixcImNocFwiLFwiY2hxXCIsXCJjaHJcIixcImNodFwiLFwiY2h3XCIsXCJjaHhcIixcImNoeVwiLFwiY2h6XCIsXCJjaWFcIixcImNpYlwiLFwiY2ljXCIsXCJjaWRcIixcImNpZVwiLFwiY2loXCIsXCJjaWtcIixcImNpbVwiLFwiY2luXCIsXCJjaXBcIixcImNpclwiLFwiY2l3XCIsXCJjaXlcIixcImNqYVwiLFwiY2plXCIsXCJjamhcIixcImNqaVwiLFwiY2prXCIsXCJjam1cIixcImNqblwiLFwiY2pvXCIsXCJjanBcIixcImNqclwiLFwiY2pzXCIsXCJjanZcIixcImNqeVwiLFwiY2thXCIsXCJja2JcIixcImNraFwiLFwiY2tsXCIsXCJja21cIixcImNrblwiLFwiY2tvXCIsXCJja3FcIixcImNrclwiLFwiY2tzXCIsXCJja3RcIixcImNrdVwiLFwiY2t2XCIsXCJja3hcIixcImNreVwiLFwiY2t6XCIsXCJjbGFcIixcImNsY1wiLFwiY2xkXCIsXCJjbGVcIixcImNsaFwiLFwiY2xpXCIsXCJjbGpcIixcImNsa1wiLFwiY2xsXCIsXCJjbG1cIixcImNsb1wiLFwiY2x0XCIsXCJjbHVcIixcImNsd1wiLFwiY2x5XCIsXCJjbWFcIixcImNtY1wiLFwiY21lXCIsXCJjbWdcIixcImNtaVwiLFwiY21rXCIsXCJjbWxcIixcImNtbVwiLFwiY21uXCIsXCJjbW9cIixcImNtclwiLFwiY21zXCIsXCJjbXRcIixcImNuYVwiLFwiY25iXCIsXCJjbmNcIixcImNuZ1wiLFwiY25oXCIsXCJjbmlcIixcImNua1wiLFwiY25sXCIsXCJjbm9cIixcImNucFwiLFwiY25yXCIsXCJjbnNcIixcImNudFwiLFwiY251XCIsXCJjbndcIixcImNueFwiLFwiY29hXCIsXCJjb2JcIixcImNvY1wiLFwiY29kXCIsXCJjb2VcIixcImNvZlwiLFwiY29nXCIsXCJjb2hcIixcImNvalwiLFwiY29rXCIsXCJjb2xcIixcImNvbVwiLFwiY29uXCIsXCJjb29cIixcImNvcFwiLFwiY29xXCIsXCJjb3RcIixcImNvdVwiLFwiY292XCIsXCJjb3dcIixcImNveFwiLFwiY295XCIsXCJjb3pcIixcImNwYVwiLFwiY3BiXCIsXCJjcGNcIixcImNwZVwiLFwiY3BmXCIsXCJjcGdcIixcImNwaVwiLFwiY3BuXCIsXCJjcG9cIixcImNwcFwiLFwiY3BzXCIsXCJjcHVcIixcImNweFwiLFwiY3B5XCIsXCJjcWRcIixcImNxdVwiLFwiY3JhXCIsXCJjcmJcIixcImNyY1wiLFwiY3JkXCIsXCJjcmZcIixcImNyZ1wiLFwiY3JoXCIsXCJjcmlcIixcImNyalwiLFwiY3JrXCIsXCJjcmxcIixcImNybVwiLFwiY3JuXCIsXCJjcm9cIixcImNycFwiLFwiY3JxXCIsXCJjcnJcIixcImNyc1wiLFwiY3J0XCIsXCJjcnZcIixcImNyd1wiLFwiY3J4XCIsXCJjcnlcIixcImNyelwiLFwiY3NhXCIsXCJjc2JcIixcImNzY1wiLFwiY3NkXCIsXCJjc2VcIixcImNzZlwiLFwiY3NnXCIsXCJjc2hcIixcImNzaVwiLFwiY3NqXCIsXCJjc2tcIixcImNzbFwiLFwiY3NtXCIsXCJjc25cIixcImNzb1wiLFwiY3NwXCIsXCJjc3FcIixcImNzclwiLFwiY3NzXCIsXCJjc3RcIixcImNzdVwiLFwiY3N2XCIsXCJjc3dcIixcImNzeFwiLFwiY3N5XCIsXCJjc3pcIixcImN0YVwiLFwiY3RjXCIsXCJjdGRcIixcImN0ZVwiLFwiY3RnXCIsXCJjdGhcIixcImN0bFwiLFwiY3RtXCIsXCJjdG5cIixcImN0b1wiLFwiY3RwXCIsXCJjdHNcIixcImN0dFwiLFwiY3R1XCIsXCJjdHlcIixcImN0elwiLFwiY3VhXCIsXCJjdWJcIixcImN1Y1wiLFwiY3VnXCIsXCJjdWhcIixcImN1aVwiLFwiY3VqXCIsXCJjdWtcIixcImN1bFwiLFwiY3VtXCIsXCJjdW9cIixcImN1cFwiLFwiY3VxXCIsXCJjdXJcIixcImN1c1wiLFwiY3V0XCIsXCJjdXVcIixcImN1dlwiLFwiY3V3XCIsXCJjdXhcIixcImN1eVwiLFwiY3ZnXCIsXCJjdm5cIixcImN3YVwiLFwiY3diXCIsXCJjd2RcIixcImN3ZVwiLFwiY3dnXCIsXCJjd3RcIixcImN5YVwiLFwiY3liXCIsXCJjeW9cIixcImN6aFwiLFwiY3prXCIsXCJjem5cIixcImN6b1wiLFwiY3p0XCJdXG4sWyBcImRhXCIsXCJkZVwiLFwiZHZcIixcImR6XCIsXCJkYWFcIixcImRhY1wiLFwiZGFkXCIsXCJkYWVcIixcImRhZlwiLFwiZGFnXCIsXCJkYWhcIixcImRhaVwiLFwiZGFqXCIsXCJkYWtcIixcImRhbFwiLFwiZGFtXCIsXCJkYW9cIixcImRhcFwiLFwiZGFxXCIsXCJkYXJcIixcImRhc1wiLFwiZGF1XCIsXCJkYXZcIixcImRhd1wiLFwiZGF4XCIsXCJkYXlcIixcImRhelwiLFwiZGJhXCIsXCJkYmJcIixcImRiZFwiLFwiZGJlXCIsXCJkYmZcIixcImRiZ1wiLFwiZGJpXCIsXCJkYmpcIixcImRibFwiLFwiZGJtXCIsXCJkYm5cIixcImRib1wiLFwiZGJwXCIsXCJkYnFcIixcImRiclwiLFwiZGJ0XCIsXCJkYnVcIixcImRidlwiLFwiZGJ3XCIsXCJkYnlcIixcImRjY1wiLFwiZGNyXCIsXCJkZGFcIixcImRkZFwiLFwiZGRlXCIsXCJkZGdcIixcImRkaVwiLFwiZGRqXCIsXCJkZG5cIixcImRkb1wiLFwiZGRyXCIsXCJkZHNcIixcImRkd1wiLFwiZGVjXCIsXCJkZWRcIixcImRlZVwiLFwiZGVmXCIsXCJkZWdcIixcImRlaFwiLFwiZGVpXCIsXCJkZWtcIixcImRlbFwiLFwiZGVtXCIsXCJkZW5cIixcImRlcFwiLFwiZGVxXCIsXCJkZXJcIixcImRlc1wiLFwiZGV2XCIsXCJkZXpcIixcImRnYVwiLFwiZGdiXCIsXCJkZ2NcIixcImRnZFwiLFwiZGdlXCIsXCJkZ2dcIixcImRnaFwiLFwiZGdpXCIsXCJkZ2tcIixcImRnbFwiLFwiZGduXCIsXCJkZ29cIixcImRnclwiLFwiZGdzXCIsXCJkZ3RcIixcImRndVwiLFwiZGd3XCIsXCJkZ3hcIixcImRnelwiLFwiZGhhXCIsXCJkaGRcIixcImRoZ1wiLFwiZGhpXCIsXCJkaGxcIixcImRobVwiLFwiZGhuXCIsXCJkaG9cIixcImRoclwiLFwiZGhzXCIsXCJkaHVcIixcImRodlwiLFwiZGh3XCIsXCJkaHhcIixcImRpYVwiLFwiZGliXCIsXCJkaWNcIixcImRpZFwiLFwiZGlmXCIsXCJkaWdcIixcImRpaFwiLFwiZGlpXCIsXCJkaWpcIixcImRpa1wiLFwiZGlsXCIsXCJkaW1cIixcImRpblwiLFwiZGlvXCIsXCJkaXBcIixcImRpcVwiLFwiZGlyXCIsXCJkaXNcIixcImRpdFwiLFwiZGl1XCIsXCJkaXdcIixcImRpeFwiLFwiZGl5XCIsXCJkaXpcIixcImRqYVwiLFwiZGpiXCIsXCJkamNcIixcImRqZFwiLFwiZGplXCIsXCJkamZcIixcImRqaVwiLFwiZGpqXCIsXCJkamtcIixcImRqbFwiLFwiZGptXCIsXCJkam5cIixcImRqb1wiLFwiZGpyXCIsXCJkanVcIixcImRqd1wiLFwiZGthXCIsXCJka2dcIixcImRra1wiLFwiZGtsXCIsXCJka3JcIixcImRrc1wiLFwiZGt4XCIsXCJkbGdcIixcImRsa1wiLFwiZGxtXCIsXCJkbG5cIixcImRtYVwiLFwiZG1iXCIsXCJkbWNcIixcImRtZFwiLFwiZG1lXCIsXCJkbWZcIixcImRtZ1wiLFwiZG1rXCIsXCJkbWxcIixcImRtbVwiLFwiZG1uXCIsXCJkbW9cIixcImRtclwiLFwiZG1zXCIsXCJkbXVcIixcImRtdlwiLFwiZG13XCIsXCJkbXhcIixcImRteVwiLFwiZG5hXCIsXCJkbmRcIixcImRuZVwiLFwiZG5nXCIsXCJkbmlcIixcImRualwiLFwiZG5rXCIsXCJkbm5cIixcImRub1wiLFwiZG5yXCIsXCJkbnRcIixcImRudVwiLFwiZG52XCIsXCJkbndcIixcImRueVwiLFwiZG9hXCIsXCJkb2JcIixcImRvY1wiLFwiZG9lXCIsXCJkb2ZcIixcImRvaFwiLFwiZG9pXCIsXCJkb2tcIixcImRvbFwiLFwiZG9uXCIsXCJkb29cIixcImRvcFwiLFwiZG9xXCIsXCJkb3JcIixcImRvc1wiLFwiZG90XCIsXCJkb3ZcIixcImRvd1wiLFwiZG94XCIsXCJkb3lcIixcImRvelwiLFwiZHBwXCIsXCJkcmFcIixcImRyYlwiLFwiZHJjXCIsXCJkcmRcIixcImRyZVwiLFwiZHJnXCIsXCJkcmhcIixcImRyaVwiLFwiZHJsXCIsXCJkcm5cIixcImRyb1wiLFwiZHJxXCIsXCJkcnJcIixcImRyc1wiLFwiZHJ0XCIsXCJkcnVcIixcImRyd1wiLFwiZHJ5XCIsXCJkc2JcIixcImRzZVwiLFwiZHNoXCIsXCJkc2lcIixcImRzbFwiLFwiZHNuXCIsXCJkc29cIixcImRzcVwiLFwiZHRhXCIsXCJkdGJcIixcImR0ZFwiLFwiZHRoXCIsXCJkdGlcIixcImR0a1wiLFwiZHRtXCIsXCJkdG5cIixcImR0b1wiLFwiZHRwXCIsXCJkdHJcIixcImR0c1wiLFwiZHR0XCIsXCJkdHVcIixcImR0eVwiLFwiZHVhXCIsXCJkdWJcIixcImR1Y1wiLFwiZHVkXCIsXCJkdWVcIixcImR1ZlwiLFwiZHVnXCIsXCJkdWhcIixcImR1aVwiLFwiZHVqXCIsXCJkdWtcIixcImR1bFwiLFwiZHVtXCIsXCJkdW5cIixcImR1b1wiLFwiZHVwXCIsXCJkdXFcIixcImR1clwiLFwiZHVzXCIsXCJkdXVcIixcImR1dlwiLFwiZHV3XCIsXCJkdXhcIixcImR1eVwiLFwiZHV6XCIsXCJkdmFcIixcImR3YVwiLFwiZHdrXCIsXCJkd2xcIixcImR3clwiLFwiZHdzXCIsXCJkd3VcIixcImR3d1wiLFwiZHd5XCIsXCJkd3pcIixcImR5YVwiLFwiZHliXCIsXCJkeWRcIixcImR5Z1wiLFwiZHlpXCIsXCJkeW1cIixcImR5blwiLFwiZHlvXCIsXCJkeXVcIixcImR5eVwiLFwiZHphXCIsXCJkemRcIixcImR6ZVwiLFwiZHpnXCIsXCJkemxcIixcImR6blwiXVxuLFsgXCJlZVwiLFwiZWxcIixcImVuXCIsXCJlb1wiLFwiZXNcIixcImV0XCIsXCJldVwiLFwiZWFhXCIsXCJlYmNcIixcImViZ1wiLFwiZWJrXCIsXCJlYm9cIixcImViclwiLFwiZWJ1XCIsXCJlY3JcIixcImVjc1wiLFwiZWN5XCIsXCJlZWVcIixcImVmYVwiLFwiZWZlXCIsXCJlZmlcIixcImVnYVwiLFwiZWdsXCIsXCJlZ29cIixcImVneFwiLFwiZWd5XCIsXCJlaHNcIixcImVodVwiLFwiZWlwXCIsXCJlaXRcIixcImVpdlwiLFwiZWphXCIsXCJla2FcIixcImVrY1wiLFwiZWtlXCIsXCJla2dcIixcImVraVwiLFwiZWtrXCIsXCJla2xcIixcImVrbVwiLFwiZWtvXCIsXCJla3BcIixcImVrclwiLFwiZWt5XCIsXCJlbGVcIixcImVsaFwiLFwiZWxpXCIsXCJlbGtcIixcImVsbVwiLFwiZWxvXCIsXCJlbHBcIixcImVsdVwiLFwiZWx4XCIsXCJlbWFcIixcImVtYlwiLFwiZW1lXCIsXCJlbWdcIixcImVtaVwiLFwiZW1rXCIsXCJlbW1cIixcImVtblwiLFwiZW1vXCIsXCJlbXBcIixcImVtcVwiLFwiZW1zXCIsXCJlbXVcIixcImVtd1wiLFwiZW14XCIsXCJlbXlcIixcImVtelwiLFwiZW5hXCIsXCJlbmJcIixcImVuY1wiLFwiZW5kXCIsXCJlbmZcIixcImVuaFwiLFwiZW5sXCIsXCJlbm1cIixcImVublwiLFwiZW5vXCIsXCJlbnFcIixcImVuclwiLFwiZW51XCIsXCJlbnZcIixcImVud1wiLFwiZW54XCIsXCJlb3RcIixcImVwaVwiLFwiZXJhXCIsXCJlcmdcIixcImVyaFwiLFwiZXJpXCIsXCJlcmtcIixcImVyb1wiLFwiZXJyXCIsXCJlcnNcIixcImVydFwiLFwiZXJ3XCIsXCJlc2VcIixcImVzZ1wiLFwiZXNoXCIsXCJlc2lcIixcImVza1wiLFwiZXNsXCIsXCJlc21cIixcImVzblwiLFwiZXNvXCIsXCJlc3FcIixcImVzc1wiLFwiZXN1XCIsXCJlc3hcIixcImVzeVwiLFwiZXRiXCIsXCJldGNcIixcImV0aFwiLFwiZXRuXCIsXCJldG9cIixcImV0clwiLFwiZXRzXCIsXCJldHRcIixcImV0dVwiLFwiZXR4XCIsXCJldHpcIixcImV1cVwiLFwiZXZlXCIsXCJldmhcIixcImV2blwiLFwiZXdvXCIsXCJleHRcIixcImV5YVwiLFwiZXlvXCIsXCJlemFcIixcImV6ZVwiXVxuLFsgXCJmYVwiLFwiZmZcIixcImZpXCIsXCJmalwiLFwiZm9cIixcImZyXCIsXCJmeVwiLFwiZmFhXCIsXCJmYWJcIixcImZhZFwiLFwiZmFmXCIsXCJmYWdcIixcImZhaFwiLFwiZmFpXCIsXCJmYWpcIixcImZha1wiLFwiZmFsXCIsXCJmYW1cIixcImZhblwiLFwiZmFwXCIsXCJmYXJcIixcImZhdFwiLFwiZmF1XCIsXCJmYXhcIixcImZheVwiLFwiZmF6XCIsXCJmYmxcIixcImZjc1wiLFwiZmVyXCIsXCJmZmlcIixcImZmbVwiLFwiZmdyXCIsXCJmaWFcIixcImZpZVwiLFwiZmlmXCIsXCJmaWxcIixcImZpcFwiLFwiZmlyXCIsXCJmaXRcIixcImZpdVwiLFwiZml3XCIsXCJma2tcIixcImZrdlwiLFwiZmxhXCIsXCJmbGhcIixcImZsaVwiLFwiZmxsXCIsXCJmbG5cIixcImZsclwiLFwiZmx5XCIsXCJmbXBcIixcImZtdVwiLFwiZm5iXCIsXCJmbmdcIixcImZuaVwiLFwiZm9kXCIsXCJmb2lcIixcImZvbVwiLFwiZm9uXCIsXCJmb3JcIixcImZvc1wiLFwiZm94XCIsXCJmcGVcIixcImZxc1wiLFwiZnJjXCIsXCJmcmRcIixcImZya1wiLFwiZnJtXCIsXCJmcm9cIixcImZycFwiLFwiZnJxXCIsXCJmcnJcIixcImZyc1wiLFwiZnJ0XCIsXCJmc2VcIixcImZzbFwiLFwiZnNzXCIsXCJmdWJcIixcImZ1Y1wiLFwiZnVkXCIsXCJmdWVcIixcImZ1ZlwiLFwiZnVoXCIsXCJmdWlcIixcImZ1alwiLFwiZnVtXCIsXCJmdW5cIixcImZ1cVwiLFwiZnVyXCIsXCJmdXRcIixcImZ1dVwiLFwiZnV2XCIsXCJmdXlcIixcImZ2clwiLFwiZndhXCIsXCJmd2VcIl1cbixbIFwiZ2FcIixcImdkXCIsXCJnbFwiLFwiZ25cIixcImd1XCIsXCJndlwiLFwiZ2FhXCIsXCJnYWJcIixcImdhY1wiLFwiZ2FkXCIsXCJnYWVcIixcImdhZlwiLFwiZ2FnXCIsXCJnYWhcIixcImdhaVwiLFwiZ2FqXCIsXCJnYWtcIixcImdhbFwiLFwiZ2FtXCIsXCJnYW5cIixcImdhb1wiLFwiZ2FwXCIsXCJnYXFcIixcImdhclwiLFwiZ2FzXCIsXCJnYXRcIixcImdhdVwiLFwiZ2F2XCIsXCJnYXdcIixcImdheFwiLFwiZ2F5XCIsXCJnYXpcIixcImdiYVwiLFwiZ2JiXCIsXCJnYmNcIixcImdiZFwiLFwiZ2JlXCIsXCJnYmZcIixcImdiZ1wiLFwiZ2JoXCIsXCJnYmlcIixcImdialwiLFwiZ2JrXCIsXCJnYmxcIixcImdibVwiLFwiZ2JuXCIsXCJnYm9cIixcImdicFwiLFwiZ2JxXCIsXCJnYnJcIixcImdic1wiLFwiZ2J1XCIsXCJnYnZcIixcImdid1wiLFwiZ2J4XCIsXCJnYnlcIixcImdielwiLFwiZ2NjXCIsXCJnY2RcIixcImdjZVwiLFwiZ2NmXCIsXCJnY2xcIixcImdjblwiLFwiZ2NyXCIsXCJnY3RcIixcImdkYVwiLFwiZ2RiXCIsXCJnZGNcIixcImdkZFwiLFwiZ2RlXCIsXCJnZGZcIixcImdkZ1wiLFwiZ2RoXCIsXCJnZGlcIixcImdkalwiLFwiZ2RrXCIsXCJnZGxcIixcImdkbVwiLFwiZ2RuXCIsXCJnZG9cIixcImdkcVwiLFwiZ2RyXCIsXCJnZHNcIixcImdkdFwiLFwiZ2R1XCIsXCJnZHhcIixcImdlYVwiLFwiZ2ViXCIsXCJnZWNcIixcImdlZFwiLFwiZ2VmXCIsXCJnZWdcIixcImdlaFwiLFwiZ2VpXCIsXCJnZWpcIixcImdla1wiLFwiZ2VsXCIsXCJnZW1cIixcImdlcVwiLFwiZ2VzXCIsXCJnZXZcIixcImdld1wiLFwiZ2V4XCIsXCJnZXlcIixcImdlelwiLFwiZ2ZrXCIsXCJnZnRcIixcImdmeFwiLFwiZ2dhXCIsXCJnZ2JcIixcImdnZFwiLFwiZ2dlXCIsXCJnZ2dcIixcImdna1wiLFwiZ2dsXCIsXCJnZ25cIixcImdnb1wiLFwiZ2dyXCIsXCJnZ3RcIixcImdndVwiLFwiZ2d3XCIsXCJnaGFcIixcImdoY1wiLFwiZ2hlXCIsXCJnaGhcIixcImdoa1wiLFwiZ2hsXCIsXCJnaG5cIixcImdob1wiLFwiZ2hyXCIsXCJnaHNcIixcImdodFwiLFwiZ2lhXCIsXCJnaWJcIixcImdpY1wiLFwiZ2lkXCIsXCJnaWVcIixcImdpZ1wiLFwiZ2loXCIsXCJnaWlcIixcImdpbFwiLFwiZ2ltXCIsXCJnaW5cIixcImdpb1wiLFwiZ2lwXCIsXCJnaXFcIixcImdpclwiLFwiZ2lzXCIsXCJnaXRcIixcImdpdVwiLFwiZ2l3XCIsXCJnaXhcIixcImdpeVwiLFwiZ2l6XCIsXCJnamlcIixcImdqa1wiLFwiZ2ptXCIsXCJnam5cIixcImdqclwiLFwiZ2p1XCIsXCJna2FcIixcImdrZFwiLFwiZ2tlXCIsXCJna25cIixcImdrb1wiLFwiZ2twXCIsXCJna3VcIixcImdsYlwiLFwiZ2xjXCIsXCJnbGRcIixcImdsaFwiLFwiZ2xpXCIsXCJnbGpcIixcImdsa1wiLFwiZ2xsXCIsXCJnbG9cIixcImdsclwiLFwiZ2x1XCIsXCJnbHdcIixcImdseVwiLFwiZ21hXCIsXCJnbWJcIixcImdtZFwiLFwiZ21lXCIsXCJnbWdcIixcImdtaFwiLFwiZ21sXCIsXCJnbW1cIixcImdtblwiLFwiZ21xXCIsXCJnbXJcIixcImdtdVwiLFwiZ212XCIsXCJnbXdcIixcImdteFwiLFwiZ215XCIsXCJnbXpcIixcImduYVwiLFwiZ25iXCIsXCJnbmNcIixcImduZFwiLFwiZ25lXCIsXCJnbmdcIixcImduaFwiLFwiZ25pXCIsXCJnbmpcIixcImdua1wiLFwiZ25sXCIsXCJnbm1cIixcImdublwiLFwiZ25vXCIsXCJnbnFcIixcImduclwiLFwiZ250XCIsXCJnbnVcIixcImdud1wiLFwiZ256XCIsXCJnb2FcIixcImdvYlwiLFwiZ29jXCIsXCJnb2RcIixcImdvZVwiLFwiZ29mXCIsXCJnb2dcIixcImdvaFwiLFwiZ29pXCIsXCJnb2pcIixcImdva1wiLFwiZ29sXCIsXCJnb21cIixcImdvblwiLFwiZ29vXCIsXCJnb3BcIixcImdvcVwiLFwiZ29yXCIsXCJnb3NcIixcImdvdFwiLFwiZ291XCIsXCJnb3dcIixcImdveFwiLFwiZ295XCIsXCJnb3pcIixcImdwYVwiLFwiZ3BlXCIsXCJncG5cIixcImdxYVwiLFwiZ3FpXCIsXCJncW5cIixcImdxclwiLFwiZ3F1XCIsXCJncmFcIixcImdyYlwiLFwiZ3JjXCIsXCJncmRcIixcImdyZ1wiLFwiZ3JoXCIsXCJncmlcIixcImdyalwiLFwiZ3JrXCIsXCJncm1cIixcImdyb1wiLFwiZ3JxXCIsXCJncnJcIixcImdyc1wiLFwiZ3J0XCIsXCJncnVcIixcImdydlwiLFwiZ3J3XCIsXCJncnhcIixcImdyeVwiLFwiZ3J6XCIsXCJnc2VcIixcImdzZ1wiLFwiZ3NsXCIsXCJnc21cIixcImdzblwiLFwiZ3NvXCIsXCJnc3BcIixcImdzc1wiLFwiZ3N3XCIsXCJndGFcIixcImd0aVwiLFwiZ3R1XCIsXCJndWFcIixcImd1YlwiLFwiZ3VjXCIsXCJndWRcIixcImd1ZVwiLFwiZ3VmXCIsXCJndWdcIixcImd1aFwiLFwiZ3VpXCIsXCJndWtcIixcImd1bFwiLFwiZ3VtXCIsXCJndW5cIixcImd1b1wiLFwiZ3VwXCIsXCJndXFcIixcImd1clwiLFwiZ3VzXCIsXCJndXRcIixcImd1dVwiLFwiZ3V2XCIsXCJndXdcIixcImd1eFwiLFwiZ3V6XCIsXCJndmFcIixcImd2Y1wiLFwiZ3ZlXCIsXCJndmZcIixcImd2alwiLFwiZ3ZsXCIsXCJndm1cIixcImd2blwiLFwiZ3ZvXCIsXCJndnBcIixcImd2clwiLFwiZ3ZzXCIsXCJndnlcIixcImd3YVwiLFwiZ3diXCIsXCJnd2NcIixcImd3ZFwiLFwiZ3dlXCIsXCJnd2ZcIixcImd3Z1wiLFwiZ3dpXCIsXCJnd2pcIixcImd3bVwiLFwiZ3duXCIsXCJnd3JcIixcImd3dFwiLFwiZ3d1XCIsXCJnd3dcIixcImd3eFwiLFwiZ3h4XCIsXCJneWFcIixcImd5YlwiLFwiZ3lkXCIsXCJneWVcIixcImd5ZlwiLFwiZ3lnXCIsXCJneWlcIixcImd5bFwiLFwiZ3ltXCIsXCJneW5cIixcImd5b1wiLFwiZ3lyXCIsXCJneXlcIixcImd5elwiLFwiZ3phXCIsXCJnemlcIixcImd6blwiXVxuLFsgXCJoYVwiLFwiaGVcIixcImhpXCIsXCJob1wiLFwiaHJcIixcImh0XCIsXCJodVwiLFwiaHlcIixcImh6XCIsXCJoYWFcIixcImhhYlwiLFwiaGFjXCIsXCJoYWRcIixcImhhZVwiLFwiaGFmXCIsXCJoYWdcIixcImhhaFwiLFwiaGFpXCIsXCJoYWpcIixcImhha1wiLFwiaGFsXCIsXCJoYW1cIixcImhhblwiLFwiaGFvXCIsXCJoYXBcIixcImhhcVwiLFwiaGFyXCIsXCJoYXNcIixcImhhdlwiLFwiaGF3XCIsXCJoYXhcIixcImhheVwiLFwiaGF6XCIsXCJoYmFcIixcImhiYlwiLFwiaGJuXCIsXCJoYm9cIixcImhidVwiLFwiaGNhXCIsXCJoY2hcIixcImhkblwiLFwiaGRzXCIsXCJoZHlcIixcImhlYVwiLFwiaGVkXCIsXCJoZWdcIixcImhlaFwiLFwiaGVpXCIsXCJoZW1cIixcImhnbVwiLFwiaGd3XCIsXCJoaGlcIixcImhoclwiLFwiaGh5XCIsXCJoaWFcIixcImhpYlwiLFwiaGlkXCIsXCJoaWZcIixcImhpZ1wiLFwiaGloXCIsXCJoaWlcIixcImhpalwiLFwiaGlrXCIsXCJoaWxcIixcImhpbVwiLFwiaGlvXCIsXCJoaXJcIixcImhpdFwiLFwiaGl3XCIsXCJoaXhcIixcImhqaVwiLFwiaGthXCIsXCJoa2VcIixcImhraFwiLFwiaGtrXCIsXCJoa25cIixcImhrc1wiLFwiaGxhXCIsXCJobGJcIixcImhsZFwiLFwiaGxlXCIsXCJobHRcIixcImhsdVwiLFwiaG1hXCIsXCJobWJcIixcImhtY1wiLFwiaG1kXCIsXCJobWVcIixcImhtZlwiLFwiaG1nXCIsXCJobWhcIixcImhtaVwiLFwiaG1qXCIsXCJobWtcIixcImhtbFwiLFwiaG1tXCIsXCJobW5cIixcImhtcFwiLFwiaG1xXCIsXCJobXJcIixcImhtc1wiLFwiaG10XCIsXCJobXVcIixcImhtdlwiLFwiaG13XCIsXCJobXhcIixcImhteVwiLFwiaG16XCIsXCJobmFcIixcImhuZFwiLFwiaG5lXCIsXCJobmdcIixcImhuaFwiLFwiaG5pXCIsXCJobmpcIixcImhublwiLFwiaG5vXCIsXCJobnNcIixcImhudVwiLFwiaG9hXCIsXCJob2JcIixcImhvY1wiLFwiaG9kXCIsXCJob2VcIixcImhvaFwiLFwiaG9pXCIsXCJob2pcIixcImhva1wiLFwiaG9sXCIsXCJob21cIixcImhvb1wiLFwiaG9wXCIsXCJob3JcIixcImhvc1wiLFwiaG90XCIsXCJob3ZcIixcImhvd1wiLFwiaG95XCIsXCJob3pcIixcImhwb1wiLFwiaHBzXCIsXCJocmFcIixcImhyY1wiLFwiaHJlXCIsXCJocmtcIixcImhybVwiLFwiaHJvXCIsXCJocnBcIixcImhyclwiLFwiaHJ0XCIsXCJocnVcIixcImhyd1wiLFwiaHJ4XCIsXCJocnpcIixcImhzYlwiLFwiaHNoXCIsXCJoc2xcIixcImhzblwiLFwiaHNzXCIsXCJodGlcIixcImh0b1wiLFwiaHRzXCIsXCJodHVcIixcImh0eFwiLFwiaHViXCIsXCJodWNcIixcImh1ZFwiLFwiaHVlXCIsXCJodWZcIixcImh1Z1wiLFwiaHVoXCIsXCJodWlcIixcImh1alwiLFwiaHVrXCIsXCJodWxcIixcImh1bVwiLFwiaHVvXCIsXCJodXBcIixcImh1cVwiLFwiaHVyXCIsXCJodXNcIixcImh1dFwiLFwiaHV1XCIsXCJodXZcIixcImh1d1wiLFwiaHV4XCIsXCJodXlcIixcImh1elwiLFwiaHZjXCIsXCJodmVcIixcImh2a1wiLFwiaHZuXCIsXCJodnZcIixcImh3YVwiLFwiaHdjXCIsXCJod29cIixcImh5YVwiLFwiaHl3XCIsXCJoeXhcIl1cbixbIFwiaWFcIixcImlkXCIsXCJpZVwiLFwiaWdcIixcImlpXCIsXCJpa1wiLFwiaW5cIixcImlvXCIsXCJpc1wiLFwiaXRcIixcIml1XCIsXCJpd1wiLFwiaWFpXCIsXCJpYW5cIixcImlhcFwiLFwiaWFyXCIsXCJpYmFcIixcImliYlwiLFwiaWJkXCIsXCJpYmVcIixcImliZ1wiLFwiaWJoXCIsXCJpYmlcIixcImlibFwiLFwiaWJtXCIsXCJpYm5cIixcImliclwiLFwiaWJ1XCIsXCJpYnlcIixcImljYVwiLFwiaWNoXCIsXCJpY2xcIixcImljclwiLFwiaWRhXCIsXCJpZGJcIixcImlkY1wiLFwiaWRkXCIsXCJpZGVcIixcImlkaVwiLFwiaWRyXCIsXCJpZHNcIixcImlkdFwiLFwiaWR1XCIsXCJpZmFcIixcImlmYlwiLFwiaWZlXCIsXCJpZmZcIixcImlma1wiLFwiaWZtXCIsXCJpZnVcIixcImlmeVwiLFwiaWdiXCIsXCJpZ2VcIixcImlnZ1wiLFwiaWdsXCIsXCJpZ21cIixcImlnblwiLFwiaWdvXCIsXCJpZ3NcIixcImlnd1wiLFwiaWhiXCIsXCJpaGlcIixcImlocFwiLFwiaWh3XCIsXCJpaW5cIixcImlpclwiLFwiaWpjXCIsXCJpamVcIixcImlqalwiLFwiaWpuXCIsXCJpam9cIixcImlqc1wiLFwiaWtlXCIsXCJpa2lcIixcImlra1wiLFwiaWtsXCIsXCJpa29cIixcImlrcFwiLFwiaWtyXCIsXCJpa3NcIixcImlrdFwiLFwiaWt2XCIsXCJpa3dcIixcImlreFwiLFwiaWt6XCIsXCJpbGFcIixcImlsYlwiLFwiaWxnXCIsXCJpbGlcIixcImlsa1wiLFwiaWxsXCIsXCJpbG1cIixcImlsb1wiLFwiaWxwXCIsXCJpbHNcIixcImlsdVwiLFwiaWx2XCIsXCJpbHdcIixcImltYVwiLFwiaW1lXCIsXCJpbWlcIixcImltbFwiLFwiaW1uXCIsXCJpbW9cIixcImltclwiLFwiaW1zXCIsXCJpbXlcIixcImluYlwiLFwiaW5jXCIsXCJpbmVcIixcImluZ1wiLFwiaW5oXCIsXCJpbmpcIixcImlubFwiLFwiaW5tXCIsXCJpbm5cIixcImlub1wiLFwiaW5wXCIsXCJpbnNcIixcImludFwiLFwiaW56XCIsXCJpb3JcIixcImlvdVwiLFwiaW93XCIsXCJpcGlcIixcImlwb1wiLFwiaXF1XCIsXCJpcXdcIixcImlyYVwiLFwiaXJlXCIsXCJpcmhcIixcImlyaVwiLFwiaXJrXCIsXCJpcm5cIixcImlyb1wiLFwiaXJyXCIsXCJpcnVcIixcImlyeFwiLFwiaXJ5XCIsXCJpc2FcIixcImlzY1wiLFwiaXNkXCIsXCJpc2VcIixcImlzZ1wiLFwiaXNoXCIsXCJpc2lcIixcImlza1wiLFwiaXNtXCIsXCJpc25cIixcImlzb1wiLFwiaXNyXCIsXCJpc3RcIixcImlzdVwiLFwiaXRiXCIsXCJpdGNcIixcIml0ZFwiLFwiaXRlXCIsXCJpdGlcIixcIml0a1wiLFwiaXRsXCIsXCJpdG1cIixcIml0b1wiLFwiaXRyXCIsXCJpdHNcIixcIml0dFwiLFwiaXR2XCIsXCJpdHdcIixcIml0eFwiLFwiaXR5XCIsXCJpdHpcIixcIml1bVwiLFwiaXZiXCIsXCJpdnZcIixcIml3a1wiLFwiaXdtXCIsXCJpd29cIixcIml3c1wiLFwiaXhjXCIsXCJpeGxcIixcIml5YVwiLFwiaXlvXCIsXCJpeXhcIixcIml6aFwiLFwiaXppXCIsXCJpenJcIixcIml6elwiXVxuLFsgXCJqYVwiLFwiamlcIixcImp2XCIsXCJqd1wiLFwiamFhXCIsXCJqYWJcIixcImphY1wiLFwiamFkXCIsXCJqYWVcIixcImphZlwiLFwiamFoXCIsXCJqYWpcIixcImpha1wiLFwiamFsXCIsXCJqYW1cIixcImphblwiLFwiamFvXCIsXCJqYXFcIixcImphclwiLFwiamFzXCIsXCJqYXRcIixcImphdVwiLFwiamF4XCIsXCJqYXlcIixcImphelwiLFwiamJlXCIsXCJqYmlcIixcImpialwiLFwiamJrXCIsXCJqYm1cIixcImpiblwiLFwiamJvXCIsXCJqYnJcIixcImpidFwiLFwiamJ1XCIsXCJqYndcIixcImpjc1wiLFwiamN0XCIsXCJqZGFcIixcImpkZ1wiLFwiamR0XCIsXCJqZWJcIixcImplZVwiLFwiamVnXCIsXCJqZWhcIixcImplaVwiLFwiamVrXCIsXCJqZWxcIixcImplblwiLFwiamVyXCIsXCJqZXRcIixcImpldVwiLFwiamdiXCIsXCJqZ2VcIixcImpna1wiLFwiamdvXCIsXCJqaGlcIixcImpoc1wiLFwiamlhXCIsXCJqaWJcIixcImppY1wiLFwiamlkXCIsXCJqaWVcIixcImppZ1wiLFwiamloXCIsXCJqaWlcIixcImppbFwiLFwiamltXCIsXCJqaW9cIixcImppcVwiLFwiaml0XCIsXCJqaXVcIixcImppdlwiLFwiaml5XCIsXCJqamVcIixcImpqclwiLFwiamthXCIsXCJqa21cIixcImprb1wiLFwiamtwXCIsXCJqa3JcIixcImprc1wiLFwiamt1XCIsXCJqbGVcIixcImpsc1wiLFwiam1hXCIsXCJqbWJcIixcImptY1wiLFwiam1kXCIsXCJqbWlcIixcImptbFwiLFwiam1uXCIsXCJqbXJcIixcImptc1wiLFwiam13XCIsXCJqbXhcIixcImpuYVwiLFwiam5kXCIsXCJqbmdcIixcImpuaVwiLFwiam5qXCIsXCJqbmxcIixcImpuc1wiLFwiam9iXCIsXCJqb2RcIixcImpvZ1wiLFwiam9yXCIsXCJqb3NcIixcImpvd1wiLFwianBhXCIsXCJqcHJcIixcImpweFwiLFwianFyXCIsXCJqcmFcIixcImpyYlwiLFwianJyXCIsXCJqcnRcIixcImpydVwiLFwianNsXCIsXCJqdWFcIixcImp1YlwiLFwianVjXCIsXCJqdWRcIixcImp1aFwiLFwianVpXCIsXCJqdWtcIixcImp1bFwiLFwianVtXCIsXCJqdW5cIixcImp1b1wiLFwianVwXCIsXCJqdXJcIixcImp1c1wiLFwianV0XCIsXCJqdXVcIixcImp1d1wiLFwianV5XCIsXCJqdmRcIixcImp2blwiLFwiandpXCIsXCJqeWFcIixcImp5ZVwiLFwianl5XCJdXG4sWyBcImthXCIsXCJrZ1wiLFwia2lcIixcImtqXCIsXCJra1wiLFwia2xcIixcImttXCIsXCJrblwiLFwia29cIixcImtyXCIsXCJrc1wiLFwia3VcIixcImt2XCIsXCJrd1wiLFwia3lcIixcImthYVwiLFwia2FiXCIsXCJrYWNcIixcImthZFwiLFwia2FlXCIsXCJrYWZcIixcImthZ1wiLFwia2FoXCIsXCJrYWlcIixcImthalwiLFwia2FrXCIsXCJrYW1cIixcImthb1wiLFwia2FwXCIsXCJrYXFcIixcImthclwiLFwia2F2XCIsXCJrYXdcIixcImtheFwiLFwia2F5XCIsXCJrYmFcIixcImtiYlwiLFwia2JjXCIsXCJrYmRcIixcImtiZVwiLFwia2JmXCIsXCJrYmdcIixcImtiaFwiLFwia2JpXCIsXCJrYmpcIixcImtia1wiLFwia2JsXCIsXCJrYm1cIixcImtiblwiLFwia2JvXCIsXCJrYnBcIixcImticVwiLFwia2JyXCIsXCJrYnNcIixcImtidFwiLFwia2J1XCIsXCJrYnZcIixcImtid1wiLFwia2J4XCIsXCJrYnlcIixcImtielwiLFwia2NhXCIsXCJrY2JcIixcImtjY1wiLFwia2NkXCIsXCJrY2VcIixcImtjZlwiLFwia2NnXCIsXCJrY2hcIixcImtjaVwiLFwia2NqXCIsXCJrY2tcIixcImtjbFwiLFwia2NtXCIsXCJrY25cIixcImtjb1wiLFwia2NwXCIsXCJrY3FcIixcImtjclwiLFwia2NzXCIsXCJrY3RcIixcImtjdVwiLFwia2N2XCIsXCJrY3dcIixcImtjeFwiLFwia2N5XCIsXCJrY3pcIixcImtkYVwiLFwia2RjXCIsXCJrZGRcIixcImtkZVwiLFwia2RmXCIsXCJrZGdcIixcImtkaFwiLFwia2RpXCIsXCJrZGpcIixcImtka1wiLFwia2RsXCIsXCJrZG1cIixcImtkblwiLFwia2RvXCIsXCJrZHBcIixcImtkcVwiLFwia2RyXCIsXCJrZHRcIixcImtkdVwiLFwia2R2XCIsXCJrZHdcIixcImtkeFwiLFwia2R5XCIsXCJrZHpcIixcImtlYVwiLFwia2ViXCIsXCJrZWNcIixcImtlZFwiLFwia2VlXCIsXCJrZWZcIixcImtlZ1wiLFwia2VoXCIsXCJrZWlcIixcImtlalwiLFwia2VrXCIsXCJrZWxcIixcImtlbVwiLFwia2VuXCIsXCJrZW9cIixcImtlcFwiLFwia2VxXCIsXCJrZXJcIixcImtlc1wiLFwia2V0XCIsXCJrZXVcIixcImtldlwiLFwia2V3XCIsXCJrZXhcIixcImtleVwiLFwia2V6XCIsXCJrZmFcIixcImtmYlwiLFwia2ZjXCIsXCJrZmRcIixcImtmZVwiLFwia2ZmXCIsXCJrZmdcIixcImtmaFwiLFwia2ZpXCIsXCJrZmpcIixcImtma1wiLFwia2ZsXCIsXCJrZm1cIixcImtmblwiLFwia2ZvXCIsXCJrZnBcIixcImtmcVwiLFwia2ZyXCIsXCJrZnNcIixcImtmdFwiLFwia2Z1XCIsXCJrZnZcIixcImtmd1wiLFwia2Z4XCIsXCJrZnlcIixcImtmelwiLFwia2dhXCIsXCJrZ2JcIixcImtnY1wiLFwia2dkXCIsXCJrZ2VcIixcImtnZlwiLFwia2dnXCIsXCJrZ2hcIixcImtnaVwiLFwia2dqXCIsXCJrZ2tcIixcImtnbFwiLFwia2dtXCIsXCJrZ25cIixcImtnb1wiLFwia2dwXCIsXCJrZ3FcIixcImtnclwiLFwia2dzXCIsXCJrZ3RcIixcImtndVwiLFwia2d2XCIsXCJrZ3dcIixcImtneFwiLFwia2d5XCIsXCJraGFcIixcImx5Z1wiLFwia2hiXCIsXCJraGNcIixcImtoZFwiLFwia2hlXCIsXCJraGZcIixcImtoZ1wiLFwia2hoXCIsXCJraGlcIixcImtoalwiLFwia2hrXCIsXCJraGxcIixcImtoblwiLFwia2hvXCIsXCJraHBcIixcImtocVwiLFwia2hyXCIsXCJraHNcIixcImtodFwiLFwia2h1XCIsXCJraHZcIixcImtod1wiLFwia2h4XCIsXCJraHlcIixcImtoelwiLFwia2lhXCIsXCJraWJcIixcImtpY1wiLFwia2lkXCIsXCJraWVcIixcImtpZlwiLFwia2lnXCIsXCJraWhcIixcImtpaVwiLFwia2lqXCIsXCJraWxcIixcImtpbVwiLFwia2lvXCIsXCJraXBcIixcImtpcVwiLFwia2lzXCIsXCJraXRcIixcImtpdVwiLFwia2l2XCIsXCJraXdcIixcImtpeFwiLFwia2l5XCIsXCJraXpcIixcImtqYVwiLFwia2piXCIsXCJramNcIixcImtqZFwiLFwia2plXCIsXCJramZcIixcImtqZ1wiLFwia2poXCIsXCJramlcIixcImtqalwiLFwia2prXCIsXCJramxcIixcImtqbVwiLFwia2puXCIsXCJram9cIixcImtqcFwiLFwia2pxXCIsXCJranJcIixcImtqc1wiLFwia2p0XCIsXCJranVcIixcImtqdlwiLFwia2p4XCIsXCJranlcIixcImtqelwiLFwia2thXCIsXCJra2JcIixcImtrY1wiLFwia2tkXCIsXCJra2VcIixcImtrZlwiLFwia2tnXCIsXCJra2hcIixcImtraVwiLFwia2tqXCIsXCJra2tcIixcImtrbFwiLFwia2ttXCIsXCJra25cIixcImtrb1wiLFwia2twXCIsXCJra3FcIixcImtrclwiLFwia2tzXCIsXCJra3RcIixcImtrdVwiLFwia2t2XCIsXCJra3dcIixcImtreFwiLFwia2t5XCIsXCJra3pcIixcImtsYVwiLFwia2xiXCIsXCJrbGNcIixcImtsZFwiLFwia2xlXCIsXCJrbGZcIixcImtsZ1wiLFwia2xoXCIsXCJrbGlcIixcImtsalwiLFwia2xrXCIsXCJrbGxcIixcImtsbVwiLFwia2xuXCIsXCJrbG9cIixcImtscFwiLFwia2xxXCIsXCJrbHJcIixcImtsc1wiLFwia2x0XCIsXCJrbHVcIixcImtsdlwiLFwia2x3XCIsXCJrbHhcIixcImtseVwiLFwia2x6XCIsXCJrbWFcIixcImttYlwiLFwia21jXCIsXCJrbWRcIixcImttZVwiLFwia21mXCIsXCJrbWdcIixcImttaFwiLFwia21pXCIsXCJrbWpcIixcImtta1wiLFwia21sXCIsXCJrbW1cIixcImttblwiLFwia21vXCIsXCJrbXBcIixcImttcVwiLFwia21yXCIsXCJrbXNcIixcImttdFwiLFwia211XCIsXCJrbXZcIixcImttd1wiLFwia214XCIsXCJrbXlcIixcImttelwiLFwia25hXCIsXCJrbmJcIixcImtuY1wiLFwia25kXCIsXCJrbmVcIixcImtuZlwiLFwia25nXCIsXCJrbmlcIixcImtualwiLFwia25rXCIsXCJrbmxcIixcImtubVwiLFwia25uXCIsXCJrbm9cIixcImtucFwiLFwia25xXCIsXCJrbnJcIixcImtuc1wiLFwia250XCIsXCJrbnVcIixcImtudlwiLFwia253XCIsXCJrbnhcIixcImtueVwiLFwia256XCIsXCJrb2FcIixcImtvY1wiLFwia29kXCIsXCJrb2VcIixcImtvZlwiLFwia29nXCIsXCJrb2hcIixcImtvaVwiLFwia29qXCIsXCJrb2tcIixcImtvbFwiLFwia29vXCIsXCJrb3BcIixcImtvcVwiLFwia29zXCIsXCJrb3RcIixcImtvdVwiLFwia292XCIsXCJrb3dcIixcImtveFwiLFwia295XCIsXCJrb3pcIixcImtwYVwiLFwia3BiXCIsXCJrcGNcIixcImtwZFwiLFwia3BlXCIsXCJrcGZcIixcImtwZ1wiLFwia3BoXCIsXCJrcGlcIixcImtwalwiLFwia3BrXCIsXCJrcGxcIixcImtwbVwiLFwia3BuXCIsXCJrcG9cIixcImtwcFwiLFwia3BxXCIsXCJrcHJcIixcImtwc1wiLFwia3B0XCIsXCJrcHVcIixcImtwdlwiLFwia3B3XCIsXCJrcHhcIixcImtweVwiLFwia3B6XCIsXCJrcWFcIixcImtxYlwiLFwia3FjXCIsXCJrcWRcIixcImtxZVwiLFwia3FmXCIsXCJrcWdcIixcImtxaFwiLFwia3FpXCIsXCJrcWpcIixcImtxa1wiLFwia3FsXCIsXCJrcW1cIixcImtxblwiLFwia3FvXCIsXCJrcXBcIixcImtxcVwiLFwia3FyXCIsXCJrcXNcIixcImtxdFwiLFwia3F1XCIsXCJrcXZcIixcImtxd1wiLFwia3F4XCIsXCJrcXlcIixcImtxelwiLFwia3JhXCIsXCJrcmJcIixcImtyY1wiLFwia3JkXCIsXCJrcmVcIixcImtyZlwiLFwia3JoXCIsXCJrcmlcIixcImtyalwiLFwia3JrXCIsXCJrcmxcIixcImtybVwiLFwia3JuXCIsXCJrcm9cIixcImtycFwiLFwia3JyXCIsXCJrcnNcIixcImtydFwiLFwia3J1XCIsXCJrcnZcIixcImtyd1wiLFwia3J4XCIsXCJrcnlcIixcImtyelwiLFwia3NhXCIsXCJrc2JcIixcImtzY1wiLFwia3NkXCIsXCJrc2VcIixcImtzZlwiLFwia3NnXCIsXCJrc2hcIixcImtzaVwiLFwia3NqXCIsXCJrc2tcIixcImtzbFwiLFwia3NtXCIsXCJrc25cIixcImtzb1wiLFwia3NwXCIsXCJrc3FcIixcImtzclwiLFwia3NzXCIsXCJrc3RcIixcImtzdVwiLFwia3N2XCIsXCJrc3dcIixcImtzeFwiLFwia3N5XCIsXCJrc3pcIixcImt0YVwiLFwia3RiXCIsXCJrdGNcIixcImt0ZFwiLFwia3RlXCIsXCJrdGZcIixcImt0Z1wiLFwia3RoXCIsXCJrdGlcIixcImt0alwiLFwia3RrXCIsXCJrdGxcIixcImt0bVwiLFwia3RuXCIsXCJrdG9cIixcImt0cFwiLFwia3RxXCIsXCJrdHJcIixcImt0c1wiLFwia3R0XCIsXCJrdHVcIixcImt0dlwiLFwia3R3XCIsXCJrdHhcIixcImt0eVwiLFwia3R6XCIsXCJrdWJcIixcImt1Y1wiLFwia3VkXCIsXCJrdWVcIixcImt1ZlwiLFwia3VnXCIsXCJrdWhcIixcImt1aVwiLFwia3VqXCIsXCJrdWtcIixcImt1bFwiLFwia3VtXCIsXCJrdW5cIixcImt1b1wiLFwia3VwXCIsXCJrdXFcIixcImt1c1wiLFwia3V0XCIsXCJrdXVcIixcImt1dlwiLFwia3V3XCIsXCJrdXhcIixcImt1eVwiLFwia3V6XCIsXCJrdmFcIixcImt2YlwiLFwia3ZjXCIsXCJrdmRcIixcImt2ZVwiLFwia3ZmXCIsXCJrdmdcIixcImt2aFwiLFwia3ZpXCIsXCJrdmpcIixcImt2a1wiLFwia3ZsXCIsXCJrdm1cIixcImt2blwiLFwia3ZvXCIsXCJrdnBcIixcImt2cVwiLFwia3ZyXCIsXCJrdnNcIixcImt2dFwiLFwia3Z1XCIsXCJrdnZcIixcImt2d1wiLFwia3Z4XCIsXCJrdnlcIixcImt2elwiLFwia3dhXCIsXCJrd2JcIixcImt3Y1wiLFwia3dkXCIsXCJrd2VcIixcImt3ZlwiLFwia3dnXCIsXCJrd2hcIixcImt3aVwiLFwia3dqXCIsXCJrd2tcIixcImt3bFwiLFwia3dtXCIsXCJrd25cIixcImt3b1wiLFwia3dwXCIsXCJrd3FcIixcImt3clwiLFwia3dzXCIsXCJrd3RcIixcImt3dVwiLFwia3d2XCIsXCJrd3dcIixcImt3eFwiLFwia3d5XCIsXCJrd3pcIixcImt4YVwiLFwia3hiXCIsXCJreGNcIixcImt4ZFwiLFwia3hlXCIsXCJreGZcIixcImt4aFwiLFwia3hpXCIsXCJreGpcIixcImt4a1wiLFwia3hsXCIsXCJreG1cIixcImt4blwiLFwia3hvXCIsXCJreHBcIixcImt4cVwiLFwia3hyXCIsXCJreHNcIixcImt4dFwiLFwia3h1XCIsXCJreHZcIixcImt4d1wiLFwia3h4XCIsXCJreHlcIixcImt4elwiLFwia3lhXCIsXCJreWJcIixcImt5Y1wiLFwia3lkXCIsXCJreWVcIixcImt5ZlwiLFwia3lnXCIsXCJreWhcIixcImt5aVwiLFwia3lqXCIsXCJreWtcIixcImt5bFwiLFwia3ltXCIsXCJreW5cIixcImt5b1wiLFwia3lwXCIsXCJreXFcIixcImt5clwiLFwia3lzXCIsXCJreXRcIixcImt5dVwiLFwia3l2XCIsXCJreXdcIixcImt5eFwiLFwia3l5XCIsXCJreXpcIixcImt6YVwiLFwia3piXCIsXCJremNcIixcImt6ZFwiLFwia3plXCIsXCJremZcIixcImt6Z1wiLFwia3poXCIsXCJremlcIixcImt6alwiLFwia3prXCIsXCJremxcIixcImt6bVwiLFwia3puXCIsXCJrem9cIixcImt6cFwiLFwia3pxXCIsXCJrenJcIixcImt6c1wiLFwia3p0XCIsXCJrenVcIixcImt6dlwiLFwia3p3XCIsXCJrenhcIixcImt6eVwiLFwia3p6XCJdXG4sWyBcImxhXCIsXCJsYlwiLFwibGdcIixcImxpXCIsXCJsblwiLFwibG9cIixcImx0XCIsXCJsdVwiLFwibHZcIixcImxhYVwiLFwibGFiXCIsXCJsYWNcIixcImxhZFwiLFwibGFlXCIsXCJsYWZcIixcImxhZ1wiLFwibGFoXCIsXCJsYWlcIixcImxhalwiLFwibGFrXCIsXCJsYWxcIixcImxhbVwiLFwibGFuXCIsXCJsYXBcIixcImxhcVwiLFwibGFyXCIsXCJsYXNcIixcImxhdVwiLFwibGF3XCIsXCJsYXhcIixcImxheVwiLFwibGF6XCIsXCJsYmFcIixcImxiYlwiLFwibGJjXCIsXCJsYmVcIixcImxiZlwiLFwibGJnXCIsXCJsYmlcIixcImxialwiLFwibGJrXCIsXCJsYmxcIixcImxibVwiLFwibGJuXCIsXCJsYm9cIixcImxicVwiLFwibGJyXCIsXCJsYnNcIixcImxidFwiLFwibGJ1XCIsXCJsYnZcIixcImxid1wiLFwibGJ4XCIsXCJsYnlcIixcImxielwiLFwibGNjXCIsXCJsY2RcIixcImxjZVwiLFwibGNmXCIsXCJsY2hcIixcImxjbFwiLFwibGNtXCIsXCJsY3BcIixcImxjcVwiLFwibGNzXCIsXCJsZGFcIixcImxkYlwiLFwibGRkXCIsXCJsZGdcIixcImxkaFwiLFwibGRpXCIsXCJsZGpcIixcImxka1wiLFwibGRsXCIsXCJsZG1cIixcImxkblwiLFwibGRvXCIsXCJsZHBcIixcImxkcVwiLFwibGVhXCIsXCJsZWJcIixcImxlY1wiLFwibGVkXCIsXCJsZWVcIixcImxlZlwiLFwibGVnXCIsXCJsZWhcIixcImxlaVwiLFwibGVqXCIsXCJsZWtcIixcImxlbFwiLFwibGVtXCIsXCJsZW5cIixcImxlb1wiLFwibGVwXCIsXCJsZXFcIixcImxlclwiLFwibGVzXCIsXCJsZXRcIixcImxldVwiLFwibGV2XCIsXCJsZXdcIixcImxleFwiLFwibGV5XCIsXCJsZXpcIixcImxmYVwiLFwibGZuXCIsXCJsZ2FcIixcImxnYlwiLFwibGdnXCIsXCJsZ2hcIixcImxnaVwiLFwibGdrXCIsXCJsZ2xcIixcImxnbVwiLFwibGduXCIsXCJsZ3FcIixcImxnclwiLFwibGd0XCIsXCJsZ3VcIixcImxnelwiLFwibGhhXCIsXCJsaGhcIixcImxoaVwiLFwibGhsXCIsXCJsaG1cIixcImxoblwiLFwibGhwXCIsXCJsaHNcIixcImxodFwiLFwibGh1XCIsXCJsaWFcIixcImxpYlwiLFwibGljXCIsXCJsaWRcIixcImxpZVwiLFwibGlmXCIsXCJsaWdcIixcImxpaFwiLFwibGlpXCIsXCJsaWpcIixcImxpa1wiLFwibGlsXCIsXCJsaW9cIixcImxpcFwiLFwibGlxXCIsXCJsaXJcIixcImxpc1wiLFwibGl1XCIsXCJsaXZcIixcImxpd1wiLFwibGl4XCIsXCJsaXlcIixcImxpelwiLFwibGphXCIsXCJsamVcIixcImxqaVwiLFwibGpsXCIsXCJsanBcIixcImxqd1wiLFwibGp4XCIsXCJsa2FcIixcImxrYlwiLFwibGtjXCIsXCJsa2RcIixcImxrZVwiLFwibGtoXCIsXCJsa2lcIixcImxralwiLFwibGtsXCIsXCJsa21cIixcImxrblwiLFwibGtvXCIsXCJsa3JcIixcImxrc1wiLFwibGt0XCIsXCJsa3VcIixcImxreVwiLFwibGxhXCIsXCJsbGJcIixcImxsY1wiLFwibGxkXCIsXCJsbGVcIixcImxsZlwiLFwibGxnXCIsXCJsbGhcIixcImxsaVwiLFwibGxqXCIsXCJsbGtcIixcImxsbFwiLFwibGxtXCIsXCJsbG5cIixcImxsb1wiLFwibGxwXCIsXCJsbHFcIixcImxsc1wiLFwibGx1XCIsXCJsbHhcIixcImxtYVwiLFwibG1iXCIsXCJsbWNcIixcImxtZFwiLFwibG1lXCIsXCJsbWZcIixcImxtZ1wiLFwibG1oXCIsXCJsbWlcIixcImxtalwiLFwibG1rXCIsXCJsbWxcIixcImxtbVwiLFwibG1uXCIsXCJsbW9cIixcImxtcFwiLFwibG1xXCIsXCJsbXJcIixcImxtdVwiLFwibG12XCIsXCJsbXdcIixcImxteFwiLFwibG15XCIsXCJsbXpcIixcImxuYVwiLFwibG5iXCIsXCJsbmRcIixcImxuZ1wiLFwibG5oXCIsXCJsbmlcIixcImxualwiLFwibG5sXCIsXCJsbm1cIixcImxublwiLFwibG5vXCIsXCJsbnNcIixcImxudVwiLFwibG53XCIsXCJsbnpcIixcImxvYVwiLFwibG9iXCIsXCJsb2NcIixcImxvZVwiLFwibG9mXCIsXCJsb2dcIixcImxvaFwiLFwibG9pXCIsXCJsb2pcIixcImxva1wiLFwibG9sXCIsXCJsb21cIixcImxvblwiLFwibG9vXCIsXCJsb3BcIixcImxvcVwiLFwibG9yXCIsXCJsb3NcIixcImxvdFwiLFwibG91XCIsXCJsb3ZcIixcImxvd1wiLFwibG94XCIsXCJsb3lcIixcImxvelwiLFwibHBhXCIsXCJscGVcIixcImxwblwiLFwibHBvXCIsXCJscHhcIixcImxyYVwiLFwibHJjXCIsXCJscmVcIixcImxyZ1wiLFwibHJpXCIsXCJscmtcIixcImxybFwiLFwibHJtXCIsXCJscm5cIixcImxyb1wiLFwibHJyXCIsXCJscnRcIixcImxydlwiLFwibHJ6XCIsXCJsc2FcIixcImxzYlwiLFwibHNkXCIsXCJsc2VcIixcImxzZ1wiLFwibHNoXCIsXCJsc2lcIixcImxzbFwiLFwibHNtXCIsXCJsc25cIixcImxzb1wiLFwibHNwXCIsXCJsc3JcIixcImxzc1wiLFwibHN0XCIsXCJsc3ZcIixcImxzeVwiLFwibHRjXCIsXCJsdGdcIixcImx0aFwiLFwibHRpXCIsXCJsdG5cIixcImx0b1wiLFwibHRzXCIsXCJsdHVcIixcImx1YVwiLFwibHVjXCIsXCJsdWRcIixcImx1ZVwiLFwibHVmXCIsXCJsdWlcIixcImx1alwiLFwibHVrXCIsXCJsdWxcIixcImx1bVwiLFwibHVuXCIsXCJsdW9cIixcImx1cFwiLFwibHVxXCIsXCJsdXJcIixcImx1c1wiLFwibHV0XCIsXCJsdXVcIixcImx1dlwiLFwibHV3XCIsXCJsdXlcIixcImx1elwiLFwibHZhXCIsXCJsdmlcIixcImx2a1wiLFwibHZzXCIsXCJsdnVcIixcImx3YVwiLFwibHdlXCIsXCJsd2dcIixcImx3aFwiLFwibHdsXCIsXCJsd21cIixcImx3b1wiLFwibHdzXCIsXCJsd3RcIixcImx3dVwiLFwibHd3XCIsXCJseG1cIixcImx5YVwiLFwibHlnXCIsXCJseW5cIixcImx6aFwiLFwibHpsXCIsXCJsem5cIixcImx6elwiXVxuLFsgXCJtZ1wiLFwibWhcIixcIm1pXCIsXCJta1wiLFwibWxcIixcIm1uXCIsXCJtb1wiLFwibXJcIixcIm1zXCIsXCJtdFwiLFwibXlcIixcIm1hYVwiLFwibWFiXCIsXCJtYWRcIixcIm1hZVwiLFwibWFmXCIsXCJtYWdcIixcIm1haVwiLFwibWFqXCIsXCJtYWtcIixcIm1hbVwiLFwibWFuXCIsXCJtYXBcIixcIm1hcVwiLFwibWFzXCIsXCJtYXRcIixcIm1hdVwiLFwibWF2XCIsXCJtYXdcIixcIm1heFwiLFwibWF6XCIsXCJtYmFcIixcIm1iYlwiLFwibWJjXCIsXCJtYmRcIixcIm1iZVwiLFwibWJmXCIsXCJtYmhcIixcIm1iaVwiLFwibWJqXCIsXCJtYmtcIixcIm1ibFwiLFwibWJtXCIsXCJtYm5cIixcIm1ib1wiLFwibWJwXCIsXCJtYnFcIixcIm1iclwiLFwibWJzXCIsXCJtYnRcIixcIm1idVwiLFwibWJ2XCIsXCJtYndcIixcIm1ieFwiLFwibWJ5XCIsXCJtYnpcIixcIm1jYVwiLFwibWNiXCIsXCJtY2NcIixcIm1jZFwiLFwibWNlXCIsXCJtY2ZcIixcIm1jZ1wiLFwibWNoXCIsXCJtY2lcIixcIm1jalwiLFwibWNrXCIsXCJtY2xcIixcIm1jbVwiLFwibWNuXCIsXCJtY29cIixcIm1jcFwiLFwibWNxXCIsXCJtY3JcIixcIm1jc1wiLFwibWN0XCIsXCJtY3VcIixcIm1jdlwiLFwibWN3XCIsXCJtY3hcIixcIm1jeVwiLFwibWN6XCIsXCJtZGFcIixcIm1kYlwiLFwibWRjXCIsXCJtZGRcIixcIm1kZVwiLFwibWRmXCIsXCJtZGdcIixcIm1kaFwiLFwibWRpXCIsXCJtZGpcIixcIm1ka1wiLFwibWRsXCIsXCJtZG1cIixcIm1kblwiLFwibWRwXCIsXCJtZHFcIixcIm1kclwiLFwibWRzXCIsXCJtZHRcIixcIm1kdVwiLFwibWR2XCIsXCJtZHdcIixcIm1keFwiLFwibWR5XCIsXCJtZHpcIixcIm1lYVwiLFwibWViXCIsXCJtZWNcIixcIm1lZFwiLFwibWVlXCIsXCJtZWZcIixcIm1lZ1wiLFwibWVoXCIsXCJtZWlcIixcIm1lalwiLFwibWVrXCIsXCJtZWxcIixcIm1lbVwiLFwibWVuXCIsXCJtZW9cIixcIm1lcFwiLFwibWVxXCIsXCJtZXJcIixcIm1lc1wiLFwibWV0XCIsXCJtZXVcIixcIm1ldlwiLFwibWV3XCIsXCJtZXlcIixcIm1lelwiLFwibWZhXCIsXCJtZmJcIixcIm1mY1wiLFwibWZkXCIsXCJtZmVcIixcIm1mZlwiLFwibWZnXCIsXCJtZmhcIixcIm1maVwiLFwibWZqXCIsXCJtZmtcIixcIm1mbFwiLFwibWZtXCIsXCJtZm5cIixcIm1mb1wiLFwibWZwXCIsXCJtZnFcIixcIm1mclwiLFwibWZzXCIsXCJtZnRcIixcIm1mdVwiLFwibWZ2XCIsXCJtZndcIixcIm1meFwiLFwibWZ5XCIsXCJtZnpcIixcIm1nYVwiLFwibWdiXCIsXCJtZ2NcIixcIm1nZFwiLFwibWdlXCIsXCJtZ2ZcIixcIm1nZ1wiLFwibWdoXCIsXCJtZ2lcIixcIm1nalwiLFwibWdrXCIsXCJtZ2xcIixcIm1nbVwiLFwibWduXCIsXCJtZ29cIixcIm1ncFwiLFwibWdxXCIsXCJtZ3JcIixcIm1nc1wiLFwibWd0XCIsXCJtZ3VcIixcIm1ndlwiLFwibWd3XCIsXCJtZ3hcIixcIm1neVwiLFwibWd6XCIsXCJtaGFcIixcIm1oYlwiLFwibWhjXCIsXCJtaGRcIixcIm1oZVwiLFwibWhmXCIsXCJtaGdcIixcIm1oaFwiLFwibWhpXCIsXCJtaGpcIixcIm1oa1wiLFwibWhsXCIsXCJtaG1cIixcIm1oblwiLFwibWhvXCIsXCJtaHBcIixcIm1ocVwiLFwibWhyXCIsXCJtaHNcIixcIm1odFwiLFwibWh1XCIsXCJtaHdcIixcIm1oeFwiLFwibWh5XCIsXCJtaHpcIixcIm1pYVwiLFwibWliXCIsXCJtaWNcIixcIm1pZFwiLFwibWllXCIsXCJtaWZcIixcIm1pZ1wiLFwibWloXCIsXCJtaWlcIixcIm1palwiLFwibWlrXCIsXCJtaWxcIixcIm1pbVwiLFwibWluXCIsXCJtaW9cIixcIm1pcFwiLFwibWlxXCIsXCJtaXJcIixcIm1pc1wiLFwibWl0XCIsXCJtaXVcIixcIm1pd1wiLFwibWl4XCIsXCJtaXlcIixcIm1pelwiLFwibWphXCIsXCJtamJcIixcIm1qY1wiLFwibWpkXCIsXCJtamVcIixcIm1qZ1wiLFwibWpoXCIsXCJtamlcIixcIm1qalwiLFwibWprXCIsXCJtamxcIixcIm1qbVwiLFwibWpuXCIsXCJtam9cIixcIm1qcFwiLFwibWpxXCIsXCJtanJcIixcIm1qc1wiLFwibWp0XCIsXCJtanVcIixcIm1qdlwiLFwibWp3XCIsXCJtanhcIixcIm1qeVwiLFwibWp6XCIsXCJta2FcIixcIm1rYlwiLFwibWtjXCIsXCJta2VcIixcIm1rZlwiLFwibWtnXCIsXCJta2hcIixcIm1raVwiLFwibWtqXCIsXCJta2tcIixcIm1rbFwiLFwibWttXCIsXCJta25cIixcIm1rb1wiLFwibWtwXCIsXCJta3FcIixcIm1rclwiLFwibWtzXCIsXCJta3RcIixcIm1rdVwiLFwibWt2XCIsXCJta3dcIixcIm1reFwiLFwibWt5XCIsXCJta3pcIixcIm1sYVwiLFwibWxiXCIsXCJtbGNcIixcIm1sZFwiLFwibWxlXCIsXCJtbGZcIixcIm1saFwiLFwibWxpXCIsXCJtbGpcIixcIm1sa1wiLFwibWxsXCIsXCJtbG1cIixcIm1sblwiLFwibWxvXCIsXCJtbHBcIixcIm1scVwiLFwibWxyXCIsXCJtbHNcIixcIm1sdVwiLFwibWx2XCIsXCJtbHdcIixcIm1seFwiLFwibWx6XCIsXCJtbWFcIixcIm1tYlwiLFwibW1jXCIsXCJtbWRcIixcIm1tZVwiLFwibW1mXCIsXCJtbWdcIixcIm1taFwiLFwibW1pXCIsXCJtbWpcIixcIm1ta1wiLFwibW1sXCIsXCJtbW1cIixcIm1tblwiLFwibW1vXCIsXCJtbXBcIixcIm1tcVwiLFwibW1yXCIsXCJtbXRcIixcIm1tdVwiLFwibW12XCIsXCJtbXdcIixcIm1teFwiLFwibW15XCIsXCJtbXpcIixcIm1uYVwiLFwibW5iXCIsXCJtbmNcIixcIm1uZFwiLFwibW5lXCIsXCJtbmZcIixcIm1uZ1wiLFwibW5oXCIsXCJtbmlcIixcIm1ualwiLFwibW5rXCIsXCJtbmxcIixcIm1ubVwiLFwibW5uXCIsXCJtbm9cIixcIm1ucFwiLFwibW5xXCIsXCJtbnJcIixcIm1uc1wiLFwibW50XCIsXCJtbnVcIixcIm1udlwiLFwibW53XCIsXCJtbnhcIixcIm1ueVwiLFwibW56XCIsXCJtb2FcIixcIm1vY1wiLFwibW9kXCIsXCJtb2VcIixcIm1vZlwiLFwibW9nXCIsXCJtb2hcIixcIm1vaVwiLFwibW9qXCIsXCJtb2tcIixcIm1vbVwiLFwibW9vXCIsXCJtb3BcIixcIm1vcVwiLFwibW9yXCIsXCJtb3NcIixcIm1vdFwiLFwibW91XCIsXCJtb3ZcIixcIm1vd1wiLFwibW94XCIsXCJtb3lcIixcIm1velwiLFwibXBhXCIsXCJtcGJcIixcIm1wY1wiLFwibXBkXCIsXCJtcGVcIixcIm1wZ1wiLFwibXBoXCIsXCJtcGlcIixcIm1walwiLFwibXBrXCIsXCJtcGxcIixcIm1wbVwiLFwibXBuXCIsXCJtcG9cIixcIm1wcFwiLFwibXBxXCIsXCJtcHJcIixcIm1wc1wiLFwibXB0XCIsXCJtcHVcIixcIm1wdlwiLFwibXB3XCIsXCJtcHhcIixcIm1weVwiLFwibXB6XCIsXCJtcWFcIixcIm1xYlwiLFwibXFjXCIsXCJtcWVcIixcIm1xZlwiLFwibXFnXCIsXCJtcWhcIixcIm1xaVwiLFwibXFqXCIsXCJtcWtcIixcIm1xbFwiLFwibXFtXCIsXCJtcW5cIixcIm1xb1wiLFwibXFwXCIsXCJtcXFcIixcIm1xclwiLFwibXFzXCIsXCJtcXRcIixcIm1xdVwiLFwibXF2XCIsXCJtcXdcIixcIm1xeFwiLFwibXF5XCIsXCJtcXpcIixcIm1yYVwiLFwibXJiXCIsXCJtcmNcIixcIm1yZFwiLFwibXJlXCIsXCJtcmZcIixcIm1yZ1wiLFwibXJoXCIsXCJtcmpcIixcIm1ya1wiLFwibXJsXCIsXCJtcm1cIixcIm1yblwiLFwibXJvXCIsXCJtcnBcIixcIm1ycVwiLFwibXJyXCIsXCJtcnNcIixcIm1ydFwiLFwibXJ1XCIsXCJtcnZcIixcIm1yd1wiLFwibXJ4XCIsXCJtcnlcIixcIm1yelwiLFwibXNiXCIsXCJtc2NcIixcIm1zZFwiLFwibXNlXCIsXCJtc2ZcIixcIm1zZ1wiLFwibXNoXCIsXCJtc2lcIixcIm1zalwiLFwibXNrXCIsXCJtc2xcIixcIm1zbVwiLFwibXNuXCIsXCJtc29cIixcIm1zcFwiLFwibXNxXCIsXCJtc3JcIixcIm1zc1wiLFwibXN0XCIsXCJtc3VcIixcIm1zdlwiLFwibXN3XCIsXCJtc3hcIixcIm1zeVwiLFwibXN6XCIsXCJtdGFcIixcIm10YlwiLFwibXRjXCIsXCJtdGRcIixcIm10ZVwiLFwibXRmXCIsXCJtdGdcIixcIm10aFwiLFwibXRpXCIsXCJtdGpcIixcIm10a1wiLFwibXRsXCIsXCJtdG1cIixcIm10blwiLFwibXRvXCIsXCJtdHBcIixcIm10cVwiLFwibXRyXCIsXCJtdHNcIixcIm10dFwiLFwibXR1XCIsXCJtdHZcIixcIm10d1wiLFwibXR4XCIsXCJtdHlcIixcIm11YVwiLFwibXViXCIsXCJtdWNcIixcIm11ZFwiLFwibXVlXCIsXCJtdWdcIixcIm11aFwiLFwibXVpXCIsXCJtdWpcIixcIm11a1wiLFwibXVsXCIsXCJtdW1cIixcIm11blwiLFwibXVvXCIsXCJtdXBcIixcIm11cVwiLFwibXVyXCIsXCJtdXNcIixcIm11dFwiLFwibXV1XCIsXCJtdXZcIixcIm11eFwiLFwibXV5XCIsXCJtdXpcIixcIm12YVwiLFwibXZiXCIsXCJtdmRcIixcIm12ZVwiLFwibXZmXCIsXCJtdmdcIixcIm12aFwiLFwibXZpXCIsXCJtdmtcIixcIm12bFwiLFwibXZtXCIsXCJtdm5cIixcIm12b1wiLFwibXZwXCIsXCJtdnFcIixcIm12clwiLFwibXZzXCIsXCJtdnRcIixcIm12dVwiLFwibXZ2XCIsXCJtdndcIixcIm12eFwiLFwibXZ5XCIsXCJtdnpcIixcIm13YVwiLFwibXdiXCIsXCJtd2NcIixcIm13ZFwiLFwibXdlXCIsXCJtd2ZcIixcIm13Z1wiLFwibXdoXCIsXCJtd2lcIixcIm13alwiLFwibXdrXCIsXCJtd2xcIixcIm13bVwiLFwibXduXCIsXCJtd29cIixcIm13cFwiLFwibXdxXCIsXCJtd3JcIixcIm13c1wiLFwibXd0XCIsXCJtd3VcIixcIm13dlwiLFwibXd3XCIsXCJtd3hcIixcIm13eVwiLFwibXd6XCIsXCJteGFcIixcIm14YlwiLFwibXhjXCIsXCJteGRcIixcIm14ZVwiLFwibXhmXCIsXCJteGdcIixcIm14aFwiLFwibXhpXCIsXCJteGpcIixcIm14a1wiLFwibXhsXCIsXCJteG1cIixcIm14blwiLFwibXhvXCIsXCJteHBcIixcIm14cVwiLFwibXhyXCIsXCJteHNcIixcIm14dFwiLFwibXh1XCIsXCJteHZcIixcIm14d1wiLFwibXh4XCIsXCJteHlcIixcIm14elwiLFwibXliXCIsXCJteWNcIixcIm15ZFwiLFwibXllXCIsXCJteWZcIixcIm15Z1wiLFwibXloXCIsXCJteWlcIixcIm15alwiLFwibXlrXCIsXCJteWxcIixcIm15bVwiLFwibXluXCIsXCJteW9cIixcIm15cFwiLFwibXlxXCIsXCJteXJcIixcIm15c1wiLFwibXl0XCIsXCJteXVcIixcIm15dlwiLFwibXl3XCIsXCJteXhcIixcIm15eVwiLFwibXl6XCIsXCJtemFcIixcIm16YlwiLFwibXpjXCIsXCJtemRcIixcIm16ZVwiLFwibXpnXCIsXCJtemhcIixcIm16aVwiLFwibXpqXCIsXCJtemtcIixcIm16bFwiLFwibXptXCIsXCJtem5cIixcIm16b1wiLFwibXpwXCIsXCJtenFcIixcIm16clwiLFwibXpzXCIsXCJtenRcIixcIm16dVwiLFwibXp2XCIsXCJtendcIixcIm16eFwiLFwibXp5XCIsXCJtenpcIl1cbixbIFwibmFcIixcIm5iXCIsXCJuZFwiLFwibmVcIixcIm5nXCIsXCJubFwiLFwibm5cIixcIm5vXCIsXCJuclwiLFwibnZcIixcIm55XCIsXCJuYWFcIixcIm5hYlwiLFwibmFjXCIsXCJuYWRcIixcIm5hZVwiLFwibmFmXCIsXCJuYWdcIixcIm5haFwiLFwibmFpXCIsXCJuYWpcIixcIm5ha1wiLFwibmFsXCIsXCJuYW1cIixcIm5hblwiLFwibmFvXCIsXCJuYXBcIixcIm5hcVwiLFwibmFyXCIsXCJuYXNcIixcIm5hdFwiLFwibmF3XCIsXCJuYXhcIixcIm5heVwiLFwibmF6XCIsXCJuYmFcIixcIm5iYlwiLFwibmJjXCIsXCJuYmRcIixcIm5iZVwiLFwibmJmXCIsXCJuYmdcIixcIm5iaFwiLFwibmJpXCIsXCJuYmpcIixcIm5ia1wiLFwibmJtXCIsXCJuYm5cIixcIm5ib1wiLFwibmJwXCIsXCJuYnFcIixcIm5iclwiLFwibmJzXCIsXCJuYnRcIixcIm5idVwiLFwibmJ2XCIsXCJuYndcIixcIm5ieFwiLFwibmJ5XCIsXCJuY2FcIixcIm5jYlwiLFwibmNjXCIsXCJuY2RcIixcIm5jZVwiLFwibmNmXCIsXCJuY2dcIixcIm5jaFwiLFwibmNpXCIsXCJuY2pcIixcIm5ja1wiLFwibmNsXCIsXCJuY21cIixcIm5jblwiLFwibmNvXCIsXCJuY3BcIixcIm5jcVwiLFwibmNyXCIsXCJuY3NcIixcIm5jdFwiLFwibmN1XCIsXCJuY3hcIixcIm5jelwiLFwibmRhXCIsXCJuZGJcIixcIm5kY1wiLFwibmRkXCIsXCJuZGZcIixcIm5kZ1wiLFwibmRoXCIsXCJuZGlcIixcIm5kalwiLFwibmRrXCIsXCJuZGxcIixcIm5kbVwiLFwibmRuXCIsXCJuZHBcIixcIm5kcVwiLFwibmRyXCIsXCJuZHNcIixcIm5kdFwiLFwibmR1XCIsXCJuZHZcIixcIm5kd1wiLFwibmR4XCIsXCJuZHlcIixcIm5kelwiLFwibmVhXCIsXCJuZWJcIixcIm5lY1wiLFwibmVkXCIsXCJuZWVcIixcIm5lZlwiLFwibmVnXCIsXCJuZWhcIixcIm5laVwiLFwibmVqXCIsXCJuZWtcIixcIm5lbVwiLFwibmVuXCIsXCJuZW9cIixcIm5lcVwiLFwibmVyXCIsXCJuZXNcIixcIm5ldFwiLFwibmV1XCIsXCJuZXZcIixcIm5ld1wiLFwibmV4XCIsXCJuZXlcIixcIm5lelwiLFwibmZhXCIsXCJuZmRcIixcIm5mbFwiLFwibmZyXCIsXCJuZnVcIixcIm5nYVwiLFwibmdiXCIsXCJuZ2NcIixcIm5nZFwiLFwibmdlXCIsXCJuZ2ZcIixcIm5nZ1wiLFwibmdoXCIsXCJuZ2lcIixcIm5nalwiLFwibmdrXCIsXCJuZ2xcIixcIm5nbVwiLFwibmduXCIsXCJuZ29cIixcIm5ncFwiLFwibmdxXCIsXCJuZ3JcIixcIm5nc1wiLFwibmd0XCIsXCJuZ3VcIixcIm5ndlwiLFwibmd3XCIsXCJuZ3hcIixcIm5neVwiLFwibmd6XCIsXCJuaGFcIixcIm5oYlwiLFwibmhjXCIsXCJuaGRcIixcIm5oZVwiLFwibmhmXCIsXCJuaGdcIixcIm5oaFwiLFwibmhpXCIsXCJuaGtcIixcIm5obVwiLFwibmhuXCIsXCJuaG9cIixcIm5ocFwiLFwibmhxXCIsXCJuaHJcIixcIm5odFwiLFwibmh1XCIsXCJuaHZcIixcIm5od1wiLFwibmh4XCIsXCJuaHlcIixcIm5oelwiLFwibmlhXCIsXCJuaWJcIixcIm5pY1wiLFwibmlkXCIsXCJuaWVcIixcIm5pZlwiLFwibmlnXCIsXCJuaWhcIixcIm5paVwiLFwibmlqXCIsXCJuaWtcIixcIm5pbFwiLFwibmltXCIsXCJuaW5cIixcIm5pb1wiLFwibmlxXCIsXCJuaXJcIixcIm5pc1wiLFwibml0XCIsXCJuaXVcIixcIm5pdlwiLFwibml3XCIsXCJuaXhcIixcIm5peVwiLFwibml6XCIsXCJuamFcIixcIm5qYlwiLFwibmpkXCIsXCJuamhcIixcIm5qaVwiLFwibmpqXCIsXCJuamxcIixcIm5qbVwiLFwibmpuXCIsXCJuam9cIixcIm5qclwiLFwibmpzXCIsXCJuanRcIixcIm5qdVwiLFwibmp4XCIsXCJuanlcIixcIm5qelwiLFwibmthXCIsXCJua2JcIixcIm5rY1wiLFwibmtkXCIsXCJua2VcIixcIm5rZlwiLFwibmtnXCIsXCJua2hcIixcIm5raVwiLFwibmtqXCIsXCJua2tcIixcIm5rbVwiLFwibmtuXCIsXCJua29cIixcIm5rcFwiLFwibmtxXCIsXCJua3JcIixcIm5rc1wiLFwibmt0XCIsXCJua3VcIixcIm5rdlwiLFwibmt3XCIsXCJua3hcIixcIm5relwiLFwibmxhXCIsXCJubGNcIixcIm5sZVwiLFwibmxnXCIsXCJubGlcIixcIm5salwiLFwibmxrXCIsXCJubGxcIixcIm5sbVwiLFwibmxuXCIsXCJubG9cIixcIm5scVwiLFwibmxyXCIsXCJubHVcIixcIm5sdlwiLFwibmx3XCIsXCJubHhcIixcIm5seVwiLFwibmx6XCIsXCJubWFcIixcIm5tYlwiLFwibm1jXCIsXCJubWRcIixcIm5tZVwiLFwibm1mXCIsXCJubWdcIixcIm5taFwiLFwibm1pXCIsXCJubWpcIixcIm5ta1wiLFwibm1sXCIsXCJubW1cIixcIm5tblwiLFwibm1vXCIsXCJubXBcIixcIm5tcVwiLFwibm1yXCIsXCJubXNcIixcIm5tdFwiLFwibm11XCIsXCJubXZcIixcIm5td1wiLFwibm14XCIsXCJubXlcIixcIm5telwiLFwibm5hXCIsXCJubmJcIixcIm5uY1wiLFwibm5kXCIsXCJubmVcIixcIm5uZlwiLFwibm5nXCIsXCJubmhcIixcIm5uaVwiLFwibm5qXCIsXCJubmtcIixcIm5ubFwiLFwibm5tXCIsXCJubm5cIixcIm5ucFwiLFwibm5xXCIsXCJubnJcIixcIm5uc1wiLFwibm50XCIsXCJubnVcIixcIm5udlwiLFwibm53XCIsXCJubnhcIixcIm5ueVwiLFwibm56XCIsXCJub2FcIixcIm5vY1wiLFwibm9kXCIsXCJub2VcIixcIm5vZlwiLFwibm9nXCIsXCJub2hcIixcIm5vaVwiLFwibm9qXCIsXCJub2tcIixcIm5vbFwiLFwibm9tXCIsXCJub25cIixcIm5vb1wiLFwibm9wXCIsXCJub3FcIixcIm5vc1wiLFwibm90XCIsXCJub3VcIixcIm5vdlwiLFwibm93XCIsXCJub3lcIixcIm5velwiLFwibnBhXCIsXCJucGJcIixcIm5wZ1wiLFwibnBoXCIsXCJucGlcIixcIm5wbFwiLFwibnBuXCIsXCJucG9cIixcIm5wc1wiLFwibnB1XCIsXCJucHhcIixcIm5weVwiLFwibnFnXCIsXCJucWtcIixcIm5xbFwiLFwibnFtXCIsXCJucW5cIixcIm5xb1wiLFwibnFxXCIsXCJucXRcIixcIm5xeVwiLFwibnJhXCIsXCJucmJcIixcIm5yY1wiLFwibnJlXCIsXCJucmZcIixcIm5yZ1wiLFwibnJpXCIsXCJucmtcIixcIm5ybFwiLFwibnJtXCIsXCJucm5cIixcIm5ycFwiLFwibnJyXCIsXCJucnRcIixcIm5ydVwiLFwibnJ4XCIsXCJucnpcIixcIm5zYVwiLFwibnNiXCIsXCJuc2NcIixcIm5zZFwiLFwibnNlXCIsXCJuc2ZcIixcIm5zZ1wiLFwibnNoXCIsXCJuc2lcIixcIm5za1wiLFwibnNsXCIsXCJuc21cIixcIm5zblwiLFwibnNvXCIsXCJuc3BcIixcIm5zcVwiLFwibnNyXCIsXCJuc3NcIixcIm5zdFwiLFwibnN1XCIsXCJuc3ZcIixcIm5zd1wiLFwibnN4XCIsXCJuc3lcIixcIm5zelwiLFwibnRkXCIsXCJudGVcIixcIm50Z1wiLFwibnRpXCIsXCJudGpcIixcIm50a1wiLFwibnRtXCIsXCJudG9cIixcIm50cFwiLFwibnRyXCIsXCJudHNcIixcIm50dVwiLFwibnR3XCIsXCJudHhcIixcIm50eVwiLFwibnR6XCIsXCJudWFcIixcIm51YlwiLFwibnVjXCIsXCJudWRcIixcIm51ZVwiLFwibnVmXCIsXCJudWdcIixcIm51aFwiLFwibnVpXCIsXCJudWpcIixcIm51a1wiLFwibnVsXCIsXCJudW1cIixcIm51blwiLFwibnVvXCIsXCJudXBcIixcIm51cVwiLFwibnVyXCIsXCJudXNcIixcIm51dFwiLFwibnV1XCIsXCJudXZcIixcIm51d1wiLFwibnV4XCIsXCJudXlcIixcIm51elwiLFwibnZoXCIsXCJudm1cIixcIm52b1wiLFwibndhXCIsXCJud2JcIixcIm53Y1wiLFwibndlXCIsXCJud2dcIixcIm53aVwiLFwibndtXCIsXCJud29cIixcIm53clwiLFwibnd4XCIsXCJud3lcIixcIm54YVwiLFwibnhkXCIsXCJueGVcIixcIm54Z1wiLFwibnhpXCIsXCJueGtcIixcIm54bFwiLFwibnhtXCIsXCJueG5cIixcIm54b1wiLFwibnhxXCIsXCJueHJcIixcIm54dVwiLFwibnh4XCIsXCJueWJcIixcIm55Y1wiLFwibnlkXCIsXCJueWVcIixcIm55ZlwiLFwibnlnXCIsXCJueWhcIixcIm55aVwiLFwibnlqXCIsXCJueWtcIixcIm55bFwiLFwibnltXCIsXCJueW5cIixcIm55b1wiLFwibnlwXCIsXCJueXFcIixcIm55clwiLFwibnlzXCIsXCJueXRcIixcIm55dVwiLFwibnl2XCIsXCJueXdcIixcIm55eFwiLFwibnl5XCIsXCJuemFcIixcIm56YlwiLFwibnpkXCIsXCJuemlcIixcIm56a1wiLFwibnptXCIsXCJuenNcIixcIm56dVwiLFwibnp5XCIsXCJuenpcIl1cbixbIFwib2NcIixcIm9qXCIsXCJvbVwiLFwib3JcIixcIm9zXCIsXCJvYWFcIixcIm9hY1wiLFwib2FyXCIsXCJvYXZcIixcIm9iaVwiLFwib2JrXCIsXCJvYmxcIixcIm9ibVwiLFwib2JvXCIsXCJvYnJcIixcIm9idFwiLFwib2J1XCIsXCJvY2FcIixcIm9jaFwiLFwib2NtXCIsXCJvY29cIixcIm9jdVwiLFwib2RhXCIsXCJvZGtcIixcIm9kdFwiLFwib2R1XCIsXCJvZm9cIixcIm9mc1wiLFwib2Z1XCIsXCJvZ2JcIixcIm9nY1wiLFwib2dlXCIsXCJvZ2dcIixcIm9nb1wiLFwib2d1XCIsXCJvaHRcIixcIm9odVwiLFwib2lhXCIsXCJvaW5cIixcIm9qYlwiLFwib2pjXCIsXCJvamdcIixcIm9qcFwiLFwib2pzXCIsXCJvanZcIixcIm9qd1wiLFwib2thXCIsXCJva2JcIixcIm9rY1wiLFwib2tkXCIsXCJva2VcIixcIm9rZ1wiLFwib2toXCIsXCJva2lcIixcIm9ralwiLFwib2trXCIsXCJva2xcIixcIm9rbVwiLFwib2tuXCIsXCJva29cIixcIm9rclwiLFwib2tzXCIsXCJva3VcIixcIm9rdlwiLFwib2t4XCIsXCJva3pcIixcIm9sYVwiLFwib2xkXCIsXCJvbGVcIixcIm9sa1wiLFwib2xtXCIsXCJvbG9cIixcIm9sclwiLFwib2x0XCIsXCJvbHVcIixcIm9tYVwiLFwib21iXCIsXCJvbWNcIixcIm9tZVwiLFwib21nXCIsXCJvbWlcIixcIm9ta1wiLFwib21sXCIsXCJvbW5cIixcIm9tb1wiLFwib21wXCIsXCJvbXFcIixcIm9tclwiLFwib210XCIsXCJvbXVcIixcIm9tdlwiLFwib213XCIsXCJvbXhcIixcIm9teVwiLFwib25hXCIsXCJvbmJcIixcIm9uZVwiLFwib25nXCIsXCJvbmlcIixcIm9ualwiLFwib25rXCIsXCJvbm5cIixcIm9ub1wiLFwib25wXCIsXCJvbnJcIixcIm9uc1wiLFwib250XCIsXCJvbnVcIixcIm9ud1wiLFwib254XCIsXCJvb2RcIixcIm9vZ1wiLFwib29uXCIsXCJvb3JcIixcIm9vc1wiLFwib3BhXCIsXCJvcGtcIixcIm9wbVwiLFwib3BvXCIsXCJvcHRcIixcIm9weVwiLFwib3JhXCIsXCJvcmNcIixcIm9yZVwiLFwib3JnXCIsXCJvcmhcIixcIm9yblwiLFwib3JvXCIsXCJvcnJcIixcIm9yc1wiLFwib3J0XCIsXCJvcnVcIixcIm9ydlwiLFwib3J3XCIsXCJvcnhcIixcIm9yeVwiLFwib3J6XCIsXCJvc2FcIixcIm9zY1wiLFwib3NpXCIsXCJvc25cIixcIm9zb1wiLFwib3NwXCIsXCJvc3RcIixcIm9zdVwiLFwib3N4XCIsXCJvdGFcIixcIm90YlwiLFwib3RkXCIsXCJvdGVcIixcIm90aVwiLFwib3RrXCIsXCJvdGxcIixcIm90bVwiLFwib3RuXCIsXCJvdG9cIixcIm90cVwiLFwib3RyXCIsXCJvdHNcIixcIm90dFwiLFwib3R1XCIsXCJvdHdcIixcIm90eFwiLFwib3R5XCIsXCJvdHpcIixcIm91YVwiLFwib3ViXCIsXCJvdWVcIixcIm91aVwiLFwib3VtXCIsXCJvdW5cIixcIm92ZFwiLFwib3dpXCIsXCJvd2xcIixcIm95YlwiLFwib3lkXCIsXCJveW1cIixcIm95eVwiLFwib3ptXCJdXG4sWyBcInBhXCIsXCJwaVwiLFwicGxcIixcInBzXCIsXCJwdFwiLFwicGFhXCIsXCJwYWJcIixcInBhY1wiLFwicGFkXCIsXCJwYWVcIixcInBhZlwiLFwicGFnXCIsXCJwYWhcIixcInBhaVwiLFwicGFrXCIsXCJwYWxcIixcInBhbVwiLFwicGFvXCIsXCJwYXBcIixcInBhcVwiLFwicGFyXCIsXCJwYXNcIixcInBhdFwiLFwicGF1XCIsXCJwYXZcIixcInBhd1wiLFwicGF4XCIsXCJwYXlcIixcInBhelwiLFwicGJiXCIsXCJwYmNcIixcInBiZVwiLFwicGJmXCIsXCJwYmdcIixcInBiaFwiLFwicGJpXCIsXCJwYmxcIixcInBibVwiLFwicGJuXCIsXCJwYm9cIixcInBicFwiLFwicGJyXCIsXCJwYnNcIixcInBidFwiLFwicGJ1XCIsXCJwYnZcIixcInBieVwiLFwicGJ6XCIsXCJwY2FcIixcInBjYlwiLFwicGNjXCIsXCJwY2RcIixcInBjZVwiLFwicGNmXCIsXCJwY2dcIixcInBjaFwiLFwicGNpXCIsXCJwY2pcIixcInBja1wiLFwicGNsXCIsXCJwY21cIixcInBjblwiLFwicGNwXCIsXCJwY3JcIixcInBjd1wiLFwicGRhXCIsXCJwZGNcIixcInBkaVwiLFwicGRuXCIsXCJwZG9cIixcInBkdFwiLFwicGR1XCIsXCJwZWFcIixcInBlYlwiLFwicGVkXCIsXCJwZWVcIixcInBlZlwiLFwicGVnXCIsXCJwZWhcIixcInBlaVwiLFwicGVqXCIsXCJwZWtcIixcInBlbFwiLFwicGVtXCIsXCJwZW9cIixcInBlcFwiLFwicGVxXCIsXCJwZXNcIixcInBldlwiLFwicGV4XCIsXCJwZXlcIixcInBlelwiLFwicGZhXCIsXCJwZmVcIixcInBmbFwiLFwicGdhXCIsXCJwZ2RcIixcInBnZ1wiLFwicGdpXCIsXCJwZ2tcIixcInBnbFwiLFwicGduXCIsXCJwZ3NcIixcInBndVwiLFwicGd5XCIsXCJwZ3pcIixcInBoYVwiLFwicGhkXCIsXCJwaGdcIixcInBoaFwiLFwicGhpXCIsXCJwaGtcIixcInBobFwiLFwicGhtXCIsXCJwaG5cIixcInBob1wiLFwicGhxXCIsXCJwaHJcIixcInBodFwiLFwicGh1XCIsXCJwaHZcIixcInBod1wiLFwicGlhXCIsXCJwaWJcIixcInBpY1wiLFwicGlkXCIsXCJwaWVcIixcInBpZlwiLFwicGlnXCIsXCJwaWhcIixcInBpaVwiLFwicGlqXCIsXCJwaWxcIixcInBpbVwiLFwicGluXCIsXCJwaW9cIixcInBpcFwiLFwicGlyXCIsXCJwaXNcIixcInBpdFwiLFwicGl1XCIsXCJwaXZcIixcInBpd1wiLFwicGl4XCIsXCJwaXlcIixcInBpelwiLFwicGp0XCIsXCJwa2FcIixcInBrYlwiLFwicGtjXCIsXCJwa2dcIixcInBraFwiLFwicGtuXCIsXCJwa29cIixcInBrcFwiLFwicGtyXCIsXCJwa3NcIixcInBrdFwiLFwicGt1XCIsXCJwbGFcIixcInBsYlwiLFwicGxjXCIsXCJwbGRcIixcInBsZVwiLFwicGxmXCIsXCJwbGdcIixcInBsaFwiLFwicGxqXCIsXCJwbGtcIixcInBsbFwiLFwicGxuXCIsXCJwbG9cIixcInBscFwiLFwicGxxXCIsXCJwbHJcIixcInBsc1wiLFwicGx0XCIsXCJwbHVcIixcInBsdlwiLFwicGx3XCIsXCJwbHlcIixcInBselwiLFwicG1hXCIsXCJwbWJcIixcInBtY1wiLFwicG1kXCIsXCJwbWVcIixcInBtZlwiLFwicG1oXCIsXCJwbWlcIixcInBtalwiLFwicG1rXCIsXCJwbWxcIixcInBtbVwiLFwicG1uXCIsXCJwbW9cIixcInBtcVwiLFwicG1yXCIsXCJwbXNcIixcInBtdFwiLFwicG11XCIsXCJwbXdcIixcInBteFwiLFwicG15XCIsXCJwbXpcIixcInBuYVwiLFwicG5iXCIsXCJwbmNcIixcInBuZFwiLFwicG5lXCIsXCJwbmdcIixcInBuaFwiLFwicG5pXCIsXCJwbmpcIixcInBua1wiLFwicG5sXCIsXCJwbm1cIixcInBublwiLFwicG5vXCIsXCJwbnBcIixcInBucVwiLFwicG5yXCIsXCJwbnNcIixcInBudFwiLFwicG51XCIsXCJwbnZcIixcInBud1wiLFwicG54XCIsXCJwbnlcIixcInBuelwiLFwicG9jXCIsXCJwb2RcIixcInBvZVwiLFwicG9mXCIsXCJwb2dcIixcInBvaFwiLFwicG9pXCIsXCJwb2tcIixcInBvbVwiLFwicG9uXCIsXCJwb29cIixcInBvcFwiLFwicG9xXCIsXCJwb3NcIixcInBvdFwiLFwicG92XCIsXCJwb3dcIixcInBveFwiLFwicG95XCIsXCJwb3pcIixcInBwYVwiLFwicHBlXCIsXCJwcGlcIixcInBwa1wiLFwicHBsXCIsXCJwcG1cIixcInBwblwiLFwicHBvXCIsXCJwcHBcIixcInBwcVwiLFwicHByXCIsXCJwcHNcIixcInBwdFwiLFwicHB1XCIsXCJwcWFcIixcInBxZVwiLFwicHFtXCIsXCJwcXdcIixcInByYVwiLFwicHJiXCIsXCJwcmNcIixcInByZFwiLFwicHJlXCIsXCJwcmZcIixcInByZ1wiLFwicHJoXCIsXCJwcmlcIixcInBya1wiLFwicHJsXCIsXCJwcm1cIixcInByblwiLFwicHJvXCIsXCJwcnBcIixcInBycVwiLFwicHJyXCIsXCJwcnNcIixcInBydFwiLFwicHJ1XCIsXCJwcndcIixcInByeFwiLFwicHJ5XCIsXCJwcnpcIixcInBzYVwiLFwicHNjXCIsXCJwc2RcIixcInBzZVwiLFwicHNnXCIsXCJwc2hcIixcInBzaVwiLFwicHNsXCIsXCJwc21cIixcInBzblwiLFwicHNvXCIsXCJwc3BcIixcInBzcVwiLFwicHNyXCIsXCJwc3NcIixcInBzdFwiLFwicHN1XCIsXCJwc3dcIixcInBzeVwiLFwicHRhXCIsXCJwdGhcIixcInB0aVwiLFwicHRuXCIsXCJwdG9cIixcInB0cFwiLFwicHRxXCIsXCJwdHJcIixcInB0dFwiLFwicHR1XCIsXCJwdHZcIixcInB0d1wiLFwicHR5XCIsXCJwdWFcIixcInB1YlwiLFwicHVjXCIsXCJwdWRcIixcInB1ZVwiLFwicHVmXCIsXCJwdWdcIixcInB1aVwiLFwicHVqXCIsXCJwdWtcIixcInB1bVwiLFwicHVvXCIsXCJwdXBcIixcInB1cVwiLFwicHVyXCIsXCJwdXRcIixcInB1dVwiLFwicHV3XCIsXCJwdXhcIixcInB1eVwiLFwicHV6XCIsXCJwd2FcIixcInB3YlwiLFwicHdnXCIsXCJwd2lcIixcInB3bVwiLFwicHduXCIsXCJwd29cIixcInB3clwiLFwicHd3XCIsXCJweG1cIixcInB5ZVwiLFwicHltXCIsXCJweW5cIixcInB5c1wiLFwicHl1XCIsXCJweXhcIixcInB5eVwiLFwicHpuXCJdXG4sWyBcInF1XCIsXCJxdWFcIixcInF1YlwiLFwicXVjXCIsXCJxdWRcIixcInF1ZlwiLFwicXVnXCIsXCJxdWhcIixcInF1aVwiLFwicXVrXCIsXCJxdWxcIixcInF1bVwiLFwicXVuXCIsXCJxdXBcIixcInF1cVwiLFwicXVyXCIsXCJxdXNcIixcInF1dlwiLFwicXV3XCIsXCJxdXhcIixcInF1eVwiLFwicXV6XCIsXCJxdmFcIixcInF2Y1wiLFwicXZlXCIsXCJxdmhcIixcInF2aVwiLFwicXZqXCIsXCJxdmxcIixcInF2bVwiLFwicXZuXCIsXCJxdm9cIixcInF2cFwiLFwicXZzXCIsXCJxdndcIixcInF2eVwiLFwicXZ6XCIsXCJxd2FcIixcInF3Y1wiLFwicXdlXCIsXCJxd2hcIixcInF3bVwiLFwicXdzXCIsXCJxd3RcIixcInF4YVwiLFwicXhjXCIsXCJxeGhcIixcInF4bFwiLFwicXhuXCIsXCJxeG9cIixcInF4cFwiLFwicXhxXCIsXCJxeHJcIixcInF4c1wiLFwicXh0XCIsXCJxeHVcIixcInF4d1wiLFwicXlhXCIsXCJxeXBcIl1cbixbIFwicm1cIixcInJuXCIsXCJyb1wiLFwicnVcIixcInJ3XCIsXCJyYWFcIixcInJhYlwiLFwicmFjXCIsXCJyYWRcIixcInJhZlwiLFwicmFnXCIsXCJyYWhcIixcInJhaVwiLFwicmFqXCIsXCJyYWtcIixcInJhbFwiLFwicmFtXCIsXCJyYW5cIixcInJhb1wiLFwicmFwXCIsXCJyYXFcIixcInJhclwiLFwicmFzXCIsXCJyYXRcIixcInJhdVwiLFwicmF2XCIsXCJyYXdcIixcInJheFwiLFwicmF5XCIsXCJyYXpcIixcInJiYlwiLFwicmJrXCIsXCJyYmxcIixcInJicFwiLFwicmNmXCIsXCJyZGJcIixcInJlYVwiLFwicmViXCIsXCJyZWVcIixcInJlZ1wiLFwicmVpXCIsXCJyZWpcIixcInJlbFwiLFwicmVtXCIsXCJyZW5cIixcInJlclwiLFwicmVzXCIsXCJyZXRcIixcInJleVwiLFwicmdhXCIsXCJyZ2VcIixcInJna1wiLFwicmduXCIsXCJyZ3JcIixcInJnc1wiLFwicmd1XCIsXCJyaGdcIixcInJocFwiLFwicmlhXCIsXCJyaWVcIixcInJpZlwiLFwicmlsXCIsXCJyaW1cIixcInJpblwiLFwicmlyXCIsXCJyaXRcIixcInJpdVwiLFwicmpnXCIsXCJyamlcIixcInJqc1wiLFwicmthXCIsXCJya2JcIixcInJraFwiLFwicmtpXCIsXCJya21cIixcInJrdFwiLFwicmt3XCIsXCJybWFcIixcInJtYlwiLFwicm1jXCIsXCJybWRcIixcInJtZVwiLFwicm1mXCIsXCJybWdcIixcInJtaFwiLFwicm1pXCIsXCJybWtcIixcInJtbFwiLFwicm1tXCIsXCJybW5cIixcInJtb1wiLFwicm1wXCIsXCJybXFcIixcInJtclwiLFwicm1zXCIsXCJybXRcIixcInJtdVwiLFwicm12XCIsXCJybXdcIixcInJteFwiLFwicm15XCIsXCJybXpcIixcInJuYVwiLFwicm5kXCIsXCJybmdcIixcInJubFwiLFwicm5uXCIsXCJybnBcIixcInJuclwiLFwicm53XCIsXCJyb2FcIixcInJvYlwiLFwicm9jXCIsXCJyb2RcIixcInJvZVwiLFwicm9mXCIsXCJyb2dcIixcInJvbFwiLFwicm9tXCIsXCJyb29cIixcInJvcFwiLFwicm9yXCIsXCJyb3VcIixcInJvd1wiLFwicnBuXCIsXCJycHRcIixcInJyaVwiLFwicnJvXCIsXCJycnRcIixcInJzYlwiLFwicnNpXCIsXCJyc2xcIixcInJzbVwiLFwicnRjXCIsXCJydGhcIixcInJ0bVwiLFwicnRzXCIsXCJydHdcIixcInJ1YlwiLFwicnVjXCIsXCJydWVcIixcInJ1ZlwiLFwicnVnXCIsXCJydWhcIixcInJ1aVwiLFwicnVrXCIsXCJydW9cIixcInJ1cFwiLFwicnVxXCIsXCJydXRcIixcInJ1dVwiLFwicnV5XCIsXCJydXpcIixcInJ3YVwiLFwicndrXCIsXCJyd2xcIixcInJ3bVwiLFwicndvXCIsXCJyd3JcIixcInJ4ZFwiLFwicnh3XCIsXCJyeW5cIixcInJ5c1wiLFwicnl1XCIsXCJyemhcIl1cbixbIFwic2FcIixcInNjXCIsXCJzZFwiLFwic2VcIixcInNnXCIsXCJzaFwiLFwic2lcIixcInNrXCIsXCJzbFwiLFwic21cIixcInNuXCIsXCJzb1wiLFwic3FcIixcInNyXCIsXCJzc1wiLFwic3RcIixcInN1XCIsXCJzdlwiLFwic3dcIixcInNhYVwiLFwic2FiXCIsXCJzYWNcIixcInNhZFwiLFwic2FlXCIsXCJzYWZcIixcInNhaFwiLFwic2FpXCIsXCJzYWpcIixcInNha1wiLFwic2FsXCIsXCJzYW1cIixcInNhb1wiLFwic2FwXCIsXCJzYXFcIixcInNhclwiLFwic2FzXCIsXCJzYXRcIixcInNhdVwiLFwic2F2XCIsXCJzYXdcIixcInNheFwiLFwic2F5XCIsXCJzYXpcIixcInNiYVwiLFwic2JiXCIsXCJzYmNcIixcInNiZFwiLFwic2JlXCIsXCJzYmZcIixcInNiZ1wiLFwic2JoXCIsXCJzYmlcIixcInNialwiLFwic2JrXCIsXCJzYmxcIixcInNibVwiLFwic2JuXCIsXCJzYm9cIixcInNicFwiLFwic2JxXCIsXCJzYnJcIixcInNic1wiLFwic2J0XCIsXCJzYnVcIixcInNidlwiLFwic2J3XCIsXCJzYnhcIixcInNieVwiLFwic2J6XCIsXCJzY2FcIixcInNjYlwiLFwic2NlXCIsXCJzY2ZcIixcInNjZ1wiLFwic2NoXCIsXCJzY2lcIixcInNja1wiLFwic2NsXCIsXCJzY25cIixcInNjb1wiLFwic2NwXCIsXCJzY3FcIixcInNjc1wiLFwic2N0XCIsXCJzY3VcIixcInNjdlwiLFwic2N3XCIsXCJzY3hcIixcInNkYVwiLFwic2RiXCIsXCJzZGNcIixcInNkZVwiLFwic2RmXCIsXCJzZGdcIixcInNkaFwiLFwic2RqXCIsXCJzZGtcIixcInNkbFwiLFwic2RtXCIsXCJzZG5cIixcInNkb1wiLFwic2RwXCIsXCJzZHFcIixcInNkclwiLFwic2RzXCIsXCJzZHRcIixcInNkdVwiLFwic2R2XCIsXCJzZHhcIixcInNkelwiLFwic2VhXCIsXCJzZWJcIixcInNlY1wiLFwic2VkXCIsXCJzZWVcIixcInNlZlwiLFwic2VnXCIsXCJzZWhcIixcInNlaVwiLFwic2VqXCIsXCJzZWtcIixcInNlbFwiLFwic2VtXCIsXCJzZW5cIixcInNlb1wiLFwic2VwXCIsXCJzZXFcIixcInNlclwiLFwic2VzXCIsXCJzZXRcIixcInNldVwiLFwic2V2XCIsXCJzZXdcIixcInNleVwiLFwic2V6XCIsXCJzZmJcIixcInNmZVwiLFwic2ZtXCIsXCJzZnNcIixcInNmd1wiLFwic2dhXCIsXCJzZ2JcIixcInNnY1wiLFwic2dkXCIsXCJzZ2VcIixcInNnZ1wiLFwic2doXCIsXCJzZ2lcIixcInNnalwiLFwic2drXCIsXCJzZ2xcIixcInNnbVwiLFwic2duXCIsXCJzZ29cIixcInNncFwiLFwic2dyXCIsXCJzZ3NcIixcInNndFwiLFwic2d1XCIsXCJzZ3dcIixcInNneFwiLFwic2d5XCIsXCJzZ3pcIixcInNoYVwiLFwic2hiXCIsXCJzaGNcIixcInNoZFwiLFwic2hlXCIsXCJzaGdcIixcInNoaFwiLFwic2hpXCIsXCJzaGpcIixcInNoa1wiLFwic2hsXCIsXCJzaG1cIixcInNoblwiLFwic2hvXCIsXCJzaHBcIixcInNocVwiLFwic2hyXCIsXCJzaHNcIixcInNodFwiLFwic2h1XCIsXCJzaHZcIixcInNod1wiLFwic2h4XCIsXCJzaHlcIixcInNoelwiLFwic2lhXCIsXCJzaWJcIixcInNpZFwiLFwic2llXCIsXCJzaWZcIixcInNpZ1wiLFwic2loXCIsXCJzaWlcIixcInNpalwiLFwic2lrXCIsXCJzaWxcIixcInNpbVwiLFwic2lvXCIsXCJzaXBcIixcInNpcVwiLFwic2lyXCIsXCJzaXNcIixcInNpdFwiLFwic2l1XCIsXCJzaXZcIixcInNpd1wiLFwic2l4XCIsXCJzaXlcIixcInNpelwiLFwic2phXCIsXCJzamJcIixcInNqZFwiLFwic2plXCIsXCJzamdcIixcInNqa1wiLFwic2psXCIsXCJzam1cIixcInNqblwiLFwic2pvXCIsXCJzanBcIixcInNqclwiLFwic2pzXCIsXCJzanRcIixcInNqdVwiLFwic2p3XCIsXCJza2FcIixcInNrYlwiLFwic2tjXCIsXCJza2RcIixcInNrZVwiLFwic2tmXCIsXCJza2dcIixcInNraFwiLFwic2tpXCIsXCJza2pcIixcInNra1wiLFwic2ttXCIsXCJza25cIixcInNrb1wiLFwic2twXCIsXCJza3FcIixcInNrclwiLFwic2tzXCIsXCJza3RcIixcInNrdVwiLFwic2t2XCIsXCJza3dcIixcInNreFwiLFwic2t5XCIsXCJza3pcIixcInNsYVwiLFwic2xjXCIsXCJzbGRcIixcInNsZVwiLFwic2xmXCIsXCJzbGdcIixcInNsaFwiLFwic2xpXCIsXCJzbGpcIixcInNsbFwiLFwic2xtXCIsXCJzbG5cIixcInNscFwiLFwic2xxXCIsXCJzbHJcIixcInNsc1wiLFwic2x0XCIsXCJzbHVcIixcInNsd1wiLFwic2x4XCIsXCJzbHlcIixcInNselwiLFwic21hXCIsXCJzbWJcIixcInNtY1wiLFwic21kXCIsXCJzbWZcIixcInNtZ1wiLFwic21oXCIsXCJzbWlcIixcInNtalwiLFwic21rXCIsXCJzbWxcIixcInNtbVwiLFwic21uXCIsXCJzbXBcIixcInNtcVwiLFwic21yXCIsXCJzbXNcIixcInNtdFwiLFwic211XCIsXCJzbXZcIixcInNtd1wiLFwic214XCIsXCJzbXlcIixcInNtelwiLFwic25iXCIsXCJzbmNcIixcInNuZVwiLFwic25mXCIsXCJzbmdcIixcInNuaFwiLFwic25pXCIsXCJzbmpcIixcInNua1wiLFwic25sXCIsXCJzbm1cIixcInNublwiLFwic25vXCIsXCJzbnBcIixcInNucVwiLFwic25yXCIsXCJzbnNcIixcInNudVwiLFwic252XCIsXCJzbndcIixcInNueFwiLFwic255XCIsXCJzbnpcIixcInNvYVwiLFwic29iXCIsXCJzb2NcIixcInNvZFwiLFwic29lXCIsXCJzb2dcIixcInNvaFwiLFwic29pXCIsXCJzb2pcIixcInNva1wiLFwic29sXCIsXCJzb25cIixcInNvb1wiLFwic29wXCIsXCJzb3FcIixcInNvclwiLFwic29zXCIsXCJzb3VcIixcInNvdlwiLFwic293XCIsXCJzb3hcIixcInNveVwiLFwic296XCIsXCJzcGJcIixcInNwY1wiLFwic3BkXCIsXCJzcGVcIixcInNwZ1wiLFwic3BpXCIsXCJzcGtcIixcInNwbFwiLFwic3BtXCIsXCJzcG5cIixcInNwb1wiLFwic3BwXCIsXCJzcHFcIixcInNwclwiLFwic3BzXCIsXCJzcHRcIixcInNwdVwiLFwic3B2XCIsXCJzcHhcIixcInNweVwiLFwic3FhXCIsXCJzcWhcIixcInNxalwiLFwic3FrXCIsXCJzcW1cIixcInNxblwiLFwic3FvXCIsXCJzcXFcIixcInNxclwiLFwic3FzXCIsXCJzcXRcIixcInNxdVwiLFwic3F4XCIsXCJzcmFcIixcInNyYlwiLFwic3JjXCIsXCJzcmVcIixcInNyZlwiLFwic3JnXCIsXCJzcmhcIixcInNyaVwiLFwic3JrXCIsXCJzcmxcIixcInNybVwiLFwic3JuXCIsXCJzcm9cIixcInNycVwiLFwic3JyXCIsXCJzcnNcIixcInNydFwiLFwic3J1XCIsXCJzcnZcIixcInNyd1wiLFwic3J4XCIsXCJzcnlcIixcInNyelwiLFwic3NhXCIsXCJzc2JcIixcInNzY1wiLFwic3NkXCIsXCJzc2VcIixcInNzZlwiLFwic3NnXCIsXCJzc2hcIixcInNzaVwiLFwic3NqXCIsXCJzc2tcIixcInNzbFwiLFwic3NtXCIsXCJzc25cIixcInNzb1wiLFwic3NwXCIsXCJzc3FcIixcInNzclwiLFwic3NzXCIsXCJzc3RcIixcInNzdVwiLFwic3N2XCIsXCJzc3hcIixcInNzeVwiLFwic3N6XCIsXCJzdGFcIixcInN0YlwiLFwic3RkXCIsXCJzdGVcIixcInN0ZlwiLFwic3RnXCIsXCJzdGhcIixcInN0aVwiLFwic3RqXCIsXCJzdGtcIixcInN0bFwiLFwic3RtXCIsXCJzdG5cIixcInN0b1wiLFwic3RwXCIsXCJzdHFcIixcInN0clwiLFwic3RzXCIsXCJzdHRcIixcInN0dVwiLFwic3R2XCIsXCJzdHdcIixcInN0eVwiLFwic3VhXCIsXCJzdWJcIixcInN1Y1wiLFwic3VlXCIsXCJzdWdcIixcInN1aVwiLFwic3VqXCIsXCJzdWtcIixcInN1bFwiLFwic3VtXCIsXCJzdW9cIixcInN1cVwiLFwic3VyXCIsXCJzdXNcIixcInN1dFwiLFwic3V2XCIsXCJzdXdcIixcInN1eFwiLFwic3V5XCIsXCJzdXpcIixcInN2YVwiLFwic3ZiXCIsXCJzdmNcIixcInN2ZVwiLFwic3ZrXCIsXCJzdm1cIixcInN2clwiLFwic3ZzXCIsXCJzdnhcIixcInN3YlwiLFwic3djXCIsXCJzd2ZcIixcInN3Z1wiLFwic3doXCIsXCJzd2lcIixcInN3alwiLFwic3drXCIsXCJzd2xcIixcInN3bVwiLFwic3duXCIsXCJzd29cIixcInN3cFwiLFwic3dxXCIsXCJzd3JcIixcInN3c1wiLFwic3d0XCIsXCJzd3VcIixcInN3dlwiLFwic3d3XCIsXCJzd3hcIixcInN3eVwiLFwic3hiXCIsXCJzeGNcIixcInN4ZVwiLFwic3hnXCIsXCJzeGtcIixcInN4bFwiLFwic3htXCIsXCJzeG5cIixcInN4b1wiLFwic3hyXCIsXCJzeHNcIixcInN4dVwiLFwic3h3XCIsXCJzeWFcIixcInN5YlwiLFwic3ljXCIsXCJzeWRcIixcInN5aVwiLFwic3lrXCIsXCJzeWxcIixcInN5bVwiLFwic3luXCIsXCJzeW9cIixcInN5clwiLFwic3lzXCIsXCJzeXdcIixcInN5eFwiLFwic3l5XCIsXCJzemFcIixcInN6YlwiLFwic3pjXCIsXCJzemRcIixcInN6ZVwiLFwic3pnXCIsXCJzemxcIixcInN6blwiLFwic3pwXCIsXCJzenNcIixcInN6dlwiLFwic3p3XCIsXCJzenlcIl1cbixbIFwidGFcIixcInRlXCIsXCJ0Z1wiLFwidGhcIixcInRpXCIsXCJ0a1wiLFwidGxcIixcInRuXCIsXCJ0b1wiLFwidHJcIixcInRzXCIsXCJ0dFwiLFwidHdcIixcInR5XCIsXCJ0YWFcIixcInRhYlwiLFwidGFjXCIsXCJ0YWRcIixcInRhZVwiLFwidGFmXCIsXCJ0YWdcIixcInRhaVwiLFwidGFqXCIsXCJ0YWtcIixcInRhbFwiLFwidGFuXCIsXCJ0YW9cIixcInRhcFwiLFwidGFxXCIsXCJ0YXJcIixcInRhc1wiLFwidGF1XCIsXCJ0YXZcIixcInRhd1wiLFwidGF4XCIsXCJ0YXlcIixcInRhelwiLFwidGJhXCIsXCJ0YmJcIixcInRiY1wiLFwidGJkXCIsXCJ0YmVcIixcInRiZlwiLFwidGJnXCIsXCJ0YmhcIixcInRiaVwiLFwidGJqXCIsXCJ0YmtcIixcInRibFwiLFwidGJtXCIsXCJ0Ym5cIixcInRib1wiLFwidGJwXCIsXCJ0YnFcIixcInRiclwiLFwidGJzXCIsXCJ0YnRcIixcInRidVwiLFwidGJ2XCIsXCJ0YndcIixcInRieFwiLFwidGJ5XCIsXCJ0YnpcIixcInRjYVwiLFwidGNiXCIsXCJ0Y2NcIixcInRjZFwiLFwidGNlXCIsXCJ0Y2ZcIixcInRjZ1wiLFwidGNoXCIsXCJ0Y2lcIixcInRja1wiLFwidGNsXCIsXCJ0Y21cIixcInRjblwiLFwidGNvXCIsXCJ0Y3BcIixcInRjcVwiLFwidGNzXCIsXCJ0Y3RcIixcInRjdVwiLFwidGN3XCIsXCJ0Y3hcIixcInRjeVwiLFwidGN6XCIsXCJ0ZGFcIixcInRkYlwiLFwidGRjXCIsXCJ0ZGRcIixcInRkZVwiLFwidGRmXCIsXCJ0ZGdcIixcInRkaFwiLFwidGRpXCIsXCJ0ZGpcIixcInRka1wiLFwidGRsXCIsXCJ0ZG1cIixcInRkblwiLFwidGRvXCIsXCJ0ZHFcIixcInRkclwiLFwidGRzXCIsXCJ0ZHRcIixcInRkdVwiLFwidGR2XCIsXCJ0ZHhcIixcInRkeVwiLFwidGVhXCIsXCJ0ZWJcIixcInRlY1wiLFwidGVkXCIsXCJ0ZWVcIixcInRlZlwiLFwidGVnXCIsXCJ0ZWhcIixcInRlaVwiLFwidGVrXCIsXCJ0ZW1cIixcInRlblwiLFwidGVvXCIsXCJ0ZXBcIixcInRlcVwiLFwidGVyXCIsXCJ0ZXNcIixcInRldFwiLFwidGV1XCIsXCJ0ZXZcIixcInRld1wiLFwidGV4XCIsXCJ0ZXlcIixcInRlelwiLFwidGZpXCIsXCJ0Zm5cIixcInRmb1wiLFwidGZyXCIsXCJ0ZnRcIixcInRnYVwiLFwidGdiXCIsXCJ0Z2NcIixcInRnZFwiLFwidGdlXCIsXCJ0Z2ZcIixcInRnZ1wiLFwidGdoXCIsXCJ0Z2lcIixcInRnalwiLFwidGduXCIsXCJ0Z29cIixcInRncFwiLFwidGdxXCIsXCJ0Z3JcIixcInRnc1wiLFwidGd0XCIsXCJ0Z3VcIixcInRndlwiLFwidGd3XCIsXCJ0Z3hcIixcInRneVwiLFwidGd6XCIsXCJ0aGNcIixcInRoZFwiLFwidGhlXCIsXCJ0aGZcIixcInRoaFwiLFwidGhpXCIsXCJ0aGtcIixcInRobFwiLFwidGhtXCIsXCJ0aG5cIixcInRocFwiLFwidGhxXCIsXCJ0aHJcIixcInRoc1wiLFwidGh0XCIsXCJ0aHVcIixcInRodlwiLFwidGh3XCIsXCJ0aHhcIixcInRoeVwiLFwidGh6XCIsXCJ0aWFcIixcInRpY1wiLFwidGlkXCIsXCJ0aWVcIixcInRpZlwiLFwidGlnXCIsXCJ0aWhcIixcInRpaVwiLFwidGlqXCIsXCJ0aWtcIixcInRpbFwiLFwidGltXCIsXCJ0aW5cIixcInRpb1wiLFwidGlwXCIsXCJ0aXFcIixcInRpc1wiLFwidGl0XCIsXCJ0aXVcIixcInRpdlwiLFwidGl3XCIsXCJ0aXhcIixcInRpeVwiLFwidGl6XCIsXCJ0amFcIixcInRqZ1wiLFwidGppXCIsXCJ0ampcIixcInRqbFwiLFwidGptXCIsXCJ0am5cIixcInRqb1wiLFwidGpwXCIsXCJ0anNcIixcInRqdVwiLFwidGp3XCIsXCJ0a2FcIixcInRrYlwiLFwidGtkXCIsXCJ0a2VcIixcInRrZlwiLFwidGtnXCIsXCJ0a2tcIixcInRrbFwiLFwidGttXCIsXCJ0a25cIixcInRrcFwiLFwidGtxXCIsXCJ0a3JcIixcInRrc1wiLFwidGt0XCIsXCJ0a3VcIixcInRrdlwiLFwidGt3XCIsXCJ0a3hcIixcInRrelwiLFwidGxhXCIsXCJ0bGJcIixcInRsY1wiLFwidGxkXCIsXCJ0bGZcIixcInRsZ1wiLFwidGxoXCIsXCJ0bGlcIixcInRsalwiLFwidGxrXCIsXCJ0bGxcIixcInRsbVwiLFwidGxuXCIsXCJ0bG9cIixcInRscFwiLFwidGxxXCIsXCJ0bHJcIixcInRsc1wiLFwidGx0XCIsXCJ0bHVcIixcInRsdlwiLFwidGx3XCIsXCJ0bHhcIixcInRseVwiLFwidG1hXCIsXCJ0bWJcIixcInRtY1wiLFwidG1kXCIsXCJ0bWVcIixcInRtZlwiLFwidG1nXCIsXCJ0bWhcIixcInRtaVwiLFwidG1qXCIsXCJ0bWtcIixcInRtbFwiLFwidG1tXCIsXCJ0bW5cIixcInRtb1wiLFwidG1wXCIsXCJ0bXFcIixcInRtclwiLFwidG1zXCIsXCJ0bXRcIixcInRtdVwiLFwidG12XCIsXCJ0bXdcIixcInRteVwiLFwidG16XCIsXCJ0bmFcIixcInRuYlwiLFwidG5jXCIsXCJ0bmRcIixcInRuZVwiLFwidG5mXCIsXCJ0bmdcIixcInRuaFwiLFwidG5pXCIsXCJ0bmtcIixcInRubFwiLFwidG5tXCIsXCJ0bm5cIixcInRub1wiLFwidG5wXCIsXCJ0bnFcIixcInRuclwiLFwidG5zXCIsXCJ0bnRcIixcInRudVwiLFwidG52XCIsXCJ0bndcIixcInRueFwiLFwidG55XCIsXCJ0bnpcIixcInRvYlwiLFwidG9jXCIsXCJ0b2RcIixcInRvZVwiLFwidG9mXCIsXCJ0b2dcIixcInRvaFwiLFwidG9pXCIsXCJ0b2pcIixcInRvbFwiLFwidG9tXCIsXCJ0b29cIixcInRvcFwiLFwidG9xXCIsXCJ0b3JcIixcInRvc1wiLFwidG91XCIsXCJ0b3ZcIixcInRvd1wiLFwidG94XCIsXCJ0b3lcIixcInRvelwiLFwidHBhXCIsXCJ0cGNcIixcInRwZVwiLFwidHBmXCIsXCJ0cGdcIixcInRwaVwiLFwidHBqXCIsXCJ0cGtcIixcInRwbFwiLFwidHBtXCIsXCJ0cG5cIixcInRwb1wiLFwidHBwXCIsXCJ0cHFcIixcInRwclwiLFwidHB0XCIsXCJ0cHVcIixcInRwdlwiLFwidHB3XCIsXCJ0cHhcIixcInRweVwiLFwidHB6XCIsXCJ0cWJcIixcInRxbFwiLFwidHFtXCIsXCJ0cW5cIixcInRxb1wiLFwidHFwXCIsXCJ0cXFcIixcInRxclwiLFwidHF0XCIsXCJ0cXVcIixcInRxd1wiLFwidHJhXCIsXCJ0cmJcIixcInRyY1wiLFwidHJkXCIsXCJ0cmVcIixcInRyZlwiLFwidHJnXCIsXCJ0cmhcIixcInRyaVwiLFwidHJqXCIsXCJ0cmtcIixcInRybFwiLFwidHJtXCIsXCJ0cm5cIixcInRyb1wiLFwidHJwXCIsXCJ0cnFcIixcInRyclwiLFwidHJzXCIsXCJ0cnRcIixcInRydVwiLFwidHJ2XCIsXCJ0cndcIixcInRyeFwiLFwidHJ5XCIsXCJ0cnpcIixcInRzYVwiLFwidHNiXCIsXCJ0c2NcIixcInRzZFwiLFwidHNlXCIsXCJ0c2ZcIixcInRzZ1wiLFwidHNoXCIsXCJ0c2lcIixcInRzalwiLFwidHNrXCIsXCJ0c2xcIixcInRzbVwiLFwidHNwXCIsXCJ0c3FcIixcInRzclwiLFwidHNzXCIsXCJ0c3RcIixcInRzdVwiLFwidHN2XCIsXCJ0c3dcIixcInRzeFwiLFwidHN5XCIsXCJ0c3pcIixcInR0YVwiLFwidHRiXCIsXCJ0dGNcIixcInR0ZFwiLFwidHRlXCIsXCJ0dGZcIixcInR0Z1wiLFwidHRoXCIsXCJ0dGlcIixcInR0alwiLFwidHRrXCIsXCJ0dGxcIixcInR0bVwiLFwidHRuXCIsXCJ0dG9cIixcInR0cFwiLFwidHRxXCIsXCJ0dHJcIixcInR0c1wiLFwidHR0XCIsXCJ0dHVcIixcInR0dlwiLFwidHR3XCIsXCJ0dHlcIixcInR0elwiLFwidHVhXCIsXCJ0dWJcIixcInR1Y1wiLFwidHVkXCIsXCJ0dWVcIixcInR1ZlwiLFwidHVnXCIsXCJ0dWhcIixcInR1aVwiLFwidHVqXCIsXCJ0dWxcIixcInR1bVwiLFwidHVuXCIsXCJ0dW9cIixcInR1cFwiLFwidHVxXCIsXCJ0dXNcIixcInR1dFwiLFwidHV1XCIsXCJ0dXZcIixcInR1d1wiLFwidHV4XCIsXCJ0dXlcIixcInR1elwiLFwidHZhXCIsXCJ0dmRcIixcInR2ZVwiLFwidHZrXCIsXCJ0dmxcIixcInR2bVwiLFwidHZuXCIsXCJ0dm9cIixcInR2c1wiLFwidHZ0XCIsXCJ0dnVcIixcInR2d1wiLFwidHZ4XCIsXCJ0dnlcIixcInR3YVwiLFwidHdiXCIsXCJ0d2NcIixcInR3ZFwiLFwidHdlXCIsXCJ0d2ZcIixcInR3Z1wiLFwidHdoXCIsXCJ0d2xcIixcInR3bVwiLFwidHduXCIsXCJ0d29cIixcInR3cFwiLFwidHdxXCIsXCJ0d3JcIixcInR3dFwiLFwidHd1XCIsXCJ0d3dcIixcInR3eFwiLFwidHd5XCIsXCJ0eGFcIixcInR4YlwiLFwidHhjXCIsXCJ0eGVcIixcInR4Z1wiLFwidHhoXCIsXCJ0eGlcIixcInR4alwiLFwidHhtXCIsXCJ0eG5cIixcInR4b1wiLFwidHhxXCIsXCJ0eHJcIixcInR4c1wiLFwidHh0XCIsXCJ0eHVcIixcInR4eFwiLFwidHh5XCIsXCJ0eWFcIixcInR5ZVwiLFwidHloXCIsXCJ0eWlcIixcInR5alwiLFwidHlsXCIsXCJ0eW5cIixcInR5cFwiLFwidHlyXCIsXCJ0eXNcIixcInR5dFwiLFwidHl1XCIsXCJ0eXZcIixcInR5eFwiLFwidHl5XCIsXCJ0eXpcIixcInR6YVwiLFwidHpoXCIsXCJ0empcIixcInR6bFwiLFwidHptXCIsXCJ0em5cIixcInR6b1wiLFwidHp4XCJdXG4sWyBcInVnXCIsXCJ1a1wiLFwidXJcIixcInV6XCIsXCJ1YW1cIixcInVhblwiLFwidWFyXCIsXCJ1YmFcIixcInViaVwiLFwidWJsXCIsXCJ1YnJcIixcInVidVwiLFwidWJ5XCIsXCJ1ZGFcIixcInVkZVwiLFwidWRnXCIsXCJ1ZGlcIixcInVkalwiLFwidWRsXCIsXCJ1ZG1cIixcInVkdVwiLFwidWVzXCIsXCJ1ZmlcIixcInVnYVwiLFwidWdiXCIsXCJ1Z2VcIixcInVnblwiLFwidWdvXCIsXCJ1Z3lcIixcInVoYVwiLFwidWhuXCIsXCJ1aXNcIixcInVpdlwiLFwidWppXCIsXCJ1a2FcIixcInVrZ1wiLFwidWtoXCIsXCJ1a2lcIixcInVra1wiLFwidWtsXCIsXCJ1a3BcIixcInVrcVwiLFwidWtzXCIsXCJ1a3VcIixcInVrdlwiLFwidWt3XCIsXCJ1a3lcIixcInVsYVwiLFwidWxiXCIsXCJ1bGNcIixcInVsZVwiLFwidWxmXCIsXCJ1bGlcIixcInVsa1wiLFwidWxsXCIsXCJ1bG1cIixcInVsblwiLFwidWx1XCIsXCJ1bHdcIixcInVtYVwiLFwidW1iXCIsXCJ1bWNcIixcInVtZFwiLFwidW1nXCIsXCJ1bWlcIixcInVtbVwiLFwidW1uXCIsXCJ1bW9cIixcInVtcFwiLFwidW1yXCIsXCJ1bXNcIixcInVtdVwiLFwidW5hXCIsXCJ1bmRcIixcInVuZVwiLFwidW5nXCIsXCJ1bmlcIixcInVua1wiLFwidW5tXCIsXCJ1bm5cIixcInVucFwiLFwidW5yXCIsXCJ1bnVcIixcInVueFwiLFwidW56XCIsXCJ1b2tcIixcInVwaVwiLFwidXB2XCIsXCJ1cmFcIixcInVyYlwiLFwidXJjXCIsXCJ1cmVcIixcInVyZlwiLFwidXJnXCIsXCJ1cmhcIixcInVyaVwiLFwidXJqXCIsXCJ1cmtcIixcInVybFwiLFwidXJtXCIsXCJ1cm5cIixcInVyb1wiLFwidXJwXCIsXCJ1cnJcIixcInVydFwiLFwidXJ1XCIsXCJ1cnZcIixcInVyd1wiLFwidXJ4XCIsXCJ1cnlcIixcInVyelwiLFwidXNhXCIsXCJ1c2hcIixcInVzaVwiLFwidXNrXCIsXCJ1c3BcIixcInVzc1wiLFwidXN1XCIsXCJ1dGFcIixcInV0ZVwiLFwidXRoXCIsXCJ1dHBcIixcInV0clwiLFwidXR1XCIsXCJ1dW1cIixcInV1blwiLFwidXVyXCIsXCJ1dXVcIixcInV2ZVwiLFwidXZoXCIsXCJ1dmxcIixcInV3YVwiLFwidXlhXCIsXCJ1em5cIixcInV6c1wiXVxuLFsgXCJ2ZVwiLFwidmlcIixcInZvXCIsXCJ2YWFcIixcInZhZVwiLFwidmFmXCIsXCJ2YWdcIixcInZhaFwiLFwidmFpXCIsXCJ2YWpcIixcInZhbFwiLFwidmFtXCIsXCJ2YW5cIixcInZhb1wiLFwidmFwXCIsXCJ2YXJcIixcInZhc1wiLFwidmF1XCIsXCJ2YXZcIixcInZheVwiLFwidmJiXCIsXCJ2YmtcIixcInZlY1wiLFwidmVkXCIsXCJ2ZWxcIixcInZlbVwiLFwidmVvXCIsXCJ2ZXBcIixcInZlclwiLFwidmdyXCIsXCJ2Z3RcIixcInZpY1wiLFwidmlkXCIsXCJ2aWZcIixcInZpZ1wiLFwidmlsXCIsXCJ2aW5cIixcInZpc1wiLFwidml0XCIsXCJ2aXZcIixcInZrYVwiLFwidmtpXCIsXCJ2a2pcIixcInZra1wiLFwidmtsXCIsXCJ2a21cIixcInZrblwiLFwidmtvXCIsXCJ2a3BcIixcInZrdFwiLFwidmt1XCIsXCJ2a3pcIixcInZscFwiLFwidmxzXCIsXCJ2bWFcIixcInZtYlwiLFwidm1jXCIsXCJ2bWRcIixcInZtZVwiLFwidm1mXCIsXCJ2bWdcIixcInZtaFwiLFwidm1pXCIsXCJ2bWpcIixcInZta1wiLFwidm1sXCIsXCJ2bW1cIixcInZtcFwiLFwidm1xXCIsXCJ2bXJcIixcInZtc1wiLFwidm11XCIsXCJ2bXZcIixcInZtd1wiLFwidm14XCIsXCJ2bXlcIixcInZtelwiLFwidm5rXCIsXCJ2bm1cIixcInZucFwiLFwidm9yXCIsXCJ2b3RcIixcInZyYVwiLFwidnJvXCIsXCJ2cnNcIixcInZydFwiLFwidnNpXCIsXCJ2c2xcIixcInZzdlwiLFwidnRvXCIsXCJ2dW1cIixcInZ1blwiLFwidnV0XCIsXCJ2d2FcIl1cbixbIFwid2FcIixcIndvXCIsXCJ3YWFcIixcIndhYlwiLFwid2FjXCIsXCJ3YWRcIixcIndhZVwiLFwid2FmXCIsXCJ3YWdcIixcIndhaFwiLFwid2FpXCIsXCJ3YWpcIixcIndha1wiLFwid2FsXCIsXCJ3YW1cIixcIndhblwiLFwid2FvXCIsXCJ3YXBcIixcIndhcVwiLFwid2FyXCIsXCJ3YXNcIixcIndhdFwiLFwid2F1XCIsXCJ3YXZcIixcIndhd1wiLFwid2F4XCIsXCJ3YXlcIixcIndhelwiLFwid2JhXCIsXCJ3YmJcIixcIndiZVwiLFwid2JmXCIsXCJ3YmhcIixcIndiaVwiLFwid2JqXCIsXCJ3YmtcIixcIndibFwiLFwid2JtXCIsXCJ3YnBcIixcIndicVwiLFwid2JyXCIsXCJ3YnNcIixcIndidFwiLFwid2J2XCIsXCJ3YndcIixcIndjYVwiLFwid2NpXCIsXCJ3ZGRcIixcIndkZ1wiLFwid2RqXCIsXCJ3ZGtcIixcIndkdVwiLFwid2R5XCIsXCJ3ZWFcIixcIndlY1wiLFwid2VkXCIsXCJ3ZWdcIixcIndlaFwiLFwid2VpXCIsXCJ3ZW1cIixcIndlblwiLFwid2VvXCIsXCJ3ZXBcIixcIndlclwiLFwid2VzXCIsXCJ3ZXRcIixcIndldVwiLFwid2V3XCIsXCJ3ZmdcIixcIndnYVwiLFwid2diXCIsXCJ3Z2dcIixcIndnaVwiLFwid2dvXCIsXCJ3Z3VcIixcIndnd1wiLFwid2d5XCIsXCJ3aGFcIixcIndoZ1wiLFwid2hrXCIsXCJ3aHVcIixcIndpYlwiLFwid2ljXCIsXCJ3aWVcIixcIndpZlwiLFwid2lnXCIsXCJ3aWhcIixcIndpaVwiLFwid2lqXCIsXCJ3aWtcIixcIndpbFwiLFwid2ltXCIsXCJ3aW5cIixcIndpclwiLFwid2l0XCIsXCJ3aXVcIixcIndpdlwiLFwid2l3XCIsXCJ3aXlcIixcIndqYVwiLFwid2ppXCIsXCJ3a2FcIixcIndrYlwiLFwid2tkXCIsXCJ3a2xcIixcIndrclwiLFwid2t1XCIsXCJ3a3dcIixcIndreVwiLFwid2xhXCIsXCJ3bGNcIixcIndsZVwiLFwid2xnXCIsXCJ3bGhcIixcIndsaVwiLFwid2xrXCIsXCJ3bGxcIixcIndsbVwiLFwid2xvXCIsXCJ3bHJcIixcIndsc1wiLFwid2x1XCIsXCJ3bHZcIixcIndsd1wiLFwid2x4XCIsXCJ3bHlcIixcIndtYVwiLFwid21iXCIsXCJ3bWNcIixcIndtZFwiLFwid21lXCIsXCJ3bWdcIixcIndtaFwiLFwid21pXCIsXCJ3bW1cIixcIndtblwiLFwid21vXCIsXCJ3bXNcIixcIndtdFwiLFwid213XCIsXCJ3bXhcIixcInduYlwiLFwid25jXCIsXCJ3bmRcIixcInduZVwiLFwid25nXCIsXCJ3bmlcIixcIndua1wiLFwid25tXCIsXCJ3bm5cIixcIndub1wiLFwid25wXCIsXCJ3bnVcIixcIndud1wiLFwid255XCIsXCJ3b2FcIixcIndvYlwiLFwid29jXCIsXCJ3b2RcIixcIndvZVwiLFwid29mXCIsXCJ3b2dcIixcIndvaVwiLFwid29rXCIsXCJ3b21cIixcIndvblwiLFwid29vXCIsXCJ3b3JcIixcIndvc1wiLFwid293XCIsXCJ3b3lcIixcIndwY1wiLFwid3JhXCIsXCJ3cmJcIixcIndyZFwiLFwid3JnXCIsXCJ3cmhcIixcIndyaVwiLFwid3JrXCIsXCJ3cmxcIixcIndybVwiLFwid3JuXCIsXCJ3cm9cIixcIndycFwiLFwid3JyXCIsXCJ3cnNcIixcIndydVwiLFwid3J2XCIsXCJ3cndcIixcIndyeFwiLFwid3J5XCIsXCJ3cnpcIixcIndzYVwiLFwid3NnXCIsXCJ3c2lcIixcIndza1wiLFwid3NyXCIsXCJ3c3NcIixcIndzdVwiLFwid3N2XCIsXCJ3dGZcIixcInd0aFwiLFwid3RpXCIsXCJ3dGtcIixcInd0bVwiLFwid3R3XCIsXCJ3dWFcIixcInd1YlwiLFwid3VkXCIsXCJ3dWhcIixcInd1bFwiLFwid3VtXCIsXCJ3dW5cIixcInd1clwiLFwid3V0XCIsXCJ3dXVcIixcInd1dlwiLFwid3V4XCIsXCJ3dXlcIixcInd3YVwiLFwid3diXCIsXCJ3d29cIixcInd3clwiLFwid3d3XCIsXCJ3eGFcIixcInd4d1wiLFwid3lhXCIsXCJ3eWJcIixcInd5aVwiLFwid3ltXCIsXCJ3eXJcIixcInd5eVwiXVxuLFsgXCJ4aFwiLFwieGFhXCIsXCJ4YWJcIixcInhhY1wiLFwieGFkXCIsXCJ4YWVcIixcInhhZ1wiLFwieGFpXCIsXCJ4YWpcIixcInhha1wiLFwieGFsXCIsXCJ4YW1cIixcInhhblwiLFwieGFvXCIsXCJ4YXBcIixcInhhcVwiLFwieGFyXCIsXCJ4YXNcIixcInhhdFwiLFwieGF1XCIsXCJ4YXZcIixcInhhd1wiLFwieGF5XCIsXCJ4YmFcIixcInhiYlwiLFwieGJjXCIsXCJ4YmRcIixcInhiZVwiLFwieGJnXCIsXCJ4YmlcIixcInhialwiLFwieGJtXCIsXCJ4Ym5cIixcInhib1wiLFwieGJwXCIsXCJ4YnJcIixcInhid1wiLFwieGJ4XCIsXCJ4YnlcIixcInhjYlwiLFwieGNjXCIsXCJ4Y2VcIixcInhjZ1wiLFwieGNoXCIsXCJ4Y2xcIixcInhjbVwiLFwieGNuXCIsXCJ4Y29cIixcInhjclwiLFwieGN0XCIsXCJ4Y3VcIixcInhjdlwiLFwieGN3XCIsXCJ4Y3lcIixcInhkYVwiLFwieGRjXCIsXCJ4ZGtcIixcInhkbVwiLFwieGRvXCIsXCJ4ZHlcIixcInhlYlwiLFwieGVkXCIsXCJ4ZWdcIixcInhlbFwiLFwieGVtXCIsXCJ4ZXBcIixcInhlclwiLFwieGVzXCIsXCJ4ZXRcIixcInhldVwiLFwieGZhXCIsXCJ4Z2FcIixcInhnYlwiLFwieGdkXCIsXCJ4Z2ZcIixcInhnZ1wiLFwieGdpXCIsXCJ4Z2xcIixcInhnbVwiLFwieGduXCIsXCJ4Z3JcIixcInhndVwiLFwieGd3XCIsXCJ4aGFcIixcInhoY1wiLFwieGhkXCIsXCJ4aGVcIixcInhoclwiLFwieGh0XCIsXCJ4aHVcIixcInhodlwiLFwieGlhXCIsXCJ4aWJcIixcInhpaVwiLFwieGlsXCIsXCJ4aW5cIixcInhpcFwiLFwieGlyXCIsXCJ4aXNcIixcInhpdlwiLFwieGl5XCIsXCJ4amJcIixcInhqdFwiLFwieGthXCIsXCJ4a2JcIixcInhrY1wiLFwieGtkXCIsXCJ4a2VcIixcInhrZlwiLFwieGtnXCIsXCJ4a2hcIixcInhraVwiLFwieGtqXCIsXCJ4a2tcIixcInhrbFwiLFwieGtuXCIsXCJ4a29cIixcInhrcFwiLFwieGtxXCIsXCJ4a3JcIixcInhrc1wiLFwieGt0XCIsXCJ4a3VcIixcInhrdlwiLFwieGt3XCIsXCJ4a3hcIixcInhreVwiLFwieGt6XCIsXCJ4bGFcIixcInhsYlwiLFwieGxjXCIsXCJ4bGRcIixcInhsZVwiLFwieGxnXCIsXCJ4bGlcIixcInhsblwiLFwieGxvXCIsXCJ4bHBcIixcInhsc1wiLFwieGx1XCIsXCJ4bHlcIixcInhtYVwiLFwieG1iXCIsXCJ4bWNcIixcInhtZFwiLFwieG1lXCIsXCJ4bWZcIixcInhtZ1wiLFwieG1oXCIsXCJ4bWpcIixcInhta1wiLFwieG1sXCIsXCJ4bW1cIixcInhtblwiLFwieG1vXCIsXCJ4bXBcIixcInhtcVwiLFwieG1yXCIsXCJ4bXNcIixcInhtdFwiLFwieG11XCIsXCJ4bXZcIixcInhtd1wiLFwieG14XCIsXCJ4bXlcIixcInhtelwiLFwieG5hXCIsXCJ4bmJcIixcInhuZFwiLFwieG5nXCIsXCJ4bmhcIixcInhuaVwiLFwieG5qXCIsXCJ4bmtcIixcInhubVwiLFwieG5uXCIsXCJ4bm9cIixcInhucVwiLFwieG5yXCIsXCJ4bnNcIixcInhudFwiLFwieG51XCIsXCJ4bnlcIixcInhuelwiLFwieG9jXCIsXCJ4b2RcIixcInhvZ1wiLFwieG9pXCIsXCJ4b2tcIixcInhvbVwiLFwieG9uXCIsXCJ4b29cIixcInhvcFwiLFwieG9yXCIsXCJ4b3dcIixcInhwYVwiLFwieHBiXCIsXCJ4cGNcIixcInhwZFwiLFwieHBlXCIsXCJ4cGZcIixcInhwZ1wiLFwieHBoXCIsXCJ4cGlcIixcInhwalwiLFwieHBrXCIsXCJ4cGxcIixcInhwbVwiLFwieHBuXCIsXCJ4cG9cIixcInhwcFwiLFwieHBxXCIsXCJ4cHJcIixcInhwc1wiLFwieHB0XCIsXCJ4cHVcIixcInhwdlwiLFwieHB3XCIsXCJ4cHhcIixcInhweVwiLFwieHB6XCIsXCJ4cWFcIixcInhxdFwiLFwieHJhXCIsXCJ4cmJcIixcInhyZFwiLFwieHJlXCIsXCJ4cmdcIixcInhyaVwiLFwieHJtXCIsXCJ4cm5cIixcInhycVwiLFwieHJyXCIsXCJ4cnRcIixcInhydVwiLFwieHJ3XCIsXCJ4c2FcIixcInhzYlwiLFwieHNjXCIsXCJ4c2RcIixcInhzZVwiLFwieHNoXCIsXCJ4c2lcIixcInhzalwiLFwieHNsXCIsXCJ4c21cIixcInhzblwiLFwieHNvXCIsXCJ4c3BcIixcInhzcVwiLFwieHNyXCIsXCJ4c3NcIixcInhzdVwiLFwieHN2XCIsXCJ4c3lcIixcInh0YVwiLFwieHRiXCIsXCJ4dGNcIixcInh0ZFwiLFwieHRlXCIsXCJ4dGdcIixcInh0aFwiLFwieHRpXCIsXCJ4dGpcIixcInh0bFwiLFwieHRtXCIsXCJ4dG5cIixcInh0b1wiLFwieHRwXCIsXCJ4dHFcIixcInh0clwiLFwieHRzXCIsXCJ4dHRcIixcInh0dVwiLFwieHR2XCIsXCJ4dHdcIixcInh0eVwiLFwieHR6XCIsXCJ4dWFcIixcInh1YlwiLFwieHVkXCIsXCJ4dWdcIixcInh1alwiLFwieHVsXCIsXCJ4dW1cIixcInh1blwiLFwieHVvXCIsXCJ4dXBcIixcInh1clwiLFwieHV0XCIsXCJ4dXVcIixcInh2ZVwiLFwieHZpXCIsXCJ4dm5cIixcInh2b1wiLFwieHZzXCIsXCJ4d2FcIixcInh3Y1wiLFwieHdkXCIsXCJ4d2VcIixcInh3Z1wiLFwieHdqXCIsXCJ4d2tcIixcInh3bFwiLFwieHdvXCIsXCJ4d3JcIixcInh3dFwiLFwieHd3XCIsXCJ4eGJcIixcInh4a1wiLFwieHhtXCIsXCJ4eHJcIixcInh4dFwiLFwieHlhXCIsXCJ4eWJcIixcInh5alwiLFwieHlrXCIsXCJ4eWxcIixcInh5dFwiLFwieHl5XCIsXCJ4emhcIixcInh6bVwiLFwieHpwXCJdXG4sWyBcInlpXCIsXCJ5b1wiLFwieWFhXCIsXCJ5YWJcIixcInlhY1wiLFwieWFkXCIsXCJ5YWVcIixcInlhZlwiLFwieWFnXCIsXCJ5YWhcIixcInlhaVwiLFwieWFqXCIsXCJ5YWtcIixcInlhbFwiLFwieWFtXCIsXCJ5YW5cIixcInlhb1wiLFwieWFwXCIsXCJ5YXFcIixcInlhclwiLFwieWFzXCIsXCJ5YXRcIixcInlhdVwiLFwieWF2XCIsXCJ5YXdcIixcInlheFwiLFwieWF5XCIsXCJ5YXpcIixcInliYVwiLFwieWJiXCIsXCJ5YmRcIixcInliZVwiLFwieWJoXCIsXCJ5YmlcIixcInlialwiLFwieWJrXCIsXCJ5YmxcIixcInlibVwiLFwieWJuXCIsXCJ5Ym9cIixcInlieFwiLFwieWJ5XCIsXCJ5Y2hcIixcInljbFwiLFwieWNuXCIsXCJ5Y3BcIixcInlkYVwiLFwieWRkXCIsXCJ5ZGVcIixcInlkZ1wiLFwieWRrXCIsXCJ5ZHNcIixcInllYVwiLFwieWVjXCIsXCJ5ZWVcIixcInllaVwiLFwieWVqXCIsXCJ5ZWxcIixcInllblwiLFwieWVyXCIsXCJ5ZXNcIixcInlldFwiLFwieWV1XCIsXCJ5ZXZcIixcInlleVwiLFwieWdhXCIsXCJ5Z2lcIixcInlnbFwiLFwieWdtXCIsXCJ5Z3BcIixcInlnclwiLFwieWdzXCIsXCJ5Z3VcIixcInlnd1wiLFwieWhhXCIsXCJ5aGRcIixcInlobFwiLFwieWhzXCIsXCJ5aWFcIixcInlpZlwiLFwieWlnXCIsXCJ5aWhcIixcInlpaVwiLFwieWlqXCIsXCJ5aWtcIixcInlpbFwiLFwieWltXCIsXCJ5aW5cIixcInlpcFwiLFwieWlxXCIsXCJ5aXJcIixcInlpc1wiLFwieWl0XCIsXCJ5aXVcIixcInlpdlwiLFwieWl4XCIsXCJ5aXlcIixcInlpelwiLFwieWthXCIsXCJ5a2dcIixcInlraVwiLFwieWtrXCIsXCJ5a2xcIixcInlrbVwiLFwieWtuXCIsXCJ5a29cIixcInlrclwiLFwieWt0XCIsXCJ5a3VcIixcInlreVwiLFwieWxhXCIsXCJ5bGJcIixcInlsZVwiLFwieWxnXCIsXCJ5bGlcIixcInlsbFwiLFwieWxtXCIsXCJ5bG5cIixcInlsb1wiLFwieWxyXCIsXCJ5bHVcIixcInlseVwiLFwieW1hXCIsXCJ5bWJcIixcInltY1wiLFwieW1kXCIsXCJ5bWVcIixcInltZ1wiLFwieW1oXCIsXCJ5bWlcIixcInlta1wiLFwieW1sXCIsXCJ5bW1cIixcInltblwiLFwieW1vXCIsXCJ5bXBcIixcInltcVwiLFwieW1yXCIsXCJ5bXNcIixcInltdFwiLFwieW14XCIsXCJ5bXpcIixcInluYVwiLFwieW5kXCIsXCJ5bmVcIixcInluZ1wiLFwieW5oXCIsXCJ5bmtcIixcInlubFwiLFwieW5uXCIsXCJ5bm9cIixcInlucVwiLFwieW5zXCIsXCJ5bnVcIixcInlvYlwiLFwieW9nXCIsXCJ5b2lcIixcInlva1wiLFwieW9sXCIsXCJ5b21cIixcInlvblwiLFwieW9zXCIsXCJ5b3RcIixcInlveFwiLFwieW95XCIsXCJ5cGFcIixcInlwYlwiLFwieXBnXCIsXCJ5cGhcIixcInlwa1wiLFwieXBtXCIsXCJ5cG5cIixcInlwb1wiLFwieXBwXCIsXCJ5cHpcIixcInlyYVwiLFwieXJiXCIsXCJ5cmVcIixcInlyaVwiLFwieXJrXCIsXCJ5cmxcIixcInlybVwiLFwieXJuXCIsXCJ5cm9cIixcInlyc1wiLFwieXJ3XCIsXCJ5cnlcIixcInlzY1wiLFwieXNkXCIsXCJ5c2dcIixcInlzbFwiLFwieXNtXCIsXCJ5c25cIixcInlzb1wiLFwieXNwXCIsXCJ5c3JcIixcInlzc1wiLFwieXN5XCIsXCJ5dGFcIixcInl0bFwiLFwieXRwXCIsXCJ5dHdcIixcInl0eVwiLFwieXVhXCIsXCJ5dWJcIixcInl1Y1wiLFwieXVkXCIsXCJ5dWVcIixcInl1ZlwiLFwieXVnXCIsXCJ5dWlcIixcInl1alwiLFwieXVrXCIsXCJ5dWxcIixcInl1bVwiLFwieXVuXCIsXCJ5dXBcIixcInl1cVwiLFwieXVyXCIsXCJ5dXRcIixcInl1dVwiLFwieXV3XCIsXCJ5dXhcIixcInl1eVwiLFwieXV6XCIsXCJ5dmFcIixcInl2dFwiLFwieXdhXCIsXCJ5d2dcIixcInl3bFwiLFwieXduXCIsXCJ5d3FcIixcInl3clwiLFwieXd0XCIsXCJ5d3VcIixcInl3d1wiLFwieXhhXCIsXCJ5eGdcIixcInl4bFwiLFwieXhtXCIsXCJ5eHVcIixcInl4eVwiLFwieXlyXCIsXCJ5eXVcIixcInl5elwiLFwieXpnXCIsXCJ5emtcIl1cbixbIFwiemFcIixcInpoXCIsXCJ6dVwiLFwiemFhXCIsXCJ6YWJcIixcInphY1wiLFwiemFkXCIsXCJ6YWVcIixcInphZlwiLFwiemFnXCIsXCJ6YWhcIixcInphaVwiLFwiemFqXCIsXCJ6YWtcIixcInphbFwiLFwiemFtXCIsXCJ6YW9cIixcInphcFwiLFwiemFxXCIsXCJ6YXJcIixcInphc1wiLFwiemF0XCIsXCJ6YXVcIixcInphdlwiLFwiemF3XCIsXCJ6YXhcIixcInpheVwiLFwiemF6XCIsXCJ6YmFcIixcInpiY1wiLFwiemJlXCIsXCJ6YmxcIixcInpidFwiLFwiemJ1XCIsXCJ6YndcIixcInpjYVwiLFwiemNoXCIsXCJ6ZGpcIixcInplYVwiLFwiemVnXCIsXCJ6ZWhcIixcInplblwiLFwiemdhXCIsXCJ6Z2JcIixcInpnaFwiLFwiemdtXCIsXCJ6Z25cIixcInpnclwiLFwiemhiXCIsXCJ6aGRcIixcInpoaVwiLFwiemhuXCIsXCJ6aHdcIixcInpoeFwiLFwiemlhXCIsXCJ6aWJcIixcInppa1wiLFwiemlsXCIsXCJ6aW1cIixcInppblwiLFwiemlyXCIsXCJ6aXdcIixcInppelwiLFwiemthXCIsXCJ6a2JcIixcInprZFwiLFwiemtnXCIsXCJ6a2hcIixcInpra1wiLFwiemtuXCIsXCJ6a29cIixcInprcFwiLFwiemtyXCIsXCJ6a3RcIixcInprdVwiLFwiemt2XCIsXCJ6a3pcIixcInpsYVwiLFwiemxlXCIsXCJ6bGpcIixcInpsbVwiLFwiemxuXCIsXCJ6bHFcIixcInpsc1wiLFwiemx3XCIsXCJ6bWFcIixcInptYlwiLFwiem1jXCIsXCJ6bWRcIixcInptZVwiLFwiem1mXCIsXCJ6bWdcIixcInptaFwiLFwiem1pXCIsXCJ6bWpcIixcInpta1wiLFwiem1sXCIsXCJ6bW1cIixcInptblwiLFwiem1vXCIsXCJ6bXBcIixcInptcVwiLFwiem1yXCIsXCJ6bXNcIixcInptdFwiLFwiem11XCIsXCJ6bXZcIixcInptd1wiLFwiem14XCIsXCJ6bXlcIixcInptelwiLFwiem5hXCIsXCJ6bmRcIixcInpuZVwiLFwiem5nXCIsXCJ6bmtcIixcInpuc1wiLFwiem9jXCIsXCJ6b2hcIixcInpvbVwiLFwiem9vXCIsXCJ6b3FcIixcInpvclwiLFwiem9zXCIsXCJ6cGFcIixcInpwYlwiLFwienBjXCIsXCJ6cGRcIixcInpwZVwiLFwienBmXCIsXCJ6cGdcIixcInpwaFwiLFwienBpXCIsXCJ6cGpcIixcInpwa1wiLFwienBsXCIsXCJ6cG1cIixcInpwblwiLFwienBvXCIsXCJ6cHBcIixcInpwcVwiLFwienByXCIsXCJ6cHNcIixcInpwdFwiLFwienB1XCIsXCJ6cHZcIixcInpwd1wiLFwienB4XCIsXCJ6cHlcIixcInpwelwiLFwienFlXCIsXCJ6cmFcIixcInpyZ1wiLFwienJuXCIsXCJ6cm9cIixcInpycFwiLFwienJzXCIsXCJ6c2FcIixcInpza1wiLFwienNsXCIsXCJ6c21cIixcInpzclwiLFwienN1XCIsXCJ6dGVcIixcInp0Z1wiLFwienRsXCIsXCJ6dG1cIixcInp0blwiLFwienRwXCIsXCJ6dHFcIixcInp0c1wiLFwienR0XCIsXCJ6dHVcIixcInp0eFwiLFwienR5XCIsXCJ6dWFcIixcInp1aFwiLFwienVtXCIsXCJ6dW5cIixcInp1eVwiLFwiendhXCIsXCJ6eHhcIixcInp5YlwiLFwienlnXCIsXCJ6eWpcIixcInp5blwiLFwienlwXCIsXCJ6emFcIixcInp6alwiXVxuXTtcblxuXG5leHBvcnQgY2xhc3MgTGFuZ1V0aWwge1xuXG4gICAgLyogRGV0ZXJtaW5lIGlmIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIEJDUCA0NyBzdHJpbmcgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzQmNwNDcobGFuZ1N0cjogc3RyaW5nKSA6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL14oKFthLXpBLVpdezIsM30oLVthLXpBLVpdKC1bYS16QS1aXXszfSl7MCwyfSk/fFthLXpBLVpdezR9fFthLXpBLVpdezUsOH0pKC1bYS16QS1aXXs0fSk/KC0oW2EtekEtWl17Mn18WzAtOV17M30pKT8oLShbMC05YS16QS1aXXs1LDh9fFswLTldW2EtekEtWl17M30pKSooLVswLTlhLXd5LXpBLVdZLVpdKC1bYS16QS1aMC05XXsyLDh9KSspKigteCgtW2EtekEtWjAtOV17MSw4fSkrKT98eCgtW2EtekEtWjAtOV17MSw4fSkrfChlbi1HQi1vZWR8aS1hbWl8aS1ibm58aS1kZWZhdWx0fGktZW5vY2hpYW58aS1oYWt8aS1rbGluZ29ufGktbHV4fGktbWluZ298aS1uYXZham98aS1wd258aS10YW98aS10YXl8aS10c3V8c2duLUJFLUZSfHNnbi1CRS1OTHxzZ24tQ0gtREV8YXJ0LWxvamJhbnxjZWwtZ2F1bGlzaHxuby1ib2t8bm8tbnlufHpoLWd1b3l1fHpoLWhha2thfHpoLW1pbnx6aC1taW4tbmFufHpoLXhpYW5nKSkkLy50ZXN0KGxhbmdTdHIpXG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB2YWxpZFByaW1hcnlMYW5nKGxhbmdTdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcHJpbWFyeSA9IGxhbmdTdHIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHByaW1hcnkuaW5jbHVkZXMoXCItXCIpKSB7XG4gICAgICAgICAgICBwcmltYXJ5ID0gcHJpbWFyeS5zcGxpdChcIi1cIilbMF07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXByaW1hcnkubWF0Y2goL1thLXpdezIsM30vKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIC8vIHFhYS4ucXR6XG4gICAgICAgIGlmIChwcmltYXJ5Lmxlbmd0aCA9PT0gMyBcbiAgICAgICAgICAgICYmIHByaW1hcnkuY2hhckF0KDApID09PSBcInFcIlxuICAgICAgICAgICAgJiYgcHJpbWFyeS5jaGFyQ29kZUF0KDEpID49IDk3ICYmIHByaW1hcnkuY2hhckNvZGVBdCgxKSA8PSAxMTZcbiAgICAgICAgICAgICYmIHByaW1hcnkuY2hhckNvZGVBdCgyKSA+PSA5NyAmJiBwcmltYXJ5LmNoYXJDb2RlQXQoMikgPD0gMTIyKSB7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbGlkUHJpbWFyeUxhbmdzW3ByaW1hcnkuY2hhckNvZGVBdCgwKS05N10uaW5jbHVkZXMocHJpbWFyeSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtYXRjaFByaW1hcnlMYW5nKGxhbmcxOiBzdHJpbmcsIGxhbmcyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHByaW1hcnkxID0gbGFuZzE7XG4gICAgICAgIGlmIChwcmltYXJ5MS5pbmNsdWRlcyhcIi1cIikpIHtcbiAgICAgICAgICAgIHByaW1hcnkxID0gcHJpbWFyeTEuc3BsaXQoXCItXCIpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByaW1hcnkyID0gbGFuZzI7XG4gICAgICAgIGlmIChwcmltYXJ5Mi5pbmNsdWRlcyhcIi1cIikpIHtcbiAgICAgICAgICAgIHByaW1hcnkyID0gcHJpbWFyeTIuc3BsaXQoXCItXCIpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByaW1hcnkxID09PSBwcmltYXJ5MjtcbiAgICB9XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBBUklBRGVmaW5pdGlvbnMsIElEb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vYXJpYS9BUklBRGVmaW5pdGlvbnNcIjtcbmltcG9ydCB7IEFSSUFNYXBwZXIgfSBmcm9tIFwiLi4vLi4vLi4vYXJpYS9BUklBTWFwcGVyXCI7XG5pbXBvcnQgeyBDYWNoZURvY3VtZW50LCBDYWNoZUVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL0VuZ2luZVwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgRnJhZ21lbnRVdGlsIH0gZnJvbSBcIi4vZnJhZ21lbnRcIjtcblxuZXhwb3J0IGNsYXNzIFJQVFV0aWwge1xuICAgIC8vIFRoaXMgbGlzdCBjb250YWlucyBhIGxpc3Qgb2YgZWxlbWVudCB0YWdzIHdoaWNoIGNhbiBub3QgYmUgaGlkZGVuLCB3aGVuIGhpZGRlbiBpc1xuICAgIC8vIGFkZGVkIHRvIHRoZXNlcyBlbGVtZW50cyBpdCBkb2VzIG5vdCBkbyBhbnl0aGluZyBhdCBhbGwuXG4gICAgLy8gIGFyZWEgLS0+IGFyZWEgZWxlbWVudCBpcyBwYXJ0IG9mIGEgbWFwIGVsZW1lbnQgYW5kIGl0IGNhbiBub3QgYmUgaGlkZGVuIGJlY2F1c2UgaXQgaXMgdXNlZCB0b1xuICAgIC8vICAgICAgICAgICBtYWtlIGFuIGNlcnRpYW4gcGFydHMgb2YgYW4gbWFwIGludGVyYWN0aXZlLlxuICAgIC8vICBwYXJhbSAtLT4gZWxlbWVudCBjYW4gb25seSBiZSBwYXJ0IG9mIG9iamVjdCBlbG1lbnQgYW5kIGl0IGNhbm5vdCBiZSBoaWRkZW4gZGlyZWN0bHksIGl0XG4gICAgLy8gICAgICAgICAgICBjYW4gb25seSBiZSBoaWRkZW4gaWYgdGhlIHBhcmVudCBpcyBoaWRkZW4uXG4gICAgLy8gIGF1ZGlvIC0tPiBJZiB0aGlzIGVsZW1lbnQgaXMgaGlkZGVuIGl0IHdpbGwgc3RpbGwgcGxheSB0aGUgbXVzaWMsIHNvIHdlIHNob3VsZCBzdGlsbCB0cmlnZ2VyXG4gICAgLy8gICAgICAgICAgICB2aW9sYXRpb25zIGZvciB0aGlzIGVsZW1lbnQuXG4gICAgLy8gTm90ZTogQWxsIGVsZW1lbnQgdGFncyB0aGF0IGFyZSBhZGRlZCBoZXJlIHNob3VsZCBiZSBhZGRlZCBhcyBsb3dlcmNhc2UsIGFzIHdlIGFyZSB1c2luZyBpbmRleE9mIHRvIGRvIHRoZSBjaGVjay5cbiAgICBwdWJsaWMgc3RhdGljIHVuaGlkZWFibGVFbGVtZW50cyA9IFsnYXJlYScsICdwYXJhbScsICdhdWRpbyddO1xuXG4gICAgLy8gVGhpcyBsaXN0IGNvbnRhaW5zIGEgbGlzdCBvZiBlbGVtZW50cyB0YWdzIHdoaWNoIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBzaW5jZSB3ZSBoYXZlIHJ1bGVzIHRyaWdnZXJpbmdcbiAgICAvLyBvbiB0aGVzZXMgZWxlbWVudHMgd2UgbmVlZCB0byBtYWtlIHRoZW4gdmlzaWJsZSBieSBkZWZhdWx0IHNvIHRoYXQgdGhlIHJ1bGVzIGNhbiB0cmlnZ2VyIHJlZ2FyZGxlc3Mgb2YgdGhlXG4gICAgLy8gQ2hlY2sgSGlkZGVuIENvbnRlbnQgb3B0aW9uIGluIHRoZSB0b29scy5cbiAgICAvLyAgc2NyaXB0IC0tPiBzY3JpcHQgZWxlbWVudHMgaGF2ZSBkaXNwbGF5OiBub25lIGJ5IGRlZmF1bHRcbiAgICAvLyAgbGluayAtLT4gbGluayBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYnV0IHRoZSBhY3R1YWxseSBDU1Mgc2NyaXB0IGlzIHN0aWxsIGV4ZWN1dGVkIHNvIHdlIGhhdmUgdG9cbiAgICAvLyAgICAgICAgICAgIG1hcmsgdGhpcyBlbGVtZW50IGFzIHZpc2libGUgYXQgYWxsIHRpbWVzLlxuICAgIC8vICBzdHlsZSAtLT4gc3R5bGUgZWxlbWVudHMgaGF2ZSBkaXNwbGF5OiBub25lIGJ5IGRlZmF1bHQsIGJ1dCB0aGUgYWN0dWFsbHkgQ1NTIHNjcmlwdCBpcyBzdGlsbCBleGVjdXRlZCBzbyB3ZSBoYXZlIHRvXG4gICAgLy8gICAgICAgICAgICBtYXJrIHRoaXMgZWxlbWVudCBhcyB2aXNpYmxlIGF0IGFsbCB0aW1lcy5cbiAgICAvLyAgaGVhZCAtLT4gaGVhZCBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYnV0IGl0IHdpbGwgc3RpbGwgYmVoYXZlIGNvcnJlY3RcbiAgICAvLyAgdGl0bGUgLS0+IHRpdGxlIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgaXQgd2lsbCBzdGlsbCBkaXNwbGF5IHRoZSB0aXRsZVxuICAgIC8vICBtZXRhIC0tPiBtZXRhIGVsZW1lbnRzIGhhdmUgZGlzcGxheTogbm9uZSBieSBkZWZhdWx0LCBidXQgaXQgd2lsbCBzdGlsbCBwZXJmb3JtIHRoZSBhY3Rpb24gdGhhdCBtZXRhIGlzIHN1cHBvc2UgdG9cbiAgICAvLyAgYmFzZSAtLT4gYmFzZSBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYnV0IGl0IHdpbGwgc3RpbGwgcGVyZm9ybSB0aGUgYWN0aW9uIHRoYXQgbWV0YSBpcyBzdXBwb3NlIHRvXG4gICAgLy8gIG5vc2NyaXB0IC0tPiBub3NjcmlwdCBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYnV0IGl0IHdpbGwgc3RpbGwgcGVyZm9ybSB0aGUgYWN0aW9uIHRoYXQgbWV0YSBpcyBzdXBwb3NlIHRvXG4gICAgLy8gIHRlbXBsYXRlIC0tPiB0ZW1wbGF0ZSBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYmVjYXVzZSB0aGV5IGFyZSBqdXN0IGEgbWVjaGFuaXNtIGZvciBob2xkaW5nIGNsaWVudC1zaWRlIGNvbnRlbnRcbiAgICAvLyAgICAgICAgICAgICAgIHRoYXQgaXMgbm90IHRvIGJlIHJlbmRlcmVkIHdoZW4gYSBwYWdlIGlzIGxvYWRlZC4gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vZG9jcy9XZWIvSFRNTC9FbGVtZW50L3RlbXBsYXRlXG4gICAgLy8gIGRhdGFsaXN0IC0tPiBkYXRhbGlzdCBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCxcbiAgICBwdWJsaWMgc3RhdGljIGhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzID0gWydzY3JpcHQnLCAnbGluaycsICdzdHlsZScsICdoZWFkJywgJ3RpdGxlJywgJ21ldGEnLCAnYmFzZScsICdub3NjcmlwdCcsICd0ZW1wbGF0ZScsICdkYXRhbGlzdCddXG5cblxuICAgIC8vIFRoaXMgbGlzdCBjb250YWlucyBhIGxpc3Qgb2YgZWxlbWVudHMgdGFncyB3aGljaCBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgc2luY2Ugd2UgaGF2ZSBydWxlcyB0cmlnZ2VyaW5nXG4gICAgcHVibGljIHN0YXRpYyBuYXZMaW5rS2V5d29yZHMgPSBbJ3N0YXJ0JywgJ25leHQnLCAncHJldicsICdwcmV2aW91cycsICdjb250ZW50cycsICdpbmRleCddXG5cbiAgICAvLyBUaGlzIGxpc3QgY29udGFpbnMgYSBsaXN0IG9mIHJ1bGUgaWRzIGZvciB0aGUgcnVsZXMgdGhhdCBoYXZlIHRvIGNoZWNrIGZvciBoaWRkZW4gY29udGVudCByZWdhcmRsZXNzIG9mIHRoZSBDaGVjayBIaWRkZW5cbiAgICAvLyBDb250ZW50IFNldHRpbmcuIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZSBlbmdpbmUgaXMgYWN0dWFsbHkgZGV0ZXJtaW5lIHdoaWNoIGVsZW1lbnRzIHRvIG1hc3MgdG8gdGhlIHJ1bGVzLCBpdCB3aWxsIGFsd2F5c1xuICAgIC8vIHBhc3MgdGhlc2VzIHJ1bGVzIG5vIG1hdHRlciB3aGF0IHRoZSBDaGVjayBIaWRkZW4gQ29udGVudCBTZXR0aW5nIGlzLlxuICAgIHB1YmxpYyBzdGF0aWMgcnVsZXNUaGF0SGF2ZVRvQ2hlY2tIaWRkZW4gPSBbJ1JQVF9FbGVtX1VuaXF1ZUlkJ11cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZUF0SW5kZXgoZWxlLCBpbmRleCkge1xuICAgICAgICBsZXQgYXR0ck5hbWUgPSBlbGUuYXR0cmlidXRlc1tpbmRleF0ubmFtZTtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZShlbGUsIGF0dHJOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNpbnRyb3N0YXRlc1xuICAgIHB1YmxpYyBzdGF0aWMgYXJpYUF0dHJpYnV0ZVJvbGVEZWZhdWx0cyA9IHtcbiAgICAgICAgXCJhbGVydFwiOiB7XG4gICAgICAgICAgICBcImFyaWEtbGl2ZVwiOiBcImFzc2VydGl2ZVwiLFxuICAgICAgICAgICAgXCJhcmlhLWF0b21pY1wiOiBcInRydWVcIlxuICAgICAgICB9LFxuICAgICAgICBcImNvbWJvYm94XCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImxpc3Rib3hcIlxuICAgICAgICB9LFxuICAgICAgICBcImxpc3Rib3hcIjoge1xuICAgICAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IFwidmVydGljYWxcIlxuICAgICAgICB9LFxuICAgICAgICBcImxvZ1wiOiB7XG4gICAgICAgICAgICBcImFyaWEtbGl2ZVwiOiBcInBvbGl0ZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWVudVwiOiB7XG4gICAgICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogXCJ2ZXJ0aWNhbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwibWVudWJhclwiOiB7XG4gICAgICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogXCJob3Jpem9udGFsXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJtZXRlclwiOiB7XG4gICAgICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogXCIwXCIsXG4gICAgICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogXCIxMDBcIlxuICAgICAgICB9LFxuICAgICAgICBcIm9wdGlvblwiOiB7XG4gICAgICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogXCJmYWxzZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwicHJvZ3Jlc3NiYXJcIjoge1xuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWluXCI6IFwiMFwiLFxuICAgICAgICAgICAgXCJhcmlhLXZhbHVlbWF4XCI6IFwiMTAwXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzY3JvbGxiYXJcIjoge1xuICAgICAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IFwidmVydGljYWxcIixcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1pblwiOiBcIjBcIixcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiBcIjEwMFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic2VwYXJhdG9yXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBcImhvcml6b250YWxcIixcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1pblwiOiBcIjBcIixcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiBcIjEwMFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic2xpZGVyXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBcImhvcml6b250YWxcIixcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1pblwiOiBcIjBcIixcbiAgICAgICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiBcIjEwMFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwic3BpbmJ1dHRvblwiOiB7XG4gICAgICAgICAgICAvLyBOb3Qgc3VyZSBob3cgdG8gZW5jb2RlIG1pbi9tYXggKG9yIG5vdyBpbiAxLjIgLSBcImhhcyBubyB2YWx1ZVwiKVxuICAgICAgICAgICAgLy9cImFyaWEtdmFsdWVub3dcIjogXCIwXCIgVE9ETzogYXQgcmlzazogbWF5YmUgZGVsZXRlIGFmdGVyIEFSSUEgMS4yIHJlYWNoZXMgcHJvcG9zZWQgcmVjXG4gICAgICAgICAgICAvLyBQcm9iYWJseSBqdXN0IGRlbGV0ZSBzcGluYnV0dG9uIGZyb20gdGhpcyBsaXN0IGNvbXBsZXRlbHkgYW5kIGxldCB1c2VyIGFnZW50cyBoYW5kbGUgXCJkZWZhdWx0c1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwic3RhdHVzXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1saXZlXCI6IFwicG9saXRlXCIsXG4gICAgICAgICAgICBcImFyaWEtYXRvbWljXCI6IFwidHJ1ZVwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGFiXCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiBcImZhbHNlXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0YWJsaXN0XCI6IHtcbiAgICAgICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBcImhvcml6b250YWxcIlxuICAgICAgICB9LFxuICAgICAgICBcInRvb2xiYXJcIjoge1xuICAgICAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IFwiaG9yaXpvbnRhbFwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidHJlZVwiOiB7XG4gICAgICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogXCJ2ZXJ0aWNhbFwiXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtMS4xLyNhcmlhLWF0b21pY1xuICAgIHB1YmxpYyBzdGF0aWMgYXJpYUF0dHJpYnV0ZUdsb2JhbERlZmF1bHRzID0ge1xuICAgICAgICBcImFyaWEtYXRvbWljXCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLWF1dG9jb21wbGV0ZVwiOiBcIm5vbmVcIixcbiAgICAgICAgXCJhcmlhLWJ1c3lcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiB1bmRlZmluZWQsXG4gICAgICAgIFwiYXJpYS1jdXJyZW50XCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLWRpc2FibGVkXCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLWRyb3BlZmZlY3RcIjogXCJub25lXCIsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiB1bmRlZmluZWQsXG4gICAgICAgIFwiYXJpYS1ncmFiYmVkXCI6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB1bmRlZmluZWQsXG4gICAgICAgIFwiYXJpYS1pbnZhbGlkXCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLWxpdmVcIjogXCJvZmZcIixcbiAgICAgICAgXCJhcmlhLW1vZGFsXCI6IFwiZmFsc2VcIixcbiAgICAgICAgXCJhcmlhLW11bHRpbGluZVwiOiBcImZhbHNlXCIsXG4gICAgICAgIFwiYXJpYS1tdWx0aXNlbGVjdGFibGVcIjogXCJmYWxzZVwiLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogdW5kZWZpbmVkLFxuICAgICAgICBcImFyaWEtcHJlc3NlZFwiOiB1bmRlZmluZWQsXG4gICAgICAgIFwiYXJpYS1yZWFkb25seVwiOiBcImZhbHNlXCIsXG4gICAgICAgIC8vXCJhcmlhLXJlbGV2YW50XCI6IFwiYWRkaXRpb25zIHRleHRcIiwgVE9ETzogYXJlIG11bHRpcGxlIHZhbHVlcyBzdXBwb3J0ZWQ/XG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiBcImZhbHNlXCIsXG4gICAgICAgIFwiYXJpYS1zZWxlY3RlZFwiOiB1bmRlZmluZWQsXG4gICAgICAgIFwiYXJpYS1zb3J0XCI6IFwibm9uZVwiXG4gICAgfVxuXG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWwtYWFtLTEuMC8jaHRtbC1hdHRyaWJ1dGUtc3RhdGUtYW5kLXByb3BlcnR5LW1hcHBpbmdzXG4gICAgcHVibGljIHN0YXRpYyBhcmlhQXR0cmlidXRlSW1wbGljaXRNYXBwaW5ncyA9IHtcbiAgICAgICAgXCJhcmlhLWF1dG9jb21wbGV0ZVwiOiB7XG4gICAgICAgICAgICBcImZvcm1cIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJvZmZcIiA9PT0gZS5nZXRBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIikgPyBcIm5vbmVcIiA6IFwiYm90aFwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJvZmZcIiA9PT0gZS5nZXRBdHRyaWJ1dGUoXCJhdXRvY29tcGxldGVcIikgPyBcIm5vbmVcIiA6IFwiYm90aFwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2VsZWN0XCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwib2ZmXCIgPT09IGUuZ2V0QXR0cmlidXRlKFwiYXV0b2NvbXBsZXRlXCIpID8gXCJub25lXCIgOiBcImJvdGhcIjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRleHRhcmVhXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwib2ZmXCIgPT09IGUuZ2V0QXR0cmlidXRlKFwiYXV0b2NvbXBsZXRlXCIpID8gXCJub25lXCIgOiBcImJvdGhcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgXCJpbnB1dFwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmhhc0F0dHJpYnV0ZShcImluZGV0ZXJtaW5hdGVcIikpIHJldHVybiBcIm1peGVkXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBlLmhhc0F0dHJpYnV0ZShcImNoZWNrZWRcIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJtZW51aXRlbVwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmhhc0F0dHJpYnV0ZShcImluZGV0ZXJtaW5hdGVcIikpIHJldHVybiBcIm1peGVkXCI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBlLmhhc0F0dHJpYnV0ZShcImNoZWNrZWRcIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCIqXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuaGFzQXR0cmlidXRlKFwiaW5kZXRlcm1pbmF0ZVwiKSkgcmV0dXJuIFwibWl4ZWRcIjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiB7XG4gICAgICAgICAgICBcImJ1dHRvblwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImZpZWxkc2V0XCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJvcHRncm91cFwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm9wdGlvblwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInNlbGVjdFwiOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpID8gXCJ0cnVlXCIgOiBcImZhbHNlXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRleHRhcmVhXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikgPyBcInRydWVcIiA6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjoge1xuICAgICAgICAgICAgXCJkZXRhaWxzXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKFwib3BlblwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZGlhbG9nXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKFwib3BlblwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCI6IHtcbiAgICAgICAgICAgIFwic2VsZWN0XCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGUuaGFzQXR0cmlidXRlKFwibXVsdGlwbGVcIikpIHJldHVybiBcInRydWVcIjtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYXJpYS1wbGFjZWhvbGRlclwiOiB7XG4gICAgICAgICAgICBcImlucHV0XCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKFwicGxhY2Vob2xkZXJcIilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRleHRhcmVhXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKFwicGxhY2Vob2xkZXJcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IHtcbiAgICAgICAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5nZXRBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2VsZWN0XCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInRleHRhcmVhXCI6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGUuZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGhhbmRsZXMgaW1wbGljaXQgYXJpYSBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUsIGFuIGlucHV0IHdpdGggY2hlY2tlZCBpcyBlcXVpdmFsZW50IHRvIGFyaWEtY2hlY2tlZD1cInRydWVcIlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXJpYUF0dHJpYnV0ZShlbGUsIGF0dHJpYnV0ZU5hbWUpIHtcbiAgICAgICAgLy8gSWYgdGhlIGF0dHJpYnV0ZSBpcyBkZWZpbmVkLCBpdCB0YWtlcyBwcmVjZWRlbmNlXG4gICAgICAgIGxldCByZXRWYWwgPSBlbGUuZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpO1xuXG4gICAgICAgIGlmIChlbGUuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpICYmIHJldFZhbC50cmltKCkgPT09IFwiXCIpIHsgLy9cIlwiIGlzIHRyZWF0ZWQgYXMgZmFsc2UsIHNvIHdlIG5lZWQgcmV0dXJuIGl0IGJlZm9yZSB0aGUgYmVsb3cgY2hlY2tcbiAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiBkZXRlcm1pbmUgaW1wbGljaXQgdmFsdWVzIGZyb20gb3RoZXIgYXR0cmlidXRlc1xuICAgICAgICBpZiAoIXJldFZhbCkge1xuICAgICAgICAgICAgbGV0IHRhZyA9IGVsZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgaW4gUlBUVXRpbC5hcmlhQXR0cmlidXRlSW1wbGljaXRNYXBwaW5ncykge1xuICAgICAgICAgICAgICAgIGlmICh0YWcgaW4gUlBUVXRpbC5hcmlhQXR0cmlidXRlSW1wbGljaXRNYXBwaW5nc1thdHRyaWJ1dGVOYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBSUFRVdGlsLmFyaWFBdHRyaWJ1dGVJbXBsaWNpdE1hcHBpbmdzW2F0dHJpYnV0ZU5hbWVdW3RhZ107XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHJldFZhbCkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsKGVsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFwiKlwiIGluIFJQVFV0aWwuYXJpYUF0dHJpYnV0ZUltcGxpY2l0TWFwcGluZ3NbYXR0cmlidXRlTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gUlBUVXRpbC5hcmlhQXR0cmlidXRlSW1wbGljaXRNYXBwaW5nc1thdHRyaWJ1dGVOYW1lXVtcIipcIl07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHJldFZhbCkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsKGVsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayByb2xlLWJhc2VkIGRlZmF1bHRzXG4gICAgICAgIGlmICghcmV0VmFsKSB7XG4gICAgICAgICAgICBsZXQgcm9sZSA9IEFSSUFNYXBwZXIubm9kZVRvUm9sZShlbGUpO1xuICAgICAgICAgICAgaWYgKHJvbGUgaW4gUlBUVXRpbC5hcmlhQXR0cmlidXRlUm9sZURlZmF1bHRzICYmIGF0dHJpYnV0ZU5hbWUgaW4gUlBUVXRpbC5hcmlhQXR0cmlidXRlUm9sZURlZmF1bHRzW3JvbGVdKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsID0gUlBUVXRpbC5hcmlhQXR0cmlidXRlUm9sZURlZmF1bHRzW3JvbGVdW2F0dHJpYnV0ZU5hbWVdO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHJldFZhbCkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwoZWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdGlsbCBub3QgZGVmaW5lZD8gQ2hlY2sgZ2xvYmFsIGRlZmF1bHRzXG4gICAgICAgIGlmICghcmV0VmFsICYmIGF0dHJpYnV0ZU5hbWUgaW4gUlBUVXRpbC5hcmlhQXR0cmlidXRlR2xvYmFsRGVmYXVsdHMpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IFJQVFV0aWwuYXJpYUF0dHJpYnV0ZUdsb2JhbERlZmF1bHRzW2F0dHJpYnV0ZU5hbWVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB0YWJUYWdNYXAgPSB7XG4gICAgICAgIFwiYnV0dG9uXCI6IGZ1bmN0aW9uIChlbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgICAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG4gICAgICAgIH0sXG4gICAgICAgIFwiaWZyYW1lXCI6IHRydWUsXG4gICAgICAgIFwiaW5wdXRcIjogZnVuY3Rpb24gKGVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZShcInR5cGVcIikgIT09IFwiaGlkZGVuXCIgJiYgIWVsZW1lbnQuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG4gICAgICAgIH0sXG4gICAgICAgIFwic2VsZWN0XCI6IGZ1bmN0aW9uIChlbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgICAgICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG4gICAgICAgIH0sXG4gICAgICAgIFwidGV4dGFyZWFcIjogdHJ1ZSxcbiAgICAgICAgXCJkaXZcIjogZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJhXCI6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICAvLyB4bGluazpocmVmPz8gc2VlIHN2Z1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKFwiaHJlZlwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJhcmVhXCI6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpO1xuICAgICAgICB9LFxuICAgICAgICBcImF1ZGlvXCI6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKTtcbiAgICAgICAgfSxcbiAgICAgICAgXCJ2aWRlb1wiOiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIik7XG4gICAgICAgIH0sXG4gICAgICAgIFwic3VtbWFyeVwiOiB0cnVlXG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyB3b3JkQ291bnQoc3RyKSA6IG51bWJlciB7XG4gICAgICAgIHN0ciA9IHN0ci50cmltKCk7XG4gICAgICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcbiAgICAgICAgcmV0dXJuIHN0ci5zcGxpdCgvXFxzKy9nKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm90ZSB0aGF0IHRoaXMgb25seSBkZXRlY3RzIGlmIHRoZSBlbGVtZW50IGl0c2VsZiBpcyBpbiB0aGUgdGFiIG9yZGVyLlxuICAgICAqIEhvd2V2ZXIsIHRoaXMgZWxlbWVudCBtYXkgZGVsZWdhdGUgZm9jdXMgdG8gYW5vdGhlciBlbGVtZW50IHZpYSBhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcbiAgICAgKiBBbHNvLCBmb2N1cyB2YXJpZXMgYnkgYnJvd3Nlci4uLiAgc3RpY2tpbmcgdG8gdGhpbmdzIHRoYXQgYXJlIGZvY3VzYWJsZSBvbiBjaHJvbWUgYW5kIGZpcmVmb3hcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzVGFiYmFibGUoZWxlbWVudCkge1xuICAgICAgICAvLyBVc2luZyBodHRwczovL2FsbHlqcy5pby9kYXRhLXRhYmxlcy9mb2N1c2FibGUuaHRtbFxuICAgICAgICAvLyBIYW5kbGUgdGhlIGV4cGxpY2l0IGNhc2VzIGZpcnN0XG4gICAgICAgIGlmICghUlBUVXRpbC5pc05vZGVWaXNpYmxlKGVsZW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSkgPj0gMDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFeHBsaWNpdCBjYXNlcyBoYW5kbGVkIC0gbm93IHRoZSBpbXBsaWNpdFxuICAgICAgICBsZXQgbm9kZU5hbWUgPSBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChub2RlTmFtZSBpbiBSUFRVdGlsLnRhYlRhZ01hcCkge1xuICAgICAgICAgICAgbGV0IHJldFZhbCA9IFJQVFV0aWwudGFiVGFnTWFwW25vZGVOYW1lXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHJldFZhbCkgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRhYkluZGV4TEVaZXJvKGVsZW0pIHtcbiAgICAgICAgaWYgKFJQVFV0aWwuaGFzQXR0cmlidXRlKGVsZW0sIFwidGFiaW5kZXhcIikpIHtcbiAgICAgICAgICAgIGlmIChlbGVtLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLm1hdGNoKC9eLT9cXGQrJC8pKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhYmluZGV4VmFsdWUgPSBwYXJzZUludChlbGVtLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFiaW5kZXhWYWx1ZSA9PT0gMCB8fCB0YWJpbmRleFZhbHVlID09PSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vVE9ETzogZnVuY3Rpb24gZG9lcyBub3QgaGFuZGxlIGVxdWl2YWxlbnRzIGZvciByb2xlczogcm93LCBsaW5rLCBoZWFkZXIsIGJ1dHRvblxuICAgIC8vIEJ1dCBpdCBtYXkgbm90IGhhdmUgdG8uICBCdWcgcmVwb3J0cyBoYXZlIGJlZW4gYWJvdXQgcmFkaW8gYnV0dG9ucyBhbmQgY2hlY2tib3hlcy5cbiAgICBwdWJsaWMgc3RhdGljIGlzSHRtbEVxdWl2KG5vZGUsIGh0bWxFcXVpdikge1xuICAgICAgICBsZXQgcmV0VmFsID0gZmFsc2U7XG4gICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAobm9kZU5hbWUgPT09IFwiaW5wdXRcIikge1xuICAgICAgICAgICAgICAgIGxldCB0eXBlID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0bWxFcXVpdi5pbmRleE9mKFwiY2hlY2tib3hcIikgIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IHR5cGUgPT09IFwiY2hlY2tib3hcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChodG1sRXF1aXYuaW5kZXhPZihcInJhZGlvXCIpICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSB0eXBlID09PSBcInJhZGlvXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzRGVmaW5lZEFyaWFBdHRyaWJ1dGUoZWxlLCBhdHRyTmFtZSkge1xuICAgICAgICBsZXQgaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoYXR0ck5hbWUuc3Vic3RyaW5nKDAsIDUpID09PSAnYXJpYS0nKSB7XG4gICAgICAgICAgICAvLyBVc2VyIGFnZW50cyBTSE9VTEQgdHJlYXQgc3RhdGUgYW5kIHByb3BlcnR5IGF0dHJpYnV0ZXMgd2l0aCBhIHZhbHVlIG9mIFwiXCIgdGhlIHNhbWUgYXMgdGhleSB0cmVhdCBhbiBhYnNlbnQgYXR0cmlidXRlLlxuICAgICAgICAgICAgaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZSA9IGVsZS5oYXNBdHRyaWJ1dGUgJiYgZWxlLmhhc0F0dHJpYnV0ZShhdHRyTmFtZSkgJiYgZWxlLmdldEF0dHJpYnV0ZShhdHRyTmFtZSkubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNEZWZpbmVkQXJpYUF0dHJpYnV0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5vcm1hbGl6ZVNwYWNpbmcocykge1xuICAgICAgICByZXR1cm4gcy50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgc3RhdGljIG5vbkV4aXN0YW50SURzKG5vZGUsIHRhcmdldGlkcykge1xuICAgICAgICBsZXQgcmV0dXJubm90Zm91bmRpZHMgPSAnJztcbiAgICAgICAgaWYgKFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyh0YXJnZXRpZHMpLmxlbmd0aCA8IDEpIHJldHVybiByZXR1cm5ub3Rmb3VuZGlkcztcblxuICAgICAgICBsZXQgdGFyZ2V0QXJyYXkgPSB0YXJnZXRpZHMuc3BsaXQoXCIgXCIpO1xuICAgICAgICBsZXQgZG9jID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgeHAgPSBcIi8vKltAaWQ9J1wiICsgdGFyZ2V0QXJyYXlbaV0gKyBcIiddXCI7XG4gICAgICAgICAgICBsZXQgeHBhdGhSZXN1bHQgPSBkb2MuZXZhbHVhdGUoeHAsIG5vZGUsIGRvYy5kZWZhdWx0TlNSZXNvbHZlciwgMCAvKiBYUGF0aFJlc3VsdC5BTllfVFlQRSAqLywgbnVsbCk7XG4gICAgICAgICAgICBsZXQgciA9IHhwYXRoUmVzdWx0Lml0ZXJhdGVOZXh0KCk7XG4gICAgICAgICAgICBpZiAoIXIpIHJldHVybm5vdGZvdW5kaWRzICs9IHRhcmdldEFycmF5W2ldICsgJywgJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHJldHVybm5vdGZvdW5kaWRzKS5sZW5ndGggPj0gMilcbiAgICAgICAgICAgIHJldHVybm5vdGZvdW5kaWRzID0gcmV0dXJubm90Zm91bmRpZHMuc3Vic3RyaW5nKDAsIHJldHVybm5vdGZvdW5kaWRzLmxlbmd0aCAtIDIpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm5ub3Rmb3VuZGlkcyA9ICcnO1xuICAgICAgICByZXR1cm4gcmV0dXJubm90Zm91bmRpZHM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXREb2NFbGVtZW50c0J5VGFnKGVsZW0sIHRhZ05hbWUpIHtcbiAgICAgICAgbGV0IGRvYyA9IEZyYWdtZW50VXRpbC5nZXRPd25lckZyYWdtZW50KGVsZW0pIGFzIGFueTtcbiAgICAgICAgdGFnTmFtZSA9IHRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IGNhY2hlID0gUlBUVXRpbC5nZXRDYWNoZShkb2MsIFwiUlBUX0RPQ0VMRU1TQllUQUdcIiwge30pO1xuICAgICAgICBpZiAoISh0YWdOYW1lIGluIGNhY2hlKSkge1xuICAgICAgICAgICAgY2FjaGVbdGFnTmFtZV0gPSBkb2MucXVlcnlTZWxlY3RvckFsbCh0YWdOYW1lKTtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoZG9jLCBcIlJQVF9ET0NFTEVNU0JZVEFHXCIsIGNhY2hlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGVbdGFnTmFtZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZ2V0IGEgbGlzdCBvZiBhbGwgdGhlIGNoaWxkIGVsZW1udHMgd2hpY2ggbWF0Y2ggdGhlIHRhZ1xuICAgICAqIG5hbWUgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBOb3RlOiBUaGlzIGlzIGEgd3JhcHBlciBmdW5jdGlvbiB0bzogUlBUVXRpbC5nZXRDaGlsZEJ5VGFnSGlkZGVuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gcGFyZW50RWxlbSAtIFRoZSBwYXJlbnQgZWxlbWVudFxuICAgICAqIEBwYXJtIHtzdHJpbmd9IHRhZ05hbWUgLSBUaGUgdGFnIHRvIHNlYXJjaCBmb3IgdW5kZXIgdGhlIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcm0ge2Jvb2xlYW59IGlnbm9yZUhpZGRlbiAtIHRydWUgaWYgaGlkZGVuIGVsZW1lbnRzIHdpdGggdGhlIHRhZyBzaG91bGQgaWdub3JlZCBmcm9tIHRoZSBsaXN0XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIGlmIHRoZSBoaWRkZW4gZWxlbWVudHMgc2hvdWxkIGJlIGFkZGVkXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtMaXN0fSByZXRWYWwgLSBsaXN0IG9mIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggbWF0Y2hlZCB0aGUgdGFnIHVuZGVyIHRoZSBwYXJlbnQgdGhhdCB3ZXJlIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENoaWxkQnlUYWcocGFyZW50RWxlbSwgdGFnTmFtZSkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5nZXRDaGlsZEJ5VGFnSGlkZGVuKHBhcmVudEVsZW0sIHRhZ05hbWUsIGZhbHNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZ2V0IGEgbGlzdCBvZiBhbGwgdGhlIGNoaWxkIGVsZW1udHMgd2hpY2ggbWF0Y2ggdGhlIHRhZ1xuICAgICAqIG5hbWUgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gcGFyZW50RWxlbSAtIFRoZSBwYXJlbnQgZWxlbWVudFxuICAgICAqIEBwYXJtIHtzdHJpbmd9IHRhZ05hbWUgLSBUaGUgdGFnIHRvIHNlYXJjaCBmb3IgdW5kZXIgdGhlIHBhcmVudCBlbGVtZW50XG4gICAgICogQHBhcm0ge2Jvb2xlYW59IGlnbm9yZUhpZGRlbiAtIHRydWUgaWYgaGlkZGVuIGVsZW1lbnRzIHdpdGggdGhlIHRhZyBzaG91bGQgaWdub3JlZCBmcm9tIHRoZSBsaXN0XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIGlmIHRoZSBoaWRkZW4gZWxlbWVudHMgc2hvdWxkIGJlIGFkZGVkXG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySGlkZGVuU2V0dGluZyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaGlkZGVuIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtMaXN0fSByZXRWYWwgLSBsaXN0IG9mIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggbWF0Y2hlZCB0aGUgdGFnIHVuZGVyIHRoZSBwYXJlbnQgdGhhdCB3ZXJlIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENoaWxkQnlUYWdIaWRkZW4ocGFyZW50RWxlbSwgdGFnTmFtZSwgaWdub3JlSGlkZGVuLCBjb25zaWRlckhpZGRlblNldHRpbmcpIHtcbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGVyYXRpb25cbiAgICAgICAgbGV0IHJldFZhbCA9IFtdO1xuICAgICAgICBsZXQgY2hpbGQgPSBwYXJlbnRFbGVtLmZpcnN0Q2hpbGQ7XG5cbiAgICAgICAgLy8gTG9vcCBvdmVyIGFsbCB0aGUgY2hpbGQgZWxlbWVudHMgb2YgdGhlIHBhcmVudCB0byBidWlsZCBhIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyB0aGF0XG4gICAgICAgIC8vIG1hdGNoIHRoZSB0YWdOYW1lIHByb3ZpZGVkXG4gICAgICAgIHdoaWxlIChjaGlsZCAhPSBudWxsKSB7XG5cbiAgICAgICAgICAgIC8vIE9ubHkgaW5jbHVkZSB0aGUgY2hpbGRyZW4gaW50byB0aGUgcmV0dXJuIGFycmF5IGlmIHRoZXkgbWF0Y2ggd2l0aCB0YWduYW1lLlxuICAgICAgICAgICAgaWYgKGNoaWxkLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRhZ05hbWUpIHtcblxuICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgaWdub3JlaGlkZGVuIHdhcyBzZXQgdG8gdHJ1ZSwgdGhlbiBwZXJmb3JtIGEgaXNOb2RlVmlzaWJsZSBjaGVja1xuICAgICAgICAgICAgICAgIC8vIGFuZCBpbiB0aGUgY2FzZSB0aGUgbm9kZSBpcyBub3QgdmlzaWxibGUgd2UgbW9yZSB0byB0aGVzZXMgdGhlbiBtb3ZlIHRvIHRoZSBuZXh0IG5vZGUuXG4gICAgICAgICAgICAgICAgLy8gUGVyZm9ybSBhIGNvdXBsZSBvZiBjaGVja3MgdG8gZGV0ZXJtaW5lIGlmIGhpZGRlbiBlbGVtZW50cyBzaG91bGQgYmUgaWdub3JlZCBvciBub3QuXG4gICAgICAgICAgICAgICAgLy8gIDEuIFdoZW4gaWdub3JlSGlkZGVuIGlzIHNldCB0byB0cnVlIHVwZnJvbnQsIHRoZW4gcGVyZm9ybSBhIGlzTm9kZVZpc2libGVcbiAgICAgICAgICAgICAgICAvLyAgMi4gSWYgY29uc2lkZXJIaWRkZW5TZXR0aW5nIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHdlIHBlcmZvcm0gdGhlIGNoZWNrIHRvIGNvbnNpZGVyIHRoZVxuICAgICAgICAgICAgICAgIC8vICAgICBDaGVjayBIaWRkZW4gQ29udGVudCB0aGF0IGlzIHByb3ZpZGVkLlxuICAgICAgICAgICAgICAgIC8vICAyLjEuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAgICAgICAgIC8vICAgICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlIGRvIG5vdFxuICAgICAgICAgICAgICAgIC8vICAgICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgICAgICBpZiAoKGlnbm9yZUhpZGRlbiB8fCAoY29uc2lkZXJIaWRkZW5TZXR0aW5nICYmICFSUFRVdGlsLnNob3VsZENoZWNrSGlkZGVuQ29udGVudChjaGlsZCkpKSAmJiAhUlBUVXRpbC5pc05vZGVWaXNpYmxlKGNoaWxkKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlIG9uIHRvIHRoZSBuZXh0IGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZztcblxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBQdXNoIHRoZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHNpYmxpbmcgZWxlbWVudFxuICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgYSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgbWF0Y2ggZ2l2ZW4gcm9sZXMocykuXG4gICAgICogVGhpcyBmdW5jdGlvbiBieSBkZWZhdWx5IHdpbGwgbm90IGNvbnNpZGVyIENoZWNrIEhpZGRlbiBTZXR0aW5nIGF0IGFsbC5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGJ5IGRlZmF1bHkgd2lsbCBub3QgY29uc2lkZXIgaW1wbGljaXQgcm9sZXMuXG4gICAgICogTm90ZTogVGhpcyBpcyBhIHdyYXBwZXIgZnVuY3Rpb24gdG86IFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtkb2N1bWVudH0gZG9jIC0gVGhlIGRvY3VtZW50IG5vZGVcbiAgICAgKiBAcGFybSB7bGlzdCBvciBzdHJpbmd9IHJvbGVzIC0gTGlzdCBvciBzaW5nbGUgcm9sZSBmb3Igd2hpY2ggdG8gcmV0dXJuIGVsZW1lbnRzIGJhc2VkIG9uLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TGlzdH0gcmV0VmFsIC0gbGlzdCBvZiBhbGwgdGhlIGVsZW1lbnRzIHdoaWNoIG1hdGNoZWQgdGhlIHJvbGUocykgdGhhdCB3ZXJlIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEVsZW1lbnRzQnlSb2xlKGRvYywgcm9sZXMpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuZ2V0RWxlbWVudHNCeVJvbGVIaWRkZW4oZG9jLCByb2xlcywgZmFsc2UsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIGEgbGlzdCBvZiBlbGVtZW50cyB0aGF0IG1hdGNoIGdpdmVuIHJvbGVzKHMpLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gYXNsbyBmaW5kcyBlbGVtZW50cyB3aXRoIGltcGxpY2l0IHJvbGVzLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGNvbnNpZGVyIGVsZW1lbnRzIHRoYXQgYXJlIGhpZGRlbiBiYXNlZCBvbiB0aGUgaWYgdGhlIENoZWNrXG4gICAgICogSGlkZGVuIENvbnRlbnQgc2V0dGluZ3Mgc2hvdWxkIGJlIGNvbnNpZGVyZWQgb3Igbm90LlxuICAgICAqXG4gICAgICogQHBhcm0ge2RvY3VtZW50fSBkb2MgLSBUaGUgZG9jdW1lbnQgbm9kZVxuICAgICAqIEBwYXJtIHtsaXN0IG9yIHN0cmluZ30gcm9sZXMgLSBMaXN0IG9yIHNpbmdsZSByb2xlIGZvciB3aGljaCB0byByZXR1cm4gZWxlbWVudHMgYmFzZWQgb24uXG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySGlkZGVuU2V0dGluZyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaGlkZGVuIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySW1wbGljaXRSb2xlcyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaW1wbGljaXQgcm9sZXMgc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0xpc3R9IHJldFZhbCAtIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyB3aGljaCBtYXRjaGVkIHRoZSByb2xlKHMpIHRoYXQgd2VyZSBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRFbGVtZW50c0J5Um9sZUhpZGRlbihkb2MsIHJvbGVzLCBjb25zaWRlckhpZGRlblNldHRpbmcsIGNvbnNpZGVySW1wbGljaXRSb2xlcz8pIHtcbiAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB0aGUgcm9sZSB0byBlbGVtZW50IGFzc29pY2F0aW9uIGlzIGFscmVhZHkgbWFkZSwgYW5kIGF2YWlsYWJsZSBpbiB0aGUgZ2xvYmFsIGhhc0F0dHJpYnV0ZVxuICAgICAgICAvLyB3ZSBjYW4ganVzdCB1c2UgdGhhdCBvbmUgaW5zdGVhZCBvZiBidWlsZGluZyBhIG5ldyBvbmUuXG4gICAgICAgIGxldCByb2xlVG9FbGVtcyA9IG51bGw7XG4gICAgICAgIGlmIChjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgICAgIHJvbGVUb0VsZW1zID0gUlBUVXRpbC5nZXRDYWNoZShkb2MsIFwiUlBUVXRpbF9HRVRFTEVNRU5UU0JZX1JPTEVfSU1QTElDSVRcIiwgbnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByb2xlVG9FbGVtcyA9IFJQVFV0aWwuZ2V0Q2FjaGUoZG9jLCBcIlJQVFV0aWxfR0VURUxFTUVOVFNCWV9ST0xFXCIsIG51bGwpO1xuICAgICAgICB9XG5cblxuICAgICAgICAvLyBCdWlsZCB0aGUgbmV3IHJvbGUgdG8gZWxlbWVudCwgdGhpcyBpcyB3aGVyZSB3ZSBsb29wIHRocm91Z2ggYWxsIHRoZSBlbGVtZW50cyBhbmQgZXh0cmFjdCBhbGwgdGhlXG4gICAgICAgIC8vIGVsZW1lbnRzIGJzYWVkIG9uIHJvbGVzLlxuICAgICAgICBpZiAocm9sZVRvRWxlbXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFJlLWluaXRpYWxpemUgdGhlIHJvbGVUb0VsZW1zIGhhc2hcbiAgICAgICAgICAgIHJvbGVUb0VsZW1zID0ge307XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUgYm9keSBvZiB0aGUgZG9jXG4gICAgICAgICAgICBsZXQgcm9vdCA9IGRvYy5ib2R5O1xuXG4gICAgICAgICAgICAvLyBLZWVwIGxvb3BpbmcgdW50aWwgd2UgYXJlIGF0IHRoZSB2ZXJ5IHBhcmVudCBub2RlIG9mIHRoZSBlbnRpcmUgcGFnZSwgc28gdGhhdCB3ZSBjYW4gbG9vcCB0aHJvdWdoXG4gICAgICAgICAgICAvLyBhbGwgdGhlIG5vZGVzLlxuICAgICAgICAgICAgd2hpbGUgKERPTVV0aWwucGFyZW50Tm9kZShyb290KSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgcGFyZW50Tm9kZVxuICAgICAgICAgICAgICAgIHJvb3QgPSBET01VdGlsLnBhcmVudE5vZGUocm9vdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEJ1aWxkIGEgbm9kZXdhbHRlciBiYXNlZCBvZiB0aGUgcm9vdCBub2RlLCB0aGlzIG5vZGUgd2FsdGVyIHdpbGwgYmUgdXNlIGxvb3Agb3ZlciBhbGwgdGhlIG5vZGVzXG4gICAgICAgICAgICAvLyBhbmQgYnVpbGQgdGhlIHJvbGVzIHRvIEVsZW1lbnQgY29yYWxhdGlvblxuICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIocm9vdCk7XG5cbiAgICAgICAgICAgIC8vIExvb3Agb3ZlciB0aGUgZW50aXJlIGRvYy9saXN0IG9mIG5vZGVzIHRvIGJ1aWxkIHRoZSByb2xlIHRvIGVsZW1lbnQgbWFwXG4gICAgICAgICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgYnVpbGQgYW4gcm9sZVRvRWxlbXMgaGFzaCB3aGljaCBpcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdC5cbiAgICAgICAgICAgIC8vIHJvbGVUb0VsZW1zID0ge1xuICAgICAgICAgICAgLy8gICAgZG9jdW1lbnQ6IFt7ZGl2fSx7YWJicn0se3Zhcn1dLFxuICAgICAgICAgICAgLy8gICAgbWFpbjogW3tkaXZ9XSxcbiAgICAgICAgICAgIC8vICAgIG5hdmlnYXRpb246IFt7ZGl2fV1cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHdoaWxlIChudy5uZXh0Tm9kZSgpKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBPbmx5IGNoZWNrIHRoZSBlbGVtZW50cyB3aGljaCBoYXZlIHRoZSByb2xlIGF0dHJpYnV0ZSBhc3NpY2lhdGVkIHRvIHRoZW1cbiAgICAgICAgICAgICAgICBpZiAoIW53LmJFbmRUYWcpIHtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgd1JvbGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgIC8vY2hlY2sgaWYgdGhlIG5vZGUgaGFzIHJvbGUgYXR0cmlidXRlc1xuICAgICAgICAgICAgICAgICAgICBpZiAobncuZWxlbSgpICYmIG53LmVsZW0oKS5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHRyYWN0IGFsbCB0aGUgcm9sZXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gdGhpcyBlbGVtZW50LCBjYW4gaGF2ZSBtdWx0aXBsZSByb2xlcyBvbiBvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgc3BsaXQgYnkgc3BhY2UsIHNvIHdlIG5lZWQgdG8gZXh0cmFjdCBhbGwgb2YgdGhlbSBpbnRvIGFuIGFycmF5LlxuICAgICAgICAgICAgICAgICAgICAgICAgd1JvbGVzID0gbncuZWxlbSgpLmdldEF0dHJpYnV0ZShcInJvbGVcIikuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdSb2xlcy5sZW5ndGggPT09IDAgJiYgY29uc2lkZXJJbXBsaWNpdFJvbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFnUHJvcGVydHkgPSBSUFRVdGlsLmdldEVsZW1lbnRBcmlhUHJvcGVydHkobncubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGlmIHRoZXJlIGFyZSBhbnkgaW1wbGljaXQgcm9sZXMgZm9yIHRoaXMgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWdQcm9wZXJ0eSAmJiB0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Um9sZXMgPSB0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAod1JvbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAvLyAgMS4gSWYgY29uc2lkZXJIaWRkZW5TZXR0aW5nIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHdlIHBlcmZvcm0gdGhlIGNoZWNrIHRvIGNvbnNpZGVyIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgQ2hlY2sgSGlkZGVuIENvbnRlbnQgdGhhdCBpcyBwcm92aWRlZC5cbiAgICAgICAgICAgICAgICAgICAgLy8gIDIuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoZSBpZiBjb25kaXRpb25zIHVzZXMgc2hvcnQtY2lyY3VpdGluZyBzbyBpZiB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG5vdCB0cnVlIGl0IHdpbGwgbm90IGNoZWNrIHRoZSBuZXh0IG9uZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgICAgICAgICBpZiAoY29uc2lkZXJIaWRkZW5TZXR0aW5nICYmIFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihudy5ub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSByb2xlcyBhbmQgYXNzaWduZWQgdGhpcyBub2RlIHRvIGFsbCB0aGVzIHJvbGVzXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd1JvbGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZSByb2xlIGtleSBpcyBub3QgYWxyZWFkeSBpbiB0aGUgcm9sZVRvRWxlbXMgaGFzaCwgY29uc3RydWN0IHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIHRoZSBrZXkgYW5kIGFzc2lnbiBlbXB0eSBhcnJheS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHdSb2xlc1tpXSBpbiByb2xlVG9FbGVtcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlVG9FbGVtc1t3Um9sZXNbaV1dID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgYXJyYXkgZm9yIHRoZSByb2xlXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlVG9FbGVtc1t3Um9sZXNbaV1dLnB1c2gobncubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFNldCB0aGUgcm9sZVRvRWxlbXMgaGFzaCBtYXAgYXMgYSBnbG9iYWwgdmFyaWFibGVcbiAgICAgICAgICAgIGlmIChjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKGRvYywgXCJSUFRVdGlsX0dFVEVMRU1FTlRTQllfUk9MRV9JTVBMSUNJVFwiLCByb2xlVG9FbGVtcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoZG9jLCBcIlJQVFV0aWxfR0VURUxFTUVOVFNCWV9ST0xFXCIsIHJvbGVUb0VsZW1zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlsaXplIHRoZSByZXR1cm4gdmFsdWVcbiAgICAgICAgbGV0IHJldFZhbCA9IFtdO1xuXG4gICAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZXMgd2hlcmUgdGhlIHByb3ZpZGVkIHJvbGUgaXMgYSBzdHJpbmcgYW5kIG5vdCBhbiBhcnJheSxcbiAgICAgICAgLy8gZm9yIHRoaXMgY2FzZSB3ZSB0YWtlIHRoZSBzdHJpbmcgYW5kIHB1dCBpdCBpbnRvIGFuIGFycmF5XG4gICAgICAgIGlmICh0eXBlb2YgKHJvbGVzKSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbGV0IHJvbGUgPSByb2xlcztcbiAgICAgICAgICAgIHJvbGVzID0gW107XG4gICAgICAgICAgICByb2xlcy5wdXNoKHJvbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSByb2xlcyB0aGF0IHdlcmUgcHJvdmlkZWQgYW5kIGZpbmQgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZm9yIHRoaXMgcm9sZXNcbiAgICAgICAgLy8gYW5kIGFkZCB0aGVtIHRvIHRoZSByZXR1cm4gdmFsdWUuXG4gICAgICAgIGlmIChyb2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGxvb3Agb3ZlciBhbGwgdGhlIHJvbGVzXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvbGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgLy8gRXh0cmFjdCB0aGUgcm9sZSBmcm9tIHRoZSBhcnJheVxuICAgICAgICAgICAgICAgIGxldCBuZXh0Um9sZSA9IHJvbGVzW2ldO1xuICAgICAgICAgICAgICAgIC8vIEZldGNoIHRoZSBsaXN0IG9mIGFsbCB0aGUgZWxlbWVudHMgZm9yIHRoaXMgcm9sZVxuICAgICAgICAgICAgICAgIGxldCBjb3B5Um9sZXMgPSByb2xlVG9FbGVtc1tuZXh0Um9sZV07XG5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgZWxlbWVudHMgdG8gY29weSB0byBhbm90aGVyIGFycmF5LCB0aGVuIHBlcmZvcm0gdGhlIGNvcHlcbiAgICAgICAgICAgICAgICBpZiAoY29weVJvbGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIExvb3Agb3ZlciBhbGwgdGhlIGVsZW1lbnRzIHdoaWNoIGFyZSB0byBiZSBjb3BpZWRcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb3B5Um9sZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGlzIGVsZW1lbnQgdG8gdGhlIHJldHVybiB2YWxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldFZhbC5wdXNoKGNvcHlSb2xlc1tqXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZXRyaWV2aW5nIGVsZW1lbnQncyByb2xlcy5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFzbG8gZmluZHMgaW1wbGljaXQgcm9sZXMuXG4gICAgICogQHBhcm0ge0hUTUxFbGVtZW50fSBlbGUgLSBlbGVtZW50IGZvciB3aGljaCB0byBmaW5kIHJvbGUuXG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySW1wbGljaXRSb2xlcyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaW1wbGljaXQgcm9sZXMgc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0xpc3R9IHJvbGVzIC0gbGlzdCBvZiBhdHRyaWJ1dGUgcm9sZXMgYW5kIGltcGxpY2l0IHJvbGVzLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldFJvbGVzKGVsZTogRWxlbWVudCwgY29uc2lkZXJJbXBsaWNpdFJvbGVzOiBib29sZWFuKSA6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IHJvbGVzIDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKGVsZSAmJiBlbGUuaGFzQXR0cmlidXRlICYmIGVsZS5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKSB7XG4gICAgICAgICAgICBsZXQgYXR0clJvbGVzID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGVsZS5nZXRBdHRyaWJ1dGUoXCJyb2xlXCIpLnRyaW0oKSkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyUm9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICByb2xlcy5wdXNoKGF0dHJSb2xlc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGlmIGltcGxpY2l0IHJvbGVzIGV4aXN0LlxuICAgICAgICAvL05vdGU6IGVsZW1lbnQgY2FuIGhhdmUgbXVsdGlwbGUgaW1wbGljaXQgcm9sZXNcbiAgICAgICAgaWYgKGNvbnNpZGVySW1wbGljaXRSb2xlcykge1xuICAgICAgICAgICAgbGV0IGltcGxpY2l0Um9sZSA9IFJQVFV0aWwuZ2V0SW1wbGljaXRSb2xlKGVsZSk7XG4gICAgICAgICAgICBpZiAoaW1wbGljaXRSb2xlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvL2FkZCBpbXBsaWNpdCByb2xlcyB0byB0aGUgYXR0cmlidXRlcyByb2xlcy5cbiAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QoaW1wbGljaXRSb2xlLCByb2xlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJvbGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGltcGxpY2l0IHJvbGUgb2YgdGhlIGVsZW1lbWVudFxuICAgICAqIEBwYXJtIHtIVE1MRWxlbWVudH0gZWxlIC0gZWxlbWVudCBmb3Igd2hpY2ggdG8gZmluZCByb2xlLlxuICAgICAqXG4gICAgICogQHJldHVybiB0aGUgaW1wbGljaXQgcm9sZSBvciBbXSBpZiBkb2Vzbid0IGV4aXN0XG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW1wbGljaXRSb2xlKGVsZSkge1xuICAgICAgICBsZXQgdGFnUHJvcGVydHkgPSBSUFRVdGlsLmdldEVsZW1lbnRBcmlhUHJvcGVydHkoZWxlKTtcbiAgICAgICAgLy9jaGVjayBpZiB0aGVyZSBhcmUgYW55IGltcGxpY2l0IHJvbGVzIGZvciB0aGlzIGVsZW1lbnQuXG4gICAgICAgIGlmICh0YWdQcm9wZXJ0eSkge1xuICAgICAgICAgICAgaWYgKHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgb2YgdGhlIHJvbGVcbiAgICAgKiBAcGFybSB7c3RyaW5nfSByb2xlIC0gdGhlIHJvbGVcbiAgICAgKiBAcGFybSB7SFRNTEVsZW1lbnR9IGVsZSAtIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGZpbmQgcm9sZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0xpc3R9IHByb3BlcnRpZXMgLSBsaXN0IG9mIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVxdWlyZWQgYnkgdGhlIHJvbGVcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRSb2xlUmVxdWlyZWRQcm9wZXJ0aWVzKHJvbGUsIGVsZSkge1xuICAgICAgICBpZiAocm9sZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVdKSB7XG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRBdHRyaWJ1dGVzID0gQVJJQURlZmluaXRpb25zLmRlc2lnblBhdHRlcm5zW3JvbGVdLnJlcVByb3BzO1xuICAgICAgICAgICAgLy8gaGFuZGxlIHNwZWNpYWwgY2FzZSBvZiBzZXBhcmF0b3JcbiAgICAgICAgICAgIGlmIChyb2xlLnRvTG93ZXJDYXNlKCkgPT09IFwic2VwYXJhdG9yXCIgJiYgUlBUVXRpbC5pc0ZvY3VzYWJsZShlbGUpKSB7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KFtcImFyaWEtdmFsdWVub3dcIl0sIHJlcXVpcmVkQXR0cmlidXRlcyB8fCBbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVxdWlyZWRBdHRyaWJ1dGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXN0IGlmIHRoZSBlbGUgbm9kZSBpcyBmb2N1c2FibGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzRm9jdXNhYmxlKGVsZSkge1xuICAgICAgICBpZiAoZWxlID09PSBcInVuZGVmaW5lZFwiIHx8IGVsZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmlzVGFiYmFibGUoZWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaW5kaW5nIGlmIGEgZWxlbWVudCBoYXMgZ2l2ZW4gcm9sZS5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFzbG8gZmluZHMgaWYgZWxlbWVudCBoYXMgZ2l2ZW4gcm9sZXMgYXMgaW1wbGljaXQgcm9sZS5cbiAgICAgKiBAcGFybSB7SFRNTEVsZW1lbnR9IGVsZSAtIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGZpbmQgcm9sZS5cbiAgICAgKiBAcGFybSB7bGlzdCBvciBzdHJpbmd9IHJvbGVzIC0gTGlzdCBvciBzaW5nbGUgcm9sZSBmb3Igd2hpY2ggdG8gZmluZCBpZiBlbGVtZW50IGhhcyB0aGVzZSByb2xlcy5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJJbXBsaWNpdFJvbGVzIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBpbXBsaWNpdCByb2xlcyBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7TGlzdH0gcmV0VmFsIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiB0aCBlbGVtZW50IGhhcyB0aGUgc3BlY2lmaWVkIHJvbGUuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqXG4gICAgICogQ29uc2lkZXIgdG8gdXNlIGhhc1JvbGVJblNlbWFudGljcygpIGluc3RlYWQuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBoYXNSb2xlKGVsZSwgcm9sZSwgY29uc2lkZXJJbXBsaWNpdFJvbGVzPykgeyAgLy9Db25zaWRlciB0byB1c2UgaGFzUm9sZUluU2VtYW50aWNzKCkgaW5zdGVhZC5cbiAgICAgICAgbGV0IHJldFZhbCA9IGZhbHNlO1xuICAgICAgICBpZiAoZWxlICYmIGVsZS5oYXNBdHRyaWJ1dGUgJiYgZWxlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKHJvbGUpICE9IHR5cGVvZiAoXCJcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgcm9sZXMgPSBlbGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmV0VmFsICYmIGkgPCByb2xlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByb2xlc1tpXSBpbiByb2xlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IHJvbGVzID0gZWxlLmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJldFZhbCAmJiBpIDwgcm9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gcm9sZXNbaV0gPT09IHJvbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaWYgbm9uZSBvZiB0aGUgdGhlIGF0dHJpYnV0ZSByb2xlcyBtYXRjaGVkIHdpdGggZ2l2ZW4gcm9sZVxuICAgICAgICAvL2NoZWNrIGlmIGltcGxpY2l0IHJvbGVzIG1hdGNoZXMuXG4gICAgICAgIC8vTm90ZTogZWxlbWVudCBjYW4gaGF2ZSBtdWx0aXBsZSBpbXBsaWNpdCByb2xlc1xuICAgICAgICBpZiAoIXJldFZhbCAmJiBjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShlbGUpO1xuICAgICAgICAgICAgbGV0IHdSb2xlcyA9IFtdO1xuICAgICAgICAgICAgLy9jaGVjayBpZiB0aGVyZSBhcmUgYW55IGltcGxpY2l0IHJvbGVzIGZvciB0aGlzIGVsZW1lbnQuXG4gICAgICAgICAgICBpZiAodGFnUHJvcGVydHkgJiYgdGFnUHJvcGVydHkuaW1wbGljaXRSb2xlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy9hZGQgaW1wbGljaXQgcm9sZXMgdG8gdGhlIGF0dHJpYnV0ZXMgcm9sZXMuXG4gICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZSwgd1JvbGVzKTtcbiAgICAgICAgICAgICAgICAvL2lmIHJvbGUgaXMgYXJyYXkgbG9vcCB0aHJ1IGFuZCBzZWUgaWYgYW55ICBvZiB0aGUgaW1wbGljaXQgcm9sZSBwcmVzZW50IGluIHRoZSBhcnJheVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKHJvbGUpICE9IHR5cGVvZiAoXCJcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFyZXRWYWwgJiYgaSA8IHdSb2xlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gd1JvbGVzW2ldIGluIHJvbGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJldFZhbCAmJiBpIDwgd1JvbGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSB3Um9sZXNbaV0gPT09IHJvbGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGVsZW1lbnQgaGFzIHRoZSByb2xlLCBpbmNsdWRpbmcgdGhlIGltcGxpZWQgcm9sZSBpZiByb2xlIGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZC5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVwbGFjaW5nIHRoZSBoYXNSb2xlIGZ1bmN0aW9uXG4gICAgICpcbiAgICAgKiBAcGFybSB7SFRNTEVsZW1lbnR9IGVsZSAtIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGZpbmQgcm9sZS5cbiAgICAgKiBAcGFybSB7bGlzdCBvciBzdHJpbmd9IHJvbGVzIC0gTGlzdCBvciBzaW5nbGUgcm9sZSBmb3Igd2hpY2ggdG8gZmluZCBpZiBlbGVtZW50IGhhcyB0aGVzZSByb2xlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge0xpc3R9IHJldFZhbCAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgdGhlIGVsZW1lbnQgaGFzIHRoZSBzcGVjaWZpZWQgcm9sZS5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBoYXNSb2xlSW5TZW1hbnRpY3MoZWxlLCByb2xlKSB7XG4gICAgICAgIGxldCByZXRWYWwgPSBmYWxzZTtcbiAgICAgICAgbGV0IHJvbGVTcGVjaWZpZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGVsZSAmJiBlbGUuaGFzQXR0cmlidXRlICYmIGVsZS5oYXNBdHRyaWJ1dGUoXCJyb2xlXCIpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIChyb2xlKSAhPSB0eXBlb2YgKFwiXCIpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJvbGVzID0gZWxlLmdldEF0dHJpYnV0ZShcInJvbGVcIikudHJpbSgpLnRvTG93ZXJDYXNlKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJldFZhbCAmJiBpIDwgcm9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcm9sZVNwZWNpZmllZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IHJvbGVzW2ldIGluIHJvbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgcm9sZXMgPSBlbGUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKS50cmltKCkudG9Mb3dlckNhc2UoKS5zcGxpdCgvXFxzKy8pO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyAhcmV0VmFsICYmIGkgPCByb2xlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByb2xlU3BlY2lmaWVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gcm9sZXNbaV0gPT09IHJvbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJvbGVTcGVjaWZpZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGlmIGltcGxpY2l0IHJvbGVzIG1hdGNoZXMuXG4gICAgICAgIC8vTm90ZTogZWxlbWVudCBjYW4gaGF2ZSBtdWx0aXBsZSBpbXBsaWNpdCByb2xlc1xuICAgICAgICBsZXQgdGFnUHJvcGVydHkgPSBSUFRVdGlsLmdldEVsZW1lbnRBcmlhUHJvcGVydHkoZWxlKTtcbiAgICAgICAgLy9jaGVjayBpZiB0aGVyZSBhcmUgYW55IGltcGxpY2l0IHJvbGVzIGZvciB0aGlzIGVsZW1lbnQuXG4gICAgICAgIGlmICh0YWdQcm9wZXJ0eSAmJiB0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBpbXBSb2xlcyA9IHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZTtcbiAgICAgICAgICAgIC8vaWYgcm9sZSBpcyBhcnJheSBsb29wIHRocnUgYW5kIHNlZSBpZiBhbnkgIG9mIHRoZSBpbXBsaWNpdCByb2xlIHByZXNlbnQgaW4gdGhlIGFycmF5XG4gICAgICAgICAgICBpZiAodHlwZW9mIChyb2xlKSAhPSB0eXBlb2YgKFwiXCIpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFyZXRWYWwgJiYgaSA8IGltcFJvbGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGltcFJvbGVzW2ldIGluIHJvbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJldFZhbCAmJiBpIDwgaW1wUm9sZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsID0gaW1wUm9sZXNbaV0gPT09IHJvbGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyBpZiBhIGVsZW1lbnQgaGFzIGdpdmVuIHJvbGUuXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbHNvIGNoZWNrcyBpZiBlbGVtZW50IGhhcyBnaXZlbiByb2xlcyBhcyBpbXBsaWNpdCByb2xlcy5cbiAgICAgKiBAcGFybSB7SFRNTEVsZW1lbnR9IGVsZSAtIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGZpbmQgcm9sZS5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJJbXBsaWNpdFJvbGVzIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBpbXBsaWNpdCByb2xlcyBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Ym9vbH0gcmV0VmFsIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiB0aGUgZWxlbWVudCBoYXMgdGhlIHNwZWNpZmllZCByb2xlLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGhhc0FueVJvbGUoZWxlLCBjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgbGV0IHJldFZhbCA9IGZhbHNlO1xuICAgICAgICBpZiAoZWxlICYmIGVsZS5oYXNBdHRyaWJ1dGUgJiYgZWxlLmhhc0F0dHJpYnV0ZShcInJvbGVcIikpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGlmIGltcGxpY2l0IHJvbGVzIGV4aXN0LlxuICAgICAgICAvL05vdGU6IGVsZW1lbnQgY2FuIGhhdmUgbXVsdGlwbGUgaW1wbGljaXQgcm9sZXNcbiAgICAgICAgaWYgKCFyZXRWYWwgJiYgY29uc2lkZXJJbXBsaWNpdFJvbGVzKSB7XG4gICAgICAgICAgICBsZXQgdGFnUHJvcGVydHkgPSBSUFRVdGlsLmdldEVsZW1lbnRBcmlhUHJvcGVydHkoZWxlKTtcbiAgICAgICAgICAgIC8vY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBpbXBsaWNpdCByb2xlcyBmb3IgdGhpcyBlbGVtZW50LlxuICAgICAgICAgICAgaWYgKHRhZ1Byb3BlcnR5ICYmIHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNEYXRhVGFibGUodGFibGVOb2RlKSB7XG4gICAgICAgIHJldHVybiAhKFJQVFV0aWwuaGFzUm9sZSh0YWJsZU5vZGUsIFwibm9uZVwiKSB8fCBSUFRVdGlsLmhhc1JvbGUodGFibGVOb2RlLCBcInByZXNlbnRhdGlvblwiKSk7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBBIGNvbXBsZXggZGF0YSB0YWJsZSBpcyBhIGRhdGEgdGFibGUgd2l0aCBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJpc3RpY3M6XG4gICAgICpcbiAgICAgKiBhIHRoZWFkIGVsZW1lbnQgdGhhdCBjb250YWlucyB0d28gb3IgbW9yZSB0ciBlbGVtZW50c1xuICAgICAqIGEgdGFibGUgd2l0aCBtb3JlIHRoYW4gb25lIHRoZWFkIGVsZW1lbnRcbiAgICAgKiBhIHRhYmxlIHdpdGggdHdvIG9yIG1vcmUgdHIgZWxlbWVudHMgdGhhdCBjb250YWluIG9ubHkgdGggZWxlbWVudHNcbiAgICAgKiBhIHRoIG9yIHRkIGVsZW1lbnQgd2l0aCBhIHJvd3NwYW4gb3IgY29sc3BhbiBhdHRyaWJ1dGVcbiAgICAgKiBhIHRyIGVsZW1lbnQgdGhhdCBjb250YWlucyBhdCBsZWFzdCBvbmUgdGQgZWxlbWVudCBhbmQgdHdvIG9yIG1vcmUgdGggZWxlbWVudHNcbiAgICAgKiBhIHRhYmxlIHdpdGggaGVhZGVycyBub3QgbG9jYXRlZCBpbiB0aGUgZmlyc3Qgcm93IG9yIGZpcnN0IGNvbHVtblxuICAgICAqIGEgdGQgZWxlbWVudCB3aXRoIGEgaGVhZGVycyBhdHRyaWJ1dGUgdmFsdWUgdGhhdCBjb250YWlucyBtb3JlIHRoYW4gdHdvIElEUkVGc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNDb21wbGV4RGF0YVRhYmxlKHRhYmxlKSB7XG5cbiAgICAgICAgaWYgKFwiUlBUVXRpbF9pc0NvbXBsZXhEYXRhVGFibGVcIiBpbiB0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuICEhdGFibGUuUlBUVXRpbF9pc0NvbXBsZXhEYXRhVGFibGU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaXNDb21wbGV4VGFibGUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGFibGUgJiYgUlBUVXRpbC5pc0RhdGFUYWJsZSh0YWJsZSkpIHtcblxuICAgICAgICAgICAgbGV0IHRoTm9kZXMgPSBudWxsLFxuICAgICAgICAgICAgICAgIHRkTm9kZXMgPSBudWxsO1xuICAgICAgICAgICAgbGV0IHRyTm9kZXMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRyXCIpO1xuICAgICAgICAgICAgbGV0IHRyTm9kZUNvdW50ID0gdHJOb2Rlcy5sZW5ndGg7XG4gICAgICAgICAgICBsZXQgdGROb2RlQ291bnQgPSAwLFxuICAgICAgICAgICAgICAgIHRoTm9kZUNvdW50ID0gMCxcbiAgICAgICAgICAgICAgICB0ck5vZGVzSGF2aW5nT25seVRoTm9kZXMgPSAwO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIWlzQ29tcGxleFRhYmxlICYmIGkgPCB0ck5vZGVDb3VudDsgKytpKSB7XG5cbiAgICAgICAgICAgICAgICB0aE5vZGVzID0gdHJOb2Rlc1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoXCIpO1xuICAgICAgICAgICAgICAgIHRkTm9kZXMgPSB0ck5vZGVzW2ldLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGRcIik7XG4gICAgICAgICAgICAgICAgdGhOb2RlQ291bnQgPSB0aE5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0ZE5vZGVDb3VudCA9IHRkTm9kZXMubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRkTm9kZUNvdW50ICE9PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYSB0ciBlbGVtZW50IHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIHRkIGVsZW1lbnQgYW5kIHR3byBvciBtb3JlIHRoIGVsZW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICBpc0NvbXBsZXhUYWJsZSA9IHRoTm9kZUNvdW50ID4gMTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBhIHRoIGVsZW1lbnQgd2l0aCBhIHJvd3NwYW4gb3IgY29sc3BhbiBhdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7ICFpc0NvbXBsZXhUYWJsZSAmJiBqIDwgdGhOb2RlQ291bnQ7ICsraikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21wbGV4VGFibGUgPSAoKHRoTm9kZXNbal0uaGFzQXR0cmlidXRlKFwicm93c3BhblwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoTm9kZXNbal0uaGFzQXR0cmlidXRlKFwiY29sc3BhblwiKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmdldEFuY2VzdG9yKHRoTm9kZXNbal0sIFwidGFibGVcIikgPT09IHRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIGEgdGQgZWxlbWVudCB3aXRoIGEgcm93c3BhbiBvciBjb2xzcGFuIGF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAvLyBhIHRkIGVsZW1lbnQgd2l0aCBhIGhlYWRlcnMgYXR0cmlidXRlIHZhbHVlIHRoYXQgY29udGFpbnMgbW9yZSB0aGFuIHR3byBJRFJFRnNcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7ICFpc0NvbXBsZXhUYWJsZSAmJiBrIDwgdGROb2RlQ291bnQ7ICsraykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21wbGV4VGFibGUgPSAoKHRkTm9kZXNba10uaGFzQXR0cmlidXRlKFwicm93c3BhblwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkTm9kZXNba10uaGFzQXR0cmlidXRlKFwiY29sc3BhblwiKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZE5vZGVzW2tdLmhhc0F0dHJpYnV0ZShcImhlYWRlcnNcIikgJiYgUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKHRkTm9kZXNba10uZ2V0QXR0cmlidXRlKFwiaGVhZGVyc1wiKSkuc3BsaXQoXCIgXCIpLmxlbmd0aCA+IDIpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuZ2V0QW5jZXN0b3IodGROb2Rlc1trXSwgXCJ0YWJsZVwiKSA9PT0gdGFibGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIHR3byBvciBtb3JlIHRyIGVsZW1lbnRzIHRoYXQgY29udGFpbiBvbmx5IHRoIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aE5vZGVDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICsrdHJOb2Rlc0hhdmluZ09ubHlUaE5vZGVzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlzQ29tcGxleFRhYmxlID0gdHJOb2Rlc0hhdmluZ09ubHlUaE5vZGVzID09PSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpc0NvbXBsZXhUYWJsZSkge1xuXG4gICAgICAgICAgICAgICAgbGV0IHRoZWFkTm9kZXMgPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRoZWFkXCIpO1xuICAgICAgICAgICAgICAgIGxldCB0aGVhZE5vZGVzTGVuZ3RoID0gdGhlYWROb2Rlcy5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhlYWROb2Rlc0xlbmd0aCA+IDApIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyB0YWJsZSBoYXMgbW9yZSB0aGFuIG9uZSB0aGVhZCBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIGlzQ29tcGxleFRhYmxlID0gdGhlYWROb2Rlc0xlbmd0aCA+IDE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gYSB0aGVhZCBlbGVtZW50IHRoYXQgY29udGFpbnMgdHdvIG9yIG1vcmUgdHIgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0NvbXBsZXhUYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNDb21wbGV4VGFibGUgPSB0aGVhZE5vZGVzWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidHJcIikubGVuZ3RoID4gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNDb21wbGV4VGFibGUgJiYgdHJOb2RlQ291bnQgIT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBhIHRhYmxlIHdpdGggaGVhZGVycyBub3QgbG9jYXRlZCBpbiB0aGUgZmlyc3Qgcm93IG9yIGZpcnN0IGNvbHVtblxuICAgICAgICAgICAgICAgIGlzQ29tcGxleFRhYmxlID0gdGhOb2RlQ291bnQgPiAwICYmICFSUFRVdGlsLmlzVGFibGVIZWFkZXJJbkZpcnN0Um93T3JDb2x1bW4odGFibGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRhYmxlLlJQVFV0aWxfaXNDb21wbGV4RGF0YVRhYmxlID0gaXNDb21wbGV4VGFibGU7XG5cbiAgICAgICAgcmV0dXJuIGlzQ29tcGxleFRhYmxlO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIGEgdGFibGUncyBoZWFkZXIgaXMgaW4gdGhlIGZpcnN0IHJvdyBvciBjb2x1bW5cbiAgICBwdWJsaWMgc3RhdGljIGlzVGFibGVIZWFkZXJJbkZpcnN0Um93T3JDb2x1bW4ocnVsZUNvbnRleHQpIHtcblxuICAgICAgICBsZXQgcGFzc2VkID0gZmFsc2U7XG4gICAgICAgIGxldCByb3dzID0gcnVsZUNvbnRleHQucm93cztcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpcnN0IHJvdyBpcyBhbGwgVEgnc1xuICAgICAgICBpZiAocm93cyAhPSBudWxsICYmIHJvd3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGZpcnN0Um93ID0gcm93c1swXTtcbiAgICAgICAgICAgIHBhc3NlZCA9IGZpcnN0Um93LmNlbGxzLmxlbmd0aCA+IDAgJiYgUlBUVXRpbC5nZXRDaGlsZEJ5VGFnSGlkZGVuKGZpcnN0Um93LCBcInRkXCIsIGZhbHNlLCB0cnVlKS5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3Qgcm93IGlzbid0IGEgaGVhZGVyIHJvdywgdHJ5IHRoZSBmaXJzdCBjb2x1bW5cbiAgICAgICAgICAgIGlmICghcGFzc2VkKSB7XG4gICAgICAgICAgICAgICAgLy8gQXNzdW1lIHRoYXQgdGhlIGZpcnN0IGNvbHVtbiBoYXMgYWxsIFRIJ3MgdW5sZXNzIHdlIGZpbmQgYSBURCBpbiB0aGUgZmlyc3QgY29sdW1uLlxuICAgICAgICAgICAgICAgIHBhc3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IHBhc3NlZCAmJiBpIDwgcm93cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBubyBjZWxscyBpbiB0aGlzIHJvdywgdGhhdCdzIG9rYXkgdG9vLlxuICAgICAgICAgICAgICAgICAgICBwYXNzZWQgPSAhcm93c1tpXS5jZWxscyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93c1tpXS5jZWxscy5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3NbaV0uY2VsbHNbMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPSBcInRkXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwYXNzZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgLSBib3RoIGZpcnN0IHJvdyBhbmQgZmlyc3QgY29sdW1uIGFyZSBoZWFkZXJzLCBidXQgdGhleSBkaWQgbm90IHVzZVxuICAgICAgICAgICAgICAgIC8vIGEgdGggZm9yIHRoZSB1cHBlci1sZWZ0IGNlbGxcbiAgICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBwYXNzZWQgJiYgaSA8IGZpcnN0Um93LmNlbGxzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9IGZpcnN0Um93LmNlbGxzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT0gXCJ0ZFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgcGFzc2VkICYmIGkgPCByb3dzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIG5vIGNlbGxzIGluIHRoaXMgcm93LCB0aGF0J3Mgb2theSB0b28uXG4gICAgICAgICAgICAgICAgICAgIHBhc3NlZCA9ICFyb3dzW2ldLmNlbGxzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzW2ldLmNlbGxzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93c1tpXS5jZWxsc1swXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9IFwidGRcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhc3NlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzTm9kZUluR3JpZChub2RlKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUobm9kZSwgXCJncmlkXCIpICE9IG51bGw7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgaXNMYXlvdXRUYWJsZSh0YWJsZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuaGFzUm9sZSh0YWJsZU5vZGUsIFwicHJlc2VudGF0aW9uXCIpIHx8IFJQVFV0aWwuaGFzUm9sZSh0YWJsZU5vZGUsIFwibm9uZVwiKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBnZXRGaWxlRXh0KHVybCkge1xuICAgICAgICBsZXQgbSA9IHVybC5tYXRjaCgvXFwuKChbXjs/I1xcLl18XiQpKykoWzs/I118JCkvKTtcbiAgICAgICAgaWYgKG0gIT0gbnVsbCAmJiBtLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICByZXR1cm4gXCIuXCIgKyBtWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldEZpbGVBbmNob3IodXJsKSB7XG4gICAgICAgIGxldCBtID0gdXJsLm1hdGNoKC8jKChbXjs/XFwuXXxeJCkrKShbOz9dfCQpLyk7XG4gICAgICAgIGlmIChtICE9IG51bGwgJiYgbS5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgcmV0dXJuIG1bMV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tPYmpFbWJlZChub2RlLCBleHRUZXN0LCBtaW1lVGVzdCkge1xuICAgICAgICBsZXQgbm9kZU5hbWUgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgaWYgKG5vZGVOYW1lICE9IFwib2JqZWN0XCIgJiYgbm9kZU5hbWUgIT0gXCJlbWJlZFwiICYmXG4gICAgICAgICAgICBub2RlTmFtZSAhPSBcImFcIiAmJiBub2RlTmFtZSAhPSBcImFyZWFcIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICBsZXQgcmV0VmFsID0gZmFsc2U7XG4gICAgICAgIC8vIENoZWNrIG1pbWUgdHlwZVxuICAgICAgICBpZiAoIXJldFZhbCAmJiBub2RlLmhhc0F0dHJpYnV0ZShcInR5cGVcIikpIHtcbiAgICAgICAgICAgIGxldCBtaW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICByZXRWYWwgPSBtaW1lVGVzdChtaW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJldFZhbCAmJiBub2RlLmhhc0F0dHJpYnV0ZShcImNvZGV0eXBlXCIpKSB7XG4gICAgICAgICAgICBsZXQgbWltZSA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiY29kZXR5cGVcIik7XG4gICAgICAgICAgICByZXRWYWwgPSBtaW1lVGVzdChtaW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIHRoZSBmaWxlbmFtZVxuICAgICAgICBpZiAoIXJldFZhbCkge1xuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgIGlmIChub2RlTmFtZSA9PT0gXCJlbWJlZFwiKSB7XG4gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBub2RlLmdldEF0dHJpYnV0ZShcInNyY1wiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZU5hbWUgPT09IFwiYVwiIHx8IG5vZGVOYW1lID09PSBcImFyZWFcIikge1xuICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLmhhc0F0dHJpYnV0ZShcImRhdGFcIikpIHtcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWxlbmFtZSA9PT0gbnVsbCkgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgbGV0IGV4dCA9IFJQVFV0aWwuZ2V0RmlsZUV4dChmaWxlbmFtZSk7XG4gICAgICAgICAgICByZXRWYWwgPSBleHRUZXN0KGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgZmlsZW5hbWVzIGluIHRoZSBwYXJhbXNcbiAgICAgICAgaWYgKCFyZXRWYWwgJiYgbm9kZU5hbWUgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgQ2hlY2sgSGlkZGVuIE9wdGlvbiBpcyBzZXQgdGhlbiBjb21wbHkgd2l0aCB0aGF0IHNldHRpbmdcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSBSUFRVdGlsLmdldENoaWxkQnlUYWdIaWRkZW4obm9kZSwgXCJwYXJhbVwiLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgIXJldFZhbCAmJiBwYXJhbXMgIT0gbnVsbCAmJiBpIDwgcGFyYW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsID0gcGFyYW1zW2ldLmhhc0F0dHJpYnV0ZShcInZhbHVlXCIpICYmXG4gICAgICAgICAgICAgICAgICAgIGV4dFRlc3QoUlBUVXRpbC5nZXRGaWxlRXh0KHBhcmFtc1tpXS5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgaXNBdWRpb09iakVtYmVkTGluayhub2RlKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmNoZWNrT2JqRW1iZWQobm9kZSwgUlBUVXRpbC5pc0F1ZGlvRXh0LCBmdW5jdGlvbiAobWltZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1pbWUuc3RhcnRzV2l0aChcImF1ZGlvXCIpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGlzQXVkaW9FeHQoZXh0KSB7XG4gICAgICAgIGxldCBhdWRpb19leHRlbnNpb25zID0gW1wiLmFpZlwiLCBcIi5haWZjXCIsIFwiLmFpZmZcIiwgXCIuYWlyXCIsIFwiLmFzZlwiLCBcIi5hdVwiLCBcIi5jZGFcIixcbiAgICAgICAgICAgIFwiLmRzbVwiLCBcIi5kc3NcIiwgXCIuZHdkXCIsIFwiLmlmZlwiLCBcIi5rYXJcIiwgXCIubTFhXCIsIFwiLm1lZFwiLFxuICAgICAgICAgICAgXCIubXAyXCIsIFwiLm1wM1wiLCBcIi5tcGFcIiwgXCIucGNtXCIsIFwiLnJhXCIsIFwiLnJhbVwiLCBcIi5ybVwiLFxuICAgICAgICAgICAgXCIuc2FtXCIsIFwiLnNmXCIsIFwiLnNmMlwiLCBcIi5zbXBcIiwgXCIuc25kXCIsIFwiLnN2eFwiLCBcIi51bFwiLFxuICAgICAgICAgICAgXCIudm9jXCIsIFwiLndhdlwiLCBcIi53bWFcIiwgXCIud3ZlXCJcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwudmFsSW5BcnJheShleHQudG9Mb3dlckNhc2UoKSwgYXVkaW9fZXh0ZW5zaW9ucyk7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgaXNWaWRlb09iakVtYmVkTGluayhub2RlKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmNoZWNrT2JqRW1iZWQobm9kZSwgUlBUVXRpbC5pc1ZpZGVvRXh0LCBmdW5jdGlvbiAobWltZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1pbWUuc3RhcnRzV2l0aChcInZpZGVvXCIpIHx8XG4gICAgICAgICAgICAgICAgbWltZS5zdGFydHNXaXRoKFwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGlzVmlkZW9FeHQoZXh0KSB7XG4gICAgICAgIGxldCB2aWRlb19leHRlbnNpb25zID0gW1wiLmFzZlwiLCBcIi5hdmlcIiwgXCIuZGl2eFwiLCBcIi5kdlwiLCBcIi5tMXZcIiwgXCIubTJwXCIsIFwiLm0ydlwiLCBcIi5tb292XCIsXG4gICAgICAgICAgICBcIi5tb3ZcIiwgXCIubXA0XCIsIFwiLm1wZWdcIiwgXCIubXBnXCIsIFwiLm1wdlwiLCBcIi5vZ21cIiwgXCIub21mXCIsIFwiLnF0XCIsXG4gICAgICAgICAgICBcIi5ybVwiLCBcIi5ydlwiLCBcIi5zbWlcIiwgXCIuc21pbFwiLCBcIi5zd2ZcIiwgXCIudm9iXCIsIFwiLndtdlwiLCBcIi5ybXZiXCIsXG4gICAgICAgICAgICBcIi5tdmJcIlxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gUlBUVXRpbC52YWxJbkFycmF5KGV4dC50b0xvd2VyQ2FzZSgpLCB2aWRlb19leHRlbnNpb25zKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBpc0ltYWdlT2JqRW1iZWRMaW5rKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuY2hlY2tPYmpFbWJlZChub2RlLCBSUFRVdGlsLmlzSW1nRXh0LCBmdW5jdGlvbiAobWltZSkge1xuICAgICAgICAgICAgcmV0dXJuIG1pbWUuc3RhcnRzV2l0aChcImltYWdlXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBpc0ltZ0V4dChleHQpIHtcbiAgICAgICAgbGV0IGltYWdlX2V4dGVuc2lvbnMgPSBbXCIuYm1wXCIsIFwiLmdpZlwiLCBcIi5qcGdcIiwgXCIuanBlZ1wiLCBcIi5wY3hcIiwgXCIucG5nXCJdO1xuICAgICAgICByZXR1cm4gUlBUVXRpbC52YWxJbkFycmF5KGV4dC50b0xvd2VyQ2FzZSgpLCBpbWFnZV9leHRlbnNpb25zKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBpc0h0bWxFeHQoZXh0KSB7XG4gICAgICAgIGxldCBodG1sX2V4dGVuc2lvbnMgPSBbXCIuYXNwXCIsIFwiLmFzcHhcIiwgXCIuY2ZtXCIsIFwiLmNmbWxcIiwgXCIuY2dpXCIsIFwiLmh0bVwiLCBcIi5odG1sXCIsIFwiLnNodG1cIixcbiAgICAgICAgICAgIFwiLnNodG1sXCIsIFwiLnBocFwiLCBcIi5wbFwiLCBcIi5weVwiLCBcIi5zaHRtXCIsIFwiLnNodG1sXCIsIFwiLnhodG1sXCJcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwudmFsSW5BcnJheShleHQudG9Mb3dlckNhc2UoKSwgaHRtbF9leHRlbnNpb25zKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBpc1ByZXNlbnRhdGlvbmFsRWxlbWVudChub2RlKSB7XG4gICAgICAgIC8vIEVsZW1lbnRzIGV4dHJhY3RlZCBmcm9tIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL2RvY3MvV2ViL0hUTUwvRWxlbWVudCNJbmxpbmVfdGV4dF9zZW1hbnRpY3MsXG4gICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L2h0bWwtYXV0aG9yLyN0ZXh0LWxldmVsLXNlbWFudGljcyBhbmQgaHR0cHM6Ly93aWtpLndoYXR3Zy5vcmcvd2lraS9QcmVzZW50YXRpb25hbF9lbGVtZW50c19hbmRfYXR0cmlidXRlc1xuICAgICAgICBsZXQgcHJlc2VudGF0aW9uYWxFbGVtZW50cyA9IFtcImFiYnJcIiwgXCJiXCIsIFwiYmRpXCIsIFwiYmRvXCIsIFwiYnJcIiwgXCJjaXRlXCIsIFwiY29kZVwiLCBcImRhdGFcIiwgXCJkZm5cIixcbiAgICAgICAgICAgIFwiZW1cIiwgXCJpXCIsIFwia2JkXCIsIFwibWFya1wiLCBcInFcIiwgXCJycFwiLCBcInJ0XCIsIFwicnRjXCIsIFwicnVieVwiLCBcInNcIixcbiAgICAgICAgICAgIFwic2FtcFwiLCBcInNtYWxsXCIsIFwic3BhblwiLCBcInN0cm9uZ1wiLCBcInN1YlwiLCBcInN1cFwiLCBcInRpbWVcIiwgXCJ1XCIsXG4gICAgICAgICAgICBcInZhclwiLCBcIndiclwiLCBcImFcIiwgXCJwcm9ncmVzc1wiLCBcIm1ldGVyXCIsIFwiYmFzZWZvbnRcIiwgXCJiaWdcIiwgXCJjZW50ZXJcIixcbiAgICAgICAgICAgIFwic3RyaWtlXCIsIFwidHRcIiwgXCJmb250XCIsIFwiYmxpbmtcIiwgXCJoMVwiLCBcImgyXCIsIFwiaDNcIiwgXCJoNFwiLCBcImg1XCIsIFwiaDZcIixcbiAgICAgICAgICAgIFwiaHJcIiwgXCJibG9ja3F1b3RlXCIsIFwicFwiXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBSUFRVdGlsLnZhbEluQXJyYXkobm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCBwcmVzZW50YXRpb25hbEVsZW1lbnRzKTtcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBoYXNUcmlnZ2VyZWQoZG9jLCBpZCkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5nZXRDYWNoZShkb2MsIGlkLCBmYWxzZSk7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgdHJpZ2dlck9uY2UoZG9jLCBpZCwgcGFzc2VkKSB7XG4gICAgICAgIGlmIChwYXNzZWQpIHJldHVybiB0cnVlO1xuICAgICAgICBsZXQgdHJpZ2dlcmVkID0gUlBUVXRpbC5nZXRDYWNoZShkb2MsIGlkLCBmYWxzZSk7XG4gICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoZG9jLCBpZCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0cmlnZ2VyZWQ7XG4gICAgfVxuXG4gICAgLyogZGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBleGlzdHMgaW4gdGhlIGdpdmVuIGFycmF5ICovXG4gICAgcHVibGljIHN0YXRpYyB2YWxJbkFycmF5KHZhbHVlLCBhcnIpIHtcbiAgICAgICAgZm9yIChsZXQgaWR4IGluIGFycikge1xuICAgICAgICAgICAgaWYgKGFycltpZHhdID09PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybiB0aGUgYW5jZXN0b3Igb2YgdGhlIGdpdmVuIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gdGFnTmFtZXMgc3RyaW5nLCBhcnJheSwgb3IgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSB0YWdzIHRvIHNlYXJjaCBmb3JcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEFuY2VzdG9yKGVsZW1lbnQsIHRhZ05hbWVzKSB7XG4gICAgICAgIGxldCB3YWxrTm9kZSA9IGVsZW1lbnQ7XG4gICAgICAgIHdoaWxlICh3YWxrTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHRoaXNUYWcgPSB3YWxrTm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAodGFnTmFtZXMpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNUYWcgPT09IHRhZ05hbWVzLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0YWdOYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpZHggaW4gdGFnTmFtZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcy5qYXZhLmxhbmcuU3lzdGVtLmVyci5wcmludGxuKHRoaXNUYWcgKyBcIjpcIiArIHRhZ05hbWVzW2lkeF0gKyBcIjpcIiArICh0YWdOYW1lc1tpZHhdID09PSB0aGlzVGFnKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YWdOYW1lc1tpZHhdID09PSB0aGlzVGFnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdhbGtOb2RlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpc1RhZyBpbiB0YWdOYW1lcykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2Fsa05vZGUgPSBET01VdGlsLnBhcmVudE5vZGUod2Fsa05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3YWxrTm9kZTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gdHJ1ZSBpZiBlbGVtZW50MSBhbmQgZWxlbWVudDIgYXJlIHNpYmxpbmdzXG4gICAgcHVibGljIHN0YXRpYyBpc1NpYmxpbmcoZWxlbWVudDEsIGVsZW1lbnQyKSB7XG4gICAgICAgIGlmIChlbGVtZW50MSAmJiBlbGVtZW50Mikge1xuICAgICAgICAgICAgbGV0IG5vZGUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50MSkgJiYgRE9NVXRpbC5wYXJlbnROb2RlKGVsZW1lbnQxKS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgbm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50MSkuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUgPT09IGVsZW1lbnQyKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRoZSBhbmNlc3RvciBvZiB0aGUgZ2l2ZW4gZWxlbWVudCBhbmQgcm9sZS5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gc3RhcnQgdGhlIG5vZGUgd2FsayBvbiB0byBmaW5kIHBhcmVudCBub2RlXG4gICAgICogQHBhcm0ge3N0cmluZ30gcm9sZSAtIFRoZSByb2xlIHRvIHNlYXJjaCBmb3Igb24gYW4gZWxlbWVudCB1bmRlciB0aGUgcHJvdmlkZWQgZWxlbWVudFxuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckltcGxpY2l0Um9sZXMgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGltcGxpY2l0IHJvbGVzIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtub2RlfSB3YWxrTm9kZSAtIEEgcGFyZW50IG5vZGUgb2YgdGhlIGVsZW1lbnQgcGFzc2VkIGluLCB3aGljaCBoYXMgdGhlIHByb3ZpZGVkIHJvbGVcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRBbmNlc3RvcldpdGhSb2xlKGVsZW1lbnQsIHJvbGVOYW1lLCBjb25zaWRlckltcGxpY2l0Um9sZXM/KSB7XG4gICAgICAgIGxldCB3YWxrTm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICAgICAgd2hpbGUgKHdhbGtOb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoY29uc2lkZXJJbXBsaWNpdFJvbGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuaGFzUm9sZUluU2VtYW50aWNzKHdhbGtOb2RlLCByb2xlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5oYXNSb2xlKHdhbGtOb2RlLCByb2xlTmFtZSwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdhbGtOb2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKHdhbGtOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd2Fsa05vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBbmNlc3RvcldpdGhBdHRyaWJ1dGUoZWxlbWVudCwgYXR0ck5hbWUsIGF0dHJWYWx1ZSkge1xuICAgICAgICBsZXQgd2Fsa05vZGUgPSBET01VdGlsLnBhcmVudE5vZGUoZWxlbWVudCk7XG4gICAgICAgIHdoaWxlICh3YWxrTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHdhbGtOb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAoPEVsZW1lbnQ+d2Fsa05vZGUpLmdldEF0dHJpYnV0ZShhdHRyTmFtZSkgPT09IGF0dHJWYWx1ZSkgXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdhbGtOb2RlO1xuICAgICAgICAgICAgd2Fsa05vZGUgPSBET01VdGlsLnBhcmVudE5vZGUod2Fsa05vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgYSBub2RlIHdoaWNoIG1hdGNoZXMgdGhlIHJvbGUgYW5kIGlzIGEgc2libGluZyBvZiB0aGVcbiAgICAgKiBwcm92aWRlZCBlbGVtZW50LlxuICAgICAqXG4gICAgICogVGhpcyBmdW5jdGlvbiBieSBkZWZhdWx0IHdpbGwgbm90IGNvbnNpZGVyIENoZWNrIEhpZGRlbiBTZXR0aW5nIGF0IGFsbC5cbiAgICAgKlxuICAgICAqIE5vdGU6IFRoaXMgaXMgYSB3cmFwcGVyIGZ1bmN0aW9uIHRvOiBSUFRVdGlsLmdldFNpYmxpbmdXaXRoUm9sZUhpZGRlblxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCB0byBzdGFydCB0aGUgbm9kZSB3YWxrIG9uIHRvIGZpbmQgc2libGluZyBub2RlXG4gICAgICogQHBhcm0ge3N0cmluZ30gcm9sZSAtIFRoZSByb2xlIHRvIHNlYXJjaCBmb3Igb24gYW4gZWxlbWVudCB1bmRlciB0aGUgcHJvdmlkZWQgZWxlbWVudFxuICAgICAqXG4gICAgICogQHJldHVybiB7bm9kZX0gd2Fsa05vZGUgLSBBIHNpYmxpbmcgbm9kZSBvZiB0aGUgZWxlbWVudCBwYXNzZWQgaW4sIHdoaWNoIGhhcyB0aGUgcHJvdmlkZWQgcm9sZVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldFNpYmxpbmdXaXRoUm9sZShlbGVtZW50LCByb2xlKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmdldFNpYmxpbmdXaXRoUm9sZUhpZGRlbihlbGVtZW50LCByb2xlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyBhIG5vZGUgd2hpY2ggbWF0Y2hlcyB0aGUgcm9sZSBhbmQgaXMgYSBzaWJsaW5nIG9mIHRoZVxuICAgICAqIHByb3ZpZGVkIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGFsc28gY29uc2lkZXJzIGltcGxpY2l0IHJvbGVzIGZvciB0aGUgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBjb25zaWRlciBlbGVtZW50cyB0aGF0IGFyZSBoaWRkZW4gYmFzZWQgb24gdGhlIGlmIHRoZSBDaGVja1xuICAgICAqIEhpZGRlbiBDb250ZW50IHNldHRpbmdzIHNob3VsZCBiZSBjb25zaWRlcmVkIG9yIG5vdC5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgdG8gc3RhcnQgdGhlIG5vZGUgd2FsayBvbiB0byBmaW5kIHNpYmxpbmcgbm9kZVxuICAgICAqIEBwYXJtIHtzdHJpbmd9IHJvbGUgLSBUaGUgcm9sZSB0byBzZWFyY2ggZm9yIG9uIGFuIGVsZW1lbnQgdW5kZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnRcbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJIaWRkZW5TZXR0aW5nIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBoaWRkZW4gc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJJbXBsaWNpdCAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgSW1wbGljaXQgcm9sZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtub2RlfSB3YWxrTm9kZSAtIEEgc2libGluZyBub2RlIG9mIHRoZSBlbGVtZW50IHBhc3NlZCBpbiwgd2hpY2ggaGFzIHRoZSBwcm92aWRlZCByb2xlXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U2libGluZ1dpdGhSb2xlSGlkZGVuKGVsZW1lbnQsIHJvbGUsIGNvbnNpZGVySGlkZGVuU2V0dGluZywgY29uc2lkZXJJbXBsaWNpdFJvbGU/KSB7XG5cbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGFyYXRpb25cbiAgICAgICAgbGV0IHdhbGtOb2RlID0gbnVsbDtcbiAgICAgICAgbGV0IGhhc1JvbGUgPSBmYWxzZTtcblxuICAgICAgICAvLyBPbmx5IHBlcmZvcm0gdGhlIGNoZWNrIGlmIGVsZW1lbnQgYW5kIHJvbGUgYXJlIGJvdGggcHJvdmlkZWRcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgcm9sZSkge1xuICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIG5leHQgc2libGluZyBlbGVtZW50XG4gICAgICAgICAgICB3YWxrTm9kZSA9IGVsZW1lbnQubmV4dFNpYmxpbmc7XG5cbiAgICAgICAgICAgIC8vIEtlZXAgbG9vcGluZyBvdmVyIHRoZSBuZXh0IHNpYmxpbmdzIHRvIGZpbmQgZWxlbWVudCB3aGljaCBtYXRjaGVzXG4gICAgICAgICAgICAvLyB0aGUgcHJvdmlkZWQgcm9sZS5cbiAgICAgICAgICAgIHdoaWxlICh3YWxrTm9kZSAhPT0gbnVsbCAmJiAhaGFzUm9sZSkge1xuXG4gICAgICAgICAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgICAgIC8vICAxLiBJZiBjb25zaWRlckhpZGRlblNldHRpbmcgb3B0aW9uIGlzIHNldCB0byB0cnVlIHRoZW4gd2UgcGVyZm9ybSB0aGUgY2hlY2sgdG8gY29uc2lkZXIgdGhlXG4gICAgICAgICAgICAgICAgLy8gICAgIENoZWNrIEhpZGRlbiBDb250ZW50IHRoYXQgaXMgcHJvdmlkZWQuXG4gICAgICAgICAgICAgICAgLy8gIDIuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAgICAgICAgIC8vICAgICBiZSBzY2FubmVkIHRoZW4gd2UgY2FuIGp1c3Qgc2NhbiBldmVyeXRoaW5nIGFzIG5vcm1hbC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3ZSBkbyBub3RcbiAgICAgICAgICAgICAgICAvLyAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAgICAgICAgIC8vICAgICAgIHNvIG9uIGFuZCBzbyBmb3J0aC5cbiAgICAgICAgICAgICAgICBpZiAoY29uc2lkZXJIaWRkZW5TZXR0aW5nICYmIFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih3YWxrTm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBvbiB0byB0aGUgbmV4dCBub2RlXG4gICAgICAgICAgICAgICAgICAgIHdhbGtOb2RlID0gd2Fsa05vZGUubmV4dFNpYmxpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGhhcyB0aGUgcm9sZSB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgZXhpc3RzXG4gICAgICAgICAgICAgICAgaWYgKGNvbnNpZGVySW1wbGljaXRSb2xlKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhc1JvbGUgPSBSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyh3YWxrTm9kZSwgcm9sZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaGFzUm9sZSA9IFJQVFV0aWwuaGFzUm9sZSh3YWxrTm9kZSwgcm9sZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIE1vdmUgb24gdG8gdGhlIG5leHQgbm9kZVxuICAgICAgICAgICAgICAgIHdhbGtOb2RlID0gd2Fsa05vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHdlIHN0aWxsIGhhdmUgbm90IGZvdW5kIGEgbm9kZSB0aGF0IG1hdGNoZXMgdGhlIHJvbGUsIHN0YXJ0IGEgcmV2ZXJzZSBsb29rIHVwXG4gICAgICAgICAgICBpZiAoIXdhbGtOb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIHByZXZpb3VzIFNpYmxpbmcgb2YgdGhpcyBlbGVtZW50XG4gICAgICAgICAgICAgICAgd2Fsa05vZGUgPSBlbGVtZW50LnByZXZpb3VzU2libGluZztcblxuICAgICAgICAgICAgICAgIC8vIEtlZXAgbG9vcGluZyBvdmVyIGFsbCB0aGUgcHJldmlvdXMgc2libGluZ3MgdG8gc2VhcmNoIGZvciBhbiBlbGVtZW50IHdoaWNoXG4gICAgICAgICAgICAgICAgLy8gbWF0Y2hlcyB0aGUgcHJvdmlkZWQgcm9sZS5cbiAgICAgICAgICAgICAgICB3aGlsZSAod2Fsa05vZGUgIT09IG51bGwgJiYgIWhhc1JvbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICAvLyBGb2xsb3dpbmcgYXJlIHRoZSBzdGVwcyB0aGF0IGFyZSBleGVjdXRlZCBhdCB0aGlzIHN0YWdlIHRvIGRldGVybWluZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xhc3NpZmllZCBhcyBoaWRkZW5cbiAgICAgICAgICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgICAgICAgICAvLyAgMS4gSWYgY29uc2lkZXJIaWRkZW5TZXR0aW5nIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHdlIHBlcmZvcm0gdGhlIGNoZWNrIHRvIGNvbnNpZGVyIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgQ2hlY2sgSGlkZGVuIENvbnRlbnQgdGhhdCBpcyBwcm92aWRlZC5cbiAgICAgICAgICAgICAgICAgICAgLy8gIDIuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBhZGQgaXQgdG8gdGhlIHJvbGVUb0VsZW1zIGhhc2ggYXQgYWxsIG9yIGV2ZW4gZG8gYW55IGNoZWNraW5nIGZvciBpdCBhdCBhbGwuXG4gICAgICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoZSBpZiBjb25kaXRpb25zIHVzZXMgc2hvcnQtY2lyY3VpdGluZyBzbyBpZiB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG5vdCB0cnVlIGl0IHdpbGwgbm90IGNoZWNrIHRoZSBuZXh0IG9uZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgc28gb24gYW5kIHNvIGZvcnRoLlxuICAgICAgICAgICAgICAgICAgICBpZiAoY29uc2lkZXJIaWRkZW5TZXR0aW5nICYmIFJQVFV0aWwuc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbih3YWxrTm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vdmUgb24gdG8gdGhlIG5leHQgbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5wcmV2aW91c1NpYmxpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGhhcyB0aGUgcm9sZSB0aGF0IHdlIG5lZWQgdG8gY2hlY2sgZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgIGhhc1JvbGUgPSBSUFRVdGlsLmhhc1JvbGUod2Fsa05vZGUsIHJvbGUsIGNvbnNpZGVySW1wbGljaXRSb2xlKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBNb3ZlIG9uIHRvIHRoZSBuZXh0IG5vZGVcbiAgICAgICAgICAgICAgICAgICAgd2Fsa05vZGUgPSB3YWxrTm9kZS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdhbGtOb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNEZXNjZW5kYW50KHBhcmVudCwgY2hpbGQpIHtcbiAgICAgICAgbGV0IG5vZGUgPSBET01VdGlsLnBhcmVudE5vZGUoY2hpbGQpO1xuICAgICAgICB3aGlsZSAobm9kZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAobm9kZSA9PT0gcGFyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL2NoZWNrIGlmIHRoZSBmaXJzdCBmb3JtIGNvbnRyb2wgY2hpbGQgaXMgZGlzYWJsZWRcbiAgICBwdWJsaWMgc3RhdGljIGlzRGlzYWJsZWRCeUZpcnN0Q2hpbGRGb3JtRWxlbWVudChlbGVtZW50KSB7XG4gICAgICAgIGxldCBmb3JtRWxlbWVudHMgPSBbXCJpbnB1dFwiLCBcInRleHRhcmVhXCIsIFwic2VsZWN0XCIsIFwia2V5Z2VuXCIsIFwicHJvZ3Jlc3NcIiwgXCJtZXRlclwiLCBcIm91dHB1dFwiXTtcbiAgICAgICAgaWYgKGVsZW1lbnQuZmlyc3RDaGlsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihlbGVtZW50KTtcbiAgICAgICAgICAgIHdoaWxlIChudy5uZXh0Tm9kZSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1FbGVtZW50cy5pbmNsdWRlcyhudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChSUFRVdGlsLmlzTm9kZURpc2FibGVkKG53Lm5vZGUpKVxuICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0Rpc2FibGVkQnlSZWZlcnJpbmdFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGlkID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJpZFwiKTtcbiAgICAgICAgbGV0IGRvYyA9IGVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgICAgICAgbGV0IHJvb3QgPSBkb2MuYm9keTtcbiAgICAgICAgd2hpbGUgKERPTVV0aWwucGFyZW50Tm9kZShyb290KSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBwYXJlbnROb2RlXG4gICAgICAgICAgICByb290ID0gRE9NVXRpbC5wYXJlbnROb2RlKHJvb3QpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHJvb3QpO1xuICAgICAgICB3aGlsZSAobncubmV4dE5vZGUoKSkge1xuICAgICAgICAgICAgLy8gY2hlY2sgdGhlIGVsZW1lbnQgd2hvc2UgJ2FyaWEtZGVzY3JpYmVkYnknIGVxdWFscyB0byB0aGUgaWRcbiAgICAgICAgICAgIGlmIChudy5ub2RlICYmIG53Lm5vZGUubm9kZVR5cGUgPT09IDEgJiYgbncuZWxlbSgpKSB7XG4gICAgICAgICAgICAgICAgbGV0IEFyaWFEZXNjcmliZWRieUlEQXJyYXkgPSAobncuZWxlbSgpLmdldEF0dHJpYnV0ZShcImFyaWEtZGVzY3JpYmVkYnlcIikgfHwgXCJcIikuc3BsaXQoXCIgXCIpO1xuICAgICAgICAgICAgICAgIGlmIChBcmlhRGVzY3JpYmVkYnlJREFycmF5LmluY2x1ZGVzKGlkKSAmJiBSUFRVdGlsLmlzTm9kZURpc2FibGVkKG53Lm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgYSBkZXNjZW5kYW50IGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIHJvbGUsIHVuZGVyXG4gICAgICogdGhlIGVsZW1lbnQgdGhhdCB3YXMgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBOb3RlIGJ5IGRlZmF1bHQgdGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBjb25zaWRlciB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgU2V0dGluZy5cbiAgICAgKlxuICAgICAqIE5vdGU6IFRoaXMgaXMgYSB3cmFwcGVyIGZ1bmN0aW9uIHRvOiBSUFRVdGlsLmdldERlc2NlbmRhbnRXaXRoUm9sZUhpZGRlblxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBwYXJlbnQgZWxlbWVudCBmb3Igd2hpY2ggd2Ugd2lsbCBiZSBjaGVja2luZyBkZXNjZW5kYW50cyBmb3JcbiAgICAgKiBAcGFybSB7c3RyaW5nfSByb2xlTmFtZSAtIFRoZSByb2xlIHRvIGxvb2sgZm9yIG9uIHRoZSBkZXNjZW5kYW50cyBlbGVtZW50c1xuICAgICAqXG4gICAgICogQHJldHVybiB7bm9kZX0gLSBUaGUgZGVzY2VuZGFudCBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgcm9sZSBzcGVjaWZpZWQgKG9ubHkgb25lKVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldERlc2NlbmRhbnRXaXRoUm9sZShlbGVtZW50LCByb2xlTmFtZSkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5nZXREZXNjZW5kYW50V2l0aFJvbGVIaWRkZW4oZWxlbWVudCwgcm9sZU5hbWUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIGEgZGVzY2VuZGFudCBlbGVtZW50IHdpdGggdGhlIHNwZWNpZmllZCByb2xlLCB1bmRlclxuICAgICAqIHRoZSBlbGVtZW50IHRoYXQgd2FzIHByb3ZpZGVkLiBUaGlzIGZ1bmN0aW9uIGFzbG8gZmluZHMgZWxlbWVudHMgd2l0aCBpbXBsaWNpdCByb2xlcy5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBlbGVtZW50IC0gcGFyZW50IGVsZW1lbnQgZm9yIHdoaWNoIHdlIHdpbGwgYmUgY2hlY2tpbmcgZGVzY2VuZGFudHMgZm9yXG4gICAgICogQHBhcm0ge3N0cmluZ30gcm9sZU5hbWUgLSBUaGUgcm9sZSB0byBsb29rIGZvciBvbiB0aGUgZGVzY2VuZGFudHMgZWxlbWVudHNcbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJIaWRkZW5TZXR0aW5nIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBoaWRkZW4gc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKiBAcGFybSB7Ym9vbH0gY29uc2lkZXJJbXBsaWNpdFJvbGVzIC0gdHJ1ZSBvciBmYWxzZSBiYXNlZCBvbiBpZiBpbXBsaWNpdCByb2xlcyBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7bm9kZX0gLSBUaGUgZGVzY2VuZGFudCBlbGVtZW50IHRoYXQgbWF0Y2hlcyB0aGUgcm9sZSBzcGVjaWZpZWQgKG9ubHkgb25lKVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldERlc2NlbmRhbnRXaXRoUm9sZUhpZGRlbihlbGVtZW50LCByb2xlTmFtZSwgY29uc2lkZXJIaWRkZW5TZXR0aW5nLCBjb25zaWRlckltcGxpY2l0Um9sZXM/KSB7XG4gICAgICAgIC8vIFZhcmlhYmxlIERlY2xlcmF0aW9uXG4gICAgICAgIGxldCBkZXNjZW5kYW50ID0gbnVsbDtcbiAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIoZWxlbWVudCk7XG5cbiAgICAgICAgLy8gTG9vcCBvdmVyIGFsbCB0aGUgY2hpbGRyZW5zIG9mIHRoZSBlbGVtZW50IHByb3ZpZGVkIGFuZCBjaGVjayBpZiB0aGUgcm9sZW5hbWUgcHJvdmlkZWQgZXhpc3RzXG4gICAgICAgIHdoaWxlIChudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gZWxlbWVudCAmJiBudy5ub2RlICE9IGVsZW1lbnQubmV4dFNpYmxpbmcpIHtcblxuICAgICAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAvLyAgMS4gSWYgY29uc2lkZXJIaWRkZW5TZXR0aW5nIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHdlIHBlcmZvcm0gdGhlIGNoZWNrIHRvIGNvbnNpZGVyIHRoZVxuICAgICAgICAgICAgLy8gICAgIENoZWNrIEhpZGRlbiBDb250ZW50IHRoYXQgaXMgcHJvdmlkZWQuXG4gICAgICAgICAgICAvLyAgMi4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAvLyAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIE5vdGU6IFRoZSBpZiBjb25kaXRpb25zIHVzZXMgc2hvcnQtY2lyY3VpdGluZyBzbyBpZiB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG5vdCB0cnVlIGl0IHdpbGwgbm90IGNoZWNrIHRoZSBuZXh0IG9uZSxcbiAgICAgICAgICAgIC8vICAgICAgIHNvIG9uIGFuZCBzbyBmb3J0aC5cbiAgICAgICAgICAgIGlmIChjb25zaWRlckhpZGRlblNldHRpbmcgJiYgUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKG53Lm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgbm9kZSBoYXMgdGhlIHJvbGUgc3BlY2lmaWVkLCBpZiBpdCBkb2VzIHRoZW4gc2V0IHRoaXMgYXMgdGhlIGRlc2NlbmRhbnQgYW5kIHN0b3AgY2hlY2tpbmcgdGhlIHJlc3Qgb2YgdGhlXG4gICAgICAgICAgICAvLyBub2Rlcy5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgbm9kZSBoYXMgdGhlIGltcGxpY2l0IHJvbGVzLCBpZiBpdCBkb2VzIHRoZW4gc2V0IHRoaXMgYXMgdGhlIGRlc2NlbmRhbnQgYW5kIHN0b3AgY2hlY2tpbmcgdGhlIHJlc3Qgb2YgdGhlXG4gICAgICAgICAgICAvLyBub2Rlcy5cbiAgICAgICAgICAgIGlmIChjb25zaWRlckltcGxpY2l0Um9sZXMgPyBSUFRVdGlsLmhhc1JvbGVJblNlbWFudGljcyhudy5ub2RlLCByb2xlTmFtZSkgOiBSUFRVdGlsLmhhc1JvbGUobncubm9kZSwgcm9sZU5hbWUsIGZhbHNlKSkge1xuICAgICAgICAgICAgICAgIGRlc2NlbmRhbnQgPSBudy5ub2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NlbmRhbnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgQWxsIGRlc2NlbmRhbnQgZWxlbWVudHMgd2l0aCB0aGUgc3BlY2lmaWVkIHJvbGUsIHVuZGVyXG4gICAgICogdGhlIGVsZW1lbnQgdGhhdCB3YXMgcHJvdmlkZWQuIFRoaXMgZnVuY3Rpb24gYXNsbyBmaW5kcyBlbGVtZW50cyB3aXRoIGltcGxpY2l0IHJvbGVzLlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBwYXJlbnQgZWxlbWVudCBmb3Igd2hpY2ggd2Ugd2lsbCBiZSBjaGVja2luZyBkZXNjZW5kYW50cyBmb3JcbiAgICAgKiBAcGFybSB7c3RyaW5nfSByb2xlTmFtZSAtIFRoZSByb2xlIHRvIGxvb2sgZm9yIG9uIHRoZSBkZXNjZW5kYW50cyBlbGVtZW50c1xuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckhpZGRlblNldHRpbmcgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGhpZGRlbiBzZXR0aW5nIHNob3VsZCBiZSBjb25zaWRlcmVkLlxuICAgICAqIEBwYXJtIHtib29sfSBjb25zaWRlckltcGxpY2l0Um9sZXMgLSB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGltcGxpY2l0IHJvbGVzIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtub2RlfSAtIFRoZSBkZXNjZW5kYW50IGVsZW1lbnQgdGhhdCBtYXRjaGVzIHRoZSByb2xlIHNwZWNpZmllZCAob25seSBvbmUpXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWxsRGVzY2VuZGFudHNXaXRoUm9sZUhpZGRlbihlbGVtZW50LCByb2xlTmFtZSwgY29uc2lkZXJIaWRkZW5TZXR0aW5nLCBjb25zaWRlckltcGxpY2l0Um9sZXMpIHtcbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGVyYXRpb25cbiAgICAgICAgbGV0IGRlc2NlbmRhbnRzID0gW107XG4gICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKGVsZW1lbnQpO1xuXG4gICAgICAgIC8vIExvb3Agb3ZlciBhbGwgdGhlIGNoaWxkcmVucyBvZiB0aGUgZWxlbWVudCBwcm92aWRlZCBhbmQgY2hlY2sgaWYgdGhlIHJvbGVuYW1lIHByb3ZpZGVkIGV4aXN0c1xuICAgICAgICB3aGlsZSAobncubmV4dE5vZGUoKSAmJiBudy5ub2RlICE9IGVsZW1lbnQgJiYgbncubm9kZSAhPSBlbGVtZW50Lm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICBpZiAobncuYkVuZFRhZykge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRm9sbG93aW5nIGFyZSB0aGUgc3RlcHMgdGhhdCBhcmUgZXhlY3V0ZWQgYXQgdGhpcyBzdGFnZSB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgc2hvdWxkIGJlIGNsYXNzaWZpZWQgYXMgaGlkZGVuXG4gICAgICAgICAgICAvLyBvciBub3QuXG4gICAgICAgICAgICAvLyAgMS4gSWYgY29uc2lkZXJIaWRkZW5TZXR0aW5nIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSB0aGVuIHdlIHBlcmZvcm0gdGhlIGNoZWNrIHRvIGNvbnNpZGVyIHRoZVxuICAgICAgICAgICAgLy8gICAgIENoZWNrIEhpZGRlbiBDb250ZW50IHRoYXQgaXMgcHJvdmlkZWQuXG4gICAgICAgICAgICAvLyAgMi4gT25seSBydW4gaXNOb2RlVmlzaWJsZSBjaGVjayBpZiBoaWRkZW4gY29udGVudCBzaG91bGQgTk9UIGJlIGNoZWNrZWQuIEluIHRoZSBjYXNlIHRoYXQgaGlkZGVuIGNvbnRlbnQgaXMgdG8sXG4gICAgICAgICAgICAvLyAgICAgYmUgc2Nhbm5lZCB0aGVuIHdlIGNhbiBqdXN0IHNjYW4gZXZlcnl0aGluZyBhcyBub3JtYWwuIEluIHRoZSBjYXNlIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBoaWRkZW4gd2UgZG8gbm90XG4gICAgICAgICAgICAvLyAgICAgYWRkIGl0IHRvIHRoZSByb2xlVG9FbGVtcyBoYXNoIGF0IGFsbCBvciBldmVuIGRvIGFueSBjaGVja2luZyBmb3IgaXQgYXQgYWxsLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIE5vdGU6IFRoZSBpZiBjb25kaXRpb25zIHVzZXMgc2hvcnQtY2lyY3VpdGluZyBzbyBpZiB0aGUgZmlyc3QgY29uZGl0aW9uIGlzIG5vdCB0cnVlIGl0IHdpbGwgbm90IGNoZWNrIHRoZSBuZXh0IG9uZSxcbiAgICAgICAgICAgIC8vICAgICAgIHNvIG9uIGFuZCBzbyBmb3J0aC5cbiAgICAgICAgICAgIGlmIChjb25zaWRlckhpZGRlblNldHRpbmcgJiYgUlBUVXRpbC5zaG91bGROb2RlQmVTa2lwcGVkSGlkZGVuKG53Lm5vZGUpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgbm9kZSBoYXMgdGhlIHJvbGUgc3BlY2lmaWVkLCBpZiBpdCBkb2VzIHRoZW4gc2V0IHRoaXMgYXMgdGhlIGRlc2NlbmRhbnQgYW5kIHN0b3AgY2hlY2tpbmcgdGhlIHJlc3Qgb2YgdGhlXG4gICAgICAgICAgICAvLyBub2Rlcy5cbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgbm9kZSBoYXMgdGhlIGltcGxpY2l0IHJvbGVzLCBpZiBpdCBkb2VzIHRoZW4gc2V0IHRoaXMgYXMgdGhlIGRlc2NlbmRhbnQgYW5kIHN0b3AgY2hlY2tpbmcgdGhlIHJlc3Qgb2YgdGhlXG4gICAgICAgICAgICAvLyBub2Rlcy5cbiAgICAgICAgICAgIGlmIChSUFRVdGlsLmhhc1JvbGUobncubm9kZSwgcm9sZU5hbWUsIGNvbnNpZGVySW1wbGljaXRSb2xlcykpIHtcbiAgICAgICAgICAgICAgICBkZXNjZW5kYW50cy5wdXNoKG53Lm5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlc2NlbmRhbnRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGdldHRpbmcgYW4gZWxlbWVudCByZWZlcmVuY2VkIGJ5IGFyaWEtb3ducyBhbmQgaGFzIHRoZVxuICAgICAqIHJvbGUgdGhhdCB3YXMgc3BlY2lmaWVkLlxuICAgICAqXG4gICAgICogTm90ZSBieSBkZWZhdWx0IHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgY29uc2lkZXIgdGhlIENoZWNrIEhpZGRlbiBDb250ZW50IFNldHRpbmcuXG4gICAgICpcbiAgICAgKiBOb3RlOiBUaGlzIGlzIGEgd3JhcHBlciBmdW5jdGlvbiB0bzogUlBUVXRpbC5nZXRBcmlhT3duc1dpdGhSb2xlSGlkZGVuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gY2hlY2sgZm9yIGFyaWEtb3duc1xuICAgICAqIEBwYXJtIHtzdHJpbmd9IHJvbGVOYW1lIC0gVGhlIHJvbGUgdG8gbG9vayBmb3Igb24gdGhlIGFyaWEtb3ducyBlbGVtZW50XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtub2RlfSAtIFRoZSBlbGVtZW50IHRoYXQgaXMgcmVmZXJlbmNlZCBieSBhcmlhLW93bnMgYW5kIGhhcyByb2xlIHNwZWNpZmllZC5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRBcmlhT3duc1dpdGhSb2xlKGVsZW1lbnQsIHJvbGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmdldEFyaWFPd25zV2l0aFJvbGVIaWRkZW4oZWxlbWVudCwgcm9sZU5hbWUsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIGFuIGVsZW1lbnQgcmVmZXJlbmNlZCBieSBhcmlhLW93bnMgYW5kIGhhcyB0aGVcbiAgICAgKiByb2xlIHRoYXQgd2FzIHNwZWNpZmllZC4gVGhpcyBmdW5jdGlvbiBhc2xvIGZpbmRzIGVsZW1lbnRzIHdpdGggaW1wbGljaXQgcm9sZXMuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gZWxlbWVudCAtIEVsZW1lbnQgdG8gY2hlY2sgZm9yIGFyaWEtb3duc1xuICAgICAqIEBwYXJtIHtzdHJpbmd9IHJvbGVOYW1lIC0gVGhlIHJvbGUgdG8gbG9vayBmb3Igb24gdGhlIGFyaWEtb3ducyBlbGVtZW50XG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySGlkZGVuU2V0dGluZyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaGlkZGVuIHNldHRpbmcgc2hvdWxkIGJlIGNvbnNpZGVyZWQuXG4gICAgICogQHBhcm0ge2Jvb2x9IGNvbnNpZGVySW1wbGljaXRSb2xlcyAtIHRydWUgb3IgZmFsc2UgYmFzZWQgb24gaWYgaW1wbGljaXQgcm9sZXMgc2V0dGluZyBzaG91bGQgYmUgY29uc2lkZXJlZC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge25vZGV9IC0gVGhlIGVsZW1lbnQgdGhhdCBpcyByZWZlcmVuY2VkIGJ5IGFyaWEtb3ducyBhbmQgaGFzIHJvbGUgc3BlY2lmaWVkLlxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEFyaWFPd25zV2l0aFJvbGVIaWRkZW4oZWxlbWVudCwgcm9sZU5hbWUsIGNvbnNpZGVySGlkZGVuU2V0dGluZywgY29uc2lkZXJJbXBsaWNpdFJvbGVzPykge1xuICAgICAgICAvLyBWYXJpYWJsZSBEZWNsZXJhdGlvblxuICAgICAgICBsZXQgcmVmZXJlbmNlZEVsZW1lbnQgPSBudWxsO1xuICAgICAgICBsZXQgcmVmZXJlbmNlZEVsZW1IYXNSb2xlID0gZmFsc2U7XG5cbiAgICAgICAgLy8gSW4gdGhlIGNhc2UgYXJpYS1vd25zIGlzIG5vdCBvbiB0aGUgZWxlbWVudCBqdXN0IGJyZWFrIG91dCBvZiB0aGlzIGZ1bmN0aW9uIHdpdGggbnVsbFxuICAgICAgICBpZiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShlbGVtZW50LCBcImFyaWEtb3duc1wiKSkge1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHJlZmVyZW5jZSBJRFxuICAgICAgICAgICAgbGV0IHJlZmVyZW5jZUlEID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJhcmlhLW93bnNcIik7XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUgZWxlbWVudCBmb3IgdGhlIHJlZmVyZW5jZSBJRFxuICAgICAgICAgICAgcmVmZXJlbmNlZEVsZW1lbnQgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChlbGVtZW50LCByZWZlcmVuY2VJRCk7XG5cbiAgICAgICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAgICAgLy8gb3Igbm90LlxuICAgICAgICAgICAgLy8gIDEuIElmIGNvbnNpZGVySGlkZGVuU2V0dGluZyBvcHRpb24gaXMgc2V0IHRvIHRydWUgdGhlbiB3ZSBwZXJmb3JtIHRoZSBjaGVjayB0byBjb25zaWRlciB0aGVcbiAgICAgICAgICAgIC8vICAgICBDaGVjayBIaWRkZW4gQ29udGVudCB0aGF0IGlzIHByb3ZpZGVkLlxuICAgICAgICAgICAgLy8gIDIuIE9ubHkgcnVuIGlzTm9kZVZpc2libGUgY2hlY2sgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIE5PVCBiZSBjaGVja2VkLiBJbiB0aGUgY2FzZSB0aGF0IGhpZGRlbiBjb250ZW50IGlzIHRvLFxuICAgICAgICAgICAgLy8gICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlIGRvIG5vdFxuICAgICAgICAgICAgLy8gICAgIGFkZCBpdCB0byB0aGUgcm9sZVRvRWxlbXMgaGFzaCBhdCBhbGwgb3IgZXZlbiBkbyBhbnkgY2hlY2tpbmcgZm9yIGl0IGF0IGFsbC5cbiAgICAgICAgICAgIGlmIChjb25zaWRlckhpZGRlblNldHRpbmcgJiYgcmVmZXJlbmNlZEVsZW1lbnQgIT0gbnVsbCAmJiBSUFRVdGlsLnNob3VsZE5vZGVCZVNraXBwZWRIaWRkZW4ocmVmZXJlbmNlZEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlZEVsZW1IYXNSb2xlID0gbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlZEVsZW1IYXNSb2xlID0gUlBUVXRpbC5oYXNSb2xlKHJlZmVyZW5jZWRFbGVtZW50LCByb2xlTmFtZSwgY29uc2lkZXJJbXBsaWNpdFJvbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlZEVsZW1IYXNSb2xlID8gcmVmZXJlbmNlZEVsZW1lbnQgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBnZXQgZWxlbWVudCBjb250YWluaW5nIGxhYmVsIGZvciB0aGUgZ2l2ZW4gZWxlbWVudFxuICAgICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQgYmVjYXVzZSB0aGUgZnVuY3Rpb24gbmFtZSBpcyBtaXNsZWFkaW5nLiBVc2UgZ2V0TGFiZWxGb3JFbGVtZW50KGVsZW1lbnQpIGluc3RlYWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldElucHV0TGFiZWwoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnQoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZ2V0dGluZyB0aGUgZWxlbWVudCBjb250YWluaW5nIHRoZSBsYWJlbCBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuXG4gICAgICpcbiAgICAgKiBOb3RlOiBUaGlzIGlzIGEgd3JhcHBlciBmdW5jdGlvbiB0bzogUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBlbGVtZW50IC0gVGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRvIGdldCB0aGUgbGFiZWwgZWxlbWVudCBmb3IuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtlbGVtZW50fSBlbGVtZW50IC0gcmV0dXJuIHRoZSBlbGVtZW50IGZvciB0aGUgbGFiZWwsIG90aGVyd2lzZSBudWxsXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TGFiZWxGb3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKGVsZW1lbnQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBnZXR0aW5nIHRoZSBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIGxhYmVsIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAgICAgKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbnVsbCBpZiB0aGUgY29udGFpbmluZyBsYWJsZSBlbGVtZW50IGlzIGhpZGRlbiwgd2hlbiB0aGUgaWdub3JlSGlkZGVuIG9wdGlvblxuICAgICAqIGlzIHNldCB0byB0cnVlLlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IGVsZW1lbnQgLSBUaGUgZWxlbWVudCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBsYWJlbCBlbGVtZW50IGZvci5cbiAgICAgKiBAcGFybSB7Ym9vbGVhbn0gaWdub3JlSGlkZGVuIC0gdHJ1ZSBpZiBoaWRkZW4gZWxlbWVudHMgd2l0aCBsYWJlbCBzaG91bGQgYmUgaWdub3JlZCBmcm9tIHRoZSBsaXN0XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIGlmIHRoZSBoaWRkZW4gZWxlbWVudHMgc2hvdWxkIGJlIGFkZGVkXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtlbGVtZW50fSBlbGVtZW50IC0gcmV0dXJuIHRoZSBlbGVtZW50IGZvciB0aGUgbGFiZWwsIG90aGVyd2lzZSBudWxsXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKGVsZW1lbnQ6IEVsZW1lbnQsIGlnbm9yZUhpZGRlbikge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgZ2xvYmFsIFJQVFV0aWxfTEFCRUxTIGhhc2ggaXMgYXZhaWxhYmxlLCBhcyB0aGlzIHdpbGwgY29udGFpbiB0aGUgbGFiZWwgbm9kZXMgYmFzZWQgb25cbiAgICAgICAgLy8gZm9yIGF0dHJpYnV0ZS5cbiAgICAgICAgLy9pZiAoIVJQVFV0aWwuZ2V0Q2FjaGUoZWxlbWVudC5vd25lckRvY3VtZW50LFwiUlBUVXRpbF9MQUJFTFNcIiwgbnVsbCkpIHtcbiAgICAgICAgbGV0IHJvb3QgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgICAgIGlmICghUlBUVXRpbC5nZXRDYWNoZSgocm9vdC5ub2RlVHlwZSA9PT0gMTEpPyA8U2hhZG93Um9vdD5yb290IDogPERvY3VtZW50PnJvb3QsIFwiUlBUVXRpbF9MQUJFTFNcIiwgbnVsbCkpIHtcbiAgICAgICAgICAgIC8vIFZhcmlhYmxlIERlY2xlcmF0aW9uXG4gICAgICAgICAgICBsZXQgaWRUb0xhYmVsID0ge31cblxuICAgICAgICAgICAgLy8gR2V0IGFsbCB0aGUgbGFiZWwgZWxlbWVudHMgaW4gdGhlIGVudGlyZSBkb2NcbiAgICAgICAgICAgIGxldCBsYWJlbE5vZGVzID0gUlBUVXRpbC5nZXREb2NFbGVtZW50c0J5VGFnKGVsZW1lbnQsIFwibGFiZWxcIik7XG4gICAgICAgICAgICAvLyBMb29wIG92ZXIgYWxsIHRoZSBsYWJlbCBub2RlcywgaW4gdGhlIGNhc2UgdGhlIGxhYmVsIG5vZGUgaGFzIGEgZm9yIGF0dHJpYnV0ZSxcbiAgICAgICAgICAgIC8vIGV4dHJhY3QgdGhhdCBhdHRyaWJ1dGUgYW5kIGFkZCB0aGlzIG5vZGUgdG8gdGhlIGhhc2ggaWYgaXQgaXMgdmlzaWJsZS5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGFiZWxOb2Rlcy5sZW5ndGg7ICsraSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGxhYmVsTm9kZXNbaV0uaGFzQXR0cmlidXRlKFwiZm9yXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGlnbm9yZSBoaWRkZW4gaXMgc3BlY2lmaWVkIGFuZCB0aGUgbm9kZSBpcyBub3QgdmlzaWJsZSB3ZSBkbyBub3QgYWRkIGl0IHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBsYWJlbE5vZGVzIGhhc2guXG4gICAgICAgICAgICAgICAgICAgIGlmIChpZ25vcmVIaWRkZW4gJiYgIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShsYWJlbE5vZGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZFRvTGFiZWxbbGFiZWxOb2Rlc1tpXS5nZXRBdHRyaWJ1dGUoXCJmb3JcIildID0gbGFiZWxOb2Rlc1tpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgYnVpbHQgaGFzaCB0byB0aGUgb3duZXJEb2N1bWVudCAoZG9jdW1lbnQpLCB0byBiZSB1c2VkIGxhdGVyIHRvIGZhc3QgcmV0cml2YWxcbiAgICAgICAgICAgIC8vUlBUVXRpbC5zZXRDYWNoZShlbGVtZW50Lm93bmVyRG9jdW1lbnQsIFwiUlBUVXRpbF9MQUJFTFNcIiwgaWRUb0xhYmVsKTtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoKHJvb3Qubm9kZVR5cGUgPT09IDExKT8gPFNoYWRvd1Jvb3Q+cm9vdCA6IDxEb2N1bWVudD5yb290LCBcIlJQVFV0aWxfTEFCRUxTXCIsIGlkVG9MYWJlbCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaGFzIGFuIGlkIGF0dHJpYnV0ZSwgZ2V0IHRoZSBjb3Jvc3BvbmRpbmcgbGFiZWwgZWxlbWVudFxuICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJpZFwiKSkge1xuICAgICAgICAgICAgLy8gRmV0Y2ggdGhlIGlkIGF0dHJpYnV0ZVxuICAgICAgICAgICAgbGV0IGN0cmxJZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiaWRcIik7XG4gICAgICAgICAgICAvLyBSZXR1cm4gdGhlIGNvcm9zcG9uZGluZyBsYWJlbCBlbGVtZW50LlxuICAgICAgICAgICAgLy8gTm90ZTogaW4gdGhlIGNhc2UgdGhhdCB0aGUgdGhlIGlkIGlzIG5vdCBmb3VuZCBpbiB0aGUgaGFzaCB0aGF0IG1lYW5zLCBpdCBkb2VzIG5vdCBleGlzdHMgb3IgaXMgaGlkZGVuXG4gICAgICAgICAgICBpZiAoY3RybElkLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy9yZXR1cm4gUlBUVXRpbC5nZXRDYWNoZShlbGVtZW50LmdldFJvb3ROb2RlKCkub3duZXJEb2N1bWVudCxcIlJQVFV0aWxfTEFCRUxTXCIse30pW2N0cmxJZF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJQVFV0aWwuZ2V0Q2FjaGUoKHJvb3Qubm9kZVR5cGUgPT09IDExKT8gPFNoYWRvd1Jvb3Q+cm9vdCA6IDxEb2N1bWVudD5yb290LCBcIlJQVFV0aWxfTEFCRUxTXCIse30pW2N0cmxJZF07XG4gICAgICAgICAgICB9IFxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qIFJldHVybiBzcGVjaWZpZWQgZWxlbWVudCBhdHRyaWJ1dGUgaWYgcHJlc2VudCBlbHNlIHJldHVybiBudWxsICovXG4gICAgcHVibGljIHN0YXRpYyBnZXRFbGVtZW50QXR0cmlidXRlKGVsZW1lbnQsIGF0dHIpIHtcbiAgICAgICAgcmV0dXJuIChlbGVtZW50ICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHIpKSA/IGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHIpIDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZWxlbWVudCBoYXMgYW4gQVJJQSBsYWJlbFxuICAgIHB1YmxpYyBzdGF0aWMgaGFzQXJpYUxhYmVsKGVsZW1lbnQpIHtcblxuICAgICAgICAvLyBScHRfQXJpYV9WYWxpZElkUmVmIGRldGVybWluZXMgaWYgdGhlIGFyaWEtbGFiZWxsZWRieSBpZCBwb2ludHMgdG8gYSB2YWxpZCBlbGVtZW50XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGVsZW1lbnQsIFwiYXJpYS1sYWJlbFwiKSB8fCBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGVsZW1lbnQsIFwiYXJpYS1sYWJlbGxlZGJ5XCIpO1xuICAgIH1cblxuICAgIC8vIFJldHVybiB0cnVlIGlmIGVsZW1lbnQgaGFzIHZhbGlkIGltcGxpY2l0IGxhYmVsXG4gICAgcHVibGljIHN0YXRpYyBoYXNJbXBsaWNpdExhYmVsKGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHBhcmVudE5vZGUgPSBSUFRVdGlsLmdldEFuY2VzdG9yKGVsZW1lbnQsIFwibGFiZWxcIik7XG4gICAgICAgIC8vIFRlc3QgIGEpIGlmIHRoZSBwYXJlbnQgaXMgYSBsYWJlbCB3aGljaCBpcyB0aGUgaW1wbGljaXQgbGFiZWxcbiAgICAgICAgLy8gICAgICAgYikgaWYgdGhlIGZvcm0gZWxlbWVudCBpcyB0aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGxhYmVsXG4gICAgICAgIC8vICAgICAgIGMpIGlmIHRoZSBmb3JtIGVsZW1lbnQgcmVxdWlyZXMgYW4gaW1wbGljaXQgb3IgZXhwbGljaXQgbGFiZWwgOiBcImlucHV0XCIsICBcInRleHRhcmVhXCIsIFwic2VsZWN0XCIsIFwia2V5Z2VuXCIsIFwicHJvZ3Jlc3NcIiwgXCJtZXRlclwiLCBcIm91dHB1dFwiXG4gICAgICAgIC8vIGZvcm0gZWxlbWVudHMgdGhhdCBkbyBub3QgcmVxdWlyZSBpbXBsaWNpdCBvciBleHBsaWNpdCBsYWJlbCBlbGVtZW50IGFyZTpcbiAgICAgICAgLy8gXCJvcHRncm91cFwiLCBcIm9wdGlvblwiLCBcImRhdGFsaXN0XCIoYWRkZWQgbGF0ZXIpLiBUaGVzZSB3ZXJlIGhhbmRsZWQgZGlmZmVyZW50bHkgaW4gdGhlIG1haW4gcnVsZSwgbWlnaHQgbmVlZCB0byByZWZhY3RvciB0aGUgY29kZSBsYXRlclxuXG4gICAgICAgIGlmIChwYXJlbnROb2RlICYmIHBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImxhYmVsXCIgJiYgUlBUVXRpbC5pc0ZpcnN0Rm9ybUVsZW1lbnQocGFyZW50Tm9kZSwgZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnRDbG9uZSA9IHBhcmVudE5vZGUuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgLy8gZXhjbHVkZSBhbGwgZm9ybSBlbGVtZW50cyBmcm9tIHRoZSBsYWJlbCBzaW5jZSB0aGV5IG1pZ2h0IGFsc28gaGF2ZSBpbm5lciBjb250ZW50XG4gICAgICAgICAgICBwYXJlbnRDbG9uZSA9IFJQVFV0aWwucmVtb3ZlQWxsRm9ybUVsZW1lbnRzRnJvbUxhYmVsKHBhcmVudENsb25lKTtcbiAgICAgICAgICAgIHJldHVybiBSUFRVdGlsLmhhc0lubmVyQ29udGVudEhpZGRlbihwYXJlbnRDbG9uZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGlzRmlyc3RGb3JtRWxlbWVudChwYXJlbnROb2RlLCBlbGVtZW50KSB7XG4gICAgICAgIGxldCBmb3JtRWxlbWVudHNSZXF1aXJpbmdMYWJlbCA9IFtcImlucHV0XCIsIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIiwgXCJrZXlnZW5cIiwgXCJwcm9ncmVzc1wiLCBcIm1ldGVyXCIsIFwib3V0cHV0XCJdO1xuICAgICAgICBpZiAocGFyZW50Tm9kZS5maXJzdENoaWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBudyA9IG5ldyBOb2RlV2Fsa2VyKHBhcmVudE5vZGUpO1xuICAgICAgICAgICAgd2hpbGUgKG53Lm5leHROb2RlKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9ybUVsZW1lbnRzUmVxdWlyaW5nTGFiZWwuaW5kZXhPZihudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbncubm9kZSA9PT0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVtb3ZlQWxsRm9ybUVsZW1lbnRzRnJvbUxhYmVsKGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IGZvcm1FbGVtZW50cyA9IFtcImlucHV0XCIsIFwidGV4dGFyZWFcIiwgXCJzZWxlY3RcIiwgXCJidXR0b25cIiwgXCJkYXRhbGlzdFwiLCBcIm9wdGdyb3VwXCIsIFwib3B0aW9uXCIsIFwia2V5Z2VuXCIsIFwib3V0cHV0XCIsIFwicHJvZ3Jlc3NcIiwgXCJtZXRlclwiXTtcbiAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBlbGVtZW50LmNoaWxkTm9kZXM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1FbGVtZW50cy5pbmRleE9mKGNoaWxkTm9kZXNbaV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgPiAtMSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYW4gYXJyYXkgb2YgZWxlbWVudHMsIHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50cyBoYXZlIHVuaXF1ZSBBUklBIGxhYmVsc1xuICAgIHB1YmxpYyBzdGF0aWMgaGFzVW5pcXVlQXJpYUxhYmVsc0xvY2FsbHkoZWxlbWVudHMsIGlzR2xvYmFsKSB7XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IGRvYyA9IGVsZW1lbnRzWzBdLm93bmVyRG9jdW1lbnQ7XG4gICAgICAgIGxldCBoYXNEdXBsaWNhdGVMYWJlbHMgPSBmYWxzZTtcbiAgICAgICAgbGV0IHVuaXF1ZUFyaWFMYWJlbHMgPSBudWxsO1xuXG4gICAgICAgIGlmIChpc0dsb2JhbCkge1xuICAgICAgICAgICAgdW5pcXVlQXJpYUxhYmVscyA9IFJQVFV0aWwuZ2V0Q2FjaGUoZG9jLCBcIlJQVFV0aWxfSEFTX1VOSVFVRV9BUklBX0xBQkVMU1wiLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodW5pcXVlQXJpYUxhYmVscyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdW5pcXVlQXJpYUxhYmVscyA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7ICFoYXNEdXBsaWNhdGVMYWJlbHMgJiYgaSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5oYXNBdHRyaWJ1dGUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGFyaWFMYWJlbCA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBoYXNEdXBsaWNhdGVMYWJlbHMgPSBhcmlhTGFiZWwgaW4gdW5pcXVlQXJpYUxhYmVscztcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlQXJpYUxhYmVsc1thcmlhTGFiZWxdID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNbaV0uaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsSUQgPSBlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIik7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbE5vZGUgPSBGcmFnbWVudFV0aWwuZ2V0QnlJZChlbGVtZW50c1tpXSwgbGFiZWxJRCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9IGxhYmVsTm9kZSA/IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KGxhYmVsTm9kZSkgOiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZExhYmVsID0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGxhYmVsKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBoYXNEdXBsaWNhdGVMYWJlbHMgPSBub3JtYWxpemVkTGFiZWwgaW4gdW5pcXVlQXJpYUxhYmVscztcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlQXJpYUxhYmVsc1tub3JtYWxpemVkTGFiZWxdID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEhhcyBubyBsYWJlbCBhdCBhbGxcbiAgICAgICAgICAgICAgICAgICAgaGFzRHVwbGljYXRlTGFiZWxzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzR2xvYmFsKSB7XG4gICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKGRvYywgXCJSUFRVdGlsX0hBU19VTklRVUVfQVJJQV9MQUJFTFNcIiwgdW5pcXVlQXJpYUxhYmVscyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFoYXNEdXBsaWNhdGVMYWJlbHM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBcmlhTGFiZWwoZWxlKSB7XG4gICAgICAgIGlmIChlbGUuaGFzQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBpZiAoZWxlLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSkge1xuICAgICAgICAgICAgICAgIGxldCBsYWJlbElEcyA9IGVsZS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikudHJpbSgpLnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZExhYmVsID0gXCJcIjtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMCwgbGVuZ3RoID0gbGFiZWxJRHMubGVuZ3RoOyBqIDwgbGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsSUQgPSBsYWJlbElEc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsTm9kZSA9IEZyYWdtZW50VXRpbC5nZXRCeUlkKGVsZSwgbGFiZWxJRCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9IGxhYmVsTm9kZSA/IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KGxhYmVsTm9kZSkgOiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTGFiZWwgKz0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGxhYmVsKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZExhYmVsLnRyaW0oKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGVsZS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW5wdXRcIikge1xuICAgICAgICAgICAgLy9jb25zdCBsYWJlbCA9IFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50KGVsZSk7XG4gICAgICAgICAgICBjb25zdCBsYWJlbCA9IFJQVFV0aWwuZ2V0TGFiZWxGb3JFbGVtZW50SGlkZGVuKGVsZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAoIWxhYmVsKSByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgIHJldHVybiAoUlBUVXRpbC5nZXRBcmlhTGFiZWwobGFiZWwpIHx8IGxhYmVsLmlubmVyVGV4dCB8fCBcIlwiKS50cmltKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmaW5kQXJpYUxhYmVsRHVwZXMoZWxlbWVudHMpIHtcbiAgICAgICAgbGV0IGR1cGVNYXAgPSB7fVxuICAgICAgICBlbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICAgIGR1cGVNYXBbUlBUVXRpbC5nZXRBcmlhTGFiZWwoZWxlKV0gPSAoZHVwZU1hcFtSUFRVdGlsLmdldEFyaWFMYWJlbChlbGUpXSB8fCAwKSArIDE7XG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBkdXBlTWFwO1xuICAgIH1cblxuICAgIC8vIEdpdmVuIGFuIGFycmF5IG9mIGVsZW1lbnRzLCByZXR1cm4gdHJ1ZSBpZiB0aGUgZWxlbWVudHMgaGF2ZSB1bmlxdWUgQVJJQSBsYWJlbHMgZ2xvYmFsbHlcbiAgICBwdWJsaWMgc3RhdGljIGhhc1VuaXF1ZUFyaWFMYWJlbHMoZWxlbWVudHMpIHtcbiAgICAgICAgcmV0dXJuIFJQVFV0aWwuaGFzVW5pcXVlQXJpYUxhYmVsc0xvY2FsbHkoZWxlbWVudHMsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIEdpdmVuIGFuIGFycmF5IG9mIGVsZW1lbnRzLCByZXR1cm4gdHJ1ZSBpZiB0aGUgZWxlbWVudHMgaGF2ZSB1bmlxdWUgQVJJQSBsYWJlbHNcbiAgICBwdWJsaWMgc3RhdGljIGhhc0R1cGxpY2F0ZUFyaWFMYWJlbHNMb2NhbGx5KGVsZW1lbnRzLCBpc0dsb2JhbCkge1xuICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBkb2MgPSBlbGVtZW50c1swXS5vd25lckRvY3VtZW50O1xuXG4gICAgICAgIGxldCBoYXNEdXBsaWNhdGVMYWJlbHMgPSBmYWxzZTtcbiAgICAgICAgbGV0IHVuaXF1ZUFyaWFMYWJlbHM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0gbnVsbDtcbiAgICAgICAgbGV0IGR1cGxpY2F0ZUxhYmVsTmFtZUFycmF5ID0gbmV3IEFycmF5KCk7XG5cbiAgICAgICAgaWYgKGlzR2xvYmFsKSB7XG4gICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzID0gUlBUVXRpbC5nZXRDYWNoZShkb2MsIFwiUlBUVXRpbF9IQVNfVU5JUVVFX0FSSUFfTEFCRUxTXCIsIG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bmlxdWVBcmlhTGFiZWxzID09PSBudWxsKSB7XG4gICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzID0ge307XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7XG5cbiAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5oYXNBdHRyaWJ1dGUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c1tpXS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGFyaWFMYWJlbCA9IFJQVFV0aWwubm9ybWFsaXplU3BhY2luZyhlbGVtZW50c1tpXS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBoYXNEdXBsaWNhdGVMYWJlbHMgPSBhcmlhTGFiZWwgaW4gdW5pcXVlQXJpYUxhYmVscztcbiAgICAgICAgICAgICAgICAgICAgdW5pcXVlQXJpYUxhYmVsc1thcmlhTGFiZWxdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoYXJpYUxhYmVsIGluIGR1cGxpY2F0ZUxhYmVsTmFtZUFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlTGFiZWxOYW1lQXJyYXlbYXJpYUxhYmVsXSA9IG5ldyBBcnJheSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZUxhYmVsTmFtZUFycmF5W2FyaWFMYWJlbF0ucHVzaChlbGVtZW50c1tpXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudHNbaV0uaGFzQXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsSURzID0gZWxlbWVudHNbaV0uZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpLnRyaW0oKS5zcGxpdChcIiBcIik7XG4gICAgICAgICAgICAgICAgICAgIGxldCBub3JtYWxpemVkTGFiZWwgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMCwgbGVuZ3RoID0gbGFiZWxJRHMubGVuZ3RoOyBqIDwgbGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsYWJlbElEID0gbGFiZWxJRHNbal07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFiZWxOb2RlID0gRnJhZ21lbnRVdGlsLmdldEJ5SWQoZWxlbWVudHNbaV0sIGxhYmVsSUQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhYmVsID0gbGFiZWxOb2RlID8gUlBUVXRpbC5nZXRJbm5lclRleHQobGFiZWxOb2RlKSA6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTGFiZWwgKz0gUlBUVXRpbC5ub3JtYWxpemVTcGFjaW5nKGxhYmVsKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGhhc0R1cGxpY2F0ZUxhYmVscyA9IG5vcm1hbGl6ZWRMYWJlbCBpbiB1bmlxdWVBcmlhTGFiZWxzO1xuICAgICAgICAgICAgICAgICAgICB1bmlxdWVBcmlhTGFiZWxzW25vcm1hbGl6ZWRMYWJlbF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShub3JtYWxpemVkTGFiZWwgaW4gZHVwbGljYXRlTGFiZWxOYW1lQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVMYWJlbE5hbWVBcnJheVtub3JtYWxpemVkTGFiZWxdID0gbmV3IEFycmF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlTGFiZWxOYW1lQXJyYXlbbm9ybWFsaXplZExhYmVsXS5wdXNoKGVsZW1lbnRzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNHbG9iYWwpIHtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUoZG9jLCBcIlJQVFV0aWxfSEFTX1VOSVFVRV9BUklBX0xBQkVMU1wiLCB1bmlxdWVBcmlhTGFiZWxzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHVwbGljYXRlTGFiZWxOYW1lQXJyYXk7XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYW4gYXJyYXkgb2YgZWxlbWVudHMsIHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50cyBoYXZlIHVuaXF1ZSBBUklBIGxhYmVscyBnbG9iYWxseVxuICAgIHB1YmxpYyBzdGF0aWMgaGFzRHVwbGljYXRlQXJpYUxhYmVscyhlbGVtZW50cykge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5oYXNEdXBsaWNhdGVBcmlhTGFiZWxzTG9jYWxseShlbGVtZW50cywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gR2l2ZW4gYW4gYXJyYXkgb2YgZWxlbWVudHMsIHJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50cyBoYXZlIHVuaXF1ZSBhcmlhLWxhYmVsbGVkYnkgYXR0cmlidXRlc1xuICAgIHB1YmxpYyBzdGF0aWMgaGFzVW5pcXVlQXJpYUxhYmVsbGVkYnkoZWxlbWVudHMpIHtcblxuICAgICAgICBsZXQgaGFzRHVwbGljYXRlTGFiZWxzID0gZmFsc2U7XG4gICAgICAgIGxldCBsYWJlbFJlZnMgPSB7fTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgIWhhc0R1cGxpY2F0ZUxhYmVscyAmJiBpIDwgZWxlbWVudHMubGVuZ3RoOyArK2kpIHtcblxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLmhhc0F0dHJpYnV0ZSAmJiBlbGVtZW50c1tpXS5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWxSZWYgPSBSUFRVdGlsLm5vcm1hbGl6ZVNwYWNpbmcoZWxlbWVudHNbaV0uZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIpKTtcbiAgICAgICAgICAgICAgICBoYXNEdXBsaWNhdGVMYWJlbHMgPSBsYWJlbFJlZiBpbiBsYWJlbFJlZnM7XG4gICAgICAgICAgICAgICAgbGFiZWxSZWZzW2xhYmVsUmVmXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhc0R1cGxpY2F0ZUxhYmVscyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFoYXNEdXBsaWNhdGVMYWJlbHM7XG4gICAgfVxuXG4gICAgLyogRGV0ZXJtaW5lIHRoZSBub2RlIGRlcHRoIG9mIHRoZSBnaXZlbiBlbGVtZW50ICovXG4gICAgcHVibGljIHN0YXRpYyBub2RlRGVwdGgoZWxlbWVudCkge1xuICAgICAgICBsZXQgZGVwdGggPSAwO1xuICAgICAgICBsZXQgd2Fsa05vZGUgPSBlbGVtZW50O1xuICAgICAgICB3aGlsZSAod2Fsa05vZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHdhbGtOb2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKHdhbGtOb2RlKTtcbiAgICAgICAgICAgIGRlcHRoID0gZGVwdGggKyAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXB0aDtcbiAgICB9XG5cbiAgICAvKiBjb21wYXJlIG5vZGUgb3JkZXIgb2YgdGhlIDIgZ2l2ZW4gbm9kZXMgKi9cbiAgICAvKiByZXR1cm5zXG4gICAgICogICAwIGlmIHRoZSBub2RlcyBhcmUgZXF1YWxcbiAgICAgKiAgIDEgaWYgbm9kZSBiIGlzIGJlZm9yZSBub2RlIGFcbiAgICAgKiAgLTEgaWYgbm9kZSBhIGlzIGJlZm9yZSBub2RlIGJcbiAgICAgKiAgIDIgaWYgbm9kZSBhIGlzIG5lc3RlZCBpbiBub2RlIGJcbiAgICAgKiAgLTIgaWYgbm9kZSBiIGlzIG5lc3RlZCBpbiBub2RlIGFcbiAgICAgKiAgIG51bGwgaWYgZWl0aGVyIG5vZGUgaXMgbnVsbCBvciB0aGVpciBwYXJlbnQgbm9kZXMgYXJlIG5vdCBlcXVhbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZU5vZGVPcmRlcihub2RlQSwgbm9kZUIpIHtcbiAgICAgICAgaWYgKG5vZGVBID09PSBub2RlQikgcmV0dXJuIDA7XG5cbiAgICAgICAgbGV0IGFEZXB0aCA9IFJQVFV0aWwubm9kZURlcHRoKG5vZGVBKTtcbiAgICAgICAgbGV0IGJEZXB0aCA9IFJQVFV0aWwubm9kZURlcHRoKG5vZGVCKTtcbiAgICAgICAgaWYgKGJEZXB0aCA+IGFEZXB0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiRGVwdGggLSBhRGVwdGg7ICsraSlcbiAgICAgICAgICAgICAgICBub2RlQiA9IERPTVV0aWwucGFyZW50Tm9kZShub2RlQik7XG4gICAgICAgICAgICBpZiAobm9kZUEgPT09IG5vZGVCKSAvLyBOb2RlIEIgbmVzdGVkIGluIE5vZGUgQVxuICAgICAgICAgICAgICAgIHJldHVybiAtMjtcbiAgICAgICAgfSBlbHNlIGlmIChhRGVwdGggPiBiRGVwdGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYURlcHRoIC0gYkRlcHRoOyArK2kpXG4gICAgICAgICAgICAgICAgbm9kZUEgPSBET01VdGlsLnBhcmVudE5vZGUobm9kZUEpO1xuICAgICAgICAgICAgaWYgKG5vZGVBID09PSBub2RlQikgLy8gTm9kZSBBIG5lc3RlZCBpbiBOb2RlIEJcbiAgICAgICAgICAgICAgICByZXR1cm4gMjtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAobm9kZUEgIT0gbnVsbCAmJiBub2RlQiAhPSBudWxsICYmIERPTVV0aWwucGFyZW50Tm9kZShub2RlQSkgIT0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGVCKSkge1xuICAgICAgICAgICAgbm9kZUEgPSBET01VdGlsLnBhcmVudE5vZGUobm9kZUEpO1xuICAgICAgICAgICAgbm9kZUIgPSBET01VdGlsLnBhcmVudE5vZGUobm9kZUIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlQSA9PT0gbnVsbCB8fCBub2RlQiA9PT0gbnVsbCB8fCBET01VdGlsLnBhcmVudE5vZGUobm9kZUEpICE9IERPTVV0aWwucGFyZW50Tm9kZShub2RlQikpIHJldHVybiBudWxsO1xuICAgICAgICB3aGlsZSAobm9kZUIgIT0gbnVsbCAmJiBub2RlQiAhPSBub2RlQSlcbiAgICAgICAgICAgIG5vZGVCID0gbm9kZUIucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICBpZiAobm9kZUIgPT09IG51bGwpIC8vIG5vZGVCIGJlZm9yZSBub2RlQVxuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIGVsc2UgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBEZXRlcm1pbmUgaWYgdGhlIGdpdmVuIGF0dHJpYnV0ZSBvZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBub3QgZW1wdHlcbiAgICAgKiAgQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGF0dHJpYnV0ZU5vbkVtcHR5KGVsZW1lbnQsIGF0dHJTdHIpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJTdHIpICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJTdHIpLnRyaW0oKS5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGdpdmVuIGdsb2JhbCB2YXJpYWJsZVxuICAgICAqIHdpdGggaXRzIGluaXRpYWwgdmFsdWUgYXMgZ2l2ZW4gKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldENhY2hlKGNhY2hlU3BvdDogRWxlbWVudCB8IERvY3VtZW50IHwgRG9jdW1lbnRGcmFnbWVudCwga2V5TmFtZSwgaW5pdFZhbHVlKSB7XG4gICAgICAgIGxldCBjYWNoZU9iaiA9IChjYWNoZVNwb3Qubm9kZVR5cGUgPT09IDkgLyogTm9kZS5ET0NVTUVOVF9OT0RFICovIHx8IGNhY2hlU3BvdC5ub2RlVHlwZSA9PT0gMTEgLyogTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICovKSA/IGNhY2hlU3BvdCBhcyBDYWNoZURvY3VtZW50IDogY2FjaGVTcG90IGFzIENhY2hlRWxlbWVudDtcblxuICAgICAgICBpZiAoY2FjaGVPYmouYWNlQ2FjaGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY2FjaGVPYmouYWNlQ2FjaGUgPSB7fVxuICAgICAgICB9XG4gICAgICAgIGlmIChjYWNoZU9iai5hY2VDYWNoZVtrZXlOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjYWNoZU9iai5hY2VDYWNoZVtrZXlOYW1lXSA9IGluaXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGVPYmouYWNlQ2FjaGVba2V5TmFtZV1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNldENhY2hlKGNhY2hlU3BvdDogRG9jdW1lbnQgfCBFbGVtZW50IHwgU2hhZG93Um9vdCwgZ2xvYmFsTmFtZSwgdmFsdWUpIDogYW55IHtcbiAgICAgICAgbGV0IGNhY2hlT2JqID0gKGNhY2hlU3BvdC5ub2RlVHlwZSA9PT0gOSAvKiBOb2RlLkRPQ1VNRU5UX05PREUgKi8gfHwgY2FjaGVTcG90Lm5vZGVUeXBlID09PSAxMSAvKiBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUgKi8pID8gY2FjaGVTcG90IGFzIENhY2hlRG9jdW1lbnQgOiBjYWNoZVNwb3QgYXMgQ2FjaGVFbGVtZW50O1xuICAgICAgICBpZiAoY2FjaGVPYmouYWNlQ2FjaGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY2FjaGVPYmouYWNlQ2FjaGUgPSB7fVxuICAgICAgICB9XG4gICAgICAgIGNhY2hlT2JqLmFjZUNhY2hlW2dsb2JhbE5hbWVdID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBnaXZlbiBmcmFtZSwgbnVsbCBpZiBub3QgZm91bmQgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldEZyYW1lQnlOYW1lKHJ1bGVDb250ZXh0LGZyYW1lTmFtZSkge1xuICAgICAgICBsZXQgd2luZG93ID0gcnVsZUNvbnRleHQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcbiAgICAgICAgbGV0IGZyYW1lTGlzdCA9IFt3aW5kb3ddO1xuICAgICAgICBsZXQgaWR4ID0gMDtcbiAgICAgICAgd2hpbGUgKGlkeCA8IGZyYW1lTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGZyYW1lTGlzdFtpZHhdLm5hbWUgPT09IGZyYW1lTmFtZSkgcmV0dXJuIGZyYW1lTGlzdFtpZHhdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhbWVMaXN0W2lkeF0uZnJhbWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnN1cmUgaXQncyBhIHJlYWwgZnJhbWUgYW5kIGF2b2lkIHJlY3Vyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lTGlzdFtpZHhdLmZyYW1lc1tpXSAmJiAhZnJhbWVMaXN0LmluY2x1ZGVzKGZyYW1lTGlzdFtpZHhdLmZyYW1lc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZUxpc3QucHVzaChmcmFtZUxpc3RbaWR4XS5mcmFtZXNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICArK2lkeDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHROU1Jlc29sdmVyKHByZWZpeCl7XG4gICAgICAgIGxldCB1cmk7XG4gICAgICAgIHN3aXRjaCAocHJlZml4KSB7XG4gICAgICAgICAgICBjYXNlICdodG1sJzpcbiAgICAgICAgICAgICAgICB1cmkgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc7XG4gICAgICAgICAgICBjYXNlICd4Mic6XG4gICAgICAgICAgICAgICAgdXJpID0gJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMic7XG4gICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICB1cmkgPSAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc7XG4gICAgICAgICAgICBjYXNlICd4aHRtbCc6XG4gICAgICAgICAgICAgICAgdXJpID0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB1cmkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1cmk7XG4gICAgfVxuXG4gICAgLy9jaGVja2luZyBpZiBvbmx5IHRoZSBpbm5lciB0ZXh0IGlzIGVtcHR5IG9yIG5vdFxuICAgIHB1YmxpYyBzdGF0aWMgaXNJbm5lclRleHRPbmx5RW1wdHkoZWxlbWVudCkge1xuICAgICAgICAvLyBHZXQgdGhlIGlubmVyVGV4dCBvZiB0aGUgZWxlbWVudFxuICAgICAgICBsZXQgdGV4dCA9IGVsZW1lbnQuaW5uZXJUZXh0O1xuXG4gICAgICAgIGlmICh0ZXh0ID09PSB1bmRlZmluZWQgJiYgZWxlbWVudC50ZXh0Q29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBJbiBoZWFkbGVzcyBtb2RlLCAgaW5uZXJUZXh0IGlzIHNvbWV0aW1lcyAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgLy8gc28gd2UgdHJ5IHRleHRDb250ZW50IGFzIGEgd29ya2Fyb3VuZFxuICAgICAgICAgICAgdGV4dCA9IGVsZW1lbnQudGV4dENvbnRlbnRcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXRWYWwgPSAhKHRleHQgIT09IG51bGwgJiYgdGV4dC50cmltKCkubGVuZ3RoID4gMCk7XG4gICAgICAgIGlmIChlbGVtZW50Lm5vZGVUeXBlID09PSAxICYmIGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzbG90XCIpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2xvdEVsZW0gb2YgZWxlbWVudC5hc3NpZ25lZE5vZGVzKCkpIHtcbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgJiYgUlBUVXRpbC5pc0lubmVyVGV4dEVtcHR5KHNsb3RFbGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyaW0gdGhlIGlubmVyIHRleHQgYW5kIHZlcmlmeSB0aGF0IGl0IGlzIG5vdCBlbXB0eS5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiBSZXR1cm4gdGhlIGlubmVyIHRleHQgb2YgdGhlIGdpdmVuIGVsZW1lbnQgKi9cbiAgICBwdWJsaWMgc3RhdGljIGdldElubmVyVGV4dChlbGVtZW50KSB7XG4gICAgICAgIGxldCByZXRWYWwgPSBlbGVtZW50LmlubmVyVGV4dDtcbiAgICAgICAgaWYgKHJldFZhbCA9PT0gdW5kZWZpbmVkIHx8IHJldFZhbC50cmltKCkgPT09IFwiXCIpXG4gICAgICAgICAgICByZXRWYWwgPSBlbGVtZW50LnRleHRDb250ZW50O1xuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIGlmIGVsZW1lbnRzIGlubmVyIHRleHQgaXMgZW1wdHkgb3Igbm90LlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IG5vZGUgVGhlIG5vZGUgd2hpY2ggc2hvdWxkIGJlIGNoZWNrZWQgaXQgaGFzIGlubmVyIHRleHQgb3Igbm90LlxuICAgICAqIEByZXR1cm4ge2Jvb2x9IHRydWUgaWYgZWxlbWVudCBoYXMgZW1wdHkgaW5uZXIgdGV4dCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaXNJbm5lclRleHRFbXB0eShlbGVtZW50KSB7XG4gICAgICAgIC8vIEdldCB0aGUgaW5uZXJUZXh0IG9mIHRoZSBlbGVtZW50XG4gICAgICAgIGxldCB0ZXh0ID0gUlBUVXRpbC5nZXRJbm5lclRleHQoZWxlbWVudCk7XG5cbiAgICAgICAgLy8gVHJpbSB0aGUgaW5uZXIgdGV4dCBhbmQgdmVyaWZ5IHRoYXQgaXQgaXMgbm90IGVtcHR5LlxuICAgICAgICByZXR1cm4gISh0ZXh0ICE9IG51bGwgJiYgdGV4dC50cmltKCkubGVuZ3RoID4gMCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBoYXNJbm5lckNvbnRlbnQoZWxlbWVudCkge1xuICAgICAgICBsZXQgdGV4dCA9IFJQVFV0aWwuZ2V0SW5uZXJUZXh0KGVsZW1lbnQpO1xuICAgICAgICBsZXQgaGFzQ29udGVudCA9ICh0ZXh0ICE9IG51bGwgJiYgdGV4dC50cmltKCkubGVuZ3RoID4gMCk7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQuZmlyc3RDaGlsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihlbGVtZW50KTtcbiAgICAgICAgICAgIHdoaWxlICghaGFzQ29udGVudCAmJiBudy5uZXh0Tm9kZSgpKSB7XG4gICAgICAgICAgICAgICAgaGFzQ29udGVudCA9IChudy5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiaW1nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShudy5ub2RlLCBcImFsdFwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0NvbnRlbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5lIGlmIGFuIGVsZW1lbnQgaGFzIGlubmVyIGNvbnRlbnQuXG4gICAgICogVGhpcyBmdW5jdGlvbiBhbHNvIGNvbnNpZGVycyBjYXNlcyB3aGVyZSBpbm5lciB0ZXh0IGlzIGhpZGRlbiwgd2hpY2ggbm93IHdpbGxcbiAgICAgKiBiZSBjbGFzc2lmaWVkIGFzIGRvZXMgbm90IGhhdmUgaGlkZGVuIGNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gbm9kZSBUaGUgbm9kZSB3aGljaCBzaG91bGQgYmUgY2hlY2tlZCBpdCBoYXMgaW5uZXIgdGV4dCBvciBub3QuXG4gICAgICogQHJldHVybiB7Ym9vbH0gdHJ1ZSBpZiBlbGVtZW50IGhhcyBlbXB0eSBpbm5lciB0ZXh0LCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBoYXNJbm5lckNvbnRlbnRIaWRkZW4oZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gUlBUVXRpbC5oYXNJbm5lckNvbnRlbnRIaWRkZW5IeXBlckxpbmsoZWxlbWVudCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3ZnSGFzTmFtZShlbGVtZW50OiBTVkdFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KGVsZW1lbnQsIFwiYXJpYS1sYWJlbFwiKVxuICAgICAgICAgICAgfHwgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShlbGVtZW50LCBcImFyaWEtbGFiZWxsZWRieVwiKVxuICAgICAgICAgICAgfHwgISFlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCI6c2NvcGUgPiB0aXRsZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0lubmVyQ29udGVudEhpZGRlbkh5cGVyTGluayhlbGVtZW50LCBoeXBlcmxpbmtfZmxhZykge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gVmFyaWFibGUgRGVjbGVyYXRpb25cbiAgICAgICAgbGV0IGNoaWxkRWxlbWVudCA9IGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIGxldCBoYXNDb250ZW50ID0gZmFsc2U7XG5cbiAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB0aGUgY2hpbGRFbGVtZW50IGlzIG5vdCBudWxsIHRoZW4gd2UgbmVlZCB0byBjaGVjayBlYWNoIG9mIHRoZSBlbGVtZW50c1xuICAgICAgICAvLyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZWxlbWVudHMgYXJlIG5vdCBhbGwgaGlkZGVuLlxuICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgbm9kZXdhbHRlciBvZiB0aGUgZWxlbWVudCBub2RlLCBzbyB0aGF0IHdlIGNhbiBsb29wIG92ZXIgaXQgYW5kIHZlcmlmeVxuICAgICAgICAgICAgLy8gdGhhdCB0aGUgZWxlbWVudHMgdW5kZXIgdGhlIGVsZW1lbnQgYXJlIG5vdCBjb21wbGV0bHkgaGlkZGVuLlxuICAgICAgICAgICAgbGV0IG53ID0gbmV3IE5vZGVXYWxrZXIoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIC8vIExvb3Agb3ZlciBhbGwgdGhlIG5vZGVzIHVudGlsIHRoZXJlIGFyZSBubyBtb3JlIG5vZGVzIG9yIHdlIGhhdmUgZGV0ZXJtaW5lIHRoYXQgdGhlcmUgaXMgY29udGVudCB1bmRlclxuICAgICAgICAgICAgLy8gdGhpcyBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgIHdoaWxlICghaGFzQ29udGVudCAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgbmV4dCBub2RlXG4gICAgICAgICAgICAgICAgbGV0IG5vZGUgPSBudy5ub2RlO1xuXG4gICAgICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2UgYW4gaW1nIGVsZW1lbnQgaXMgcHJlc2VudCB3aXRoIGFsdCB0aGVuIHdlIGNhbiBtYXJrIHRoaXMgYXMgcGFzc1xuICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSBrZWVwIGNoZWNraW5nIGFsbCB0aGUgb3RoZXIgZWxlbWVudHMuIE1ha2Ugc3VyZSB0aGF0IHRoaXMgaW1hZ2UgZWxlbWVudCBpcyBub3QgaGlkZGVuLlxuICAgICAgICAgICAgICAgIGhhc0NvbnRlbnQgPSAoXG4gICAgICAgICAgICAgICAgICAgIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbWdcIlxuICAgICAgICAgICAgICAgICAgICAmJiAoUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShub2RlLCBcImFsdFwiKSB8fCBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KG5vZGUsIFwidGl0bGVcIikpXG4gICAgICAgICAgICAgICAgICAgICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShub2RlKVxuICAgICAgICAgICAgICAgICkgfHwgKFxuICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgJiYgUlBUVXRpbC5zdmdIYXNOYW1lKG5vZGUgYXMgYW55KVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAvLyBOb3cgd2UgY2hlY2sgaWYgdGhpcyBub2RlIGlzIG9mIHR5cGUgZWxlbWVudCwgdmlzaWJsZVxuICAgICAgICAgICAgICAgIGlmICghaGFzQ29udGVudCAmJiBub2RlLm5vZGVUeXBlID09PSAxICYmIFJQVFV0aWwuaXNOb2RlVmlzaWJsZShub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgaW5uZXJUZXh0IG9mIHRoZSBlbGVtZW50IGlzIGVtcHR5IG9yIG5vdFxuICAgICAgICAgICAgICAgICAgICBoYXNDb250ZW50ID0gIVJQVFV0aWwuaXNJbm5lclRleHRPbmx5RW1wdHkobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzQ29udGVudCAmJiBoeXBlcmxpbmtfZmxhZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ29udGVudCA9IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobm9kZSwgXCJhcmlhLWxhYmVsXCIpIHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobm9kZSwgXCJhcmlhLWxhYmVsbGVkYnlcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG9jID0gbm9kZS5vd25lckRvY3VtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB3aW4gPSBkb2MuZGVmYXVsdFZpZXc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY1N0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUobm9kZSBhcyBhbnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NvbnRlbnQgJiYgY1N0eWxlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coY1N0eWxlLmJhY2tncm91bmRJbWFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGNTdHlsZS5jb250ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ29udGVudCA9ICgoY1N0eWxlLmJhY2tncm91bmRJbWFnZSAmJiBjU3R5bGUuYmFja2dyb3VuZEltYWdlLmluZGV4T2YpIHx8IGNTdHlsZS5jb250ZW50KSAmJiBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KG5vZGUsIFwiYWx0XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgY2FzZXMgd2hlcmUgdGhlcmUgaXMgdGV4dCBub2RlIGFmdGVyIGFuIGVsZW1lbnQgdW5kZXIgdGhlIHBhcmVudFxuICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdlIGRldGVjdCBub2RldHlwZSBhcyB0ZXh0IG5vZGUgYW5kIHRoZSBwYXRlbnQgb2YgdGhlIHRleHQgbm9kZSBpc1xuICAgICAgICAgICAgICAgIC8vIHRoZSBzYW1lIGVsZW1lbnQgd2UgYXJlIGNoZWNraW5nIGhhcyBJbm5lciBjb250ZW50IGZvciB0aGVuIGdldCB0aGUgaW5uZXIgY29udGVudCBvZiB0aGlzXG4gICAgICAgICAgICAgICAgLy8gdGV4dCBub2RlLlxuICAgICAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzICYmIERPTVV0aWwucGFyZW50RWxlbWVudChub2RlKSA9PT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgaW5uZXJUZXh0IG9mIHRoZSBlbGVtZW50IGlzIGVtcHR5IG9yIG5vdFxuICAgICAgICAgICAgICAgICAgICBoYXNDb250ZW50ID0gIVJQVFV0aWwuaXNJbm5lclRleHRFbXB0eShub2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhlcmUgYXJlIG5vIGNoaWxkIGVsZW1lbnRzIHRoZW4gd2UgY2FuIHNpbXBseSBwZXJmb3JtIHRoZSBjaGVjayBmb3Igb25seSBpbm5lcnRleHRcbiAgICAgICAgLy8gdGhlIGltZyB3aXRoIGFsdCBjYXNlIHdpbGwgYmUgY292ZXJlZCBpbiB0aGUgYWJvdmUgaWYsIGFzIGltZyBpcyBjb25zaWRlcnMgYXMgYW4gZWxlbWVudC5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgaW5uZXJUZXh0IG9mIHRoZSBlbGVtZW50IGlzIGVtcHR5IG9yIG5vdFxuICAgICAgICAgICAgaGFzQ29udGVudCA9ICFSUFRVdGlsLmlzSW5uZXJUZXh0RW1wdHkoZWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaGFzQ29udGVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGhhc0lubmVyQ29udGVudE9yQWx0KGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHRleHQgPSBSUFRVdGlsLmdldElubmVyVGV4dChlbGVtZW50KTtcbiAgICAgICAgbGV0IGhhc0NvbnRlbnQgPSAodGV4dCAhPSBudWxsICYmIHRleHQudHJpbSgpLmxlbmd0aCA+IDApIHx8IFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkoZWxlbWVudCwgXCJhbHRcIik7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQuZmlyc3RDaGlsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihlbGVtZW50KTtcbiAgICAgICAgICAgIHdoaWxlICghaGFzQ29udGVudCAmJiBudy5uZXh0Tm9kZSgpICYmIG53Lm5vZGUgIT0gZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhc0NvbnRlbnQgPSAobncubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImltZ1wiICYmXG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkobncubm9kZSwgXCJhbHRcIikpO1xuICAgICAgICAgICAgICAgIGlmICghaGFzQ29udGVudFxuICAgICAgICAgICAgICAgICAgICAmJiAoUlBUVXRpbC5oYXNSb2xlKG53Lm5vZGUsIFwiYnV0dG9uXCIsIHRydWUpIHx8IFJQVFV0aWwuaGFzUm9sZShudy5ub2RlLCBcInRleHRib3hcIikpXG4gICAgICAgICAgICAgICAgICAgICYmIChSUFRVdGlsLmhhc0FyaWFMYWJlbChudy5ub2RlKSB8fCBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KG53Lm5vZGUsIFwidGl0bGVcIikgfHwgUlBUVXRpbC5nZXRMYWJlbEZvckVsZW1lbnRIaWRkZW4obncuZWxlbSgpLCB0cnVlKSkpXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzQ29udGVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNvbmNhdFVuaXF1ZUFycmF5SXRlbShpdGVtOiBzdHJpbmcsIGFycjogc3RyaW5nW10pIDogc3RyaW5nW10ge1xuICAgICAgICBhcnIuaW5kZXhPZihpdGVtKSA9PT0gLTEgJiYgaXRlbSAhPT0gbnVsbCA/IGFyci5wdXNoKGl0ZW0pIDogZmFsc2U7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KGl0ZW1MaXN0OiBzdHJpbmdbXSwgYXJyOiBzdHJpbmdbXSkgOiBzdHJpbmdbXSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpdGVtTGlzdCAhPT0gbnVsbCAmJiBpIDwgaXRlbUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyciA9IFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtKGl0ZW1MaXN0W2ldLCBhcnIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRFbGVtZW50QXJpYVByb3BlcnR5KHJ1bGVDb250ZXh0KSB7XG4gICAgICAgIGxldCB0YWdOYW1lID0gbnVsbDtcbiAgICAgICAgbGV0IG5hbWUgPSBudWxsO1xuXG4gICAgICAgIGlmIChydWxlQ29udGV4dC50YWdOYW1lKSB7XG4gICAgICAgICAgICB0YWdOYW1lID0gcnVsZUNvbnRleHQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKHJ1bGVDb250ZXh0Lm5vZGVOYW1lKSB7XG4gICAgICAgICAgICB0YWdOYW1lID0gcnVsZUNvbnRleHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSB0YWdQcm9wZXJ0eSBleGlzdHMgaW4gdGhlIGRvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudCBoYXNoLlxuICAgICAgICBsZXQgdGFnUHJvcGVydHkgOiBJRG9jdW1lbnRDb25mb3JtYW5jZVJlcXVpcmVtZW50ID0gQVJJQURlZmluaXRpb25zLmRvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudFt0YWdOYW1lXTtcbiAgICAgICAgLy8gVGhlIHRhZyBuZWVkcyB0byBjaGVjayBzb21lIHNwZWNpYWwgYXR0cmlidXRlc1xuICAgICAgICBpZiAodGFnUHJvcGVydHkgPT09IG51bGwgfHwgdGFnUHJvcGVydHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHNwZWNpYWxUYWdQcm9wZXJ0aWVzID0gQVJJQURlZmluaXRpb25zLmRvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudFNwZWNpYWxUYWdzW3RhZ05hbWVdO1xuICAgICAgICAgICAgc3dpdGNoICh0YWdOYW1lKSB7IC8vIHNwZWNpYWwgY2FzZXNcbiAgICAgICAgICAgICAgICBjYXNlIFwiYVwiOlxuICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImhyZWZcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wid2l0aC1ocmVmXCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIndpdGhvdXQtaHJlZlwiXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImFyZWFcIjpcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJocmVmXCIpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIndpdGgtaHJlZlwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ3aXRob3V0LWhyZWZcIl07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJmaWd1cmVcIjoge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmNzID0gUlBUVXRpbC5nZXRDaGlsZEJ5VGFnKHJ1bGVDb250ZXh0LCBcImZpZ2NhcHRpb25cIik7XG4gICAgICAgICAgICAgICAgICAgIGZjcyAhPT0gbnVsbCAmJiBmY3MubGVuZ3RoID4gMCA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJjaGlsZC1maWdjYXB0aW9uXCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIm5vLWNoaWxkLWZpZ2NhcHRpb25cIl07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFwiZm9vdGVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcImFydGljbGVcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvciA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcImNvbXBsZW1lbnRhcnlcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvciA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcIm1haW5cIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvciA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcIm5hdmlnYXRpb25cIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbmNlc3RvciA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2VzdG9yID0gUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcInJlZ2lvblwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgIT09IG51bGwgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiZGVzLXNlY3Rpb24tYXJ0aWNsZVwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJub3QtZGVzLXNlY3Rpb24tYXJ0aWNsZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgXCJmb3JtXCI6XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBBUklBTWFwcGVyLmNvbXB1dGVOYW1lKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIndpdGgtbmFtZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ3aXRob3V0LW5hbWVcIl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcImhlYWRlclwiOlxuICAgICAgICAgICAgICAgICAgICBsZXQgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiYXJ0aWNsZVwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwiY29tcGxlbWVudGFyeVwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwibWFpblwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwibmF2aWdhdGlvblwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2VzdG9yID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwicmVnaW9uXCIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBhbmNlc3RvciAhPT0gbnVsbCA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJkZXMtc2VjdGlvbi1hcnRpY2xlXCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIm5vdC1kZXMtc2VjdGlvbi1hcnRpY2xlXCJdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiaW1nXCI6XG4gICAgICAgICAgICAgICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhbHRcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0LmdldEF0dHJpYnV0ZShcImFsdFwiKS50cmltKCkgPT09IFwiXCIgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiaW1nLXdpdGgtZW1wdHktYWx0XCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImltZy13aXRoLWFsdC10ZXh0XCJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5oYXNBcmlhTGFiZWwocnVsZUNvbnRleHQpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImltZy13aXRoLWFsdC10ZXh0XCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImltZy13aXRob3V0LWFsdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiaW5wdXRcIjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwidHlwZVwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1t0eXBlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YWdQcm9wZXJ0eSA9PT0gbnVsbCB8fCB0YWdQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGVja2JveFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJhcmlhLXByZXNzZWRcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiY2hlY2tib3gtd2l0aC1hcmlhLXByZXNzZWRcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiY2hlY2tib3gtd2l0aG91dC1hcmlhLXByZXNzZWRcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVtYWlsXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxpc3RcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiZW1haWwtd2l0aC1saXN0XCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImVtYWlsLW5vLWxpc3RcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInNlYXJjaFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsaXN0XCIpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcInNlYXJjaC13aXRoLWxpc3RcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wic2VhcmNoLW5vLWxpc3RcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRlbFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsaXN0XCIpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcInRlbC13aXRoLWxpc3RcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1widGVsLW5vLWxpc3RcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwibGlzdFwiKSA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ0ZXh0LXdpdGgtbGlzdFwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ0ZXh0LW5vLWxpc3RcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInVybFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5hdHRyaWJ1dGVOb25FbXB0eShydWxlQ29udGV4dCwgXCJsaXN0XCIpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcInVybC13aXRoLWxpc3RcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1widXJsLW5vLWxpc3RcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdHlwZSBpcyB0aGUgc2FtZSBhcyB0eXBlPXRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuYXR0cmlidXRlTm9uRW1wdHkocnVsZUNvbnRleHQsIFwibGlzdFwiKSA/IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ0ZXh0LXdpdGgtbGlzdFwiXSA6IHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ0ZXh0LW5vLWxpc3RcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHR5cGUgaXMgdGhlIHNhbWUgYXMgdHlwZT10ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcImxpc3RcIikgPyB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1widGV4dC13aXRoLWxpc3RcIl0gOiB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1widGV4dC1uby1saXN0XCJdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJzZWN0aW9uXCI6XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBBUklBTWFwcGVyLmNvbXB1dGVOYW1lKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIndpdGgtbmFtZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gc3BlY2lhbFRhZ1Byb3BlcnRpZXNbXCJ3aXRob3V0LW5hbWVcIl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInNlbGVjdFwiOlxuICAgICAgICAgICAgICAgICAgICBzcGVjaWFsVGFnUHJvcGVydGllcyA9IEFSSUFEZWZpbml0aW9ucy5kb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRTcGVjaWFsVGFnc1tcInNlbGVjdFwiXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcIm11bHRpcGxlXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmF0dHJpYnV0ZU5vbkVtcHR5KHJ1bGVDb250ZXh0LCBcInNpemVcIikgJiYgcnVsZUNvbnRleHQuZ2V0QXR0cmlidXRlKFwic2l6ZVwiKSA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wibXVsdGlwbGUtYXR0ci1zaXplLWd0MVwiXTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcIm5vLW11bHRpcGxlLWF0dHItc2l6ZS1ndDFcIl07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJ0ZFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0aFwiOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0clwiOlxuICAgICAgICAgICAgICAgICAgICBpZiAoUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcInRhYmxlXCIsIHRydWUpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IHNwZWNpYWxUYWdQcm9wZXJ0aWVzW1wiZGVzLXRhYmxlXCJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcImdyaWRcIiwgdHJ1ZSkgfHwgUlBUVXRpbC5nZXRBbmNlc3RvcldpdGhSb2xlKHJ1bGVDb250ZXh0LCBcInRyZWVncmlkXCIsIHRydWUpID8gdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImRlcy1ncmlkXCJdIDogdGFnUHJvcGVydHkgPSBzcGVjaWFsVGFnUHJvcGVydGllc1tcImRlcy1vdGhlclwiXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IEFSSUFEZWZpbml0aW9ucy5kb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnRTcGVjaWFsVGFnc1tcImRlZmF1bHRcIl0gYXMgSURvY3VtZW50Q29uZm9ybWFuY2VSZXF1aXJlbWVudDtcbiAgICAgICAgICAgIH0gLy9zd2l0Y2hcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnUHJvcGVydHkgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFsbG93ZWRBcmlhUm9sZXMocnVsZUNvbnRleHQsIHByb3BlcnRpZXM6IElEb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnQpIHtcbiAgICAgICAgbGV0IGFsbG93ZWRSb2xlcyA6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGxldCB0YWdQcm9wZXJ0eSA6IElEb2N1bWVudENvbmZvcm1hbmNlUmVxdWlyZW1lbnQgPSBudWxsO1xuICAgICAgICBpZiAocHJvcGVydGllcyAhPT0gbnVsbCAmJiBwcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gcHJvcGVydGllcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRhZ1Byb3BlcnR5ID0gUlBUVXRpbC5nZXRFbGVtZW50QXJpYVByb3BlcnR5KHJ1bGVDb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YWdQcm9wZXJ0eSAhPT0gbnVsbCAmJiB0YWdQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodGFnUHJvcGVydHkuaW1wbGljaXRSb2xlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KHRhZ1Byb3BlcnR5LmltcGxpY2l0Um9sZSwgYWxsb3dlZFJvbGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhZ1Byb3BlcnR5LnZhbGlkUm9sZXMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QodGFnUHJvcGVydHkudmFsaWRSb2xlcywgYWxsb3dlZFJvbGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWxsb3dlZFJvbGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWxsb3dlZEFyaWFBdHRyaWJ1dGVzKHJ1bGVDb250ZXh0LCBwZXJtaXR0ZWRSb2xlcywgcHJvcGVydGllcykge1xuICAgICAgICBsZXQgdGFnTmFtZSA9IHJ1bGVDb250ZXh0LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgbGV0IGFsbG93ZWRBdHRyaWJ1dGVzID0gW107XG4gICAgICAgIC8qVGhlc2UgbmVlZHMgdG8gYmUgaGFuZGxlZCBmaXJzdCBzaW5jZSBpdHMgYXBwbGljYWJsZSB0byBhbGwgZWxlbWVudHMqL1xuICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIikgJiYgQVJJQURlZmluaXRpb25zLmVsZW1lbnRzQWxsb3dlZERpc2FibGVkLmluZGV4T2YodGFnTmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAvKkVsZW1lbnQgd2l0aCBhIGRpc2FibGVkIGF0dHJpYnV0ZSAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1L2Rpc2FibGVkLWVsZW1lbnRzLmh0bWxcbiAgICAgICAgICAgICAgICBVc2UgdGhlIGRpc2FibGVkIGF0dHJpYnV0ZSBvbiBhbnkgZWxlbWVudCB0aGF0IGlzIGFsbG93ZWQgdGhlIGRpc2FibGVkIGF0dHJpYnV0ZSBpbiBIVE1MNS4gYXJpYS1kaXNhYmxlZD1cInRydWVcIlxuICAgICAgICAgICAgICAgIE9ubHkgdXNlIHRoZSBhcmlhLWRpc2FibGVkIGF0dHJpYnV0ZSBmb3IgZWxlbWVudHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gaGF2ZSBhIGRpc2FibGVkIGF0dHJpYnV0ZSBpbiBIVE1MNSAqL1xuICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMgPSBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbShcImFyaWEtZGlzYWJsZWRcIiwgYWxsb3dlZEF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSAmJiBBUklBRGVmaW5pdGlvbnMuZWxlbWVudHNBbGxvd2VkUmVxdWlyZWQuaW5kZXhPZih0YWdOYW1lKSA+IC0xKSB7XG4gICAgICAgICAgICAvKkVsZW1lbnQgd2l0aCBhIHJlcXVpcmVkIGF0dHJpYnV0ZSAgLy8gaHR0cDovL3d3dy50aGUtYXJ0LW9mLXdlYi5jb20vaHRtbC9odG1sNS1mb3JtLXZhbGlkYXRpb24vXG4gICAgICAgICAgICAgICAgKiBhcmlhLXJlcXVpcmVkPVwidHJ1ZVwiIFVzZSB0aGUgYXJpYS1yZXF1aXJlZCBhdHRyaWJ1dGUgb24gYW55IGVsZW1lbnQgdGhhdCBpcyBhbGxvd2VkIHRoZSByZXF1aXJlZCBhdHRyaWJ1dGUgaW4gSFRNTDUuXG4gICAgICAgICAgICAgICAgKiBNQVkgYWxzbyBiZSB1c2VkIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgYW4gYXR0YWNoZWQgQVJJQSByb2xlIHdoaWNoIGFsbG93cyB0aGUgYXJpYS1yZXF1aXJlZCBhdHRyaWJ1dGUuKi9cbiAgICAgICAgICAgIGFsbG93ZWRBdHRyaWJ1dGVzID0gUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW0oXCJhcmlhLXJlcXVpcmVkXCIsIGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocnVsZUNvbnRleHQuaGFzQXR0cmlidXRlKFwicmVhZG9ubHlcIikgJiYgQVJJQURlZmluaXRpb25zLmVsZW1lbnRzQWxsb3dlZFJlYWRPbmx5LmluZGV4T2YodGFnTmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAvKkVsZW1lbnQgd2l0aCBhIHJlYWRvbmx5IGF0dHJpYnV0ZSogYXJpYS1yZWFkb25seT1cInRydWVcIiAqIFVzZSB0aGUgcmVhZG9ubHkgYXR0cmlidXRlIG9uIGFueSBlbGVtZW50IHRoYXQgaXMgYWxsb3dlZCB0aGUgcmVhZG9ubHkgYXR0cmlidXRlIGluIEhUTUw1LlxuICAgICAgICAgICAgICAgIE9ubHkgdXNlIHRoZSBhcmlhLXJlYWRvbmx5IGF0dHJpYnV0ZSBmb3IgZWxlbWVudHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gaGF2ZSBhIHJlYWRvbmx5IGF0dHJpYnV0ZSBpbiBIVE1MNSAqL1xuICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMgPSBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbShcImFyaWEtcmVhZG9ubHlcIiwgYWxsb3dlZEF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJoaWRkZW5cIikpIHtcbiAgICAgICAgICAgIC8qRWxlbWVudCB3aXRoIGEgaGlkZGVuIGF0dHJpYnV0ZSBVc2UgdGhlIGFyaWEtaGlkZGVuIGF0dHJpYnV0ZSBvbiBhbnkgSFRNTCBlbGVtZW50LlxuICAgICAgICAgICAgICAgIE5vdGU6IElmIGFuIGVsZW1lbnQgaGFzIGEgaGlkZGVuIGF0dHJpYnV0ZSwgYW4gYXJpYS1oaWRkZW4gYXR0cmlidXRlIGlzIG5vdCByZXF1aXJlZC4qL1xuICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMgPSBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbShcImFyaWEtaGlkZGVuXCIsIGFsbG93ZWRBdHRyaWJ1dGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0YWdQcm9wZXJ0eSA9IG51bGw7XG4gICAgICAgIGlmIChwcm9wZXJ0aWVzICE9IG51bGwgJiYgcHJvcGVydGllcyAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGFnUHJvcGVydHkgPSBwcm9wZXJ0aWVzO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0YWdQcm9wZXJ0eSA9IFJQVFV0aWwuZ2V0RWxlbWVudEFyaWFQcm9wZXJ0eShydWxlQ29udGV4dCk7XG5cbiAgICAgICAgbGV0IHNraXBJbXBsaWNpdFJvbGVDaGVjayA9IGZhbHNlO1xuICAgICAgICBpZiAodGFnTmFtZSA9PT0gXCJmb3JtXCIgfHwgdGFnTmFtZSA9PT0gXCJzZWN0aW9uXCIpIHtcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogZm9ybSBoYXMgYW4gaW1wbGljaXQgcm9sZSBvbmx5IGlmIGl0IGhhcyBhbiBhY2Nlc3NpYmxlIG5hbWVcbiAgICAgICAgICAgIHNraXBJbXBsaWNpdFJvbGVDaGVjayA9ICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIpICYmXG4gICAgICAgICAgICAgICAgIXJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiKSAmJlxuICAgICAgICAgICAgICAgICFydWxlQ29udGV4dC5oYXNBdHRyaWJ1dGUoXCJ0aXRsZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFnUHJvcGVydHkgIT09IG51bGwgJiYgdGFnUHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gYWRkIHRoZSBpbXBsaWNpdCByb2xlIGFsbG93ZWQgYXR0cmlidXRlcyB0byB0aGUgYWxsb3dlZCByb2xlIGxpc3QgaWYgdGhlcmUgaXMgbm8gc3BlY2lmaWVkIHJvbGVcbiAgICAgICAgICAgIGlmICh0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGUgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAocGVybWl0dGVkUm9sZXMgPT09IG51bGwgfHwgcGVybWl0dGVkUm9sZXMgPT09IHVuZGVmaW5lZCB8fCBwZXJtaXR0ZWRSb2xlcy5sZW5ndGggPT09IDApICYmXG4gICAgICAgICAgICAgICAgIXNraXBJbXBsaWNpdFJvbGVDaGVjaykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFnUHJvcGVydHkuaW1wbGljaXRSb2xlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByb2xlUHJvcGVydHkgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnNbdGFnUHJvcGVydHkuaW1wbGljaXRSb2xlW2ldXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvbGVQcm9wZXJ0eSAhPT0gbnVsbCAmJiByb2xlUHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BlcnRpZXMgPSByb2xlUHJvcGVydHkucHJvcHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QocHJvcGVydGllcywgYWxsb3dlZEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcyA9IFJQVFV0aWwuZ2V0Um9sZVJlcXVpcmVkUHJvcGVydGllcyh0YWdQcm9wZXJ0eS5pbXBsaWNpdFJvbGVbaV0sIHJ1bGVDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdChwcm9wZXJ0aWVzLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2Ugb2Ygc2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFnUHJvcGVydHkuaW1wbGljaXRSb2xlW2ldID09PSBcInNlcGFyYXRvclwiICYmIFJQVFV0aWwuaXNGb2N1c2FibGUocnVsZUNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLXZhbHVlbWF4XCIsIFwiYXJpYS12YWx1ZW1pblwiLCBcImFyaWEtdmFsdWV0ZXh0XCJdLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBZGRpbmcgdGhlIGdsb2JhbCBwcm9wZXJ0aWVzIHRvIHRoZSB2YWxpZCBhdHRyaWJ1dGUgbGlzdFxuICAgICAgICAgICAgaWYgKHRhZ1Byb3BlcnR5Lmdsb2JhbEFyaWFBdHRyaWJ1dGVzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IEFSSUFEZWZpbml0aW9ucy5nbG9iYWxQcm9wZXJ0aWVzOyAvLyBnbG9iYWwgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdChwcm9wZXJ0aWVzLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogPGltZz4gd2l0aCBhbHQ9XCJcIiBhbGxvd3Mgb25seSBhcmlhLWhpZGRlblxuICAgICAgICAgICAgICAgIGlmICh0YWdOYW1lID09PSBcImltZ1wiICYmXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVDb250ZXh0Lmhhc0F0dHJpYnV0ZShcImFsdFwiKSAmJlxuICAgICAgICAgICAgICAgICAgICBydWxlQ29udGV4dC5nZXRBdHRyaWJ1dGUoXCJhbHRcIikudHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdChbXCJhcmlhLWhpZGRlblwiXSwgYWxsb3dlZEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFkZGluZyB0aGUgc3BlY2lmaWVkIHJvbGUgcHJvcGVydGllcyB0byB0aGUgYWxsb3dlZCBhdHRyaWJ1dGUgbGlzdFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgcGVybWl0dGVkUm9sZXMgIT09IG51bGwgJiYgaSA8IHBlcm1pdHRlZFJvbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm9sZVByb3BlcnRpZXMgPSBBUklBRGVmaW5pdGlvbnMuZGVzaWduUGF0dGVybnNbcGVybWl0dGVkUm9sZXNbaV1dO1xuICAgICAgICAgICAgaWYgKHJvbGVQcm9wZXJ0aWVzICE9PSBudWxsICYmIHJvbGVQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IHJvbGVQcm9wZXJ0aWVzLnByb3BzOyAvLyBhbGxvd2VkIHByb3BlcnRpZXNcbiAgICAgICAgICAgICAgICBSUFRVdGlsLmNvbmNhdFVuaXF1ZUFycmF5SXRlbUxpc3QocHJvcGVydGllcywgYWxsb3dlZEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBSUFRVdGlsLmdldFJvbGVSZXF1aXJlZFByb3BlcnRpZXMocGVybWl0dGVkUm9sZXNbaV0sIHJ1bGVDb250ZXh0KTsgLy8gcmVxdWlyZWQgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuY29uY2F0VW5pcXVlQXJyYXlJdGVtTGlzdChwcm9wZXJ0aWVzLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIGZvciBzZXBhcmF0b3JcbiAgICAgICAgICAgICAgICBpZiAocGVybWl0dGVkUm9sZXNbaV0gPT09IFwic2VwYXJhdG9yXCIgJiYgUlBUVXRpbC5pc0ZvY3VzYWJsZShydWxlQ29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgUlBUVXRpbC5jb25jYXRVbmlxdWVBcnJheUl0ZW1MaXN0KFtcImFyaWEtZGlzYWJsZWRcIiwgXCJhcmlhLXZhbHVlbWF4XCIsIFwiYXJpYS12YWx1ZW1pblwiLCBcImFyaWEtdmFsdWV0ZXh0XCJdLCBhbGxvd2VkQXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWdub3JlIGFyaWEtbGV2ZWwsIGFyaWEtc2V0c2l6ZSBvciBhcmlhLXBvc2luc2V0IGlmIFwicm93XCIgaXMgbm90IGluIHRyZWVncmlkXG4gICAgICAgIGlmIChwZXJtaXR0ZWRSb2xlcy5pbmNsdWRlcyhcInJvd1wiKSAmJiBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aFJvbGUocnVsZUNvbnRleHQsIFwidHJlZWdyaWRcIiwgdHJ1ZSkgPT0gbnVsbCApIHtcbiAgICAgICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgICAgICBpZiAoKGluZGV4ID0gYWxsb3dlZEF0dHJpYnV0ZXMuaW5kZXhPZihcImFyaWEtbGV2ZWxcIikpID4gLTEpXG4gICAgICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICAgICAgIGlmICgoaW5kZXggPSBhbGxvd2VkQXR0cmlidXRlcy5pbmRleE9mKFwiYXJpYS1zZXRzaXplXCIpKSA+IC0xKVxuICAgICAgICAgICAgICAgIGFsbG93ZWRBdHRyaWJ1dGVzLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgICAgICBpZiAoKGluZGV4ID0gYWxsb3dlZEF0dHJpYnV0ZXMuaW5kZXhPZihcImFyaWEtcG9zaW5zZXRcIikpID4gLTEpXG4gICAgICAgICAgICAgICAgYWxsb3dlZEF0dHJpYnV0ZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsbG93ZWRBdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgQ1NTKGVsZW1lbnQpIHtcbiAgICAgICAgbGV0IHN0eWxlVGV4dCA9IFwiXCI7XG4gICAgICAgIGlmIChlbGVtZW50ID09PSBudWxsKSByZXR1cm4gW107XG4gICAgICAgIGlmIChlbGVtZW50LklCTV9DU1NfVEhCKSByZXR1cm4gZWxlbWVudC5JQk1fQ1NTX1RIQjtcbiAgICAgICAgbGV0IG5vZGVOYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAobm9kZU5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgc3R5bGVUZXh0ID0gUlBUVXRpbC5nZXRJbm5lclRleHQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJzdHlsZVwiKSkge1xuICAgICAgICAgICAgc3R5bGVUZXh0ID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBbXTtcbiAgICAgICAgaWYgKHN0eWxlVGV4dCA9PT0gbnVsbCB8fCBzdHlsZVRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuICAgICAgICAvL3JlbW92ZSBjb21tZW50IGJsb2Nrc1xuICAgICAgICBsZXQgcmUgPSAvKFxcL1xcKisoPzooPzooPzpbXlxcKl0pKyl8KD86W1xcKl0rKD8hXFwvKSkpWypdK1xcLyl8XFwvXFwvLiovZztcbiAgICAgICAgbGV0IHN1YnN0ID0gJyAnO1xuICAgICAgICBzdHlsZVRleHQgPSBzdHlsZVRleHQucmVwbGFjZShyZSwgc3Vic3QpO1xuICAgICAgICAvLyBGaW5kIGFsbCBcImtleSA6IHZhbDtcIiBwYWlycyB3aXRoIHZhcmlvdXMgd2hpdGVzcGFjZSBpbmJldHdlZW5cbiAgICAgICAgbGV0IHJLZXlWYWxzID0gL1xccyooW146XFxzXSspXFxzKjpcXHMqKFteOyR9XSspXFxzKig7fCQpL2c7XG4gICAgICAgIC8vIEZpbmQgYWxsIFwic2VsZWN0b3IgeyBjc3NrZXl2YWxzIH0gd2l0aCB2YXJpb3VzIHdoaXRlc3BhY2UgaW5iZXR3ZWVuXG4gICAgICAgIGxldCByU2VsZWN0b3JzID0gL1xccyooW157XSopeyhbXn1dKil9L2c7XG4gICAgICAgIGlmIChzdHlsZVRleHQuaW5kZXhPZihcIntcIikgPT09IC0xKSB7XG5cbiAgICAgICAgICAgIGxldCBrZXlWYWxzID0ge307XG4gICAgICAgICAgICBsZXQgbTtcbiAgICAgICAgICAgIHdoaWxlICgobSA9IHJLZXlWYWxzLmV4ZWMoc3R5bGVUZXh0KSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGtleVZhbHNbbVsxXV0gPSBtWzJdLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHJldFZhbCA9IFt7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3I6IG51bGwsXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBrZXlWYWxzXG4gICAgICAgICAgICB9XTtcbiAgICAgICAgICAgIGVsZW1lbnQuSUJNX0NTU19USEIgPSByZXRWYWw7XG4gICAgICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJldFZhbCA9IFtdO1xuICAgICAgICAgICAgbGV0IG07XG4gICAgICAgICAgICBsZXQgbTI7XG4gICAgICAgICAgICB3aGlsZSAoKG0gPSByU2VsZWN0b3JzLmV4ZWMoc3R5bGVUZXh0KSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGxldCBrZXlWYWxzID0ge31cbiAgICAgICAgICAgICAgICBsZXQgc2VsS2V5ID0gbVsxXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsVmFsID0gbVsyXTtcblxuICAgICAgICAgICAgICAgIHdoaWxlICgobTIgPSByS2V5VmFscy5leGVjKHNlbFZhbCkpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAga2V5VmFsc1ttMlsxXV0gPSBtMlsyXS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvcjogc2VsS2V5LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGtleVZhbHNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnQuSUJNX0NTU19USEIgPSByZXRWYWw7XG4gICAgICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcgaWYgdGhlIG5vZGUgdGhhdCBpcyBwcm92aWVkIGlzXG4gICAgICogdmlzaWJsZSBvciBub3QuIEZvbGxvd2luZyBpcyBob3cgdGhlIGNoZWNrIGlzIHBlcmZvcm1lZDpcbiAgICAgKiAgICAxLiBDaGVjayBpZiB0aGUgY3VycmVudCBub2RlIGlzIGhpZGRlbiB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9uczpcbiAgICAgKiAgICAgICBDU1MgLS0+IGRpc2xheTogbm9uZVxuICAgICAqICAgICAgIENTUyAtLT4gdmlzaWJpbGl0eTogaGlkZGVuXG4gICAgICogICAgICAgYXR0cmlidXRlIC0tPiBoaWRkZW5cbiAgICAgKiAgICAyLiBDaGVjayBpZiB0aGUgYW55IG9mIHRoZSBjdXJyZW50IG5vZGVzIHBhcmVudHMgYXJlIGhpZGRlbiB3aXRoIHRoZSBzYW1lXG4gICAgICogICAgICAgb3B0aW9ucyBsaXN0ZWQgaW4gMS5cbiAgICAgKlxuICAgICAqICAgIE5vdGU6IElmIGVpdGhlciBjdXJyZW50IG5vZGUgb3IgYW55IG9mIHRoZSBwYXJlbnQgbm9kZXMgYXJlIGhpZGRlbiB0aGVuIHRoaXNcbiAgICAgKiAgICAgICAgICBmdW5jdGlvbiB3aWxsIHJldHVybiBmYWxzZSAobm9kZSBpcyBub3QgdmlzaWJsZSkuXG4gICAgICpcbiAgICAgKiBAcGFybSB7ZWxlbWVudH0gbm9kZSBUaGUgbm9kZSB3aGljaCBzaG91bGQgYmUgY2hlY2tlZCBpZiBpdCBpcyB2aXNpYmxlIG9yIG5vdC5cbiAgICAgKiBAcmV0dXJuIHtib29sfSBmYWxzZSBpZiB0aGUgbm9kZSBpcyBOT1QgdmlzaWJsZSwgdHJ1ZSBvdGhlcndpc2VcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpc05vZGVWaXNpYmxlKG5vZGUpIHtcblxuICAgICAgICAvLyBTZXQgUFRfTk9ERV9ISURERU4gdG8gZmFsc2UgZm9yIGFsbCB0aGUgbm9kZXMsIGJlZm9yZSB0aGUgY2hlY2sgYW5kIHRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvXG4gICAgICAgIC8vIHRydWUgd2hlbiB3ZSBkZXRlY3QgdGhhdCB0aGUgbm9kZSBpcyBoaWRkZW4uIFdlIGhhdmUgdG8gc2V0IGl0IHRvIGZhbHNlIHNvIHRoYXQgd2Uga25vd1xuICAgICAgICAvLyB0aGUgcnVsZXMgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLlxuICAgICAgICBSUFRVdGlsLnNldENhY2hlKG5vZGUsIFwiUFRfTk9ERV9ISURERU5cIiwgUlBUVXRpbC5nZXRDYWNoZShub2RlLCBcIlBUX05PREVfSElEREVOXCIsIGZhbHNlKSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgdGhlIG5vZGVUeXBlIGlmIHRoaXMgbm9kZSwgaWYgdGhpcyBub2RlIGlzIGEgdGV4dCBub2RlIHRoZW5cbiAgICAgICAgLy8gd2UgZ2V0IHRoZSBwYXJlbnRub2RlIGFuZCBzZXQgdGhhdCBhcyB0aGUgbm9kZSBhcyBhIHRleHQgbm9kZXMsXG4gICAgICAgIC8vIHZpc2liaWxpdHkgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgcGFyZW50IG5vZGUuXG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7XG4gICAgICAgICAgICBub2RlID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgYWxsb3cgbm9kZVR5cGUgZWxlbWVudCwgYW5kIFRleHROb2RlIGFsbCBvdGhlciBub2Rlc1R5cGVzXG4gICAgICAgIC8vIHdlIGNhbiByZXR1cm4gdGhlIHZpc2liaWxpdHkgYXMgdmlzaWJsZS5cbiAgICAgICAgLy8gRm9sbG93aW5nIG5vZGVzIHdpbGwgYmUgcmV0dXJuZWQgYXMgdmlzYWJsZSBieSBkZWZhdWx0LCBzaW5jZSB3ZSBjYW4gbm90XG4gICAgICAgIC8vIGFjdHVhbGx5IGNoYW5nZSB0aGVpciB2aXNpYmlsaXR5LlxuICAgICAgICAvLyAgTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgLS0+IDdcbiAgICAgICAgLy8gIE5vZGUuQ09NTUVOVF9OT0RFICAgICAgICAgICAgICAgIC0tPiA4XG4gICAgICAgIC8vICA5IC8qIE5vZGUuRE9DVU1FTlRfTk9ERSAqLyAgICAgICAgICAgICAgIC0tPiA5XG4gICAgICAgIC8vICBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERSAgICAgICAgICAtLT4gMTBcbiAgICAgICAgLy8gIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgICAgIC0tPiAxMVxuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgb3duZXJEb2N1bWVudCBpcyBwcmVzZW50IGJlZm9yZSBtb3ZpbmcgZm9yd2FyZFxuICAgICAgICAvLyBpbiBkZXRlY3RpbmcgaWYgdGhlIG5vZGUgaXMgdmlzaWJsZSBvciBub3QuIEluIHRoZSBjYXNlIHRoYXQgb3duZXJEb2N1bWVudFxuICAgICAgICAvLyBkb2VzIG5vdCBleGlzdCB0aGVuIHdlIHNpbXBseSByZXR1cm4gbm9kZSBpcyB2aXNpYmxlIGJ5IGRlZmF1bHQuXG4gICAgICAgIGlmICghbm9kZS5vd25lckRvY3VtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhcmlhYmxlIERlY2xhcmF0aW9uXG4gICAgICAgIGxldCBjb21wU3R5bGU7XG4gICAgICAgIGxldCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGlzIG5vZGUgaXMgYSBzY3JpcHQsIGxpbmsgb3Igc3R5bGUgbm9kZSwgcmlnaHQgYXdheSByZXR1cm4gbm9kZSBpcyB2aXNpYmxlXG4gICAgICAgIC8vIGJlY2F1c2Ugc2NyaXB0cywgbGlua3MgYW5kIHN0eWxlIG5vZGVzIGNhbiBub3QgYmUgaGlkZGVuIGJ5IEhUTUwgYXR0cmlidXRlIG9yIENTUyBvciBhcmUgaGlkZGVuIGJ5IGRlZmF1bHQuIEJ1dCB3ZSB3YW50IHRvIHNjYW5cbiAgICAgICAgLy8gdGhlIGVsZW1lbnRzIGV2ZXJ5dGltZSBhcyB0aGV5IHJlbmRlciBjb250ZW50IHN0aWxsIHdoaWNoIGlzIHN0aWxsIHZpc2libGUgdG8gdXNlcnMuXG4gICAgICAgIC8vICBzY3JpcHQgLS0+IHNjcmlwdCBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdFxuICAgICAgICAvLyAgbGluayAtLT4gbGluayBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYnV0IHRoZSBhY3R1YWxseSBDU1Mgc2NyaXB0IGlzIHN0aWxsIGV4ZWN1dGVkIHNvIHdlIGhhdmUgdG9cbiAgICAgICAgLy8gICAgICAgICAgICBtYXJrIHRoaXMgZWxlbWVudCBhcyB2aXNpYmxlIGF0IGFsbCB0aW1lcy5cbiAgICAgICAgLy8gIHN0eWxlIC0tPiBzdHlsZSBlbGVtZW50cyBoYXZlIGRpc3BsYXk6IG5vbmUgYnkgZGVmYXVsdCwgYnV0IHRoZSBhY3R1YWxseSBDU1Mgc2NyaXB0IGlzIHN0aWxsIGV4ZWN1dGVkIHNvIHdlIGhhdmUgdG9cbiAgICAgICAgLy8gICAgICAgICAgICBtYXJrIHRoaXMgZWxlbWVudCBhcyB2aXNpYmxlIGF0IGFsbCB0aW1lcy5cbiAgICAgICAgaWYgKFJQVFV0aWwuaGlkZGVuQnlEZWZhdWx0RWxlbWVudHMgIT0gbnVsbCAmJiBSUFRVdGlsLmhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzICE9IHVuZGVmaW5lZCAmJiBSUFRVdGlsLmhpZGRlbkJ5RGVmYXVsdEVsZW1lbnRzLmluZGV4T2Yobm9kZU5hbWUpID4gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBub2RlIGlzIHZpc2libGUsIHdlIGNoZWNrIGNvdXBsZSBvZiBDU1MgcHJvcGVydGllcyBhbmQgaGlkZGVuIGF0dHJpYnV0ZS5cbiAgICAgICAgLy8gYXJlYSwgcGFyYW0gYW5kIGF1ZGlvIGVsZW1lbnRzIHdlIGRvIG5vdCBjaGVjayBpZiB0aGV5IGFyZSBoaWRkZW4gYXMgaXQgZG9lcyBub3QgYXBwbHkgdG8gdGhlbS5cbiAgICAgICAgLy8gQ2hlY2sgdGhlIHVuaGlkZWFibGVFbGVtZW50cyBhcnJheSB3aGljaCBpcyBwYXJ0IG9mIHRoZSBydWxlcywgdG8gY2hlY2sgaWYgdGhpcyBlbGVtZW50IGlzIGFsbG93ZWQgdG8gYmUgaGlkZGVuIG9yIG5vdFxuICAgICAgICAvLyBpbiB0aGUgY2FzZSB0aGF0IHRoZSBlbGVtZW50IGlzIHBhcnQgb2YgdGhlIHVuaGlkZWFibGVFbGVtZW50cyBhcnJheSB0aGVuIHdlIGRvIG5vdCBydW4gdGhlIGhpZGRlbiBjaGVjayBvbiB0aGlzIGVsZW1lbnQsXG4gICAgICAgIC8vIGFuZCBnbyBzdHJpZ2h0IHRvIHRoZSBwYXJlbnQgbm9kZS5cbiAgICAgICAgLy8gQXJyYXkgY2hlY2sgZWxlbWVudHMgbGlrZTpcbiAgICAgICAgLy8gIGFyZWEgLS0+IGFyZWEgZWxlbWVudCBpcyBwYXJ0IG9mIGEgbWFwIGVsZW1lbnQgYW5kIGl0IGNhbiBub3QgYmUgaGlkZGVuIGJlY2F1c2UgaXQgaXMgdXNlZCB0b1xuICAgICAgICAvLyAgICAgICAgICAgbWFrZSBhbiBjZXJ0aWFuIHBhcnRzIG9mIGFuIG1hcCBpbnRlcmFjdGl2ZS5cbiAgICAgICAgLy8gIHBhcmFtIC0tPiBlbGVtZW50IGNhbiBvbmx5IGJlIHBhcnQgb2Ygb2JqZWN0IGVsbWVudCBhbmQgaXQgY2Fubm90IGJlIGhpZGRlbiBkaXJlY3RseSwgaXRcbiAgICAgICAgLy8gICAgICAgICAgICBjYW4gb25seSBiZSBoaWRkZW4gaWYgdGhlIHBhcmVudCBpcyBoaWRkZW4uXG4gICAgICAgIC8vICBhdWRpbyAtLT4gSWYgdGhpcyBlbGVtZW50IGlzIGhpZGRlbiBpdCB3aWxsIHN0aWxsIHBsYXkgdGhlIG11c2ljLCBzbyB3ZSBzaG91bGQgc3RpbGwgdHJpZ2dlclxuICAgICAgICAvLyAgICAgICAgICAgIHZpb2xhdGlvbnMgZm9yIHRoaXMgZWxlbWVudC5cbiAgICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB1bmhpZGVhYmxlRWxlbWVudHMgYXJyYXkgaXMgbm90IGRlZmluZWQgdGhlbiB3ZSBqdXN0IHNjYW4gYWxsIGVsZW1lbnRzIGFuZCBkbyBubyBmaWx0ZXJpbmcgYXQgYWxsLlxuICAgICAgICBpZiAoUlBUVXRpbC51bmhpZGVhYmxlRWxlbWVudHMgPT09IG51bGwgfHwgUlBUVXRpbC51bmhpZGVhYmxlRWxlbWVudHMgPT09IHVuZGVmaW5lZCB8fCBSUFRVdGlsLnVuaGlkZWFibGVFbGVtZW50cy5pbmRleE9mKG5vZGVOYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlZmF1bHRWaWV3IGV4aXN0cyBmb3IgdGhpcyBub2RlLCBpZiBpdCBkb2VzIHRoZW4gdXNlIHRoaXMgdG8gcnVuIHRoZSBnZXRDb21wdXRlZFN0eWxlXG4gICAgICAgICAgICAvLyBmdW5jdGlvbiB0byBnZXQgdGhlIENTUyBzdHlsZSBmb3IgdGhlIG5vZGUuXG4gICAgICAgICAgICBpZiAobm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB7XG4gICAgICAgICAgICAgICAgLy8gUnVuIHRoZSBnZXRDb21wdXRlZFN0eWxlIG9uIHRoaXMgbm9kZSB0byBmZXRjaCB0aGUgQ1NTIGNvbXB1YXRpb24gb2YgdGhlIG5vZGVcbiAgICAgICAgICAgICAgICBjb21wU3R5bGUgPSBub2RlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgZGVmYXVsdFZpZXcgZG9lcyBub3QgZXhpc3RzIHJldHVybiB0cnVlIHRvIGlkZW50aWZ5IHRoYXQgdGhpc1xuICAgICAgICAgICAgLy8gbm9kZSBpcyB2aXNpYmxlLCBiZWNhdXNlIHdlcmUgbm90IGFibGUgdG8gZGV0ZWN0IGlmIGl0IHdhcyBub3QuXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBoaWRkZW4gZWxlbWVudCBwcm9wZXJ0eSBhbmQgaGlkZGVuIGF0dHJpYnV0ZVxuICAgICAgICAgICAgbGV0IGhpZGRlbkF0dHJpYnV0ZSA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiaGlkZGVuXCIpO1xuICAgICAgICAgICAgbGV0IGhpZGRlblByb3BlcnR5Q3VzdG9tID0gUlBUVXRpbC5nZXRDYWNoZShub2RlLCBcIlBUX05PREVfSElEREVOXCIsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAvLyBUbyBnZXQgdGhlIGhpZGRlbiBwcm9wZXJ0eSB3ZSBuZWVkIHRvIHBlcmZvcm0gYSBzcGVjaWFsIGNoZWNrIGFzIGluIHNvbWUgY2FzZXMgdGhlIGhpZGRlbiBwcm9wZXJ0eSB3aWxsIG5vdCBiZVxuICAgICAgICAgICAgLy8gYSBib29sZWFuLCBmb3IgdGhlc2VzIGNhc2VzIHdlIHNldCBpdCB0byBmYWxzZSBhcyB3ZSBhcmUgbm90IGFibGUgdG8gZGV0ZXJtaW5lIHRoZSB0cnVlIGhpZGRlbiBjb25kaXRpb24uXG4gICAgICAgICAgICAvLyBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGJlY2F1c2UgZm9ybSBlbGVtZW50cyBhcmUgYWJsZSB0byBwZXJmb3JtIGFuIG92ZXJyaWRlLCBzbyB3aGVuIHdlIGhhdmUgaWQ9XCJoaWRkZW5cIiBmb3IgYW4gZWxlbWVudFxuICAgICAgICAgICAgLy8gd2hpY2ggaXMgdW5kZXIgdGhlIGZvcm0gZWxlbWVudCB0aGVuLCBub2RlLmhpZGRlbiBnaXZlcyB0aGUgZWxlbWVudC9saXN0IG9mIGVsZW1lbnRzIHdoaWNoIGhhdmUgaWQ9XCJoaWRkZW5cIi4gUmVmZXIgdG9cbiAgICAgICAgICAgIC8vIG1vemlsbGEgYnVnOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY3MzU2XG4gICAgICAgICAgICBsZXQgaGlkZGVuUHJvcGVydHkgPSB0eXBlb2Ygbm9kZS5oaWRkZW4gPT09IFwiYm9vbGVhblwiID8gbm9kZS5oaWRkZW4gOiBmYWxzZTtcbiAgICAgICAgICAgIC8vIElmIGNvbXBTdHlsZSBvYmplY3QgaXMgZW1wdHksIG5vZGUgZG9lcyd0IGhhdmUgaGlkZGVuIHByb3BlcnR5LCBub2RlIGRvZXMndCBoYXZlIGhpZGRlbiBhdHRyaWJ1dGUgYW5kIGRvZXMndCBoYXZlIGN1c3RvbSBQVFxuICAgICAgICAgICAgLy8gaGlkZGVuIHByb3BlcnR5IHRoZW4gd2UgY2FuIGp1c3QgcmV0dXJuIHRydWUgKG5vZGUgdmlzaWJsZSkgYXQgdGhpcyBwb2ludC5cbiAgICAgICAgICAgIGlmICghY29tcFN0eWxlICYmXG4gICAgICAgICAgICAgICAgIWhpZGRlblByb3BlcnR5ICYmIC8vIHRoaXMgY292ZXJzIGZhbHNlLCBudWxsLCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAoaGlkZGVuQXR0cmlidXRlID09PSBudWxsIHx8IGhpZGRlbkF0dHJpYnV0ZSA9PT0gdW5kZWZpbmVkKSAmJlxuICAgICAgICAgICAgICAgICFoaWRkZW5Qcm9wZXJ0eUN1c3RvbSAvLyBUaGlzIGNvdmVycyBmYWxzZSwgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjb21wU3R5bGUgaXMgZGVmaW5lZCB3ZSBjaGVjayB0aGUgZm9sbG93aW5nOlxuICAgICAgICAgICAgLy8gIENTUyBzdHlsZSBkaXNwbGF5IHNldCB0byBub25lXG4gICAgICAgICAgICAvLyAgQ1NTIHN0eWxlIHZpc2liaWxpdHkgc2V0IHRvIGhpZGRlblxuICAgICAgICAgICAgLy8gICAgTm90ZTogRm9yIHRoaXMgcHJvcGVydHkgc2luY2UgaXQgaXMgaW5oZXJpdGVkLCBuZWVkIHRvIHNraXAgdGhlIGNoZWNrIG9uIHBhcmVudHMgYXNcbiAgICAgICAgICAgIC8vICAgICAgICAgIHRoZSBwYXJlbnQgY2FuIGhhdmUgaGlkZGVuIGJ1dCB0aGUgY2hpbGQgY2FuIGJlIHZpc2libGUuIFNvIHdlIG9ubHkgY2hlY2sgdGhpcyBwcm9wZXJ0eVxuICAgICAgICAgICAgLy8gICAgICAgICAgb24gY2hpbGQgZWxlbWVudHMvZWxlbWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gdGhlIGZpcnN0IHRpbWUuXG4gICAgICAgICAgICAvLyAgbm9kZSBoaWRkZW4gcHJvcGVydHkgc2V0IChub2RlLmhpZGRlbilcbiAgICAgICAgICAgIC8vICBub2RlIGF0dHJpYnV0ZSBoaWRkZW4gc2V0ICh0byBhbnkgdmFsdWUpXG4gICAgICAgICAgICAvLyAgbm9kZSBjdXN0b20gaGlkZGVuIHByb3BlcnR5IHNlciAobm9kZS5QVF9OT0RFX0hJRERFTilcbiAgICAgICAgICAgIC8vIElmIGFueSBvZiB0aGUgYWJvdmUgY29uZGl0aW9ucyBhcmUgdHJ1ZSB0aGVuIHdlIHJldHVybiBmYWxzZSBhcyB0aGlzIGVsZW1lbnQgaXMgbm90IHZpc2libGVcbiAgICAgICAgICAgIGlmICgoY29tcFN0eWxlICE9PSBudWxsICYmICgoY29tcFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnIHx8XG4gICAgICAgICAgICAgICAgKCFSUFRVdGlsLmdldENhY2hlKG5vZGUsIFwiVmlzaWJpbGl0eV9DaGVja19QYXJlbnRcIiwgbnVsbCkgJiYgY29tcFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3Zpc2liaWxpdHknKSA9PT0gJ2hpZGRlbicpKSkgfHxcbiAgICAgICAgICAgICAgICAoY29tcFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKSAhPT0gJ2Jsb2NrJyAgJiYgKGhpZGRlblByb3BlcnR5IHx8IGhpZGRlbkF0dHJpYnV0ZSAhPSBudWxsIHx8IGhpZGRlblByb3BlcnR5Q3VzdG9tKSkpKSB7XG4gICAgICAgICAgICAgICAgLy8gU2V0IGEgY3VzdG9tIGV4cGFuZG9zIHByb3BlcnR5IG9uIHRoZSB0aGUgbm9kZSB0byBpZGVudGlmeSB0aGF0IGl0IGlzIGhpZGRlbiwgc28gdGhhdCB3ZSBjYW4gdXNlc1xuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGlzIGluIHRoZSBydWxlcyB0byBkZXRlcm1pbmUgaWYgdGhlIG5vZGUgaXMgaGlkZGVuIG9yIG5vdCwgaWYgd2UgbmVlZCB0by5cbiAgICAgICAgICAgICAgICAvLyBVc2UgZXhwYW5kb3MgcHJvcGVydHkgaW5zdGVhZCBvZiBhIGhhc2ggbWFwIHdoaWNoIHN0b3JlcyB0aGUgZWxlbWVudHMsIGFkZGluZy9jaGVja2luZyBleHBhbmRvc1xuICAgICAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgaXMgYSBsb3QgZmFzdGVyIHBlcmZvcm1hbmNlIHdoaXNlLiBGb3IgSGFzaCBtYXAgd2UgbmVlZCB0byBzdG9yZSBiYXNlZCBvbiB4cGF0aCwgYW5kIHRvIGNhbGN1bGF0ZVxuICAgICAgICAgICAgICAgIC8vIHhwYXRoIGl0IGlzIG1vcmUgcGVyZm9ybWFuY2UgaW1wYWN0LlxuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUobm9kZSwgXCJQVF9OT0RFX0hJRERFTlwiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgdGhlIHBhcmVudE5vZGUgZm9yIHRoaXMgbm9kZSwgYmVjdWFzZSB3ZSBoYXZlIHRvIGNoZWNrIGFsbCBwYXJlbnRzIHRvIG1ha2Ugc3VyZSB0aGV5IGRvIG5vdCBoYXZlXG4gICAgICAgIC8vIHRoZSBoaWRkZW4gQ1NTLCBwcm9wZXJ0eSBvciBhdHRyaWJ1dGUuIE9ubHkga2VlcCBjaGVja2luZyB1bnRpbCB3ZSBhcmUgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgcGFyZW50Tm9kZVxuICAgICAgICAvLyBlbGVtZW50LlxuICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IERPTVV0aWwucGFyZW50Tm9kZShub2RlKTtcblxuICAgICAgICAvLyBJZiB0aGUgcGFyZW50IG5vZGUgZXhpc3RzIGFuZCB0aGUgbm9kZXR5cGUgaXMgZWxlbWVudCAoMSksIHRoZW4gcnVuIHJlY3Vyc2l2ZSBjYWxsIHRvIHBlcmZvcm0gdGhlIGNoZWNrXG4gICAgICAgIC8vIGFsbCB0aGUgd2F5IHVwIHRvIHRoZSB2ZXJ5IHBhcmVudCBub2RlLiBVc2UgcmVjdXJzaXZlIGNhbGwgaGVyZSBpbnN0ZWFkIG9mIGEgd2hpbGUgbG9vcCBzbyB0aGF0IHdlIGRvIG5vdFxuICAgICAgICAvLyBoYXZlIHRvIGR1cGxpY2F0ZSB0aGUgbG9naWMgZm9yIGNoZWNraW5nIGlmIHRoZSBub2RlIGlzIHZpc2libGUgb3Igbm90IGZvciBhbGwgdGhlIHBhcmVudHMgc3RhcnRpbmcgd2l0aFxuICAgICAgICAvLyBjaGlsZCBub2RlLlxuICAgICAgICBpZiAocGFyZW50RWxlbWVudCAhPSBudWxsICYmIHBhcmVudEVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgaGF2ZSBhIHBhcmVudCBlbGVtZW50IGdvaW5nIHRocm91Z2ggdGhlIGlzTm9kZVZpc2libGUgZnVuY3Rpb24gd2UgaGF2ZSB0byBtYXJrIGl0IGFzIHN1Y2hcbiAgICAgICAgICAgIC8vIHNvIHRoYXQgaW4gdGhlIGZ1bmN0aW9uIHdlIGNhbiBza2lwIGNoZWNraW5nIHZpc2liaWxpdHk6IGhpZGRlbiBmb3IgcGFyZW50IGVsZW1lbnRzIHNpbmNlIHZpc2liaWxpdHk6IGhpZGRlblxuICAgICAgICAgICAgLy8gaXMgaW5oZXJpdGVkLCB3aGljaCBhbGxvd3MgYSBjaGlsZCB0byBoYXZlIGEgZGlmZmVyZW50IHNldHRpbmcgdGhlbiB0aGUgY2hpbGQuIFRoaXMgcHJvcGVydHkgb25seSBuZWVkcyB0byBiZSBjaGVja2VkXG4gICAgICAgICAgICAvLyBvbmNlIGZvciB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IGlzIHBhc3NlZCBkb3duIGFuZCB0aGF0IGlzIGFsbC4gSWdub3JlIGl0IGZvciBhbGwgdGhlIHBhcmVudHMgdGhhdCB3ZSBpdGVyYXRlIG92ZXIuXG4gICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHBhcmVudEVsZW1lbnQgYXMgRWxlbWVudCwgXCJWaXNpYmlsaXR5X0NoZWNrX1BhcmVudFwiLCB0cnVlKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgdXB3YXJkcyByZWN1cnNpdmVseSwgYW5kIHNhdmUgdGhlIHJlc3VsdHMgaW4gYW4gdmFyaWFibGVcbiAgICAgICAgICAgIGxldCBub2RlVmlzaWJsZSA9IFJQVFV0aWwuaXNOb2RlVmlzaWJsZShwYXJlbnRFbGVtZW50KTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgZm91bmQgdG8gbm90IGJlIHZpc2libGUgdGhlbiBhZGQgdGhlIGN1c3RvbSBQVF9OT0RFX0hJRERFTiB0byB0cnVlLlxuICAgICAgICAgICAgLy8gc28gdGhhdCB3ZSBjYW4gdXNlIHRoaXMgaW4gdGhlIHJ1bGVzLlxuICAgICAgICAgICAgaWYgKCFub2RlVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUobm9kZSwgXCJQVF9OT0RFX0hJRERFTlwiLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ2hlY2sgdXB3YXJkcyByZWN1cnNpdmVseVxuICAgICAgICAgICAgcmV0dXJuIG5vZGVWaXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIHRydWUgKG5vZGUgaXMgdmlzaWJsZSlcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRydWUgaWYgdGhlIG5vZGUgb3IgaXRzIGFuY2VzdGVyIGlzIG5hdGl2ZWx5IGhpZGRlbiBvciBhcmlhLWhpZGRlbiA9ICd0cnVlJ1xuICAgICAqIEBwYXJhbSBub2RlXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpc05vZGVIaWRkZW5Gcm9tQVQobm9kZTogRWxlbWVudCkge1xuICAgICAgICBpZiAoIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShub2RlKSB8fCBub2RlLmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpID09PSAndHJ1ZScpIHJldHVybiB0cnVlO1xuICAgICAgICBsZXQgYW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yV2l0aEF0dHJpYnV0ZShub2RlLCBcImFyaWEtaGlkZGVuXCIsIFwidHJ1ZVwiKTtcbiAgICAgICAgaWYgKGFuY2VzdG9yKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q29udHJvbE9mTGFiZWwobm9kZTogTm9kZSkge1xuICAgICAgICAvLyBIYW5kbGUgdGhlIGVhc3kgY2FzZSBvZiBsYWJlbCAtPiBmb3JcbiAgICAgICAgbGV0IGxhYmVsQW5jZXN0b3IgPSBSUFRVdGlsLmdldEFuY2VzdG9yKG5vZGUsIFwibGFiZWxcIik7XG4gICAgICAgIGlmIChsYWJlbEFuY2VzdG9yKSB7XG4gICAgICAgICAgICBpZiAobGFiZWxBbmNlc3Rvci5oYXNBdHRyaWJ1dGUoXCJmb3JcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gRnJhZ21lbnRVdGlsLmdldEJ5SWQobm9kZSwgbGFiZWxBbmNlc3Rvci5nZXRBdHRyaWJ1dGUoXCJmb3JcIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGlkcyBvZiBwYXJlbnQgbm9kZXNcbiAgICAgICAgbGV0IGlkRGljdCA9IHt9O1xuICAgICAgICBsZXQgcGFyZW50V2FsayA9IG5vZGU7XG4gICAgICAgIHdoaWxlIChwYXJlbnRXYWxrKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50V2Fsay5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuY2VzdG9yID0gcGFyZW50V2FsayBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmIChhbmNlc3Rvci5oYXNBdHRyaWJ1dGUoXCJpZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICBpZERpY3RbYW5jZXN0b3IuZ2V0QXR0cmlidXRlKFwiaWRcIildID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnRXYWxrID0gRE9NVXRpbC5wYXJlbnROb2RlKHBhcmVudFdhbGspO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNvbnRyb2xzIHRoYXQgdXNlIGFyaWEtbGFiZWxsZWRieSBhbmQgc2VlIGlmIGFueSBvZiB0aGVtIHJlZmVyZW5jZSBvbmUgb2YgbXkgYW5jZXN0b3IgaWRzXG4gICAgICAgIGNvbnN0IGlucHV0c1VzaW5nTGFiZWxsZWRCeSA9IG5vZGUub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiKlthcmlhLWxhYmVsbGVkYnldXCIpO1xuICAgICAgICBmb3IgKGxldCBpZHg9MDsgaWR4PGlucHV0c1VzaW5nTGFiZWxsZWRCeS5sZW5ndGg7ICsraWR4KSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dFVzaW5nTGFiZWxsZWRCeSA9IGlucHV0c1VzaW5nTGFiZWxsZWRCeVtpZHhdO1xuICAgICAgICAgICAgY29uc3QgYXJpYUxhYmVsbGVkQnkgPSBpbnB1dFVzaW5nTGFiZWxsZWRCeS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIik7XG4gICAgICAgICAgICBjb25zdCBzcCA9IGFyaWFMYWJlbGxlZEJ5LnNwbGl0KFwiIFwiKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWQgb2Ygc3ApIHtcbiAgICAgICAgICAgICAgICBpZiAoaWQgaW4gaWREaWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dFVzaW5nTGFiZWxsZWRCeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5kIHRoZSBjYXNlcyB3aGVyZSB3ZSdyZSB3aXRoaW4gYW4gYXJpYSBsYWJlbGxlZGJ5XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIGlmIHRoZSBub2RlIHRoYXQgaXMgcHJvdmllZCBpc1xuICAgICAqIGRpc2FibGVkIG9yIG5vdC4gRm9sbG93aW5nIGlzIGhvdyB0aGUgY2hlY2sgaXMgcGVyZm9ybWVkOlxuICAgICAqICAgIDEuIENoZWNrIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgZGlzYWJsZWQgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbnM6XG4gICAgICogICAgICAgYXR0cmlidXRlIC0tPiBkaXNhYmxlZFxuICAgICAqICAgICAgICAgQWxzbyBuZWVkcyB0byBiZSBcImJ1dHRvblwiLCBcImlucHV0XCIsIFwic2VsZWN0XCIsIFwidGV4dGFyZWFcIiwgXCJvcHRncm91cFwiLCBcIm9wdGlvblwiLFxuICAgICAqICAgICAgICAgXCJtZW51aXRlbVwiLCBcImZpZWxkc2V0XCIgbm9kZXMgKGluIGFycmF5IGVsZW1lbnRzQWxsb3dlZERpc2FibGVkKVxuICAgICAqICAgICAgIGF0dHJpYnV0ZSAtLT4gYXJpYS1kaXNhYmxlZD1cInRydWVcIlxuICAgICAqICAgIDIuIENoZWNrIGlmIGFueSBvZiB0aGUgY3VycmVudCBub2RlcyBwYXJlbnRzIGFyZSBkaXNhYmxlZCB3aXRoIHRoZSBzYW1lXG4gICAgICogICAgICAgb3B0aW9ucyBsaXN0ZWQgaW4gMS5cbiAgICAgKlxuICAgICAqICAgIE5vdGU6IElmIGVpdGhlciBjdXJyZW50IG5vZGUgb3IgYW55IG9mIHRoZSBwYXJlbnQgbm9kZXMgYXJlIGRpc2FibGVkIHRoZW4gdGhpc1xuICAgICAqICAgICAgICAgIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRydWUgKG5vZGUgaXMgZGlzYWJsZWQpLlxuICAgICAqXG4gICAgICogQHBhcm0ge0hUTUxFbGVtZW50fSBub2RlIC0gVGhlIG5vZGUgd2hpY2ggc2hvdWxkIGJlIGNoZWNrZWQgaWYgaXQgaXMgZGlzYWJsZWQgb3Igbm90LlxuICAgICAqIEByZXR1cm4ge2Jvb2x9IHRydWUgaWYgdGhlIG5vZGUgaXMgZGlzYWJsZWQsIGZhbHNlIG90aGVyd2lzZVxuICAgICAqXG4gICAgICogQG1lbWJlck9mIFJQVFV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzTm9kZURpc2FibGVkKG5vZGUpIHtcblxuICAgICAgICAvLyBTZXQgUFRfTk9ERV9ESVNBQkxFRCB0byBmYWxzZSBmb3IgYWxsIHRoZSBub2RlcywgYmVmb3JlIHRoZSBjaGVjayBhbmQgdGhpcyB3aWxsIGJlIGNoYW5nZWQgdG9cbiAgICAgICAgLy8gdHJ1ZSB3aGVuIHdlIGRldGVjdCB0aGF0IHRoZSBub2RlIGlzIGRpc2FibGVkLiBXZSBoYXZlIHRvIHNldCBpdCB0byBmYWxzZSBzbyB0aGF0IHdlIGtub3dcbiAgICAgICAgLy8gdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLiBPbmx5IHNldCBpdCB0byBmYWxzZSBpZiB0aGUgc2V0dGluZyBpcyB1bmRlZmluZWQgb3IgbnVsbFxuICAgICAgICAvLyBhcyBpZiBpdCBpcyBkZWZpbmVkIHdlIGRvIG5vdCB3bmF0IHRvIHJlc2V0IGl0LiBBcyBpZiBpdCBpcyB0cnVlIHRoZW4gd2Ugc2hvdWxkIG1ha2UgdXNlIG9mIGl0XG4gICAgICAgIC8vIHRvIHNwZWVkIHVwIHRoZSBjaGVjay5cbiAgICAgICAgbGV0IFBUX05PREVfRElTQUJMRUQgPSBSUFRVdGlsLmdldENhY2hlKG5vZGUsIFwiUFRfTk9ERV9ESVNBQkxFRFwiLCBmYWxzZSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgdGhlIG5vZGVUeXBlIG9mIHRoaXMgbm9kZSwgaWYgdGhpcyBub2RlIGlzIGEgdGV4dCBub2RlIHRoZW5cbiAgICAgICAgLy8gd2UgZ2V0IHRoZSBwYXJlbnRub2RlIGFuZCBzZXQgdGhhdCBhcyB0aGUgbm9kZSBhcyBhIHRleHQgbm9kZXMsXG4gICAgICAgIC8vIGRpc2FibGVkIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIHBhcmVudCBub2RlLlxuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICAgICAgbm9kZSA9IERPTVV0aWwucGFyZW50Tm9kZShub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZhcmlhYmxlIERlY2xhcmF0aW9uXG4gICAgICAgIGxldCBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAvLyBHZXQgdGhlIGRpc2FibGVkIGVsZW1lbnQgcHJvcGVydHksIGRpc2FibGVkIGFuZCBhcmlhLWRpc2FibGVkIGF0dHJpYnV0ZSBhbmQgY2hlY2sgdGhhdCBpdCBpcyB0cnVlXG4gICAgICAgIGxldCBkaXNhYmxlZEF0dHJpYnV0ZSA9IG5vZGUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7XG4gICAgICAgIGxldCBkaXNhYmxlZFByb3BlcnR5Q3VzdG9tID0gUFRfTk9ERV9ESVNBQkxFRDtcbiAgICAgICAgbGV0IGFyaWFEaXNhYmxlZEF0dHJpYnV0ZSA9IG5vZGUuaGFzQXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgJiYgbm9kZS5nZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpID09PSAndHJ1ZSc7XG5cbiAgICAgICAgLy8gSWYgdGhpcyBub2RlIGhhcyBkaXNhYmxlZCBhdHRyaWJ1dGUgYW5kIHRoZSBub2RlIGFsbG93cyBkaXNhYmxlZCBhdHRyaWJ1dGUsIHRoZW4gcmV0dXJuIHRydWUuXG4gICAgICAgIC8vIERpc2FibGVkIGF0dHJpYnV0ZSBpcyBvbmx5IGFsbG93ZWQgb24gXCJidXR0b25cIiwgXCJpbnB1dFwiLCBcInNlbGVjdFwiLCBcInRleHRhcmVhXCIsIFwib3B0Z3JvdXBcIiwgXCJvcHRpb25cIiwgXCJtZW51aXRlbVwiLCBcImZpZWxkc2V0XCJcbiAgICAgICAgLy8gSW4gdGhlIGNhc2UgYXJpYS1kaXNhYmxlZCBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiBhbHNvIHJldHVybiB0cnVlXG4gICAgICAgIGlmIChkaXNhYmxlZFByb3BlcnR5Q3VzdG9tIHx8IChkaXNhYmxlZEF0dHJpYnV0ZSAmJiBBUklBRGVmaW5pdGlvbnMuZWxlbWVudHNBbGxvd2VkRGlzYWJsZWQuaW5kZXhPZihub2RlTmFtZSkgPiAtMSkgfHwgYXJpYURpc2FibGVkQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBQVF9OT0RFX0RJU0FCTEVEID0gdHJ1ZTtcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUobm9kZSwgXCJQVF9OT0RFX0RJU0FCTEVEXCIsIFBUX05PREVfRElTQUJMRUQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXQgdGhlIHBhcmVudE5vZGUgZm9yIHRoaXMgbm9kZSwgYmVjdWFzZSB3ZSBoYXZlIHRvIGNoZWNrIGFsbCBwYXJlbnRzIHRvIG1ha2Ugc3VyZSB0aGV5IGRvIG5vdCBoYXZlXG4gICAgICAgIC8vIGRpc2FibGVkIGF0dHJpYnV0ZS4gT25seSBrZWVwIGNoZWNraW5nIHVudGlsIHdlIGFyZSBhbGwgdGhlIHdheSBiYWNrIHRvIHRoZSBwYXJlbnROb2RlXG4gICAgICAgIC8vIGVsZW1lbnQuXG4gICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gRE9NVXRpbC5wYXJlbnROb2RlKG5vZGUpO1xuXG4gICAgICAgIC8vIElmIHRoZSBwYXJlbnQgbm9kZSBleGlzdHMgYW5kIHRoZSBub2RldHlwZSBpcyBlbGVtZW50ICgxKSwgdGhlbiBydW4gcmVjdXJzaXZlIGNhbGwgdG8gcGVyZm9ybSB0aGUgY2hlY2tcbiAgICAgICAgLy8gYWxsIHRoZSB3YXkgdXAgdG8gdGhlIHZlcnkgcGFyZW50IG5vZGUuIFVzZSByZWN1cnNpdmUgY2FsbCBoZXJlIGluc3RlYWQgb2YgYSB3aGlsZSBsb29wIHNvIHRoYXQgd2UgZG8gbm90XG4gICAgICAgIC8vIGhhdmUgdG8gZHVwbGljYXRlIHRoZSBsb2dpYyBmb3IgY2hlY2tpbmcgaWYgdGhlIG5vZGUgaXMgZGlzYWJsZWQgb3Igbm90IGZvciBhbGwgdGhlIHBhcmVudHMgc3RhcnRpbmcgd2l0aFxuICAgICAgICAvLyBjaGlsZCBub2RlLlxuICAgICAgICBpZiAocGFyZW50RWxlbWVudCAhPSBudWxsICYmIHBhcmVudEVsZW1lbnQubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIHVwd2FyZHMgcmVjdXJzaXZlbHksIGFuZCBzYXZlIHRoZSByZXN1bHRzIGluIGFuIHZhcmlhYmxlXG4gICAgICAgICAgICBsZXQgbm9kZURpc2FibGVkID0gUlBUVXRpbC5pc05vZGVEaXNhYmxlZChwYXJlbnRFbGVtZW50KTtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgZm91bmQgdG8gYmUgZGlzYWJsZWQgdGhlbiBhZGQgdGhlIGN1c3RvbSBQVF9OT0RFX0RJU0FCTEVEIHRvIHRydWUuXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHdlIGNhbiB1c2UgdGhpcyBuZXh0IHRpbWUsIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIG5vZGUgaXMgZGlzYWJsZWQgb3Igbm90LlxuICAgICAgICAgICAgLy8gVGhpcyBpcyBleHRyYSBwZXJjYXV0aW9uLCB0aGUgaXNOb2RlRGlzYWJsZWQgZnVuY3Rpb24gYWxyZWFkeSBzZXRzIHRoaXMuXG4gICAgICAgICAgICBpZiAobm9kZURpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgUFRfTk9ERV9ESVNBQkxFRCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHVwd2FyZHMgcmVjdXJzaXZlbHlcbiAgICAgICAgICAgIFJQVFV0aWwuc2V0Q2FjaGUobm9kZSwgXCJQVF9OT0RFX0RJU0FCTEVEXCIsIFBUX05PREVfRElTQUJMRUQpO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVEaXNhYmxlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiBmYWxzZSAobm9kZSBpcyBub3QgZGlzYWJsZWQpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmUgaWYgaGlkZGVuIGNvbnRlbnQgc2hvdWxkIGJlIGNoZWNrZWRcbiAgICAgKiBpbiBydWxlcy5cbiAgICAgKlxuICAgICAqIEBwYXJtIHtlbGVtZW50fSBub2RlIC0gQSBub2RlIHNvIHRoYXQgdGhlIGRvY3VtZW50IGNhbiBiZSBhY2Nlc3NlZCB0byBjaGVjayBmb3IgdGhlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uIENhbiBiZSBkb2N1bWVudCBlbGVtZW50IG9yIGEgc2ltcGxlIG5vZGUgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJuIHtib29sfSB0cnVlIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBiZSBjaGVja2VkLCBmYWxzZSBvdGhlcndpc2VcbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBSUFRVdGlsXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBzaG91bGRDaGVja0hpZGRlbkNvbnRlbnQobm9kZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgaWYgbm9kZSBzaG91bGQgYmUgc2tpcHBlZCBmcm9tIGNoZWNraW5nIG9yIG5vdCwgYmFzZWRcbiAgICAgKiBvbiB0aGUgQ2hlY2sgSGlkZGVuIENvbnRlbnQgc2V0dGluZ3MgYW5kIGlmIHRoZSBub2RlIGlzIHZpc2libGUgb3Igbm90LlxuICAgICAqXG4gICAgICogQHBhcm0ge2VsZW1lbnR9IG5vZGUgLSBOb2RlIHRvIGNoZWNrIGlmIGl0IGlzIHZpc2libGUgb3Igbm90IGJhc2VkIG9uIHRoZSBDaGVjayBIaWRkZW4gQ29udGVudFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2Jvb2x9IHRydWUgaWYgbm9kZSBzaG91bGQgYmUgc2tpcHBlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgUlBUVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgc2hvdWxkTm9kZUJlU2tpcHBlZEhpZGRlbihub2RlKSB7XG4gICAgICAgIC8vIEZvbGxvd2luZyBhcmUgdGhlIHN0ZXBzIHRoYXQgYXJlIGV4ZWN1dGVkIGF0IHRoaXMgc3RhZ2UgdG8gZGV0ZXJtaW5lIGlmIHRoZSBub2RlIHNob3VsZCBiZSBjbGFzc2lmaWVkIGFzIGhpZGRlblxuICAgICAgICAvLyBvciBub3QuXG4gICAgICAgIC8vICAxLiBPbmx5IHJ1biBpc05vZGVWaXNpYmxlIGNoZWNrIGlmIGhpZGRlbiBjb250ZW50IHNob3VsZCBOT1QgYmUgY2hlY2tlZC4gSW4gdGhlIGNhc2UgdGhhdCBoaWRkZW4gY29udGVudCBpcyB0byxcbiAgICAgICAgLy8gICAgIGJlIHNjYW5uZWQgdGhlbiB3ZSBjYW4ganVzdCBzY2FuIGV2ZXJ5dGhpbmcgYXMgbm9ybWFsLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgaGlkZGVuIHdlXG4gICAgICAgIC8vICAgICByZXR1cm4gdHJ1ZSB0byBpZGVudGlmeSB0aGF0IHRoZSBub2RlIHNob3VsZCBub3QgYmUgc2Nhbm5lZC9hZGRlZCB0byBhbnkgaGFzaC9hcnJheS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gTm90ZTogVGhlIGlmIGNvbmRpdGlvbnMgdXNlcyBzaG9ydC1jaXJjdWl0aW5nIHNvIGlmIHRoZSBmaXJzdCBjb25kaXRpb24gaXMgbm90IHRydWUgaXQgd2lsbCBub3QgY2hlY2sgdGhlIG5leHQgb25lLFxuICAgICAgICAvLyAgICAgICBzbyBvbiBhbmQgc28gZm9ydGguXG4gICAgICAgIGlmICghUlBUVXRpbC5zaG91bGRDaGVja0hpZGRlbkNvbnRlbnQobm9kZSkgJiYgIVJQVFV0aWwuaXNOb2RlVmlzaWJsZShub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc2ZvY3VzYWJsZUJ5RGVmYXVsdChub2RlKSB7XG4gICAgICAgIHZhciBmb2N1c2FibGVFbGVtZW50cyA9IFsnaW5wdXQnLCAnc2VsZWN0JywgJ2J1dHRvbicsICd0ZXh0YXJlYScsICdvcHRpb24nLCAnYXJlYSddO1xuICAgICAgICBpZiAobm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImFcIiAmJiBSUFRVdGlsLmhhc0F0dHJpYnV0ZShub2RlLCAnaHJlZicpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJhcmVhXCIgJiYgUlBUVXRpbC5oYXNBdHRyaWJ1dGUobm9kZSwgJ2hyZWYnKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChmb2N1c2FibGVFbGVtZW50cy5pbmRleE9mKG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgIT0gLTEpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBjaGVjayBpZiBhIG5vbi10YWJhYmxlIG5vZGUgaGFzIHZhbGlkIHRhYmFibGUgY29udGVudC5cbiAgICAgKiBJZiBpdCBpcyB0YWJhYmxlICh0aGUgdGFiaW5kZXggaXMgbm90IHNwZWljaWZpZWQgb3IgaXMgbm90IC0xKSwgcmV0dXJucyBmYWxzZTtcbiAgICAgKiBJZiBpdCBpcyBub24tdGFiYWJsZSwgYnV0IGEgY2hpbGQgaXMgdGFiYWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBlbGVtZW50IGNvbnRlbnQsIHJldHVybnMgZmFsc2U7XG4gICAgICogT3RoZXJ3aXNlLCByZXR1cm5zIHRydWUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBub25UYWJhYmxlQ2hpbGRDaGVjayhlbGVtZW50IDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIikgfHxcbiAgICAgICAgICAgIChwYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpKSAhPSAtMSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbncgPSBuZXcgTm9kZVdhbGtlcihlbGVtZW50KTtcbiAgICAgICAgd2hpbGUgKG53Lm5leHROb2RlKCkpIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCA9IG53LmVsZW0oKTtcbiAgICAgICAgICAgIGlmIChjaGlsZCA9PT0gbnVsbCkgeyAvLyBUZXh0IG5vZGUuIHVzdWFsbHkgaXMgYSBjYXJ0cmlkZ2UgcmV0dXJuLlxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoaWxkLmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpICYmXG4gICAgICAgICAgICAgICAgKHBhcnNlSW50KGNoaWxkLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpKSAhPSAtMSkgJiZcbiAgICAgICAgICAgICAgICAhUlBUVXRpbC5oYXNJbm5lckNvbnRlbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgQ1NTQ29sb3JMb29rdXAgPSB7XG4gICAgICAgIFwiYWxpY2VibHVlXCI6IFwiI2YwZjhmZlwiLFxuICAgICAgICBcImFudGlxdWV3aGl0ZVwiOiBcIiNmYWViZDdcIixcbiAgICAgICAgXCJhcXVhXCI6IFwiIzAwZmZmZlwiLFxuICAgICAgICBcImFxdWFtYXJpbmVcIjogXCIjN2ZmZmQ0XCIsXG4gICAgICAgIFwiYXp1cmVcIjogXCIjZjBmZmZmXCIsXG4gICAgICAgIFwiYmVpZ2VcIjogXCIjZjVmNWRjXCIsXG4gICAgICAgIFwiYmlzcXVlXCI6IFwiI2ZmZTRjNFwiLFxuICAgICAgICBcImJsYWNrXCI6IFwiIzAwMDAwMFwiLFxuICAgICAgICBcImJsYW5jaGVkYWxtb25kXCI6IFwiI2ZmZWJjZFwiLFxuICAgICAgICBcImJsdWVcIjogXCIjMDAwMGZmXCIsXG4gICAgICAgIFwiYmx1ZXZpb2xldFwiOiBcIiM4YTJiZTJcIixcbiAgICAgICAgXCJicm93blwiOiBcIiNhNTJhMmFcIixcbiAgICAgICAgXCJidXJseXdvb2RcIjogXCIjZGViODg3XCIsXG4gICAgICAgIFwiY2FkZXRibHVlXCI6IFwiIzVmOWVhMFwiLFxuICAgICAgICBcImNoYXJ0cmV1c2VcIjogXCIjN2ZmZjAwXCIsXG4gICAgICAgIFwiY2hvY29sYXRlXCI6IFwiI2QyNjkxZVwiLFxuICAgICAgICBcImNvcmFsXCI6IFwiI2ZmN2Y1MFwiLFxuICAgICAgICBcImNvcm5mbG93ZXJibHVlXCI6IFwiIzY0OTVlZFwiLFxuICAgICAgICBcImNvcm5zaWxrXCI6IFwiI2ZmZjhkY1wiLFxuICAgICAgICBcImNyaW1zb25cIjogXCIjZGMxNDNjXCIsXG4gICAgICAgIFwiY3lhblwiOiBcIiMwMGZmZmZcIixcbiAgICAgICAgXCJkYXJrYmx1ZVwiOiBcIiMwMDAwOGJcIixcbiAgICAgICAgXCJkYXJrY3lhblwiOiBcIiMwMDhiOGJcIixcbiAgICAgICAgXCJkYXJrZ29sZGVucm9kXCI6IFwiI2I4ODYwYlwiLFxuICAgICAgICBcImRhcmtncmF5XCI6IFwiI2E5YTlhOVwiLFxuICAgICAgICBcImRhcmtncmVlblwiOiBcIiMwMDY0MDBcIixcbiAgICAgICAgXCJkYXJra2hha2lcIjogXCIjYmRiNzZiXCIsXG4gICAgICAgIFwiZGFya21hZ2VudGFcIjogXCIjOGIwMDhiXCIsXG4gICAgICAgIFwiZGFya29saXZlZ3JlZW5cIjogXCIjNTU2YjJmXCIsXG4gICAgICAgIFwiZGFya29yYW5nZVwiOiBcIiNmZjhjMDBcIixcbiAgICAgICAgXCJkYXJrb3JjaGlkXCI6IFwiIzk5MzJjY1wiLFxuICAgICAgICBcImRhcmtyZWRcIjogXCIjOGIwMDAwXCIsXG4gICAgICAgIFwiZGFya3NhbG1vblwiOiBcIiNlOTk2N2FcIixcbiAgICAgICAgXCJkYXJrc2VhZ3JlZW5cIjogXCIjOGZiYzhmXCIsXG4gICAgICAgIFwiZGFya3NsYXRlYmx1ZVwiOiBcIiM0ODNkOGJcIixcbiAgICAgICAgXCJkYXJrc2xhdGVncmF5XCI6IFwiIzJmNGY0ZlwiLFxuICAgICAgICBcImRhcmt0dXJxdW9pc2VcIjogXCIjMDBjZWQxXCIsXG4gICAgICAgIFwiZGFya3Zpb2xldFwiOiBcIiM5NDAwZDNcIixcbiAgICAgICAgXCJkZWVwcGlua1wiOiBcIiNmZjE0OTNcIixcbiAgICAgICAgXCJkZWVwc2t5Ymx1ZVwiOiBcIiMwMGJmZmZcIixcbiAgICAgICAgXCJkaW1ncmF5XCI6IFwiIzY5Njk2OVwiLFxuICAgICAgICBcImRvZGdlcmJsdWVcIjogXCIjMWU5MGZmXCIsXG4gICAgICAgIFwiZmlyZWJyaWNrXCI6IFwiI2IyMjIyMlwiLFxuICAgICAgICBcImZsb3JhbHdoaXRlXCI6IFwiI2ZmZmFmMFwiLFxuICAgICAgICBcImZvcmVzdGdyZWVuXCI6IFwiIzIyOGIyMlwiLFxuICAgICAgICBcImZ1Y2hzaWFcIjogXCIjZmYwMGZmXCIsXG4gICAgICAgIFwiZ2FpbnNib3JvXCI6IFwiI2RjZGNkY1wiLFxuICAgICAgICBcImdob3N0d2hpdGVcIjogXCIjZjhmOGZmXCIsXG4gICAgICAgIFwiZ29sZFwiOiBcIiNmZmQ3MDBcIixcbiAgICAgICAgXCJnb2xkZW5yb2RcIjogXCIjZGFhNTIwXCIsXG4gICAgICAgIFwiZ3JheVwiOiBcIiM4MDgwODBcIixcbiAgICAgICAgXCJncmVlblwiOiBcIiMwMDgwMDBcIixcbiAgICAgICAgXCJncmVlbnllbGxvd1wiOiBcIiNhZGZmMmZcIixcbiAgICAgICAgXCJob25leWRld1wiOiBcIiNmMGZmZjBcIixcbiAgICAgICAgXCJob3RwaW5rXCI6IFwiI2ZmNjliNFwiLFxuICAgICAgICBcImluZGlhbnJlZFwiOiBcIiNjZDVjNWNcIixcbiAgICAgICAgXCJpbmRpZ29cIjogXCIjNGIwMDgyXCIsXG4gICAgICAgIFwiaXZvcnlcIjogXCIjZmZmZmYwXCIsXG4gICAgICAgIFwia2hha2lcIjogXCIjZjBlNjhjXCIsXG4gICAgICAgIFwibGF2ZW5kZXJcIjogXCIjZTZlNmZhXCIsXG4gICAgICAgIFwibGF2ZW5kZXJibHVzaFwiOiBcIiNmZmYwZjVcIixcbiAgICAgICAgXCJsYXduZ3JlZW5cIjogXCIjN2NmYzAwXCIsXG4gICAgICAgIFwibGVtb25jaGlmZm9uXCI6IFwiI2ZmZmFjZFwiLFxuICAgICAgICBcImxpZ2h0Ymx1ZVwiOiBcIiNhZGQ4ZTZcIixcbiAgICAgICAgXCJsaWdodGNvcmFsXCI6IFwiI2YwODA4MFwiLFxuICAgICAgICBcImxpZ2h0Y3lhblwiOiBcIiNlMGZmZmZcIixcbiAgICAgICAgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiOiBcIiNmYWZhZDJcIixcbiAgICAgICAgXCJsaWdodGdyZXlcIjogXCIjZDNkM2QzXCIsXG4gICAgICAgIFwibGlnaHRncmVlblwiOiBcIiM5MGVlOTBcIixcbiAgICAgICAgXCJsaWdodHBpbmtcIjogXCIjZmZiNmMxXCIsXG4gICAgICAgIFwibGlnaHRzYWxtb25cIjogXCIjZmZhMDdhXCIsXG4gICAgICAgIFwibGlnaHRzZWFncmVlblwiOiBcIiMyMGIyYWFcIixcbiAgICAgICAgXCJsaWdodHNreWJsdWVcIjogXCIjODdjZWZhXCIsXG4gICAgICAgIFwibGlnaHRzbGF0ZWdyYXlcIjogXCIjNzc4ODk5XCIsXG4gICAgICAgIFwibGlnaHRzdGVlbGJsdWVcIjogXCIjYjBjNGRlXCIsXG4gICAgICAgIFwibGlnaHR5ZWxsb3dcIjogXCIjZmZmZmUwXCIsXG4gICAgICAgIFwibGltZVwiOiBcIiMwMGZmMDBcIixcbiAgICAgICAgXCJsaW1lZ3JlZW5cIjogXCIjMzJjZDMyXCIsXG4gICAgICAgIFwibGluZW5cIjogXCIjZmFmMGU2XCIsXG4gICAgICAgIFwibWFnZW50YVwiOiBcIiNmZjAwZmZcIixcbiAgICAgICAgXCJtYXJvb25cIjogXCIjODAwMDAwXCIsXG4gICAgICAgIFwibWVkaXVtYXF1YW1hcmluZVwiOiBcIiM2NmNkYWFcIixcbiAgICAgICAgXCJtZWRpdW1ibHVlXCI6IFwiIzAwMDBjZFwiLFxuICAgICAgICBcIm1lZGl1bW9yY2hpZFwiOiBcIiNiYTU1ZDNcIixcbiAgICAgICAgXCJtZWRpdW1wdXJwbGVcIjogXCIjOTM3MGQ4XCIsXG4gICAgICAgIFwibWVkaXVtc2VhZ3JlZW5cIjogXCIjM2NiMzcxXCIsXG4gICAgICAgIFwibWVkaXVtc2xhdGVibHVlXCI6IFwiIzdiNjhlZVwiLFxuICAgICAgICBcIm1lZGl1bXNwcmluZ2dyZWVuXCI6IFwiIzAwZmE5YVwiLFxuICAgICAgICBcIm1lZGl1bXR1cnF1b2lzZVwiOiBcIiM0OGQxY2NcIixcbiAgICAgICAgXCJtZWRpdW12aW9sZXRyZWRcIjogXCIjYzcxNTg1XCIsXG4gICAgICAgIFwibWlkbmlnaHRibHVlXCI6IFwiIzE5MTk3MFwiLFxuICAgICAgICBcIm1pbnRjcmVhbVwiOiBcIiNmNWZmZmFcIixcbiAgICAgICAgXCJtaXN0eXJvc2VcIjogXCIjZmZlNGUxXCIsXG4gICAgICAgIFwibW9jY2FzaW5cIjogXCIjZmZlNGI1XCIsXG4gICAgICAgIFwibmF2YWpvd2hpdGVcIjogXCIjZmZkZWFkXCIsXG4gICAgICAgIFwibmF2eVwiOiBcIiMwMDAwODBcIixcbiAgICAgICAgXCJvbGRsYWNlXCI6IFwiI2ZkZjVlNlwiLFxuICAgICAgICBcIm9saXZlXCI6IFwiIzgwODAwMFwiLFxuICAgICAgICBcIm9saXZlZHJhYlwiOiBcIiM2YjhlMjNcIixcbiAgICAgICAgXCJvcmFuZ2VcIjogXCIjZmZhNTAwXCIsXG4gICAgICAgIFwib3JhbmdlcmVkXCI6IFwiI2ZmNDUwMFwiLFxuICAgICAgICBcIm9yY2hpZFwiOiBcIiNkYTcwZDZcIixcbiAgICAgICAgXCJwYWxlZ29sZGVucm9kXCI6IFwiI2VlZThhYVwiLFxuICAgICAgICBcInBhbGVncmVlblwiOiBcIiM5OGZiOThcIixcbiAgICAgICAgXCJwYWxldHVycXVvaXNlXCI6IFwiI2FmZWVlZVwiLFxuICAgICAgICBcInBhbGV2aW9sZXRyZWRcIjogXCIjZDg3MDkzXCIsXG4gICAgICAgIFwicGFwYXlhd2hpcFwiOiBcIiNmZmVmZDVcIixcbiAgICAgICAgXCJwZWFjaHB1ZmZcIjogXCIjZmZkYWI5XCIsXG4gICAgICAgIFwicGVydVwiOiBcIiNjZDg1M2ZcIixcbiAgICAgICAgXCJwaW5rXCI6IFwiI2ZmYzBjYlwiLFxuICAgICAgICBcInBsdW1cIjogXCIjZGRhMGRkXCIsXG4gICAgICAgIFwicG93ZGVyYmx1ZVwiOiBcIiNiMGUwZTZcIixcbiAgICAgICAgXCJwdXJwbGVcIjogXCIjODAwMDgwXCIsXG4gICAgICAgIFwicmVkXCI6IFwiI2ZmMDAwMFwiLFxuICAgICAgICBcInJvc3licm93blwiOiBcIiNiYzhmOGZcIixcbiAgICAgICAgXCJyb3lhbGJsdWVcIjogXCIjNDE2OWUxXCIsXG4gICAgICAgIFwic2FkZGxlYnJvd25cIjogXCIjOGI0NTEzXCIsXG4gICAgICAgIFwic2FsbW9uXCI6IFwiI2ZhODA3MlwiLFxuICAgICAgICBcInNhbmR5YnJvd25cIjogXCIjZjRhNDYwXCIsXG4gICAgICAgIFwic2VhZ3JlZW5cIjogXCIjMmU4YjU3XCIsXG4gICAgICAgIFwic2Vhc2hlbGxcIjogXCIjZmZmNWVlXCIsXG4gICAgICAgIFwic2llbm5hXCI6IFwiI2EwNTIyZFwiLFxuICAgICAgICBcInNpbHZlclwiOiBcIiNjMGMwYzBcIixcbiAgICAgICAgXCJza3libHVlXCI6IFwiIzg3Y2VlYlwiLFxuICAgICAgICBcInNsYXRlYmx1ZVwiOiBcIiM2YTVhY2RcIixcbiAgICAgICAgXCJzbGF0ZWdyYXlcIjogXCIjNzA4MDkwXCIsXG4gICAgICAgIFwic25vd1wiOiBcIiNmZmZhZmFcIixcbiAgICAgICAgXCJzcHJpbmdncmVlblwiOiBcIiMwMGZmN2ZcIixcbiAgICAgICAgXCJzdGVlbGJsdWVcIjogXCIjNDY4MmI0XCIsXG4gICAgICAgIFwidGFuXCI6IFwiI2QyYjQ4Y1wiLFxuICAgICAgICBcInRlYWxcIjogXCIjMDA4MDgwXCIsXG4gICAgICAgIFwidGhpc3RsZVwiOiBcIiNkOGJmZDhcIixcbiAgICAgICAgXCJ0b21hdG9cIjogXCIjZmY2MzQ3XCIsXG4gICAgICAgIFwidHVycXVvaXNlXCI6IFwiIzQwZTBkMFwiLFxuICAgICAgICBcInZpb2xldFwiOiBcIiNlZTgyZWVcIixcbiAgICAgICAgXCJ3aGVhdFwiOiBcIiNmNWRlYjNcIixcbiAgICAgICAgXCJ3aGl0ZVwiOiBcIiNmZmZmZmZcIixcbiAgICAgICAgXCJ3aGl0ZXNtb2tlXCI6IFwiI2Y1ZjVmNVwiLFxuICAgICAgICBcInllbGxvd1wiOiBcIiNmZmZmMDBcIixcbiAgICAgICAgXCJ5ZWxsb3dncmVlblwiOiBcIiM5YWNkMzJcIixcbiAgICAgICAgXCJidXR0b250ZXh0XCI6IFwicmdiYSgwLCAwLCAwLCAwLjg0NylcIixcbiAgICAgICAgXCJidXR0b25mYWNlXCI6IFwiI2ZmZmZmZlwiLFxuICAgICAgICBcImdyYXl0ZXh0XCI6IFwicmdiYSgwLCAwLCAwLCAwLjI0NylcIlxuICAgIH1cblxuXG4gICAgLy8gUmV3cml0ZSB0aGUgY29sb3Igb2JqZWN0IHRvIGFjY291bnQgZm9yIGFscGhhXG4gICAgcHVibGljIHN0YXRpYyBDb2xvcihjc3NTdHlsZUNvbG9yKSB7XG4gICAgICAgIGNzc1N0eWxlQ29sb3IgPSBjc3NTdHlsZUNvbG9yLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChjc3NTdHlsZUNvbG9yID09PSBcInRyYW5zcGFyZW50XCIpIHJldHVybiBuZXcgQ29sb3JPYmooMjU1LCAyNTUsIDI1NSwgMCk7XG4gICAgICAgIGlmIChjc3NTdHlsZUNvbG9yIGluIFJQVFV0aWwuQ1NTQ29sb3JMb29rdXApXG4gICAgICAgICAgICBjc3NTdHlsZUNvbG9yID0gUlBUVXRpbC5DU1NDb2xvckxvb2t1cFtjc3NTdHlsZUNvbG9yXTtcbiAgICAgICAgaWYgKGNzc1N0eWxlQ29sb3Iuc3RhcnRzV2l0aChcInJnYihcIikpIHtcbiAgICAgICAgICAgIGxldCByZ2JSZWdleCA9IC9cXHMqcmdiXFxzKlxcKFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqLFxccyooXFxkKylcXHMqXFwpLztcbiAgICAgICAgICAgIGxldCBtID0gY3NzU3R5bGVDb2xvci5tYXRjaChyZ2JSZWdleCk7XG4gICAgICAgICAgICBpZiAobSA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yT2JqKG1bMV0sIG1bMl0sIG1bM10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNzc1N0eWxlQ29sb3Iuc3RhcnRzV2l0aChcInJnYmEoXCIpKSB7XG4gICAgICAgICAgICBsZXQgcmdiUmVnZXggPSAvXFxzKnJnYmFcXHMqXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKiguKylcXHMqXFwpLztcbiAgICAgICAgICAgIGxldCBtID0gY3NzU3R5bGVDb2xvci5tYXRjaChyZ2JSZWdleCk7XG4gICAgICAgICAgICBpZiAobSA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yT2JqKG1bMV0sIG1bMl0sIG1bM10sIG1bNF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNzc1N0eWxlQ29sb3IuY2hhckF0KDApICE9IFwiI1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjc3NTdHlsZUNvbG9yLmxlbmd0aCA9PT0gNCkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSB0aHJlZS1kaWdpdCBSR0IgKCNyZ2IpIGlzIGNvbnZlcnRlZCB0byBzaXgtZGlnaXQgZm9ybSAoI3JyZ2diYikgYnkgcmVwbGljYXRpbmcgZGlnaXRzXG4gICAgICAgICAgICAgICAgLy8gKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtY29sb3ItMy8jcmdiLWNvbG9yKVxuICAgICAgICAgICAgICAgIGNzc1N0eWxlQ29sb3IgPSBcIiNcIiArIGNzc1N0eWxlQ29sb3IuY2hhckF0KDEpLnJlcGVhdCgyKSArXG4gICAgICAgICAgICAgICAgICAgIGNzc1N0eWxlQ29sb3IuY2hhckF0KDIpLnJlcGVhdCgyKSArXG4gICAgICAgICAgICAgICAgICAgIGNzc1N0eWxlQ29sb3IuY2hhckF0KDMpLnJlcGVhdCgyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0aGlzUmVkID0gcGFyc2VJbnQoY3NzU3R5bGVDb2xvci5zdWJzdHJpbmcoMSwgMyksIDE2KTtcbiAgICAgICAgICAgIGxldCB0aGlzR3JlZW4gPSBwYXJzZUludChjc3NTdHlsZUNvbG9yLnN1YnN0cmluZygzLCA1KSwgMTYpO1xuICAgICAgICAgICAgbGV0IHRoaXNCbHVlID0gcGFyc2VJbnQoY3NzU3R5bGVDb2xvci5zdWJzdHJpbmcoNSwgNyksIDE2KTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29sb3JPYmoodGhpc1JlZCwgdGhpc0dyZWVuLCB0aGlzQmx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gICAgcmV0dXJuIG51bGw7IC8vIFVucmVhY2hhYmxlXG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgQ29sb3JDb21ibyhydWxlQ29udGV4dCA6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHZhciBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdpbiA9IGRvYy5kZWZhdWx0VmlldztcbiAgICAgICAgaWYgKCF3aW4pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICBsZXQgd2Fsa05vZGUgOiBFbGVtZW50ID0gcnVsZUNvbnRleHQ7XG4gICAgICAgIHdoaWxlICh3YWxrTm9kZSkge1xuICAgICAgICAgICAgaWYgKHdhbGtOb2RlLm5vZGVUeXBlID09PSAxKVxuICAgICAgICAgICAgICAgIGFuY2VzdG9ycy5wdXNoKHdhbGtOb2RlKTtcbiAgICAgICAgICAgIHdhbGtOb2RlID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KHdhbGtOb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZXRWYWwgPSB7XG4gICAgICAgICAgICBcImhhc0dyYWRpZW50XCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJoYXNCR0ltYWdlXCI6IGZhbHNlLFxuICAgICAgICAgICAgXCJmZ1wiOiBudWxsLFxuICAgICAgICAgICAgXCJiZ1wiOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIHZhciBjb21wU3R5bGVDb2xvciA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKHJ1bGVDb250ZXh0KS5jb2xvcjtcbiAgICAgICAgaWYgKCFjb21wU3R5bGVDb2xvcilcbiAgICAgICAgICAgIGNvbXBTdHlsZUNvbG9yID0gXCJibGFja1wiO1xuICAgICAgICB2YXIgZmcgPSBSUFRVdGlsLkNvbG9yKGNvbXBTdHlsZUNvbG9yKTtcblxuICAgICAgICB2YXIgcmVDb2xvciA9IC90cmFuc3BhcmVudHxyZ2JhP1xcKFteKV0rXFwpL2dpO1xuICAgICAgICB2YXIgZ3Vlc3NHcmFkQ29sb3IgPSBmdW5jdGlvbiAoZ3JhZExpc3QsIGJnQ29sb3IsIGZnQ29sb3IpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBvbmx5IG9uZSBjb2xvciwgcmV0dXJuIHRoYXRcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGdyYWRMaXN0Lmxlbmd0aCA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyYWRMaXN0O1xuXG4gICAgICAgICAgICAgICAgdmFyIG92ZXJhbGxXb3JzdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdmFyIG92ZXJhbGxXb3JzdFJhdGlvID0gbnVsbDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpR3JhZCA9IDE7IGlHcmFkIDwgZ3JhZExpc3QubGVuZ3RoOyArK2lHcmFkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB3b3JzdENvbG9yID0gZ3JhZExpc3RbaUdyYWQgLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdvcnN0UmF0aW8gPSBmZ0NvbG9yLmNvbnRyYXN0UmF0aW8oZ3JhZExpc3RbaUdyYWQgLSAxXSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGVwID0gLjE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSAwO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3RlcCA+IC4wMDAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaWR4ICsgc3RlcCA8PSAxICYmIHdvcnN0UmF0aW8gPiBmZ0NvbG9yLmNvbnRyYXN0UmF0aW8oZ3JhZExpc3RbaUdyYWRdLm1peChncmFkTGlzdFtpR3JhZCAtIDFdLCBpZHggKyBzdGVwKS5nZXRPdmVybGF5Q29sb3IoYmdDb2xvcikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yc3RDb2xvciA9IGdyYWRMaXN0W2lHcmFkXS5taXgoZ3JhZExpc3RbaUdyYWQgLSAxXSwgaWR4ICsgc3RlcCkuZ2V0T3ZlcmxheUNvbG9yKGJnQ29sb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcnN0UmF0aW8gPSBmZ0NvbG9yLmNvbnRyYXN0UmF0aW8od29yc3RDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gaWR4ICsgc3RlcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpZHggLSBzdGVwID49IDAgJiYgd29yc3RSYXRpbyA+IGZnQ29sb3IuY29udHJhc3RSYXRpbyhncmFkTGlzdFtpR3JhZF0ubWl4KGdyYWRMaXN0W2lHcmFkIC0gMV0sIGlkeCAtIHN0ZXApLmdldE92ZXJsYXlDb2xvcihiZ0NvbG9yKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JzdENvbG9yID0gZ3JhZExpc3RbaUdyYWRdLm1peChncmFkTGlzdFtpR3JhZCAtIDFdLCBpZHggLSBzdGVwKS5nZXRPdmVybGF5Q29sb3IoYmdDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yc3RSYXRpbyA9IGZnQ29sb3IuY29udHJhc3RSYXRpbyh3b3JzdENvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBpZHggLSBzdGVwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcCA9IHN0ZXAgLyAxMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmFsbFdvcnN0UmF0aW8gPT09IG51bGwgfHwgb3ZlcmFsbFdvcnN0UmF0aW8gPiB3b3JzdFJhdGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyYWxsV29yc3RSYXRpbyA9IHdvcnN0UmF0aW87XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyYWxsV29yc3QgPSB3b3JzdENvbG9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvdmVyYWxsV29yc3Q7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYmdDb2xvcjtcbiAgICAgICAgfTtcblxuICAgICAgICB2YXIgcHJpb3JTdGFja0JHID0gUlBUVXRpbC5Db2xvcihcIndoaXRlXCIpO1xuICAgICAgICB2YXIgdGhpc1N0YWNrT3BhY2l0eSA9IG51bGw7XG4gICAgICAgIHZhciB0aGlzU3RhY2tBbHBoYSA9IG51bGw7XG4gICAgICAgIHZhciB0aGlzU3RhY2tCRyA9IG51bGw7XG4gICAgICAgIC8vIEFuY2VzdG9ycyBwcm9jZXNzZWQgZnJvbSB0aGUgdG9wbW9zdCBwYXJlbnQgdG93YXJkIHRoZSBjaGlsZFxuICAgICAgICB3aGlsZSAoYW5jZXN0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhciBwcm9jTmV4dCA9IGFuY2VzdG9ycy5wb3AoKTtcbiAgICAgICAgICAgIC8vIGNTdHlsZSBpcyB0aGUgY29tcHV0ZWQgc3R5bGUgb2YgdGhpcyBsYXllclxuICAgICAgICAgICAgdmFyIGNTdHlsZSA9IHdpbi5nZXRDb21wdXRlZFN0eWxlKHByb2NOZXh0KTtcbiAgICAgICAgICAgIGlmIChjU3R5bGUgPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAvLyB0aGlzQmdDb2xvciBpcyB0aGUgY29sb3Igb2YgdGhpcyBsYXllciBvciBudWxsIGlmIHRoZSBsYXllciBpcyB0cmFuc3BhcmVudFxuICAgICAgICAgICAgdmFyIHRoaXNCZ0NvbG9yID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChjU3R5bGUuYmFja2dyb3VuZENvbG9yICYmIGNTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgIT0gXCJ0cmFuc3BhcmVudFwiICYmIGNTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgIT0gXCJyZ2JhKDAsIDAsIDAsIDApXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzQmdDb2xvciA9IFJQVFV0aWwuQ29sb3IoY1N0eWxlLmJhY2tncm91bmRDb2xvcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgZ3JhZGllbnQgaW52b2x2ZWQsIHNldCB0aGlzQmdDb2xvciB0byB0aGUgd29yc3QgY29sb3IgY29tYmluYXRpb24gYXZhaWxhYmxlIGFnYWluc3QgdGhlIGZvcmVncm91bmRcbiAgICAgICAgICAgIGlmIChjU3R5bGUuYmFja2dyb3VuZEltYWdlICYmIGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UuaW5kZXhPZiAmJiBjU3R5bGUuYmFja2dyb3VuZEltYWdlLmluZGV4T2YoXCJncmFkaWVudFwiKSAhPSAtMSkge1xuICAgICAgICAgICAgICAgIHZhciBncmFkQ29sb3JzIDogc3RyaW5nW10gPSBjU3R5bGUuYmFja2dyb3VuZEltYWdlLm1hdGNoKHJlQ29sb3IpO1xuICAgICAgICAgICAgICAgIGlmIChncmFkQ29sb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBncmFkQ29sb3JDb21wIDogQ29sb3JPYmpbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYWRDb2xvcnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ3JhZENvbG9yc1tpXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFkQ29sb3JzLnNwbGljZShpLS0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFkQ29sb3JDb21wLnB1c2goUlBUVXRpbC5Db2xvcihncmFkQ29sb3JzW2ldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpc0JnQ29sb3IgPSBndWVzc0dyYWRDb2xvcihncmFkQ29sb3JDb21wLCB0aGlzU3RhY2tCRyB8fCBwcmlvclN0YWNrQkcsIGZnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSBub24tc29saWQgb3BhY2l0eVxuICAgICAgICAgICAgaWYgKHRoaXNTdGFja09wYWNpdHkgPT09IG51bGwgfHwgKGNTdHlsZS5vcGFjaXR5ICYmIGNTdHlsZS5vcGFjaXR5Lmxlbmd0aCA+IDAgJiYgcGFyc2VGbG9hdChjU3R5bGUub3BhY2l0eSkgPCAxKSkge1xuICAgICAgICAgICAgICAgIC8vIE5ldyBzdGFjaywgcmVzZXRcbiAgICAgICAgICAgICAgICBpZiAodGhpc1N0YWNrQkcgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBPdmVybGF5XG4gICAgICAgICAgICAgICAgICAgIHRoaXNTdGFja0JHLmFscGhhID0gdGhpc1N0YWNrT3BhY2l0eSAqIHRoaXNTdGFja0FscGhhO1xuICAgICAgICAgICAgICAgICAgICBwcmlvclN0YWNrQkcgPSB0aGlzU3RhY2tCRy5nZXRPdmVybGF5Q29sb3IocHJpb3JTdGFja0JHKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpc1N0YWNrT3BhY2l0eSA9IDEuMDtcbiAgICAgICAgICAgICAgICB0aGlzU3RhY2tBbHBoYSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpc1N0YWNrQkcgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChjU3R5bGUub3BhY2l0eSAmJiBjU3R5bGUub3BhY2l0eS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNTdGFja09wYWNpdHkgPSBwYXJzZUZsb2F0KGNTdHlsZS5vcGFjaXR5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNCZ0NvbG9yICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1N0YWNrQkcgPSB0aGlzQmdDb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1N0YWNrQWxwaGEgPSB0aGlzU3RhY2tCRy5hbHBoYSB8fCAxLjA7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzU3RhY2tCRy5hbHBoYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNTdGFja09wYWNpdHkgPT09IDEuMCAmJiB0aGlzU3RhY2tBbHBoYSA9PT0gMS4wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwuaGFzQkdJbWFnZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsLmhhc0dyYWRpZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBIYW5kbGUgc29saWQgY29sb3IgYmFja2dyb3VuZHMgYW5kIGdyYWRpZW50IGNvbG9yIGJhY2tncm91bmRzXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzQmdDb2xvciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBzdGFjayBhbHJlYWR5IGhhcyBhIGJhY2tncm91bmQgY29sb3IsIGJsZW5kIGl0XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNTdGFja0JHID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNTdGFja0JHID0gdGhpc0JnQ29sb3I7XG4gICAgICAgICAgICAgICAgICAgIHRoaXNTdGFja0FscGhhID0gdGhpc1N0YWNrQkcuYWxwaGEgfHwgMS4wO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpc1N0YWNrQkcuYWxwaGE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpc1N0YWNrQkcgPSB0aGlzQmdDb2xvci5nZXRPdmVybGF5Q29sb3IodGhpc1N0YWNrQkcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAjNTI2OiBJZiB0aGlzQmdDb2xvciBoYWQgYW4gYWxwaGEgdmFsdWUsIGl0IG1heSBub3QgZXhwb3NlIHRocm91Z2ggdGhpc1N0YWNrQkcgaW4gdGhlIGFib3ZlIGNvZGVcbiAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCB3aXBlIG91dCB0aGUgZ3JhZGllbnQgaW5mbyBpZiB0aGlzIGxheWVyIHdhcyB0cmFuc3BhcmVudFxuICAgICAgICAgICAgICAgIGlmICh0aGlzU3RhY2tPcGFjaXR5ID09PSAxLjAgJiYgdGhpc1N0YWNrQWxwaGEgPT09IDEuMCAmJiAodGhpc1N0YWNrQkcuYWxwaGEgfHwgMS4wKSA9PT0gMS4wICYmICh0aGlzQmdDb2xvci5hbHBoYSB8fCAxLjApID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbC5oYXNCR0ltYWdlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbC5oYXNHcmFkaWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjU3R5bGUuYmFja2dyb3VuZEltYWdlICYmIGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgIT0gXCJub25lXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoY1N0eWxlLmJhY2tncm91bmRJbWFnZS5pbmRleE9mICYmIGNTdHlsZS5iYWNrZ3JvdW5kSW1hZ2UuaW5kZXhPZihcImdyYWRpZW50XCIpICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbC5oYXNHcmFkaWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsLmhhc0JHSW1hZ2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpc1N0YWNrQkcgIT0gbnVsbCkge1xuICAgICAgICAgICAgZmcgPSBmZy5nZXRPdmVybGF5Q29sb3IodGhpc1N0YWNrQkcpO1xuICAgICAgICAgICAgZGVsZXRlIGZnLmFscGhhO1xuICAgICAgICB9XG4gICAgICAgIGZnLmFscGhhID0gKGZnLmFscGhhIHx8IDEpICogdGhpc1N0YWNrT3BhY2l0eTtcbiAgICAgICAgZmcgPSBmZy5nZXRPdmVybGF5Q29sb3IocHJpb3JTdGFja0JHKTtcbiAgICAgICAgaWYgKHRoaXNTdGFja0JHICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXNTdGFja0JHLmFscGhhID0gdGhpc1N0YWNrT3BhY2l0eSAqIHRoaXNTdGFja0FscGhhO1xuICAgICAgICAgICAgcHJpb3JTdGFja0JHID0gdGhpc1N0YWNrQkcuZ2V0T3ZlcmxheUNvbG9yKHByaW9yU3RhY2tCRyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0VmFsLmZnID0gZmc7XG4gICAgICAgIHJldFZhbC5iZyA9IHByaW9yU3RhY2tCRztcbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9O1xuXG4gICAgcHVibGljIHN0YXRpYyBoYXNBdHRyaWJ1dGUoZWxlbWVudCwgYXR0cmlidXRlTmFtZSkge1xuICAgICAgICB2YXIgaGFzQXR0cmlidXRlID0gZmFsc2U7XG4gICAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSkge1xuICAgICAgICAgICAgaGFzQXR0cmlidXRlID0gZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5hdHRyaWJ1dGVzICYmIGVsZW1lbnQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0pIHtcbiAgICAgICAgICAgIHZhciBhdHRyID0gZWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbShhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgICAgIGhhc0F0dHJpYnV0ZSA9IGF0dHIgJiYgYXR0ci5zcGVjaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSUFRVdGlsU3R5bGUge1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V2VpZ2h0TnVtYmVyKHN0eWxlVmFsKSB7XG4gICAgICAgIGxldCBtYXAgPSB7XG4gICAgICAgICAgICBcImxpZ2h0XCI6IDEwMCxcbiAgICAgICAgICAgIFwiYm9sZFwiOiA3MDBcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJldFZhbCA9IHBhcnNlSW50KHN0eWxlVmFsKTtcbiAgICAgICAgaWYgKHJldFZhbCkgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgaWYgKHN0eWxlVmFsIGluIG1hcClcbiAgICAgICAgICAgIHJldHVybiBtYXBbc3R5bGVWYWxdO1xuICAgICAgICByZXR1cm4gNDAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Rm9udEluUGl4ZWxzID0gZnVuY3Rpb24gKHN0eWxlVmFsKSB7XG4gICAgICAgIGxldCBtYXAgPSB7XG4gICAgICAgICAgICBcInh4LXNtYWxsXCI6IDE2LFxuICAgICAgICAgICAgXCJ4LXNtYWxsXCI6IDEwLFxuICAgICAgICAgICAgXCJzbWFsbFwiOiAxMyxcbiAgICAgICAgICAgIFwibWVkaXVtXCI6IDE2LFxuICAgICAgICAgICAgXCJsYXJnZVwiOiAxOCxcbiAgICAgICAgICAgIFwieC1sYXJnZVwiOiAyNCxcbiAgICAgICAgICAgIFwieHgtbGFyZ2VcIjogMzJcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHZhbHVlID0gcGFyc2VGbG9hdChzdHlsZVZhbCk7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBbc3R5bGVWYWxdO1xuICAgICAgICB9XG4gICAgICAgIGxldCB1bml0cyA9IHN0eWxlVmFsLnN1YnN0cmluZygoXCJcIiArIHZhbHVlKS5sZW5ndGgpO1xuICAgICAgICBpZiAodW5pdHMgPT09IFwiXCIgfHwgdW5pdHMgPT09IFwicHhcIikgcmV0dXJuIHZhbHVlO1xuICAgICAgICBpZiAodW5pdHMgPT09IFwiZW1cIikgcmV0dXJuIHZhbHVlICogMTY7XG4gICAgICAgIGlmICh1bml0cyA9PT0gXCIlXCIpIHJldHVybiB2YWx1ZSAvIDEwMCAqIDE2O1xuICAgICAgICBpZiAodW5pdHMgPT09IFwicHRcIikgcmV0dXJuIHZhbHVlICogNCAvIDM7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvck9iaiB7XG4gICAgcmVkIDogbnVtYmVyO1xuICAgIGdyZWVuIDogbnVtYmVyO1xuICAgIGJsdWUgOiBudW1iZXI7XG4gICAgYWxwaGEgOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWQgOiBzdHJpbmcgfCBudW1iZXIsIGdyZWVuIDogc3RyaW5nIHwgbnVtYmVyLCBibHVlIDogc3RyaW5nIHwgbnVtYmVyLCBhbHBoYT8gOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICAgICAgZnVuY3Rpb24gZml4Q29tcG9uZW50KGNvbXAgOiBzdHJpbmcgfCBudW1iZXIpIDogbnVtYmVyIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgKGNvbXApICE9IHR5cGVvZiAoXCJcIikpIHJldHVybiBjb21wIGFzIG51bWJlcjtcbiAgICAgICAgICAgIGxldCBjb21wU3RyID0gY29tcCBhcyBzdHJpbmc7XG4gICAgICAgICAgICBjb21wU3RyID0gY29tcFN0ci50cmltKCk7XG4gICAgICAgICAgICBpZiAoY29tcFN0cltjb21wU3RyLmxlbmd0aCAtIDFdICE9IFwiJVwiKSByZXR1cm4gcGFyc2VJbnQoY29tcFN0cik7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGNvbXBTdHIuc3Vic3RyaW5nKDAsIGNvbXBTdHIubGVuZ3RoIC0gMSkpICogMi41NSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWQgPSBmaXhDb21wb25lbnQocmVkKTtcbiAgICAgICAgdGhpcy5ncmVlbiA9IGZpeENvbXBvbmVudChncmVlbik7XG4gICAgICAgIHRoaXMuYmx1ZSA9IGZpeENvbXBvbmVudChibHVlKTtcbiAgICAgICAgaWYgKHR5cGVvZiAoYWxwaGEpICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHRoaXMuYWxwaGEgPSAodHlwZW9mIChhbHBoYSkgPT09IHR5cGVvZiAoXCJcIikpID8gcGFyc2VGbG9hdChhbHBoYSBhcyBzdHJpbmcpIDogYWxwaGEgYXMgbnVtYmVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9IZXhIZWxwKHZhbHVlIDogbnVtYmVyKSA6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXRWYWwgPSBNYXRoLnJvdW5kKHZhbHVlKS50b1N0cmluZygxNik7XG4gICAgICAgIGlmIChyZXRWYWwubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgcmV0dXJuIFwiMFwiICsgcmV0VmFsO1xuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH07XG5cbiAgICB0b0hleCgpIDogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiI1wiICsgdGhpcy50b0hleEhlbHAodGhpcy5yZWQpICsgdGhpcy50b0hleEhlbHAodGhpcy5ncmVlbikgKyB0aGlzLnRvSGV4SGVscCh0aGlzLmJsdWUpO1xuICAgIH07XG5cbiAgICBjb250cmFzdFJhdGlvKGJnQ29sb3IgOiBDb2xvck9iaikge1xuICAgICAgICBsZXQgZmdDb2xvcjogQ29sb3JPYmogPSB0aGlzO1xuXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuYWxwaGEpICE9IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICBmZ0NvbG9yID0gdGhpcy5nZXRPdmVybGF5Q29sb3IoYmdDb2xvcik7XG5cbiAgICAgICAgbGV0IGx1bTEgPSBmZ0NvbG9yLnJlbGF0aXZlTHVtaW5hbmNlKCk7XG4gICAgICAgIGlmICghYmdDb2xvci5yZWxhdGl2ZUx1bWluYW5jZSkge1xuICAgICAgICAgICAgbGV0IHMgPSBcIlwiO1xuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIGJnQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBzICs9IGtleSArIFwiXFxuXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhbGVydChiZ0NvbG9yKTtcbiAgICAgICAgICAgIGFsZXJ0KHMpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsdW0yID0gYmdDb2xvci5yZWxhdGl2ZUx1bWluYW5jZSgpO1xuICAgICAgICBsZXQgcmF0aW8gPSAobHVtMSA+IGx1bTIpID8gKGx1bTEgKyAuMDUpIC8gKGx1bTIgKyAuMDUpIDogKGx1bTIgKyAuMDUpIC8gKGx1bTEgKyAuMDUpO1xuICAgICAgICByZXR1cm4gcmF0aW87XG4gICAgfTtcblxuICAgIHJlbGF0aXZlTHVtaW5hbmNlKCkgOiBudW1iZXIge1xuICAgICAgICBsZXQgUiA9IHRoaXMucmVkIC8gMjU1LjA7XG4gICAgICAgIGxldCBHID0gdGhpcy5ncmVlbiAvIDI1NS4wO1xuICAgICAgICBsZXQgQiA9IHRoaXMuYmx1ZSAvIDI1NS4wO1xuICAgICAgICBSID0gUiA8PSAuMDM5MjggPyBSIC8gMTIuOTIgOiBNYXRoLnBvdygoUiArIC4wNTUpIC8gMS4wNTUsIDIuNCk7XG4gICAgICAgIEcgPSBHIDw9IC4wMzkyOCA/IEcgLyAxMi45MiA6IE1hdGgucG93KChHICsgLjA1NSkgLyAxLjA1NSwgMi40KTtcbiAgICAgICAgQiA9IEIgPD0gLjAzOTI4ID8gQiAvIDEyLjkyIDogTWF0aC5wb3coKEIgKyAuMDU1KSAvIDEuMDU1LCAyLjQpO1xuICAgICAgICByZXR1cm4gMC4yMTI2ICogUiArIDAuNzE1MiAqIEcgKyAwLjA3MjIgKiBCO1xuICAgIH07XG5cbiAgICBtaXgoY29sb3IyIDogQ29sb3JPYmosIHBlcmNUaGlzIDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuYWxwaGEpID09PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiAoY29sb3IyLmFscGhhKSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2xvck9iaihcbiAgICAgICAgICAgICAgICBwZXJjVGhpcyAqIHRoaXMucmVkICsgKDEgLSBwZXJjVGhpcykgKiBjb2xvcjIucmVkLFxuICAgICAgICAgICAgICAgIHBlcmNUaGlzICogdGhpcy5ncmVlbiArICgxIC0gcGVyY1RoaXMpICogY29sb3IyLmdyZWVuLFxuICAgICAgICAgICAgICAgIHBlcmNUaGlzICogdGhpcy5ibHVlICsgKDEgLSBwZXJjVGhpcykgKiBjb2xvcjIuYmx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBhbHBoYVRoaXMgPSB0aGlzLmFscGhhID8gdGhpcy5hbHBoYSA6IDE7XG4gICAgICAgICAgICBsZXQgYWxwaGFPdGhlciA9IGNvbG9yMi5hbHBoYSA/IGNvbG9yMi5hbHBoYSA6IDE7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbG9yT2JqKFxuICAgICAgICAgICAgICAgIHBlcmNUaGlzICogdGhpcy5yZWQgKyAoMSAtIHBlcmNUaGlzKSAqIGNvbG9yMi5yZWQsXG4gICAgICAgICAgICAgICAgcGVyY1RoaXMgKiB0aGlzLmdyZWVuICsgKDEgLSBwZXJjVGhpcykgKiBjb2xvcjIuZ3JlZW4sXG4gICAgICAgICAgICAgICAgcGVyY1RoaXMgKiB0aGlzLmJsdWUgKyAoMSAtIHBlcmNUaGlzKSAqIGNvbG9yMi5ibHVlLFxuICAgICAgICAgICAgICAgIHBlcmNUaGlzICogYWxwaGFUaGlzICsgKDEgLSBwZXJjVGhpcykgKiBhbHBoYU90aGVyXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGdldE92ZXJsYXlDb2xvcihiZ0NvbG9yIDogQ29sb3JPYmopIHtcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5hbHBoYSkgPT09IFwidW5kZWZpbmVkXCIgfHwgdGhpcy5hbHBoYSA+PSAxKSB7XG4gICAgICAgICAgICAvLyBObyBtaXhpbmcgcmVxdWlyZWQgLSBpdCdzIG9wYXF1ZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYWxwaGEgPCAwKSB7XG4gICAgICAgICAgICAvL1x0XHRIYWFjLkVycm9yLmxvZ0Vycm9yKFwiSW52YWxpZCBhbHBoYSB2YWx1ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgKGJnQ29sb3IuYWxwaGEpICE9IFwidW5kZWZpbmVkXCIgJiYgYmdDb2xvci5hbHBoYSA8IDEpIHtcbiAgICAgICAgICAgIC8vXHRcdEhhYWMuRXJyb3IubG9nRXJyb3IoXCJDYW5ub3QgbWl4IHdpdGggYSBiYWNrZ3JvdW5kIGFscGhhXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJldFZhbCA9IHRoaXMubWl4KGJnQ29sb3IsIHRoaXMuYWxwaGEpO1xuICAgICAgICBkZWxldGUgcmV0VmFsLmFscGhhO1xuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNTU0NvbG9yKGNzc1N0eWxlQ29sb3IpIHtcbiAgICAgICAgbGV0IHRoaXNSZWQgPSAtMTtcbiAgICAgICAgbGV0IHRoaXNHcmVlbiA9IC0xO1xuICAgICAgICBsZXQgdGhpc0JsdWUgPSAtMTtcblxuICAgICAgICBjc3NTdHlsZUNvbG9yID0gY3NzU3R5bGVDb2xvci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoY3NzU3R5bGVDb2xvci5zdGFydHNXaXRoKFwicmdiKFwiKSkge1xuICAgICAgICAgICAgbGV0IHJnYlJlZ2V4ID0gL1xccypyZ2JcXHMqXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccypcXCkvO1xuICAgICAgICAgICAgbGV0IG0gPSBjc3NTdHlsZUNvbG9yLm1hdGNoKHJnYlJlZ2V4KTtcbiAgICAgICAgICAgIGlmIChtID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXNSZWQgPSBtWzFdO1xuICAgICAgICAgICAgICAgIHRoaXNHcmVlbiA9IG1bMl07XG4gICAgICAgICAgICAgICAgdGhpc0JsdWUgPSBtWzNdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNzc1N0eWxlQ29sb3Iuc3RhcnRzV2l0aChcInJnYmEoXCIpKSB7XG4gICAgICAgICAgICBsZXQgcmdiUmVnZXggPSAvXFxzKnJnYmFcXHMqXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKiguKylcXHMqXFwpLztcbiAgICAgICAgICAgIGxldCBtID0gY3NzU3R5bGVDb2xvci5tYXRjaChyZ2JSZWdleCk7XG4gICAgICAgICAgICBpZiAobSA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzUmVkID0gbVsxXTtcbiAgICAgICAgICAgICAgICB0aGlzR3JlZW4gPSBtWzJdO1xuICAgICAgICAgICAgICAgIHRoaXNCbHVlID0gbVszXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjc3NTdHlsZUNvbG9yLmNoYXJBdCgwKSAhPSBcIiNcIikge1xuICAgICAgICAgICAgICAgIGlmIChjc3NTdHlsZUNvbG9yIGluIFJQVFV0aWwuQ1NTQ29sb3JMb29rdXApXG4gICAgICAgICAgICAgICAgICAgIGNzc1N0eWxlQ29sb3IgPSBSUFRVdGlsLkNTU0NvbG9yTG9va3VwW2Nzc1N0eWxlQ29sb3JdO1xuICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZnJvbUhleCA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgICAgICBsZXQgbG9va3VwID0ge1xuICAgICAgICAgICAgICAgICAgICBcImFcIjogMTAsXG4gICAgICAgICAgICAgICAgICAgIFwiYlwiOiAxMSxcbiAgICAgICAgICAgICAgICAgICAgXCJjXCI6IDEyLFxuICAgICAgICAgICAgICAgICAgICBcImRcIjogMTMsXG4gICAgICAgICAgICAgICAgICAgIFwiZVwiOiAxNCxcbiAgICAgICAgICAgICAgICAgICAgXCJmXCI6IDE1XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBsZXQgcmV0VmFsID0gMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKiAxNiArXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludCh2YWwuY2hhckF0KGkpIGluIGxvb2t1cCA/IGxvb2t1cFt2YWwuY2hhckF0KGkpXSA6IHZhbC5jaGFyQXQoaSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNzc1N0eWxlQ29sb3IubGVuZ3RoID09PSA0KSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIHRocmVlLWRpZ2l0IFJHQiAoI3JnYikgaXMgY29udmVydGVkIHRvIHNpeC1kaWdpdCBmb3JtICgjcnJnZ2JiKSBieSByZXBsaWNhdGluZyBkaWdpdHNcbiAgICAgICAgICAgICAgICAvLyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1jb2xvci0zLyNyZ2ItY29sb3IpXG4gICAgICAgICAgICAgICAgY3NzU3R5bGVDb2xvciA9IFwiI1wiICsgY3NzU3R5bGVDb2xvci5jaGFyQXQoMSkucmVwZWF0KDIpICtcbiAgICAgICAgICAgICAgICAgICAgY3NzU3R5bGVDb2xvci5jaGFyQXQoMikucmVwZWF0KDIpICtcbiAgICAgICAgICAgICAgICAgICAgY3NzU3R5bGVDb2xvci5jaGFyQXQoMykucmVwZWF0KDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpc1JlZCA9IGZyb21IZXgoY3NzU3R5bGVDb2xvci5zdWJzdHJpbmcoMSwgMykpO1xuICAgICAgICAgICAgdGhpc0dyZWVuID0gZnJvbUhleChjc3NTdHlsZUNvbG9yLnN1YnN0cmluZygzLCA1KSk7XG4gICAgICAgICAgICB0aGlzQmx1ZSA9IGZyb21IZXgoY3NzU3R5bGVDb2xvci5zdWJzdHJpbmcoNSwgNykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgQ29sb3JPYmoodGhpc1JlZCwgdGhpc0dyZWVuLCB0aGlzQmx1ZSk7XG4gICAgfVxufVxuXG4vKiBSZXR1cm4gYSBub2RlIHdhbGtlciBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuXG4gKiBiRW5kIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBmYWxzZVxuICogYnV0IGlmIHRydWUsIGluZGljYXRlcyB0aGUgbm9kZSBpcyB0aGUgZW5kIG5vZGUqL1xuZXhwb3J0IGNsYXNzIE5vZGVXYWxrZXIge1xuICAgIG5vZGUgOiBOb2RlO1xuICAgIGJFbmRUYWcgOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKG5vZGU6IE5vZGUsIGJFbmQ/OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMuYkVuZFRhZyA9IChiRW5kID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGJFbmQgPT09IHRydWUpO1xuICAgIH1cblxuICAgIGVsZW0oKSA6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgJiYgdGhpcy5ub2RlIGFzIEhUTUxFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgbmV4dE5vZGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5iRW5kVGFnKSB7XG4gICAgICAgICAgICBsZXQgaWZyYW1lTm9kZSA9ICh0aGlzLm5vZGUgYXMgSFRNTElGcmFtZUVsZW1lbnQpO1xuICAgICAgICAgICAgbGV0IGVsZW1lbnROb2RlID0gKHRoaXMubm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICBsZXQgc2xvdEVsZW1lbnQgPSAodGhpcy5ub2RlIGFzIEhUTUxTbG90RWxlbWVudClcbiAgICAgICAgICAgIGlmICh0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi9cbiAgICAgICAgICAgICAgICAmJiB0aGlzLm5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gXCJJRlJBTUVcIlxuICAgICAgICAgICAgICAgICYmIGlmcmFtZU5vZGUuY29udGVudERvY3VtZW50XG4gICAgICAgICAgICAgICAgJiYgaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxldCBvd25lckVsZW1lbnQgPSB0aGlzLm5vZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqL1xuICAgICAgICAgICAgICAgICYmIGVsZW1lbnROb2RlLnNoYWRvd1Jvb3RcbiAgICAgICAgICAgICAgICAmJiBlbGVtZW50Tm9kZS5zaGFkb3dSb290LmZpcnN0Q2hpbGQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IG93bmVyRWxlbWVudCA9IHRoaXMubm9kZTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSBlbGVtZW50Tm9kZS5zaGFkb3dSb290O1xuICAgICAgICAgICAgICAgICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMVxuICAgICAgICAgICAgICAgICYmIGVsZW1lbnROb2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic2xvdFwiXG4gICAgICAgICAgICAgICAgJiYgc2xvdEVsZW1lbnQuYXNzaWduZWROb2RlcygpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IHNsb3RPd25lciA9IHRoaXMubm9kZTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSBzbG90RWxlbWVudC5hc3NpZ25lZE5vZGVzKClbMF07XG4gICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lciA9IHNsb3RPd25lcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGUuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0Tm9kZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9ICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lcikge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vZGUubm9kZVR5cGUgIT09IDEgfHwgISh0aGlzLm5vZGUgYXMgSFRNTEVsZW1lbnQpLmhhc0F0dHJpYnV0ZShcInNsb3RcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyB3YXNuJ3QgYSBuYW1lZCBzbG90LCBsb29rIGZvciB0aGUgbmV4dCB1bm5hbWVkIG5vZGUgdG8gcHV0IGluIHRoZSBzbG90XG4gICAgICAgICAgICAgICAgICAgIGxldCBuID0gdGhpcy5ub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAobiAmJiB0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRoaXMubm9kZSBhcyBIVE1MRWxlbWVudCkuaGFzQXR0cmlidXRlKFwic2xvdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMubm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYW5vdGhlciB1bm5hbWVkIHNsb3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzbG90T3duZXIgPSAodGhpcy5ub2RlIGFzIGFueSkuc2xvdE93bmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGUgYXMgYW55KS5zbG90T3duZXIgPSBzbG90T3duZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9ICh0aGlzLm5vZGUgYXMgYW55KS5zbG90T3duZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByZXZOb2RlKCkge1xuICAgICAgICBpZiAodGhpcy5iRW5kVGFnICYmIHRoaXMubm9kZS5sYXN0Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5sYXN0Q2hpbGQ7XG4gICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmJFbmRUYWcgJiYgKHRoaXMubm9kZS5maXJzdENoaWxkID09PSBudWxsIHx8IHR5cGVvZiAodGhpcy5ub2RlLmZpcnN0Q2hpbGQpID09PSAndW5kZWZpbmVkJykpXG4gICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5sZXQgZGVzaWduTmxzID0ge1xuICAgIFwiREVTSUdOX0NPTE9SX1BhbGV0dGVfRm9yZWdyb3VuZFwiOiBbXG4gICAgICAgIFwiRm9yZWdyb3VuZCBjb2xvciB7MH0gaXMgaW4gdGhlIHN0YW5kYXJkIHBhbGV0dGUuXCIsXG4gICAgICAgIFwiRm9yZWdyb3VuZCBjb2xvciB7MH0gaXMgbm90IGluIHRoZSBzdGFuZGFyZCBwYWxldHRlLlwiXG4gICAgXSxcbiAgICBcIkRFU0lHTl9DT0xPUl9QYWxldHRlX0JhY2tncm91bmRcIjogW1xuICAgICAgICBcIkJhY2tncm91bmQgY29sb3IgezB9IGlzIGluIHRoZSBzdGFuZGFyZCBwYWxldHRlLlwiLFxuICAgICAgICBcIkJhY2tncm91bmQgY29sb3IgezB9IGlzIG5vdCBpbiB0aGUgc3RhbmRhcmQgcGFsZXR0ZS5cIlxuICAgIF0sXG4gICAgXCJERVNJR05fVHlwb2dyYXBoeV9QbGV4XCI6IFtcbiAgICAgICAgXCJGb250IEZhbWlseSBcXFwiezB9XFxcIiBiZWdpbnMgd2l0aCBcXFwiSUJNIFBsZXhcXFwiXCIsXG4gICAgICAgIFwiRm9udCBGYW1pbHkgXFxcInswfVxcXCIgaXMgbm90IGEgc3RhbmRhcmQgZm9udCwgaXQgZG9lcyBub3QgYmVnaW4gd2l0aCBcXFwiSUJNIFBsZXhcXFwiLlwiXG4gICAgXSxcbiAgICBcIkRFU0lHTl9UeXBvZ3JhcGh5X1RleHRBbGlnbkxlZnRcIjogW1xuICAgICAgICBcIlRleHQgaXMgbGVmdCBqdXN0aWZpZWRcIixcbiAgICAgICAgXCJUZXh0IGlzIG5vdCBsZWZ0IGp1c3RpZmllZFwiXG4gICAgXSxcbiAgICBcIkRFU0lHTl9HcmlkTGF5b3V0X0ltZ0FzcGVjdFJhdGlvXCI6IFtcbiAgICAgICAgXCJSdWxlIFBhc3NlZFwiLFxuICAgICAgICBcIkltYWdlIGlzIG5vdCBhIHN1cHBvcnRlZCBhc3BlY3QgcmF0aW8gKDE2OjksIDQ6MywgMzoyLCAyOjEsIG9yIDE6MSlcIlxuICAgIF1cbn1cbmV4cG9ydCB7ZGVzaWduTmxzfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgUnVsZSwgUnVsZVJlc3VsdCwgUnVsZUZhaWwsIFJ1bGVDb250ZXh0LCBSdWxlUG90ZW50aWFsLCBSdWxlTWFudWFsLCBSdWxlUGFzcyB9IGZyb20gXCIuLi8uLi8uLi9hcGkvSUVuZ2luZVwiO1xuaW1wb3J0IHsgRE9NVXRpbCB9IGZyb20gXCIuLi8uLi8uLi9kb20vRE9NVXRpbFwiO1xuaW1wb3J0IHsgUlBUVXRpbCB9IGZyb20gXCIuLi8uLi9hY2Nlc3NpYmlsaXR5L3V0aWwvbGVnYWN5XCI7XG5cbmNvbnN0IFBBTEVUVEUgPSBbXG4gICAgXCIjMmMwODBhXCIsIFwiIzRmMDQwOFwiLCBcIiM3NTBlMTNcIiwgXCIjYTUxOTIwXCIsIFwiI2RhMWUyOFwiLCBcIiNmYjRiNTNcIiwgXCIjZmY3NjdjXCIsIFwiI2ZmYTRhOVwiLCBcIiNmY2QwZDNcIiwgXCIjZmZmMGYxXCIsIFwiIzJhMGExNlwiLCBcIiM0ZjAwMjdcIiwgXCIjNzYwYTNhXCIsIFwiI2ExMTk1MFwiLCBcIiNkMTI3NjVcIiwgXCIjZWU1MzhiXCIsIFwiI2ZhNzVhNlwiLCBcIiNmZmEwYzJcIiwgXCIjZmZjZmUxXCIsIFwiI2ZmZjBmNlwiLCBcIiMxZTEwMzNcIiwgXCIjMzIxMjYwXCIsIFwiIzRmMjE5NlwiLCBcIiM2ZTMyYzlcIiwgXCIjOGEzZmZjXCIsIFwiI2E5NzBmZlwiLCBcIiNiYjhlZmZcIiwgXCIjZDBiMGZmXCIsIFwiI2U2ZDZmZlwiLCBcIiNmN2YxZmZcIiwgXCIjMDUxMjQzXCIsIFwiIzA1MWI3NVwiLCBcIiMwNTMwYWRcIiwgXCIjMDU0YWRhXCIsIFwiIzAwNjJmZlwiLCBcIiM0MThjZmZcIiwgXCIjNmVhNmZmXCIsIFwiIzk3YzFmZlwiLCBcIiNjOWRlZmZcIiwgXCIjZWRmNGZmXCIsIFwiIzA3MTkyYlwiLCBcIiMwMDI3NDlcIiwgXCIjMDAzZDczXCIsIFwiIzAwNThhMVwiLCBcIiMwMDcyYzNcIiwgXCIjMTE5M2U4XCIsIFwiIzMwYjBmZlwiLCBcIiM2Y2NhZmZcIiwgXCIjYjNlNmZmXCIsIFwiI2UzZjZmZlwiLCBcIiMwODFhMWNcIiwgXCIjMDAyYjMwXCIsIFwiIzAwNDU0OFwiLCBcIiMwMDYxNjFcIiwgXCIjMDA3ZDc5XCIsIFwiIzAwOWU5YVwiLCBcIiMwMGJhYjZcIiwgXCIjMjBkNWQyXCIsIFwiIzg3ZWRlZFwiLCBcIiNkYmZiZmJcIiwgXCIjMDgxYjA5XCIsIFwiIzAxMmUwZVwiLCBcIiMwNTQ3MTlcIiwgXCIjMTA2NDJhXCIsIFwiIzE5ODAzOFwiLCBcIiMyNGEyNDlcIiwgXCIjM2RiYjYxXCIsIFwiIzU2ZDY3OVwiLCBcIiM5ZGVlYjJcIiwgXCIjZGFmYmU0XCIsIFwiIzAwMDAwMFwiLCBcIiMxMzE3MWFcIiwgXCIjMjAyNTI5XCIsIFwiIzM3M2Q0MlwiLCBcIiM1MDU2NWJcIiwgXCIjNjk3MDc3XCIsIFwiIzg2OGQ5NVwiLCBcIiM5ZmE1YWRcIiwgXCIjYjliZmM3XCIsIFwiI2Q4ZGNlM1wiLCBcIiNmMmY0ZjhcIiwgXCIjZmZmZmZmXCIsIFwiIzAwMDAwMFwiLCBcIiMxNzE3MTdcIiwgXCIjMjUyNTI1XCIsIFwiIzNkM2QzZFwiLCBcIiM1NjU2NTZcIiwgXCIjNmY2ZjZmXCIsIFwiIzhjOGM4Y1wiLCBcIiNhNGE0YTRcIiwgXCIjYmViZWJlXCIsIFwiI2RjZGNkY1wiLCBcIiNmM2YzZjNcIiwgXCIjZmZmZmZmXCIsIFwiIzAwMDAwMFwiLCBcIiMxYTE3MTdcIiwgXCIjMjcyNDI0XCIsIFwiIzQwM2MzY1wiLCBcIiM1OTU1NTVcIiwgXCIjNzI2ZTZlXCIsIFwiIzhmOGI4YlwiLCBcIiNhN2EyYTJcIiwgXCIjYzFiY2JiXCIsIFwiI2UwZGJkYVwiLCBcIiNmN2YzZjFcIiwgXCIjZmZmZmZmXCJcbl1cblxubGV0IGRlc2lnblJ1bGVzQ29sb3I6IFJ1bGVbXSA9IFt7XG4gICAgaWQ6IFwiREVTSUdOX0NPTE9SX1BhbGV0dGVfRm9yZWdyb3VuZFwiLFxuICAgIGNvbnRleHQ6IFwiZG9tOipcIixcbiAgICBydW46IChjb250ZXh0OiBSdWxlQ29udGV4dCwgb3B0aW9ucz86IHt9KTogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bGVDb250ZXh0ID0gY29udGV4dFtcImRvbVwiXS5ub2RlIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBsZXQgaGFzVGV4dCA9IGZhbHNlO1xuICAgICAgICBsZXQgY2hpbGQ6IE5vZGUgPSBydWxlQ29udGV4dC5maXJzdENoaWxkO1xuICAgICAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMyAmJiBjaGlsZC5ub2RlVmFsdWUudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNUZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluQm9keSA9IGZhbHNlO1xuICAgICAgICBsZXQgcGFyZW50V2FsayA6IEVsZW1lbnQgPSBydWxlQ29udGV4dDtcbiAgICAgICAgd2hpbGUgKHBhcmVudFdhbGspIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnRXYWxrLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYm9keVwiKSB7XG4gICAgICAgICAgICAgICAgaW5Cb2R5ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudFdhbGsgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocGFyZW50V2Fsayk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFoYXNUZXh0IHx8ICFpbkJvZHkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb2xvckNvbWJvID0gUlBUVXRpbC5Db2xvckNvbWJvKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgbGV0IGZnID0gY29sb3JDb21iby5mZy50b0hleCgpO1xuICAgICAgICBpZiAoUEFMRVRURS5pbmRleE9mKGZnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxLFtmZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKDIsIFtmZ10pO1xuICAgICAgICB9XG4gICAgfVxufSxcbntcbiAgICAvKipcbiAgICAgKiBEZXNjcmlwdGlvbjogVHJpZ2dlciBpZiB0aGUgbGluayB0ZXh0IGlzIGVtcHR5IG9yIGNvbnRlbnQgdW5kZXIgbGluayBpcyBoaWRkZW5cbiAgICAgKiBPcmlnaW46IFdDQUcgMi4wIFRlY2huaXF1ZSBIMzAsIEg5MVxuICAgICAqL1xuICAgIGlkOiBcIkRFU0lHTl9DT0xPUl9QYWxldHRlX0JhY2tncm91bmRcIixcbiAgICBjb250ZXh0OiBcImRvbToqXCIsXG4gICAgcnVuOiAoY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSk6IFJ1bGVSZXN1bHQgfCBSdWxlUmVzdWx0W10gPT4ge1xuICAgICAgICBjb25zdCBydWxlQ29udGV4dCA9IGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgbGV0IHBhcmVudFdhbGsgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocnVsZUNvbnRleHQpO1xuICAgICAgICB3aGlsZSAocGFyZW50V2Fsaykge1xuICAgICAgICAgICAgaWYgKFJQVFV0aWwuZ2V0Q2FjaGUocGFyZW50V2FsaywgXCJERVNJR05fQ09MT1JfUGFsZXR0ZV9CYWNrZ3JvdW5kXCIsIG51bGwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnRXYWxrID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KHBhcmVudFdhbGspO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb2xvckNvbWJvID0gUlBUVXRpbC5Db2xvckNvbWJvKHJ1bGVDb250ZXh0KTtcbiAgICAgICAgbGV0IGJnID0gY29sb3JDb21iby5iZy50b0hleCgpO1xuICAgICAgICBpZiAoUEFMRVRURS5pbmRleE9mKGJnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxLFtiZ10pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBSUFRVdGlsLnNldENhY2hlKHJ1bGVDb250ZXh0LCBcIkRFU0lHTl9DT0xPUl9QYWxldHRlX0JhY2tncm91bmRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gUnVsZUZhaWwoMiwgW2JnXSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5dXG5leHBvcnQgeyBkZXNpZ25SdWxlc0NvbG9yIH0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFJ1bGUsIFJ1bGVSZXN1bHQsIFJ1bGVGYWlsLCBSdWxlQ29udGV4dCwgUnVsZVBvdGVudGlhbCwgUnVsZU1hbnVhbCwgUnVsZVBhc3MgfSBmcm9tIFwiLi4vLi4vLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IFJQVFV0aWwgfSBmcm9tIFwiLi4vLi4vYWNjZXNzaWJpbGl0eS91dGlsL2xlZ2FjeVwiO1xuXG5sZXQgZGVzaWduUnVsZXNHcmlkOiBSdWxlW10gPSBbe1xuICAgIGlkOiBcIkRFU0lHTl9HcmlkTGF5b3V0X0ltZ0FzcGVjdFJhdGlvXCIsXG4gICAgY29udGV4dDogXCJhcmlhOmltZ1wiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgY29uc3QgRVBTSUxPTiA9IC4wMDAwMDAxO1xuICAgICAgICBsZXQgdyA9IHJ1bGVDb250ZXh0Lm5hdHVyYWxXaWR0aDtcbiAgICAgICAgbGV0IGggPSBydWxlQ29udGV4dC5uYXR1cmFsSGVpZ2h0O1xuICAgICAgICBsZXQgcmF0aW8gPSBNYXRoLm1heCh3IC8gaCwgaCAvIHcpO1xuICAgICAgICBpZiAoTWF0aC5hYnMocmF0aW8gLSAxNiAvIDkuMCkgPCBFUFNJTE9OXG4gICAgICAgICAgICB8fCBNYXRoLmFicyhyYXRpbyAtIDQgLyAzLjApIDwgRVBTSUxPTlxuICAgICAgICAgICAgfHwgTWF0aC5hYnMocmF0aW8gLSAzIC8gMi4wKSA8IEVQU0lMT05cbiAgICAgICAgICAgIHx8IE1hdGguYWJzKHJhdGlvIC0gMiAvIDEuMCkgPCBFUFNJTE9OXG4gICAgICAgICAgICB8fCBNYXRoLmFicyhyYXRpbyAtIDEgLyAxLjApIDwgRVBTSUxPTikge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVGYWlsKDIpO1xuICAgICAgICB9XG4gICAgfVxufV1cbmV4cG9ydCB7IGRlc2lnblJ1bGVzR3JpZCB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlLCBSdWxlUmVzdWx0LCBSdWxlRmFpbCwgUnVsZUNvbnRleHQsIFJ1bGVQb3RlbnRpYWwsIFJ1bGVNYW51YWwsIFJ1bGVQYXNzIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uLy4uLy4uL2RvbS9ET01VdGlsXCI7XG5pbXBvcnQgeyBSUFRVdGlsIH0gZnJvbSBcIi4uLy4uL2FjY2Vzc2liaWxpdHkvdXRpbC9sZWdhY3lcIjtcblxubGV0IGRlc2lnblJ1bGVzVHlwZTogUnVsZVtdID0gW3tcbiAgICBpZDogXCJERVNJR05fVHlwb2dyYXBoeV9QbGV4XCIsXG4gICAgY29udGV4dDogXCJkb206KlwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGxldCBpbkJvZHkgPSBmYWxzZTtcbiAgICAgICAgbGV0IHBhcmVudFdhbGsgOiBFbGVtZW50ID0gcnVsZUNvbnRleHQ7XG4gICAgICAgIHdoaWxlIChwYXJlbnRXYWxrKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50V2Fsay5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInN0eWxlXCIgfHwgcGFyZW50V2Fsay5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInNjcmlwdFwiKSB7XG4gICAgICAgICAgICAgICAgaW5Cb2R5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyZW50V2Fsay5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImJvZHlcIikge1xuICAgICAgICAgICAgICAgIGluQm9keSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnRXYWxrID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KHBhcmVudFdhbGspO1xuICAgICAgICB9XG4gICAgICAgIGxldCBoYXNUZXh0ID0gZmFsc2U7XG4gICAgICAgIGxldCBjaGlsZCA6IE5vZGUgPSBydWxlQ29udGV4dC5maXJzdENoaWxkO1xuICAgICAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMyAmJiBjaGlsZC5ub2RlVmFsdWUudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBoYXNUZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNoaWxkID0gY2hpbGQubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbkJvZHkgfHwgIWhhc1RleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICBsZXQgc3R5bGUgPSBkb2MuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShydWxlQ29udGV4dCk7XG4gICAgICAgIGxldCBmb250RmFtaWx5ID0gc3R5bGUuZm9udEZhbWlseTtcbiAgICAgICAgaWYgKGZvbnRGYW1pbHkuc3Vic3RyaW5nKDAsIFwiXFxcIklCTSBQbGV4XCIubGVuZ3RoKSA9PT0gXCJcXFwiSUJNIFBsZXhcIikge1xuICAgICAgICAgICAgcmV0dXJuIFJ1bGVQYXNzKDEsW2ZvbnRGYW1pbHldKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbCgyLCBbZm9udEZhbWlseV0pO1xuICAgICAgICB9XG4gICAgfVxufSxcbntcbiAgICBpZDogXCJERVNJR05fVHlwb2dyYXBoeV9UZXh0QWxpZ25MZWZ0XCIsXG4gICAgY29udGV4dDogXCJkb206KlwiLFxuICAgIHJ1bjogKGNvbnRleHQ6IFJ1bGVDb250ZXh0LCBvcHRpb25zPzoge30pOiBSdWxlUmVzdWx0IHwgUnVsZVJlc3VsdFtdID0+IHtcbiAgICAgICAgY29uc3QgcnVsZUNvbnRleHQgPSBjb250ZXh0W1wiZG9tXCJdLm5vZGUgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGxldCBpbkJvZHkgPSBmYWxzZTtcbiAgICAgICAgbGV0IHBhcmVudFdhbGsgOiBFbGVtZW50ID0gcnVsZUNvbnRleHQ7XG4gICAgICAgIHdoaWxlIChwYXJlbnRXYWxrKSB7XG4gICAgICAgICAgICBpZiAocGFyZW50V2Fsay5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImJvZHlcIikge1xuICAgICAgICAgICAgICAgIGluQm9keSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnRXYWxrID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KHBhcmVudFdhbGspO1xuICAgICAgICB9XG4gICAgICAgIGxldCBoYXNUZXh0ID0gKHJ1bGVDb250ZXh0LmlubmVyVGV4dCB8fCBcIlwiKS50cmltKCkubGVuZ3RoID4gMDtcbiAgICAgICAgaWYgKCFpbkJvZHkgfHwgIWhhc1RleHQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkb2MgPSBydWxlQ29udGV4dC5vd25lckRvY3VtZW50O1xuICAgICAgICBsZXQgc3R5bGUgPSBkb2MuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShydWxlQ29udGV4dCk7XG4gICAgICAgIGxldCB0ZXh0QWxpZ24gPSBzdHlsZS50ZXh0QWxpZ247XG4gICAgICAgIGlmICghdGV4dEFsaWduIHx8IHRleHRBbGlnbiA9PT0gXCJsZWZ0XCIgfHwgdGV4dEFsaWduID09PSBcInN0YXJ0XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlUGFzcygxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBSdWxlRmFpbCgyKTtcbiAgICAgICAgfVxuICAgIH1cbn1dXG5leHBvcnQgeyBkZXNpZ25SdWxlc1R5cGUgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBkZXNpZ25SdWxlc0NvbG9yIH0gZnJvbSBcIi4vZGVzaWduLWNvbG9yXCI7XG5pbXBvcnQgeyBSdWxlIH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5pbXBvcnQgeyBkZXNpZ25SdWxlc0dyaWQgfSBmcm9tIFwiLi9kZXNpZ24tZ3JpZGxheW91dFwiO1xuaW1wb3J0IHsgZGVzaWduUnVsZXNUeXBlIH0gZnJvbSBcIi4vZGVzaWduLXR5cG9ncmFwaHlcIjtcblxubGV0IGRlc2lnblJ1bGVzOiBSdWxlW10gPSBbXS5jb25jYXQoXG4gICAgZGVzaWduUnVsZXNDb2xvcixcbiAgICBkZXNpZ25SdWxlc0dyaWQsXG4gICAgZGVzaWduUnVsZXNUeXBlXG4pO1xuZXhwb3J0IHsgZGVzaWduUnVsZXMgfVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBSdWxlc2V0IH0gZnJvbSBcIi4uLy4uL0NoZWNrZXJcIjtcbmltcG9ydCB7IGVSdWxlUG9saWN5LCBlUnVsZUNhdGVnb3J5IH0gZnJvbSBcIi4uLy4uLy4uL2FwaS9JRW5naW5lXCI7XG5cbmxldCBkZXNpZ25SdWxlc2V0czogUnVsZXNldFtdID0gW107XG4vKlxue1xuICAgIGlkOiBcIklCTV9EZXNpZ25cIixcbiAgICBjYXRlZ29yeTogZVJ1bGVDYXRlZ29yeS5ERVNJR04sXG4gICAgXCJjaGVja3BvaW50c1wiOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIFwibnVtXCI6IFwiMVwiLCAvLyBDb2xvclxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJERVNJR05fQ09MT1JfUGFsZXR0ZV9Gb3JlZ3JvdW5kXCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT05cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiREVTSUdOX0NPTE9SX1BhbGV0dGVfQmFja2dyb3VuZFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjJcIiwgLy8gVHlwZVxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogXCJERVNJR05fVHlwb2dyYXBoeV9QbGV4XCIsXG4gICAgICAgICAgICAgICAgICAgIGxldmVsOiBlUnVsZVBvbGljeS5WSU9MQVRJT05cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiREVTSUdOX1R5cG9ncmFwaHlfVGV4dEFsaWduTGVmdFwiLFxuICAgICAgICAgICAgICAgICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBcIm51bVwiOiBcIjNcIiwgLy8gR3JpZCAmIExheW91dFxuICAgICAgICAgICAgXCJydWxlc1wiOiBbXG4gICAgICAgICAgICAgICAgLy8ge1xuICAgICAgICAgICAgICAgIC8vICAgICBpZDogXCJERVNJR05fR3JpZExheW91dF9JbWdBc3BlY3RSYXRpb1wiLFxuICAgICAgICAgICAgICAgIC8vICAgICBsZXZlbDogZVJ1bGVQb2xpY3kuVklPTEFUSU9OXG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gICAgXVxufV1cbiovXG5leHBvcnQgeyBkZXNpZ25SdWxlc2V0cyB9IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBhMTF5SGVscCB9IGZyb20gXCIuL2FjY2Vzc2liaWxpdHkvaGVscFwiO1xuXG5sZXQgY2hlY2tIZWxwID0ge31cbmZ1bmN0aW9uIGFkZEhlbHAoaGVscE1hcCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGhlbHBNYXApIHtcbiAgICAgICAgY2hlY2tIZWxwW2tleV0gPSBoZWxwTWFwW2tleV07XG4gICAgfSAgICBcbn1cblxuYWRkSGVscChhMTF5SGVscCk7XG5cbmV4cG9ydCB7IGNoZWNrSGVscCB9XG5cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQ2hlY2tlciB9IGZyb20gXCIuL0NoZWNrZXJcIjtcbmV4cG9ydCB7IENoZWNrZXIgfSIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgYTExeU5scyB9IGZyb20gXCIuL2FjY2Vzc2liaWxpdHkvbmxzXCI7XG5pbXBvcnQgeyBkZXNpZ25ObHMgfSBmcm9tIFwiLi9kZXNpZ24vbmxzXCI7XG5cbmxldCBjaGVja05scyA9IHt9XG5cbmZ1bmN0aW9uIGFkZE5scyhubHNNYXApIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBubHNNYXApIHtcbiAgICAgICAgY2hlY2tObHNba2V5XSA9IG5sc01hcFtrZXldO1xuICAgIH0gICAgXG59XG5cbmFkZE5scyhhMTF5TmxzKTtcbmFkZE5scyhkZXNpZ25ObHMpO1xuXG5leHBvcnQgeyBjaGVja05scyB9XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IGExMXlSdWxlcyB9IGZyb20gXCIuL2FjY2Vzc2liaWxpdHkvcnVsZXNcIjtcbmltcG9ydCB7IGRlc2lnblJ1bGVzIH0gZnJvbSBcIi4vZGVzaWduL3J1bGVzXCI7XG5cbmxldCBjaGVja1J1bGVzID0gW11cblxuY2hlY2tSdWxlcyA9IGNoZWNrUnVsZXMuY29uY2F0KGExMXlSdWxlcyk7XG5jaGVja1J1bGVzID0gY2hlY2tSdWxlcy5jb25jYXQoZGVzaWduUnVsZXMpO1xuXG5leHBvcnQgeyBjaGVja1J1bGVzIH1cblxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBhMTF5UnVsZXNldHMgfSBmcm9tIFwiLi9hY2Nlc3NpYmlsaXR5L3J1bGVzZXRzXCI7XG5pbXBvcnQgeyBkZXNpZ25SdWxlc2V0cyB9IGZyb20gXCIuL2Rlc2lnbi9ydWxlc2V0c1wiO1xuXG5sZXQgY2hlY2tSdWxlc2V0cyA9IFtdXG5cbmNoZWNrUnVsZXNldHMgPSBjaGVja1J1bGVzZXRzLmNvbmNhdChhMTF5UnVsZXNldHMpO1xuY2hlY2tSdWxlc2V0cyA9IGNoZWNrUnVsZXNldHMuY29uY2F0KGRlc2lnblJ1bGVzZXRzKTtcblxuZXhwb3J0IHsgY2hlY2tSdWxlc2V0cyB9XG5cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgQ29weXJpZ2h0OjogMjAyMC0gSUJNLCBJbmNcblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgSU1hcHBlciwgSU1hcFJlc3VsdCwgQm91bmRzIH0gZnJvbSBcIi4uL2FwaS9JTWFwcGVyXCI7XG5pbXBvcnQgeyBET01VdGlsIH0gZnJvbSBcIi4uL2RvbS9ET01VdGlsXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tb25NYXBwZXIgaW1wbGVtZW50cyBJTWFwcGVyIHtcbiAgICBhYnN0cmFjdCBjaGlsZHJlbkhhdmVSb2xlKG5vZGU6IE5vZGUsIHJvbGU6IHN0cmluZykgOiBib29sZWFuO1xuICAgIGFic3RyYWN0IGdldFJvbGUobm9kZTogTm9kZSkgOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgZ2V0TmFtZXNwYWNlKCkgOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgZ2V0QXR0cmlidXRlcyhub2RlOiBOb2RlKSA6IHsgW2tleTpzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIHByb3RlY3RlZCBoaWVyYXJjaHlSb2xlIDogc3RyaW5nW10gPSBudWxsO1xuICAgIHByb3RlY3RlZCBoaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlOiBib29sZWFuW10gPSBudWxsO1xuICAgIHByb3RlY3RlZCBoaWVyYXJjaHlQYXRoOiBBcnJheTx7XG4gICAgICAgIHJvbGVQYXRoOiBzdHJpbmcsXG4gICAgICAgIHJvbGVDb3VudDoge1xuICAgICAgICAgICAgW3JvbGU6IHN0cmluZ106IG51bWJlclxuICAgICAgICB9XG4gICAgfT4gPSBudWxsO1xuICAgIHByb3RlY3RlZCBoaWVyYXJjaHlSZXN1bHRzOiBJTWFwUmVzdWx0W10gPSBudWxsO1xuXG4gICAgZ2V0Qm91bmRzKG5vZGU6IE5vZGUpIDogQm91bmRzIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmVzZXQobm9kZTogTm9kZSkge1xuICAgICAgICB0aGlzLmhpZXJhcmNoeVJvbGUgPSBbXTtcbiAgICAgICAgdGhpcy5oaWVyYXJjaHlSZXN1bHRzID0gW107XG4gICAgICAgIHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZSA9IFtdO1xuICAgICAgICB0aGlzLmhpZXJhcmNoeVBhdGggPSBbe1xuICAgICAgICAgICAgcm9sZVBhdGg6IFwiXCIsXG4gICAgICAgICAgICByb2xlQ291bnQ6IHt9XG4gICAgICAgIH1dO1xuXG4gICAgICAgIGxldCBhbmNlc3RvcnMgOiBOb2RlW10gPSBbXTtcbiAgICAgICAgbGV0IHBhcmVudCA9IERPTVV0aWwucGFyZW50Tm9kZShub2RlKTtcbiAgICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT0gOSAvKiBOb2RlLkRPQ1VNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgIGFuY2VzdG9ycy5wdXNoKHBhcmVudCk7XG4gICAgICAgICAgICBwYXJlbnQgPSBET01VdGlsLnBhcmVudE5vZGUocGFyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBhbmNlc3RvcnMgPSBhbmNlc3RvcnMucmV2ZXJzZSgpOyAgXG4gICAgICAgIGZvciAoY29uc3QgYW5jZXN0b3Igb2YgYW5jZXN0b3JzKSB7XG4gICAgICAgICAgICBsZXQgc2libGluZ3MgPSBbXTtcbiAgICAgICAgICAgIGxldCBzaWJsaW5nID0gYW5jZXN0b3IucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgd2hpbGUgKHNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncy5wdXNoKHNpYmxpbmcpO1xuICAgICAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNpYmxpbmdzID0gc2libGluZ3MucmV2ZXJzZSgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBzaWJsaW5nIG9mIHNpYmxpbmdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoSGllcmFyY2h5KHNpYmxpbmcpO1xuICAgICAgICAgICAgICAgIHRoaXMucG9wSGllcmFyY2h5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnB1c2hIaWVyYXJjaHkoYW5jZXN0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVzaEhpZXJhcmNoeShub2RlOiBOb2RlKSB7XG4gICAgICAgIGxldCByb2xlIDogc3RyaW5nO1xuICAgICAgICBsZXQgcHJlc2VudGF0aW9uYWxDb250YWluZXIgPSB0aGlzLmhpZXJhcmNoeUNoaWxkcmVuSGF2ZVJvbGUubGVuZ3RoID4gMCAmJiAhdGhpcy5oaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlW3RoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZS5sZW5ndGgtMV07XG4gICAgICAgIGlmIChwcmVzZW50YXRpb25hbENvbnRhaW5lcikge1xuICAgICAgICAgICAgcm9sZSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgdGhpcy5oaWVyYXJjaHlDaGlsZHJlbkhhdmVSb2xlLnB1c2goZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcm9sZSA9IHRoaXMuZ2V0Um9sZShub2RlKSB8fCBcIm5vbmVcIjtcbiAgICAgICAgICAgIHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZS5wdXNoKHRoaXMuY2hpbGRyZW5IYXZlUm9sZShub2RlLCByb2xlKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaWVyYXJjaHlSb2xlLnB1c2gocm9sZSk7XG4gICAgICAgIGlmIChyb2xlICE9PSBcIm5vbmVcIikge1xuICAgICAgICAgICAgbGV0IHBhcmVudFBhdGhJbmZvID0gdGhpcy5oaWVyYXJjaHlQYXRoW3RoaXMuaGllcmFyY2h5UGF0aC5sZW5ndGgtMV07XG4gICAgICAgICAgICBwYXJlbnRQYXRoSW5mby5yb2xlQ291bnRbcm9sZV0gPSAocGFyZW50UGF0aEluZm8ucm9sZUNvdW50W3JvbGVdIHx8IDApICsgMTsgXG4gICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVBhdGgucHVzaCh7XG4gICAgICAgICAgICAgICAgXCJyb2xlUGF0aFwiOiBwYXJlbnRQYXRoSW5mby5yb2xlUGF0aCtcIi9cIityb2xlK1wiW1wiK3BhcmVudFBhdGhJbmZvLnJvbGVDb3VudFtyb2xlXStcIl1cIixcbiAgICAgICAgICAgICAgICBcInJvbGVDb3VudFwiOiB7fVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYXR0ciA9IHt9XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgICAgICBhdHRyID0gdGhpcy5nZXRBdHRyaWJ1dGVzKG5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGllcmFyY2h5UmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICAgICAgICBuYW1lc3BhY2U6IHRoaXMuZ2V0TmFtZXNwYWNlKCksXG4gICAgICAgICAgICByb2xlOiByb2xlLFxuICAgICAgICAgICAgYXR0cmlidXRlczogYXR0cixcbiAgICAgICAgICAgIHJvbGVQYXRoOiB0aGlzLmhpZXJhcmNoeVBhdGhbdGhpcy5oaWVyYXJjaHlQYXRoLmxlbmd0aC0xXS5yb2xlUGF0aCxcbiAgICAgICAgICAgIGJvdW5kczogdGhpcy5nZXRCb3VuZHMobm9kZSlcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvcEhpZXJhcmNoeSgpIHtcbiAgICAgICAgbGV0IHJvbGUgPSB0aGlzLmhpZXJhcmNoeVJvbGUucG9wKCk7XG4gICAgICAgIHRoaXMuaGllcmFyY2h5Q2hpbGRyZW5IYXZlUm9sZS5wb3AoKTtcbiAgICAgICAgaWYgKHJvbGUgIT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICB0aGlzLmhpZXJhcmNoeVBhdGgucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaWVyYXJjaHlSZXN1bHRzLnBvcCgpO1xuICAgIH1cblxuICAgIG9wZW5TY29wZShub2RlOiBOb2RlKTogSU1hcFJlc3VsdFtdIHtcbiAgICAgICAgaWYgKHRoaXMuaGllcmFyY2h5Um9sZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldChub2RlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hIaWVyYXJjaHkobm9kZSlcblxuICAgICAgICByZXR1cm4gdGhpcy5oaWVyYXJjaHlSZXN1bHRzO1xuICAgIH1cblxuICAgIGNsb3NlU2NvcGUobm9kZTogTm9kZSk6IElNYXBSZXN1bHRbXSB7XG4gICAgICAgIGxldCByZXRWYWwgOiBJTWFwUmVzdWx0W10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCByZXMgb2YgdGhpcy5oaWVyYXJjaHlSZXN1bHRzKSB7XG4gICAgICAgICAgICAvLyBjb25zdCB0ZW1wID0gcmVzLm5vZGU7XG4gICAgICAgICAgICAvLyByZXMubm9kZSA9IG51bGw7XG4gICAgICAgICAgICAvLyBsZXQgY2xvbmVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpKTtcbiAgICAgICAgICAgIC8vIGNsb25lZC5ub2RlID0gcmVzLm5vZGUgPSB0ZW1wOyBcbiAgICAgICAgICAgIC8vIHJldFZhbC5wdXNoKGNsb25lZCk7XG4gICAgICAgICAgICByZXRWYWwucHVzaChyZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldFZhbFtyZXRWYWwubGVuZ3RoLTFdLnJvbGUgPSBcIi9cIityZXRWYWxbcmV0VmFsLmxlbmd0aC0xXS5yb2xlXG4gICAgICAgIHRoaXMucG9wSGllcmFyY2h5KCk7XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBJTWFwUmVzdWx0IH0gZnJvbSBcIi4uL2FwaS9JTWFwcGVyXCI7XG5pbXBvcnQgeyBSdWxlQ29udGV4dEhpZXJhcmNoeSB9IGZyb20gXCIuLi9hcGkvSUVuZ2luZVwiO1xuXG4vLyBDb250ZXh0IHRoYXQgd2lsbCBjYXVzZSB0aGlzIHJ1bGUgdG8gZXhlY3V0ZS4gXG4vLyBDb250ZXh0IHN5bnRheDpcbi8vICAgVHJpZ2dlcnM6XG4vLyAgICAgYXJpYTpyb2xlIC0gVHJpZ2dlcnMgb24gZWxlbWVudCB3aXRoIEFSSUEgcm9sZSByb2xlXG4vLyAgICAgYXJpYTpyb2xlW2F0dHJpYnV0ZV0gLSBUcmlnZ2VycyBvbiBlbGVtZW50cyB3aXRoIHRoZSBlcXVpdmFsZW50IGxvZ2ljYWwgXG4vLyAgICAgICBhcmlhLSBhdHRyaWJ1dGUgKGUuZy4sIGJ1dHRvbltkaXNhYmxlZF0gd2lsbCB0cmlnZ2VyIG9uIFxuLy8gICAgICAgPGJ1dHRvbiBkaXNhYmxlZD4gb3IgPGRpdiByb2xlPVwiYnV0dG9uXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj4pXG4vLyAgICAgcm9sZVthdHRyaWJ1dGU9dmFsdWVdIC0gU2ltaWxhciB0byBhYm92ZSwgd2l0aCBjYXNlLXNlbnNpdGl2ZSBtYXRjaFxuLy8gICAgICAgdG8gdmFsdWVcbi8vICAgICByb2xlW2F0dHJpYnV0ZX52YWx1ZV0gLSBTaW1pbGFyIHRvIGFib3ZlLCB3aXRoIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hcbi8vICAgICBkb206ZWxlbWVudCAtIFRyaWdnZXJzIG9uIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVcbi8vICAgICBkb206ZWxlbWVudFthdHRyaWJ1dGVdIC0gVHJpZ2dlcnMgb24gYSBkb20gZWxlbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlXG4vLyAgICAgZG9tOipbYXR0cmlidXRlXSAtIFRyaWdnZXJzIG9uIGFsbCBlbGVtZW50cyB3aXRoIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlXG4vLyAgIENvbWJpbmluZyB0cmlnZ2Vyczpcbi8vICAgICB0cmlnZ2VyMSB0cmlnZ2VyMiAtIFRyaWdnZXJzIG9uIGVsZW1lbnRzIHdpdGggdHJpZ2dlcjIgd2l0aGluIGFuIFxuLy8gICAgICAgZWxlbWVudCB3aXRoIHRyaWdnZXIxXG4vLyAgICAgIXRyaWdnZXIxIHRyaWdnZXIyIC0gVHJpZ2dlcnMgb24gZWxlbWVudHMgd2l0aCB0cmlnZ2VyMiBub3Qgd2l0aGluXG4vLyAgICAgICBlbGVtZW50IHdpdGggdHJpZ2dlcjFcbi8vICAgICB0cmlnZ2VyMT50cmlnZ2VyMiAtIFRyaWdnZXJzIG9uIGVsZW1lbnRzIHdpdGggdHJpZ2dlcjIgd2l0aCBhblxuLy8gICAgICAgYW4gaW1tZWRpYXRlIHBhcmVudCB3aXRoIHRyaWdnZXIxXG4vLyAgICAgdHJpZ2dlcjErdHJpZ2dlcjIgLSBUcmlnZ2VycyBvbiBlbGVtZW50cyB3aXRoIHRyaWdnZXIyIHdpdGggYW5cbi8vICAgICAgIGltbWVkaWF0ZSBwcmV2aW91cyBzaWJsaW5nIHdpdGggdHJpZ2dlcjFcbi8vICAgICB0cmlnZ2VyMX50cmlnZ2VyMiAtIFRyaWdnZXJzIG9uIGVsZW1lbnRzIHdpdGggdHJpZ2dlcjIgd2l0aCBhblxuLy8gICAgICAgc29tZSBlYXJsaWVyIHNpYmxpbmcgd2l0aCB0cmlnZ2VyMVxuLy8gICAgIGNvbnRleHQsY29udGV4dCAtIFRyaWdnZXJzIG9uIGVsZW1lbnRzIHdpdGggZWl0aGVyIGNvbnRleHRcbmV4cG9ydCBjbGFzcyBBdHRySW5mbyB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBpbmNsdXNpdmU6IGJvb2xlYW4sXG4gICAgICAgIHB1YmxpYyBhdHRyOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBlcT86IHN0cmluZyxcbiAgICAgICAgcHVibGljIHZhbHVlPzogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGlmICghaW5jbHVzaXZlIFxuICAgICAgICAgICAgICAgICYmICgodHlwZW9mIGVxKSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBlcS5sZW5ndGggPiAwKSlcbiAgICAgICAge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGhhdmUgIWF0dHJcIitlcStcIiBjb250ZXh0XCIpOyAgICBcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5jbHVzaXZlICYmICh0eXBlb2YgZXEpICE9PSBcInVuZGVmaW5lZFwiICYmIGVxLmxlbmd0aCA+IDAgJiYgKCh0eXBlb2YgdmFsdWUpID09PSBcInVuZGVmaW5lZFwiIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBoYXZlIGVxdWl2YWxlbmNlIGNoZWNrIHdpdGhvdXQgYSB2YWx1ZVwiKTsgICAgXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbWF0Y2hlcyhjb250ZXh0OiBJTWFwUmVzdWx0KSB7XG4gICAgICAgIGNvbnN0IHJ1bGVBdHRyUGFydCA9IHRoaXM7IFxuICAgICAgICBjb25zdCBlbGVtQXR0cnMgPSBjb250ZXh0LmF0dHJpYnV0ZXM7XG4gICAgICAgIGlmICghKHJ1bGVBdHRyUGFydC5hdHRyIGluIGVsZW1BdHRycykpIHtcbiAgICAgICAgICAgIHJldHVybiAhcnVsZUF0dHJQYXJ0LmluY2x1c2l2ZVxuICAgICAgICB9IGVsc2UgaWYgKCFydWxlQXR0clBhcnQuaW5jbHVzaXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoIXJ1bGVBdHRyUGFydC5lcSkge1xuICAgICAgICAgICAgLy8gaW5jbHVzaXZlIG1hdGNoIGFuZCBJIGhhdmUgdGhhdCBhdHRyaWJ1dGUgYW5kIG5vIGVxdWl2YWxlbmNlIGRlZmluZWRcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaW5jbHVzaXZlIG1hdGNoIGFuZCBJIGhhdmUgdGhhdCBhdHRyaWJ1dGUgYW5kIGVxdWl2YWxlbmNlIGRlZmluZWRcbiAgICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IGVsZW1BdHRyc1tydWxlQXR0clBhcnQuYXR0cl07XG4gICAgICAgICAgICBpZiAocnVsZUF0dHJQYXJ0LmVxID09PSBcIj1cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBydWxlQXR0clBhcnQudmFsdWUgPT09IGF0dHJWYWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUF0dHJQYXJ0LmVxID09PSBcIiE9XCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZUF0dHJQYXJ0LnZhbHVlICE9PSBhdHRyVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGVBdHRyUGFydC5lcSA9PT0gXCJ+XCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZUF0dHJQYXJ0LnZhbHVlID09PSBhdHRyVmFsdWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGVBdHRyUGFydC5lcSA9PT0gXCIhflwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVBdHRyUGFydC52YWx1ZSAhPT0gYXR0clZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb250ZXh0IGVxdWl2YWxlbmNlIG9wZXJhdG9yIG5vdCBzdXBwb3J0ZWRcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBhcnRJbmZvIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGluY2x1c2l2ZTogYm9vbGVhbiwgXG4gICAgICAgIHB1YmxpYyBuYW1lc3BhY2U6IHN0cmluZyxcbiAgICAgICAgcHVibGljIHJvbGU6IHN0cmluZywgXG4gICAgICAgIHB1YmxpYyBhdHRyczogQXR0ckluZm9bXSwgXG4gICAgICAgIHB1YmxpYyBjb25uZWN0b3I6IHN0cmluZykge1xuICAgICAgICAgICAgaWYgKHJvbGUgPT09IFwiKlwiICYmICFpbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIhKiBjb250ZXh0IG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaGVzKCBcbiAgICAgICAgY29udGV4dEhpZXI6IFJ1bGVDb250ZXh0SGllcmFyY2h5LFxuICAgICAgICBoaWVyTGV2ZWw6IG51bWJlcikgOiBib29sZWFuIFxuICAgIHtcbiAgICAgICAgY29uc3QgcnVsZVBhcnQgPSB0aGlzO1xuICAgICAgICBsZXQgcnVsZVJvbGVNYXRjaCA9IChydWxlUGFydC5uYW1lc3BhY2UgaW4gY29udGV4dEhpZXIpICYmIGNvbnRleHRIaWVyW3J1bGVQYXJ0Lm5hbWVzcGFjZV1baGllckxldmVsXVxuICAgICAgICAgICAgJiYgKGNvbnRleHRIaWVyW3J1bGVQYXJ0Lm5hbWVzcGFjZV1baGllckxldmVsXS5yb2xlID09PSBydWxlUGFydC5yb2xlXG4gICAgICAgICAgICAgICAgfHwgY29udGV4dEhpZXJbcnVsZVBhcnQubmFtZXNwYWNlXVtoaWVyTGV2ZWxdLnJvbGUgIT09IFwibm9uZVwiICYmIHJ1bGVQYXJ0LnJvbGUgPT09IFwiKlwiKTtcbiAgICAgICAgaWYgKHJ1bGVSb2xlTWF0Y2ggXG4gICAgICAgICAgICAmJiBydWxlUGFydC5yb2xlID09PSBcIipcIiBcbiAgICAgICAgICAgICYmIHJ1bGVQYXJ0Lm5hbWVzcGFjZSA9PT0gXCJkb21cIiBcbiAgICAgICAgICAgICYmIChjb250ZXh0SGllcltydWxlUGFydC5uYW1lc3BhY2VdW2hpZXJMZXZlbF0ucm9sZSA9PT0gXCIjdGV4dFwiXG4gICAgICAgICAgICAgICAgfHwgY29udGV4dEhpZXJbcnVsZVBhcnQubmFtZXNwYWNlXVtoaWVyTGV2ZWxdLnJvbGUgPT09IFwiLyN0ZXh0XCIpKSB7XG4gICAgICAgICAgICBydWxlUm9sZU1hdGNoID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJ1bGVQYXJ0LmluY2x1c2l2ZSAmJiAhcnVsZVJvbGVNYXRjaCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIXJ1bGVQYXJ0LmluY2x1c2l2ZSAmJiAhcnVsZVJvbGVNYXRjaCkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgLy8gTWF0Y2ggdGhlIGF0dHJpYnV0ZXNcbiAgICAgICAgY29uc3QgcnVsZUF0dHJzID0gcnVsZVBhcnQuYXR0cnM7XG4gICAgICAgIGNvbnN0IGVsZW1Db250ZXh0ID0gY29udGV4dEhpZXJbcnVsZVBhcnQubmFtZXNwYWNlXVtoaWVyTGV2ZWxdO1xuICAgICAgICBsZXQgbWF0Y2ggPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGVBdHRyUGFydCBvZiBydWxlQXR0cnMpIHtcbiAgICAgICAgICAgIG1hdGNoID0gbWF0Y2ggJiYgcnVsZUF0dHJQYXJ0Lm1hdGNoZXMoZWxlbUNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcnVsZVBhcnQuaW5jbHVzaXZlKSBtYXRjaCA9ICFtYXRjaDtcbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH1cblxufVxuXG5leHBvcnQgY2xhc3MgQ29udGV4dCB7XG4gICAgY29udGV4dEluZm8gOiBQYXJ0SW5mb1tdID0gW11cblxuICAgIGNvbnN0cnVjdG9yKGNvbnRleHQ6IHN0cmluZykge1xuICAgICAgICBsZXQgY29udGV4dEhpZXJNYXRjaGVzIDogc3RyaW5nW10gPSBjb250ZXh0Lm1hdGNoKC8hP1svYS16QS1aOjAtOSpcXC1fXSsoXFxbW15cXF1dK1xcXSkqWyA+K35dPy9nKTtcbiAgICAgICAgbGV0IHJlc3VsdHMgOiBQYXJ0SW5mb1tdID0gW11cbiAgICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIGNvbnRleHRIaWVyTWF0Y2hlcykge1xuICAgICAgICAgICAgbGV0IHBhcnRzID0gcGFydC5tYXRjaCgvKCE/KShbL2EtekEtWjowLTkqXFwtX10rKSgoXFxbW15cXF1dK1xcXSkqKShbID4rfl0/KS8pO1xuICAgICAgICAgICAgbGV0IGF0dHJJbmZvIDogQXR0ckluZm9bXSA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyUGFydCBvZiBwYXJ0c1szXS5tYXRjaCgvXFxbKFteXFxdXSspXFxdL2cpIHx8IFtdKSB7XG4gICAgICAgICAgICAgICAgbGV0IGF0dHJQYXJ0cyA9IGF0dHJQYXJ0Lm1hdGNoKC9cXFsoIT8pKFthLXo6QS1aKlxcLV9dKykoIT9bPX5dKT8oW15cXF1dKyk/XFxdLyk7XG4gICAgICAgICAgICAgICAgYXR0ckluZm8ucHVzaChuZXcgQXR0ckluZm8oXG4gICAgICAgICAgICAgICAgICAgIGF0dHJQYXJ0c1sxXSAhPT0gXCIhXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJQYXJ0c1syXS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBhdHRyUGFydHNbM10sXG4gICAgICAgICAgICAgICAgICAgIGF0dHJQYXJ0c1s0XVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGFydHNbMl0gPSBwYXJ0c1syXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3QgbnNQYXJ0cyA9IHBhcnRzWzJdLnNwbGl0KFwiOlwiKTtcbiAgICAgICAgICAgIGxldCBpbmNsID0gcGFydHNbMV0gIT09IFwiIVwiO1xuICAgICAgICAgICAgY29uc3QgbnMgPSBuc1BhcnRzLnNoaWZ0KCk7XG4gICAgICAgICAgICBsZXQgcm9sZSA9IG5zUGFydHMuam9pbihcIjpcIik7XG4gICAgICAgICAgICBsZXQgcGFydEluZm8gPSBuZXcgUGFydEluZm8oaW5jbCwgbnMsIHJvbGUsIGF0dHJJbmZvLCBwYXJ0c1twYXJ0cy5sZW5ndGgtMV0pO1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBhcnRJbmZvKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRleHRJbmZvID0gcmVzdWx0cztcbiAgICB9XG5cbiAgICBzdGF0aWMgY2xlYW5Db250ZXh0KGNvbnRleHQ6IHN0cmluZykgOiBzdHJpbmcge1xuICAgICAgICBjb250ZXh0ID0gY29udGV4dC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQucmVwbGFjZSgvICshL2csIFwiICFcIik7XG4gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnJlcGxhY2UoLyArKFs+K34sXSkvZywgXCIkMVwiKTtcbiAgICAgICAgY29udGV4dCA9IGNvbnRleHQucmVwbGFjZSgvKFs+K34sXSkgKy9nLCBcIiQxXCIpO1xuICAgICAgICBjb250ZXh0ID0gY29udGV4dC5yZXBsYWNlKC8gKy9nLCBcIiBcIik7XG4gICAgICAgIHJldHVybiBjb250ZXh0LnRyaW0oKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcGFyc2UoY29udGV4dDogc3RyaW5nKSB7XG4gICAgICAgIGxldCBjb250ZXh0cyA9IENvbnRleHQuc3BsaXRNdWx0aXBsZShDb250ZXh0LmNsZWFuQ29udGV4dChjb250ZXh0KSk7XG5cbiAgICAgICAgbGV0IHJldFZhbCA6IENvbnRleHRbXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGV4dHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGxldCBjdHggPSBuZXcgQ29udGV4dChjb250ZXh0c1tpXSk7XG4gICAgICAgICAgICByZXRWYWwucHVzaChjdHgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBpbml0aWFsIHByb2Nlc3Npbmcgb2Ygc3BsaXR0aW5nIG9uIGNvbW1hIC0gY29udGV4dCxjb250ZXh0XG4gICAgICogQHBhcmFtIGNvbnRleHQgXG4gICAgICovXG4gICAgc3RhdGljIHNwbGl0TXVsdGlwbGUoY29udGV4dDogc3RyaW5nKSA6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IGNvbnRleHRzID0gW107XG4gICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgICBpZiAoY29udGV4dC5pbmRleE9mKFwiLFwiKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0cy5wdXNoKGNvbnRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGMgb2YgY29udGV4dC5zcGxpdChcIixcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dHMucHVzaChjKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRleHRzO1xuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IElFbmdpbmUsIFJlcG9ydCwgUnVsZSwgUnVsZURldGFpbHMsIFJ1bGVSZXN1bHQsIGVSdWxlQ29uZmlkZW5jZSwgUnVsZUNvbnRleHQsIE5sc01hcCwgSGVscE1hcCwgUnVsZUNvbnRleHRIaWVyYXJjaHkgfSBmcm9tIFwiLi4vYXBpL0lFbmdpbmVcIjtcbmltcG9ydCB7IERPTVdhbGtlciB9IGZyb20gXCIuLi9kb20vRE9NV2Fsa2VyXCI7XG5pbXBvcnQgeyBDb250ZXh0LCBQYXJ0SW5mbywgQXR0ckluZm8gfSBmcm9tIFwiLi9Db250ZXh0XCI7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL0NvbmZpZ1wiO1xuaW1wb3J0IHsgSU1hcFJlc3VsdCwgSU1hcHBlciB9IGZyb20gXCIuLi9hcGkvSU1hcHBlclwiO1xuaW1wb3J0IHsgRE9NTWFwcGVyIH0gZnJvbSBcIi4uL2RvbS9ET01NYXBwZXJcIjtcbmltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi4vZG9tL0RPTVV0aWxcIjtcbmltcG9ydCB7IEFSSUFNYXBwZXIgfSBmcm9tIFwiLi4vLi5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZURvY3VtZW50IGV4dGVuZHMgRG9jdW1lbnQge1xuICAgIGFjZUNhY2hlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG59XG5leHBvcnQgaW50ZXJmYWNlIENhY2hlRWxlbWVudCBleHRlbmRzIEVsZW1lbnQge1xuICAgIGFjZUNhY2hlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9XG59XG5cbmNsYXNzIFdyYXBwZWRSdWxlIHtcbiAgICBuczogc3RyaW5nO1xuICAgIGlkeD86IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yIChwdWJsaWMgcnVsZTogUnVsZSwgcHVibGljIHBhcnNlZEluZm8gOiBDb250ZXh0KSB7XG4gICAgICAgIHRoaXMubnMgPSB0aGlzLnBhcnNlZEluZm8uY29udGV4dEluZm9bdGhpcy5wYXJzZWRJbmZvLmNvbnRleHRJbmZvLmxlbmd0aC0xXS5uYW1lc3BhY2U7XG4gICAgICAgIENvbmZpZy5ERUJVRyAmJiBjb25zb2xlLmxvZyhcIkFkZGVkIFJ1bGU6XCIsIHJ1bGUuaWQsIEpTT04uc3RyaW5naWZ5KHRoaXMucGFyc2VkSW5mbykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgY29udmVydGluZyB0aGUgbm9kZSBpbnRvIGEgc25pcHBldCB3aGljaCBjYW4gYmUgYWRkZWQgdG8gcmVwb3J0LlxuICAgICAqXG4gICAgICogTm90ZTogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgdGhlIG5vZGUgYW5kIGV4dHJhY3QgdGhlIG5vZGUgbmFtZSBhbmQgdGhlIGF0dHJpYnV0ZXMgYW5kIGJ1aWxkIHRoZSBzbmlwcGV0IGJhc2VkIG9uIHRoaXMuXG4gICAgICpcbiAgICAgKiBUT0RPOiBGdXR1cmUsIG1heWJlIHdlIGNhbiBleHRyYWN0IG1vcmUgdGhlbiBqdXN0IHNpbmdsZSBsaW5lLCBhZGQgbW9yZSBpbmZvIG9yIGV2ZW4gYWRkIGNsb3NpbmcgdGFncyBldGMuLi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG5vZGUgLSBUaGUgaHRtbCBlbGVtZW50IHRvIGNvbnZlcnQgaW50byBlbGVtZW50IHNuaXBwZXQgd2l0aCBub2RlIG5hbWUgYW5kIGF0dHJpYnV0ZXMgb25seS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gbm9kZVNuaXBwZXQgLSByZXR1cm4gdGhlIGVsZW1lbnQgc25pcHBldCBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBwcm92aWRlZCB3aGljaCBvbmx5IGNvbnRhaW5zLFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlbmFtZSBhbmQgYXR0cmlidXRlcy4gaS5lLiA8dGFibGUgaWQ9XFxcImxheW91dF90YWJsZTFcXFwiIHJvbGU9XFxcInByZXNlbnRhdGlvblxcXCI+XG4gICAgICpcbiAgICAgKiBAbWVtYmVyT2YgdGhpc1xuICAgICAqL1xuICAgIHN0YXRpYyBjb252ZXJ0Tm9kZVRvU25pcHBldChub2RlIDogRWxlbWVudCkge1xuICAgICAgICAvLyBWYXJpYWJsZSBEZWNsZXJhdGlvblxuICAgICAgICB2YXIgbm9kZVNuaXBwZXQgPSAnJztcblxuICAgICAgICAvLyBFeHRyYWN0IHRoZSBub2RlIG5hbWUgYW5kIGFkZCBpdCB0byB0aGUgbm9kZSBzbmlwcGV0XG4gICAgICAgIG5vZGVTbmlwcGV0ICs9ICc8JyArIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAvLyBFeHRyYWN0IGFsbCB0aGUgbm9kZSBhdHRyaWJ1dGVzIGFzIGFuIGFycmF5XG4gICAgICAgIHZhciBub2RlQXR0cmlidXRlcyA9IG5vZGUuYXR0cmlidXRlcztcblxuICAgICAgICAvLyBJbiB0aGUgY2FzZSB0aGVyZSBhcmUgYXR0cmlidXRlcyBvbiB0aGlzIG5vZGVcbiAgICAgICAgaWYgKG5vZGVBdHRyaWJ1dGVzICE9PSBudWxsICYmIHR5cGVvZiBub2RlQXR0cmlidXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHtcblxuICAgICAgICAgICAgLy8gTG9vcCBvdmVyIGFsbCB0aGVzZXMgYXR0cmlidXRlcyBhbmQgYWRkIHRoZSBuYW1lIGFuZCB2YWx1ZSB0byB0aGUgbm9kZVNuaXBwZXQgd2hpY2ggd2lsbCBiZSByZXR1cm5lZFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IG5vZGVBdHRyaWJ1dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGVBdHRyaWJ1dGVzW2ldLm5hbWUgPT09IFwiZGF0YS1uYW1ld2Fsa1wiKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGF0dHJpYnV0ZSBuYW1lIGFuZCB2YWx1ZS5cbiAgICAgICAgICAgICAgICBub2RlU25pcHBldCArPSAnICcgKyBub2RlQXR0cmlidXRlc1tpXS5uYW1lICsgJz1cIicgKyBub2RlQXR0cmlidXRlc1tpXS52YWx1ZSArICdcIic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDbG9zZSB0aGUgbm9kZVxuICAgICAgICBub2RlU25pcHBldCArPSAnPic7XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBub2RlIHNuaXBwZXRcbiAgICAgICAgcmV0dXJuIG5vZGVTbmlwcGV0O1xuICAgIH1cblxuICAgIHJ1bihlbmdpbmU6IEVuZ2luZSwgY29udGV4dDogUnVsZUNvbnRleHQsIG9wdGlvbnM/OiB7fSwgY29udGV4dEhpZXJhcmNoaWVzPzogUnVsZUNvbnRleHRIaWVyYXJjaHkpIDogUnVsZURldGFpbHNbXSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBsZXQgcmVzdWx0czogUnVsZVJlc3VsdCB8IFJ1bGVSZXN1bHRbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLnJ1bGUucnVuKGNvbnRleHQsIG9wdGlvbnMsIGNvbnRleHRIaWVyYXJjaGllcyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGVycjogRXJyb3IgPSBlO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlJVTEUgRVhDRVBUSU9OOlwiLHRoaXMucnVsZS5pZCwgY29udGV4dC5kb20ucm9sZVBhdGgsIGVyci5zdGFjayk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgaWYgKCFyZXN1bHRzKSByZXN1bHRzID0gW107XG5cbiAgICAgICAgaWYgKCEocmVzdWx0cyBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgICAgICAgcmVzdWx0cyA9IFtyZXN1bHRzXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmV0VmFsIDogUnVsZURldGFpbHNbXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZW5naW5lLmdldE1lc3NhZ2UodGhpcy5ydWxlLmlkLCByZXN1bHQucmVhc29uSWQsIHJlc3VsdC5tZXNzYWdlQXJncyk7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5zIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBwYXRoW25zXSA9IGNvbnRleHRbbnNdLnJvbGVQYXRoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBydWxlSWQgPSB0aGlzLnJ1bGUuaWQucmVwbGFjZSgvXiguKilcXCRcXCRcXGQrJC8sIFwiJDFcIik7XG5cbiAgICAgICAgICAgIHJldFZhbC5wdXNoKHtcbiAgICAgICAgICAgICAgICBydWxlSWQ6IHJ1bGVJZCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogcmVzdWx0LnZhbHVlLFxuICAgICAgICAgICAgICAgIG5vZGU6IGNvbnRleHRbXCJkb21cIl0ubm9kZSxcbiAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIHJ1bGVUaW1lOiBlbmRUaW1lLXN0YXJ0VGltZSxcbiAgICAgICAgICAgICAgICByZWFzb25JZDogcmVzdWx0LnJlYXNvbklkLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZUFyZ3M6IHJlc3VsdC5tZXNzYWdlQXJncyxcbiAgICAgICAgICAgICAgICBhcGlBcmdzOiByZXN1bHQuYXBpQXJncyxcbiAgICAgICAgICAgICAgICBib3VuZHM6IGNvbnRleHRbXCJkb21cIl0uYm91bmRzLFxuICAgICAgICAgICAgICAgIHNuaXBwZXQ6IFdyYXBwZWRSdWxlLmNvbnZlcnROb2RlVG9TbmlwcGV0KGNvbnRleHRbXCJkb21cIl0ubm9kZSBhcyBFbGVtZW50KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVuZ2luZSBpbXBsZW1lbnRzIElFbmdpbmUge1xuICAgIG1hcHBlcnMgOiB7IFtuYW1lc3BhY2U6IHN0cmluZ10gOiBJTWFwcGVyIH0gPSB7fTtcbiAgICBydWxlTWFwIDogeyBbaWQ6IHN0cmluZ106IFJ1bGUgfSA9IHt9O1xuICAgIHdyYXBwZWRSdWxlTWFwIDogeyBbaWQ6IHN0cmluZ106IFdyYXBwZWRSdWxlIH0gPSB7fTtcbiAgICBubHNNYXAgOiBObHNNYXAgPSB7fVxuICAgIGhlbHBNYXAgOiBIZWxwTWFwID0ge31cblxuICAgIHByaXZhdGUgaW5jbFJ1bGVzOiB7XG4gICAgICAgIFtuc1JvbGU6IHN0cmluZ106IFdyYXBwZWRSdWxlW11cbiAgICB9ID0ge31cblxuICAgIHByaXZhdGUgZXhjbFJ1bGVzOiB7XG4gICAgICAgIFtuc1JvbGU6IHN0cmluZ106IFdyYXBwZWRSdWxlW11cbiAgICB9ID0ge31cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBOZWVkIGEgRE9NIE1hcHBlciBhcyBhIG1pbmltdW1cbiAgICAgICAgdGhpcy5hZGRNYXBwZXIobmV3IERPTU1hcHBlcigpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjbGVhckNhY2hlcyhjYWNoZVJvb3QgOiBOb2RlKSA6IHZvaWQge1xuICAgICAgICBkZWxldGUgKGNhY2hlUm9vdC5vd25lckRvY3VtZW50IGFzIENhY2hlRG9jdW1lbnQpLmFjZUNhY2hlO1xuICAgICAgICBsZXQgbncgPSBuZXcgRE9NV2Fsa2VyKGNhY2hlUm9vdCk7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGRlbGV0ZSAobncubm9kZSBhcyBDYWNoZUVsZW1lbnQpLmFjZUNhY2hlO1xuICAgICAgICAgICAgbncubm9kZS5vd25lckRvY3VtZW50ICYmIGRlbGV0ZSAobncubm9kZS5vd25lckRvY3VtZW50IGFzIENhY2hlRG9jdW1lbnQpLmFjZUNhY2hlO1xuICAgICAgICB9IHdoaWxlIChudy5uZXh0Tm9kZSgpKTtcbiAgICB9XG5cbiAgICBydW4ocm9vdDogRG9jdW1lbnQgfCBOb2RlLCBvcHRpb25zPzoge30pOiBQcm9taXNlPFJlcG9ydD4ge1xuICAgICAgICBpZiAocm9vdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFwibnVsbCBkb2N1bWVudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm9vdC5ub2RlVHlwZSA9PT0gOSAvKiBOb2RlLkRPQ1VNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgIHJvb3QgPSAocm9vdCBhcyBEb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIHJvb3Qub3duZXJEb2N1bWVudCAmJiAoKHJvb3Qub3duZXJEb2N1bWVudCBhcyBhbnkpLlBUX0NIRUNLX0hJRERFTl9DT05URU5UID0gZmFsc2UpO1xuICAgICAgICBFbmdpbmUuY2xlYXJDYWNoZXMocm9vdCk7XG4gICAgICAgIGNvbnN0IHdhbGtlciA9IG5ldyBET01XYWxrZXIocm9vdCk7XG4gICAgICAgIGNvbnN0IHJldFZhbCA6IFJlcG9ydCA9IHtcbiAgICAgICAgICAgIHJlc3VsdHM6IFtdLFxuICAgICAgICAgICAgbnVtRXhlY3V0ZWQ6IDAsXG4gICAgICAgICAgICBydWxlVGltZTogMCxcbiAgICAgICAgICAgIHRvdGFsVGltZTogMFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIC8vIFJlc2V0IHRoZSByb2xlIG1hcHBlcnNcbiAgICAgICAgZm9yIChjb25zdCBuYW1lc3BhY2UgaW4gdGhpcy5tYXBwZXJzKSB7XG4gICAgICAgICAgICB0aGlzLm1hcHBlcnNbbmFtZXNwYWNlXS5yZXNldChyb290KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbnRleHQgZGV0ZWN0b3JcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBjb250ZXh0IGluZm9ybWF0aW9uIGZyb20gdGhlIHJ1bGUgbWFwcGVyc1xuICAgICAgICAgICAgY29uc3QgY29udGV4dEhpZXJhcmNoaWVzIDogUnVsZUNvbnRleHRIaWVyYXJjaHkgPSB7fVxuICAgICAgICAgICAgZm9yIChjb25zdCBuYW1lc3BhY2UgaW4gdGhpcy5tYXBwZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF3YWxrZXIuYkVuZFRhZykge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0SGllcmFyY2hpZXNbbmFtZXNwYWNlXSA9IHRoaXMubWFwcGVyc1tuYW1lc3BhY2VdLm9wZW5TY29wZSh3YWxrZXIubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChuYW1lc3BhY2UgPT09IFwiZG9tXCIgJiYgd2Fsa2VyLm5vZGUubm9kZVR5cGUgPT09IDEgLyogTm9kZS5FTEVNRU5UX05PREUgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGVsZW0gPSB3YWxrZXIubm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGV0IGlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKGVsZW0uaGFzQXR0cmlidXRlKFwiaWRcIikgJiYgKGlkID0gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKS50cmltKCkpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAocm9vdC5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKSA9PT0gZWxlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0SGllcmFyY2hpZXNbXCJkb21cIl1bY29udGV4dEhpZXJhcmNoaWVzW1wiZG9tXCJdLmxlbmd0aC0xXS5yb2xlUGF0aCA9IFwiLy8qW0BpZD0nXCIraWQrXCInXVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHRIaWVyYXJjaGllc1tuYW1lc3BhY2VdID0gdGhpcy5tYXBwZXJzW25hbWVzcGFjZV0uY2xvc2VTY29wZSh3YWxrZXIubm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAod2Fsa2VyLm5vZGUubm9kZVR5cGUgIT09IDExIFxuICAgICAgICAgICAgICAgICYmIChET01VdGlsLmlzTm9kZVZpc2libGUod2Fsa2VyLm5vZGUpXG4gICAgICAgICAgICAgICAgICAgIHx8IHdhbGtlci5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwic3R5bGVcIlxuICAgICAgICAgICAgICAgICAgICB8fCB3YWxrZXIubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImRhdGFsaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgfHwgd2Fsa2VyLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJwYXJhbVwiXG4gICAgICAgICAgICAgICAgICAgIHx8ICFET01VdGlsLmdldEFuY2VzdG9yKHdhbGtlci5ub2RlLCBbXCJib2R5XCJdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGxldCBjb250ZXh0IDogUnVsZUNvbnRleHQgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5zIGluIGNvbnRleHRIaWVyYXJjaGllcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuc0hpZXIgPSBjb250ZXh0SGllcmFyY2hpZXNbbnNdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0SGllciA9IG5zSGllcltuc0hpZXIubGVuZ3RoLTFdO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0W25zXSA9IGxhc3RIaWVyOyBcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2hpbmdSdWxlcyA9IHRoaXMuZ2V0TWF0Y2hpbmdSdWxlcyhjb250ZXh0SGllcmFyY2hpZXMpO1xuICAgICAgICAgICAgICAgIGxldCBkZXBNYXRjaCA9IHt9XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaGluZ1J1bGUgb2YgbWF0Y2hpbmdSdWxlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZnVsZmlsbHNEZXBlbmRlbmNpZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBtYXRjaGluZ1J1bGUucnVsZS5kZXBlbmRlbmNpZXMgfHwgW10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVwTWF0Y2hbZGVwXSkgZnVsZmlsbHNEZXBlbmRlbmNpZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZnVsZmlsbHNEZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHRzIDogUnVsZURldGFpbHNbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gbWF0Y2hpbmdSdWxlLnJ1bih0aGlzLCBjb250ZXh0LCBvcHRpb25zLCBjb250ZXh0SGllcmFyY2hpZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV3JhcHBlciBzaG93cyBlcnJvciBpbiBjb25zb2xlLiBTa2lwIHRoaXMgcnVsZSBhcyBOL0FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGtpbGwgdGhlIGVuZ2luZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgb3V0IG9mIHNjb3BlLCBpdCBmdWxmaWxscyB0aGUgZGVwZW5kZW5jeVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwTWF0Y2hbbWF0Y2hpbmdSdWxlLnJ1bGUuaWRdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwucmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0VmFsLnJ1bGVUaW1lICs9IHJlc3VsdC5ydWxlVGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwubnVtRXhlY3V0ZWQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnZhbHVlWzFdID09PSBlUnVsZUNvbmZpZGVuY2UuUEFTUykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBNYXRjaFtyZXN1bHQucnVsZUlkXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlICh3YWxrZXIubmV4dE5vZGUoKSk7XG4gICAgICAgIHJldFZhbC50b3RhbFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKS1zdGFydDtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXRWYWwpO1xuICAgIH1cblxuICAgIGVuYWJsZVJ1bGVzKHJ1bGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZUlkIGluIHRoaXMucnVsZU1hcCkge1xuICAgICAgICAgICAgdGhpcy5ydWxlTWFwW3J1bGVJZF0uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcnVsZUlkIG9mIHJ1bGVJZHMgfHwgW10pIHtcbiAgICAgICAgICAgIGlmICghKHJ1bGVJZCBpbiB0aGlzLnJ1bGVNYXApKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiV0FSTklORzogUnVsZSBJZFwiLHJ1bGVJZCxcImNvdWxkIG5vdCBiZSBlbmFibGVkLlwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ydWxlTWFwW3J1bGVJZF0uZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSdWxlKHJ1bGVJZDogc3RyaW5nKTogUnVsZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bGVNYXBbcnVsZUlkXTtcbiAgICB9XG5cbiAgICBnZXRSdWxlc0lkcygpIDogc3RyaW5nW10ge1xuICAgICAgICBsZXQgcmV0VmFsID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcnVsZUlkIGluIHRoaXMucnVsZU1hcCkge1xuICAgICAgICAgICAgcmV0VmFsLnB1c2gocnVsZUlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIGFkZFJ1bGVzKHJ1bGVzOiBSdWxlW10pIHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFJ1bGUocnVsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRSdWxlKHJ1bGU6IFJ1bGUpIHtcbiAgICAgICAgbGV0IGN0eHMgOkNvbnRleHRbXSA9IENvbnRleHQucGFyc2UocnVsZS5jb250ZXh0KTtcbiAgICAgICAgbGV0IGlkeCA9IDA7XG4gICAgICAgIGNvbnN0IHJ1bGVJZCA9IHJ1bGUuaWQ7XG4gICAgICAgIGlmIChydWxlSWQgaW4gdGhpcy5ydWxlTWFwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIldBUk5JTkc6IFJ1bGVcIixydWxlSWQsXCJhbHJlYWR5IGFkZGVkIHRvIGVuZ2luZS4gSWdub3JpbmcuLi5cIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydWxlTWFwW3J1bGVJZF0gPSBydWxlO1xuICAgICAgICBmb3IgKGNvbnN0IGN0eCBvZiBjdHhzKSB7XG4gICAgICAgICAgICBsZXQgd3JhcElkID0gcnVsZUlkO1xuICAgICAgICAgICAgaWYgKGlkeCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgd3JhcElkID0gcnVsZUlkK1wiJCRcIitpZHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICArK2lkeDtcbiAgICAgICAgICAgIGxldCB3cmFwcGVkUnVsZSA9IG5ldyBXcmFwcGVkUnVsZShydWxlLGN0eCk7XG4gICAgICAgICAgICB0aGlzLndyYXBwZWRSdWxlTWFwW3dyYXBJZF0gPSB3cmFwcGVkUnVsZTtcbiAgICAgICAgICAgIGxldCBwYXJ0cyA9IHdyYXBwZWRSdWxlLnBhcnNlZEluZm8uY29udGV4dEluZm87XG4gICAgICAgICAgICBsZXQgbGFzdFBhcnQgPSBwYXJ0c1twYXJ0cy5sZW5ndGgtMV07XG4gICAgICAgICAgICBsZXQgdHJpZ2dlclJvbGUgPSBsYXN0UGFydC5uYW1lc3BhY2UrXCI6XCIrbGFzdFBhcnQucm9sZTtcbiAgICAgICAgICAgIGlmIChsYXN0UGFydC5pbmNsdXNpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluY2xSdWxlc1t0cmlnZ2VyUm9sZV0gPSB0aGlzLmluY2xSdWxlc1t0cmlnZ2VyUm9sZV0gfHwgW107XG4gICAgICAgICAgICAgICAgdGhpcy5pbmNsUnVsZXNbdHJpZ2dlclJvbGVdLnB1c2god3JhcHBlZFJ1bGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4Y2xSdWxlc1t0cmlnZ2VyUm9sZV0gPSB0aGlzLmV4Y2xSdWxlc1t0cmlnZ2VyUm9sZV0gfHwgW107XG4gICAgICAgICAgICAgICAgdGhpcy5leGNsUnVsZXNbdHJpZ2dlclJvbGVdLnB1c2god3JhcHBlZFJ1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkTmxzTWFwKG1hcDogTmxzTWFwKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1hcCkge1xuICAgICAgICAgICAgdGhpcy5ubHNNYXBba2V5XSA9IG1hcFtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkSGVscE1hcChtYXA6IEhlbHBNYXApIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWFwKSB7XG4gICAgICAgICAgICB0aGlzLmhlbHBNYXBba2V5XSA9IG1hcFtrZXldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TWVzc2FnZShydWxlSWQ6IHN0cmluZywgcnVsZUlkeDogbnVtYmVyIHwgc3RyaW5nLCBtc2dBcmdzPzogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgICAgICBsZXQgc3BsaXR0ZXIgPSBydWxlSWQuaW5kZXhPZihcIiQkXCIpO1xuICAgICAgICBpZiAoc3BsaXR0ZXIgPj0gMCkge1xuICAgICAgICAgICAgcnVsZUlkID0gcnVsZUlkLnN1YnN0cmluZygwLHNwbGl0dGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShydWxlSWQgaW4gdGhpcy5ubHNNYXApKSByZXR1cm4gcnVsZUlkO1xuICAgICAgICBsZXQgbWVzc2FnZVRlbXBsYXRlID0gdGhpcy5ubHNNYXBbcnVsZUlkXVtydWxlSWR4IHx8IDBdO1xuICAgICAgICBpZiAoIW1lc3NhZ2VUZW1wbGF0ZSkgcmV0dXJuIHJ1bGVJZCtcIl9cIitydWxlSWR4O1xuICAgICAgICByZXR1cm4gbWVzc2FnZVRlbXBsYXRlLnJlcGxhY2UoL1xceyhcXGQrKVxcfS9nLFxuICAgICAgICAgICAgKG1hdGNoZWRTdHIsIG1hdGNoZWROdW0sIG1hdGNoZWRJbmRleCkgPT4gbXNnQXJnc1ttYXRjaGVkTnVtXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldEhlbHAocnVsZUlkOiBzdHJpbmcsIHJ1bGVJZHg6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCBzcGxpdHRlciA9IHJ1bGVJZC5pbmRleE9mKFwiJCRcIik7XG4gICAgICAgIGlmIChzcGxpdHRlciA+PSAwKSB7XG4gICAgICAgICAgICBydWxlSWQgPSBydWxlSWQuc3Vic3RyaW5nKDAsc3BsaXR0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghKHJ1bGVJZCBpbiB0aGlzLmhlbHBNYXApKSByZXR1cm4gcnVsZUlkO1xuICAgICAgICBydWxlSWR4ID0gcnVsZUlkeCB8fCAwO1xuICAgICAgICBsZXQgaGVscFN0ciA9IG51bGw7XG4gICAgICAgIGlmIChydWxlSWR4IGluIHRoaXMuaGVscE1hcFtydWxlSWRdKSB7XG4gICAgICAgICAgICBoZWxwU3RyID0gdGhpcy5oZWxwTWFwW3J1bGVJZF1bcnVsZUlkeCB8fCAwXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlbHBTdHIgPSB0aGlzLmhlbHBNYXBbcnVsZUlkXVswXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGVscFN0cikgcmV0dXJuIHJ1bGVJZCtcIl9cIitydWxlSWR4O1xuICAgICAgICByZXR1cm4gaGVscFN0cjtcbiAgICB9XG5cbiAgICBhZGRNYXBwZXIobWFwcGVyOiBJTWFwcGVyKSB7XG4gICAgICAgIHRoaXMubWFwcGVyc1ttYXBwZXIuZ2V0TmFtZXNwYWNlKCldID0gbWFwcGVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIG1hdGNoKHJ1bGVQYXJ0czogUGFydEluZm9bXSxcbiAgICAgICAgY29udGV4dEhpZXI6IFJ1bGVDb250ZXh0SGllcmFyY2h5KSA6IGJvb2xlYW5cbiAgICB7XG4gICAgICAgIGxldCBwYXJ0SWR4ID0gcnVsZVBhcnRzLmxlbmd0aC0xO1xuICAgICAgICBsZXQgaGllcklkeCA9IGNvbnRleHRIaWVyW1wiZG9tXCJdLmxlbmd0aC0xO1xuICAgICAgICAvLyBGaXJzdCBjaGVjayB0aGUgZW5kIG9mIHRoZSBoaWVyYXJjaHlcbiAgICAgICAgaWYgKCFydWxlUGFydHNbcGFydElkeF0ubWF0Y2hlcyhjb250ZXh0SGllciwgaGllcklkeCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC0tcGFydElkeDtcbiAgICAgICAgICAgIC0taGllcklkeDtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoaGllcklkeCA+PSAwICYmIHBhcnRJZHggPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgcGFydCA9IHJ1bGVQYXJ0c1twYXJ0SWR4XTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXNQYXJ0ID0gcnVsZVBhcnRzW3BhcnRJZHhdLm1hdGNoZXMoY29udGV4dEhpZXIsIGhpZXJJZHgpO1xuICAgICAgICAgICAgaWYgKHBhcnQuY29ubmVjdG9yID09PSBcIj5cIikge1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlc1BhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGlyZWN0IHBhcmVudCBjaGVjayBhbmQgZG9lc24ndCBtYXRjaFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGlyZWN0IHBhcmVudCBjaGVjayBhbmQgZG9lcyBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAtLXBhcnRJZHg7XG4gICAgICAgICAgICAgICAgICAgIC0taGllcklkeDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnQuY29ubmVjdG9yID09PSBcIiBcIikge1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0LmluY2x1c2l2ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmNsdXNpdmUgYW5jZXN0b3IgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXNQYXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAtLXBhcnRJZHg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZG9lc24ndCBtYXRjaCwganVzdCBtb3ZlIHVwIHRoZSByb2xlIGhpZXJhcmNoeVxuICAgICAgICAgICAgICAgICAgICAtLWhpZXJJZHg7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbWF0Y2hlc1BhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXhjbHVzaXZlIGFuY2VzdG9yIG1hdGNoIGFuZCBjdXJyZW50IG1hdGNoZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGV4Y2x1c2l2ZSBhbmNlc3RvciBtYXRjaCBhbmQgY3VycmVudCBkb2Vzbid0IG1hdGNoIC0gY2hlY2sgZm9yIG90aGVyIGFuY2VzdG9yc1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGFyZW50TWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc2VhcmNoSWR4ID0gaGllcklkeC0xOyAhcGFyZW50TWF0Y2ggJiYgc2VhcmNoSWR4ID49IDA7IC0tc2VhcmNoSWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRNYXRjaCA9ICFydWxlUGFydHNbcGFydElkeF0ubWF0Y2hlcyhjb250ZXh0SGllciwgc2VhcmNoSWR4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50TWF0Y2gpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAtLXBhcnRJZHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb250ZXh0IGNvbm5lY3RvciBcIitwYXJ0LmNvbm5lY3RvcitcIiBpcyBub3Qgc3VwcG9ydGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJ0SWR4ID09PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1hdGNoaW5nUnVsZXMoY3R4SGllciA6IFJ1bGVDb250ZXh0SGllcmFyY2h5KSA6IFdyYXBwZWRSdWxlW10ge1xuICAgICAgICBsZXQgZHVwZUNoZWNrID0ge307XG4gICAgICAgIGxldCBtYXRjaGVzIDogV3JhcHBlZFJ1bGVbXSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBhZGRNYXRjaGVzKHJ1bGVzOiBXcmFwcGVkUnVsZVtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocnVsZS5ydWxlLmVuYWJsZWQgJiYgRW5naW5lLm1hdGNoKHJ1bGUucGFyc2VkSW5mby5jb250ZXh0SW5mbywgY3R4SGllcikpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEocnVsZS5ydWxlLmlkIGluIGR1cGVDaGVjaykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMucHVzaChydWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cGVDaGVja1tydWxlLnJ1bGUuaWRdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG5zIGluIGN0eEhpZXIpIHtcbiAgICAgICAgICAgIGxldCByb2xlID0gbnMrXCI6XCIrY3R4SGllcltuc11bY3R4SGllcltuc10ubGVuZ3RoLTFdLnJvbGU7XG4gICAgICAgICAgICBpZiAocm9sZSBpbiB0aGlzLmluY2xSdWxlcykge1xuICAgICAgICAgICAgICAgIGFkZE1hdGNoZXModGhpcy5pbmNsUnVsZXNbcm9sZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCB4Um9sZSBpbiB0aGlzLmV4Y2xSdWxlcykge1xuICAgICAgICAgICAgICAgIGlmICh4Um9sZSAhPT0gcm9sZSkge1xuICAgICAgICAgICAgICAgICAgICBhZGRNYXRjaGVzKHRoaXMuZXhjbFJ1bGVzW3hSb2xlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJvbGUgIT09IG5zK1wiOm5vbmVcIikge1xuICAgICAgICAgICAgICAgIGlmIChyb2xlLnN0YXJ0c1dpdGgobnMrXCI6L1wiKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobnMrXCI6LypcIiBpbiB0aGlzLmluY2xSdWxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWF0Y2hlcyh0aGlzLmluY2xSdWxlc1tucytcIjovKlwiXSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChucytcIjoqXCIgaW4gdGhpcy5pbmNsUnVsZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZXModGhpcy5pbmNsUnVsZXNbbnMrXCI6KlwiXSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0IGZvciBkZXBlbmRlbmNpZXNcbiAgICAgICAgZm9yIChsZXQgaWR4PTA7IGlkeCA8IG1hdGNoZXMubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgbWF0Y2hlc1tpZHhdLmlkeCA9IGlkeDtcbiAgICAgICAgfVxuICAgICAgICBtYXRjaGVzLnNvcnQoKGEsYikgPT4ge1xuICAgICAgICAgICAgLy8gYSBiZWZvcmUgYjogLTFcbiAgICAgICAgICAgIC8vIGEgYWZ0ZXIgYjogMVxuICAgICAgICAgICAgLy8gZXF1aXY6IDBcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVBIDogUnVsZSA9IGEucnVsZTtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVCIDogUnVsZSA9IGIucnVsZTtcbiAgICAgICAgICAgIGlmIChydWxlQS5kZXBlbmRlbmNpZXMgJiYgIXJ1bGVCLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcnVsZUEuZGVwZW5kZW5jaWVzICYmIHJ1bGVCLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUEuZGVwZW5kZW5jaWVzICYmIHJ1bGVCLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgICAgIGlmIChydWxlQS5kZXBlbmRlbmNpZXMuaW5jbHVkZXMocnVsZUIuaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocnVsZUIuZGVwZW5kZW5jaWVzLmluY2x1ZGVzKHJ1bGVBLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGEuaWR4LWIuaWR4O1xuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gbWF0Y2hlcztcbiAgICB9XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICBDb3B5cmlnaHQ6OiAyMDIwLSBJQk0sIEluY1xuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgY2xhc3MgQ29uZmlnIHtcbiAgICBzdGF0aWMgREVCVUcgPSBmYWxzZTtcbiAgICBzdGF0aWMgaGVscFJvb3QgPSBcImh0dHBzOi8vYWJsZS5pYm0uY29tL3J1bGVzL3Rvb2xzL2hlbHBcIjtcbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENvbW1vbk1hcHBlciB9IGZyb20gXCIuLi9jb21tb24vQ29tbW9uTWFwcGVyXCI7XG5pbXBvcnQgeyBCb3VuZHMgfSBmcm9tIFwiLi4vYXBpL0lNYXBwZXJcIjtcblxuZXhwb3J0IGNsYXNzIERPTU1hcHBlciBleHRlbmRzIENvbW1vbk1hcHBlciB7XG4gICAgY2hpbGRyZW5IYXZlUm9sZShub2RlOiBOb2RlLCByb2xlOiBzdHJpbmcpIDogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRSb2xlKG5vZGU6IE5vZGUpIDogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgZ2V0TmFtZXNwYWNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcImRvbVwiXG4gICAgfVxuICAgIGdldEF0dHJpYnV0ZXMobm9kZTogTm9kZSkgOiB7IFtrZXk6c3RyaW5nXTogc3RyaW5nIH0ge1xuICAgICAgICBsZXQgcmV0VmFsID0ge307XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgZm9yIChsZXQgaWR4PTA7IGlkeDxlbGVtLmF0dHJpYnV0ZXMubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJJbmZvID0gZWxlbS5hdHRyaWJ1dGVzW2lkeF07XG4gICAgICAgICAgICAgICAgcmV0VmFsW2F0dHJJbmZvLm5hbWUudG9Mb3dlckNhc2UoKV0gPSBhdHRySW5mby5ub2RlVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICBnZXRCb3VuZHMobm9kZTogTm9kZSkgOiBCb3VuZHMge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAvKk5vZGUuRUxFTUVOVF9OT0RFKi8pIHtcbiAgICAgICAgICAgIGxldCBhZGp1c3RtZW50ID0gMTtcbiAgICAgICAgICAgIGlmIChub2RlLm93bmVyRG9jdW1lbnQgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3ICYmIG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5kZXZpY2VQaXhlbFJhdGlvKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0bWVudCA9IG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGJvdW5kcyA9IChub2RlIGFzIEVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIFxuICAgICAgICAgICAgLy8gRG8gYSBjaGVjayB3aGV0aGVyIGJvdW5kcyBoYXMgdmFsdWUgYXMgd2UgdXNlIGRpZmZlcmVudCB0b29sIChodG1sVW5pdCwgYnJvd3NlcikgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uXG4gICAgICAgICAgICBpZiAoYm91bmRzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgXCJsZWZ0XCI6IE1hdGguY2VpbChib3VuZHMubGVmdCAqIGFkanVzdG1lbnQpLFxuICAgICAgICAgICAgICAgICAgICBcInRvcFwiOiBNYXRoLmNlaWwoYm91bmRzLnRvcCAqIGFkanVzdG1lbnQpLFxuICAgICAgICAgICAgICAgICAgICBcImhlaWdodFwiOiBNYXRoLmNlaWwoYm91bmRzLmhlaWdodCAqIGFkanVzdG1lbnQpLFxuICAgICAgICAgICAgICAgICAgICBcIndpZHRoXCI6IE1hdGguY2VpbChib3VuZHMud2lkdGggKiBhZGp1c3RtZW50KVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCBjbGFzcyBET01VdGlsIHtcbiAgICBcbiAgICBzdGF0aWMgaGFzUGFyZW50KG5vZGU6IE5vZGUsIG5hbWVzOnN0cmluZ1tdKSB7XG4gICAgICAgIGxldCBwID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KG5vZGUpO1xuICAgICAgICB3aGlsZSAocCAmJiAhbmFtZXMuaW5jbHVkZXMocC5ub2RlTmFtZSkpIHtcbiAgICAgICAgICAgIHAgPSBET01VdGlsLnBhcmVudEVsZW1lbnQocCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICEhcDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0QW5jZXN0b3Iobm9kZTogTm9kZSwgbmFtZXM6c3RyaW5nW10pIHtcbiAgICAgICAgbGV0IHAgPSBET01VdGlsLnBhcmVudEVsZW1lbnQobm9kZSk7XG4gICAgICAgIHdoaWxlIChwICYmICFuYW1lcy5pbmNsdWRlcyhwLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICBwID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KHApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIHN0YXRpYyBpc05vZGVWaXNpYmxlKG5vZGU6IE5vZGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB2aXMgPSBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5ub2RlVHlwZSAhPT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLykge1xuICAgICAgICAgICAgICAgIG5vZGUgPSBET01VdGlsLnBhcmVudEVsZW1lbnQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZWxlbSA9IG5vZGUgYXMgRWxlbWVudDtcbiAgICAgICAgICAgIGxldCB3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGxldCBjcyA9IHcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTtcbiAgICAgICAgICAgICAgICBpZiAoY3MuZGlzcGxheSA9PT0gXCJub25lXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAodmlzID09PSBudWxsICYmIGNzLnZpc2liaWxpdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmlzID0gY3MudmlzaWJpbGl0eTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpcyA9PT0gXCJoaWRkZW5cIikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbGVtID0gRE9NVXRpbC5wYXJlbnRFbGVtZW50KGVsZW0pO1xuICAgICAgICAgICAgfSB3aGlsZSAoZWxlbSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgc2FtZU5vZGUoYTogTm9kZSwgYjogTm9kZSkgOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGEuaXNTYW1lTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIGEuaXNTYW1lTm9kZShiKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSA9PT0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBlbnZpcm9ubWVudCAtIHRyeSBvdXIgYmVzdFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgY2xlYW5XaGl0ZXNwYWNlKHM6IHN0cmluZykgOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmV0VmFsID0gcy5yZXBsYWNlKC9bIFxcdFxcclxcbl0vZywgXCIgXCIpLnJlcGxhY2UoLyArL2csXCIgXCIpO1xuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIHN0YXRpYyBjbGVhblNwYWNlKHM6IHN0cmluZykgOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmV0VmFsID0gcy5yZXBsYWNlKC8gKy9nLFwiIFwiKTtcbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICBzdGF0aWMgcGFyZW50Tm9kZShub2RlOiBOb2RlKSA6IE5vZGUgfCBudWxsIHtcbiAgICAgICAgbGV0IHAgOiBOb2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgICBpZiAocCAmJiBwLm5vZGVUeXBlID09PSAxMSkge1xuICAgICAgICAgICAgaWYgKChwIGFzIFNoYWRvd1Jvb3QpLmhvc3QpIHtcbiAgICAgICAgICAgICAgICBwID0gKHAgYXMgU2hhZG93Um9vdCkuaG9zdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKHAgYXMgYW55KS5vd25lckVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwID0gKHAgYXMgYW55KS5vd25lckVsZW1lbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHAgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIHN0YXRpYyBwYXJlbnRFbGVtZW50KG5vZGU6IE5vZGUpIDogRWxlbWVudCB8IG51bGwge1xuICAgICAgICBsZXQgZWxlbSA6IEVsZW1lbnQgPSBub2RlIGFzIEVsZW1lbnQ7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGVsZW0gPSBET01VdGlsLnBhcmVudE5vZGUoZWxlbSkgYXMgRWxlbWVudDtcbiAgICAgICAgfSB3aGlsZSAoZWxlbSAmJiBlbGVtLm5vZGVUeXBlICE9PSAxKTtcbiAgICAgICAgcmV0dXJuIGVsZW07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIHRydWUgaWYgZWxlbWVudDEgYW5kIGVsZW1lbnQyIChjZWxscykgYXJlIGluIHRoZSBzYW1lIHRhYmxlXG4gICAgc3RhdGljIGlzSW5TYW1lVGFibGUoZWxlbWVudDEsIGVsZW1lbnQyKSB7XG4gICAgICAgIGlmIChlbGVtZW50MSAmJiBlbGVtZW50Mikge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50TmFtZSA9IFsndGFibGUnXTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudDE9IERPTVV0aWwuZ2V0QW5jZXN0b3IoZWxlbWVudDEsIHBhcmVudE5hbWUpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Mj0gRE9NVXRpbC5nZXRBbmNlc3RvcihlbGVtZW50MiwgcGFyZW50TmFtZSk7XG4gICAgICAgICAgICBpZiAocGFyZW50MSAhPT0gbnVsbCAmJiBwYXJlbnQyICE9IG51bGwgJiYgRE9NVXRpbC5zYW1lTm9kZShwYXJlbnQxLCBwYXJlbnQyKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIHN0YXRpYyBzaGFkb3dSb290Tm9kZShub2RlOiBOb2RlKSA6IE5vZGUgfCBudWxsIHtcbiAgICAgICAgbGV0IG5kID0gbm9kZTtcbiAgICAgICAgd2hpbGUgKG5kICE9IG51bGwgJiYgbmQubm9kZVR5cGUgIT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSlcbiAgICAgICAgICAgIG5kID0gbmQucGFyZW50Tm9kZTtcbiAgICAgICAgcmV0dXJuIG5kO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvYmplY3RzLCBidXQgcmV0YWlucyBOb2RlIGF0dHJpYnV0ZXMgYXMgcmVmZXJlbmNlc1xuICAgICAqIEBwYXJhbSByaHMgXG4gICAgICovXG4gICAgc3RhdGljIG9iamVjdENvcHlXaXRoTm9kZVJlZnMocmhzOiBhbnkpIHtcbiAgICAgICAgaWYgKCFyaHMpIHJldHVybiByaHM7XG4gICAgICAgIGlmICh0eXBlb2YgcmhzICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyaHMpKTtcbiAgICAgICAgfSBlbHNlIGlmIChyaHMgaW5zdGFuY2VvZiBOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmhzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHJldFZhbDtcbiAgICAgICAgICAgIGlmIChyaHMuY29uc3RydWN0b3IubmFtZSA9PT0gXCJBcnJheVwiKSB7XG4gICAgICAgICAgICAgICAgcmV0VmFsID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHJocykge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwucHVzaCh0aGlzLm9iamVjdENvcHlXaXRoTm9kZVJlZnMoaXRlbSkpO1xuICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldFZhbCA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJocykge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWxba2V5XSA9IHRoaXMub2JqZWN0Q29weVdpdGhOb2RlUmVmcyhyaHNba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IERPTVV0aWwgfSBmcm9tIFwiLi9ET01VdGlsXCI7XG5cbmV4cG9ydCBjbGFzcyBET01XYWxrZXIge1xuICAgIHJvb3QgOiBOb2RlO1xuICAgIG5vZGUgOiBOb2RlO1xuICAgIGJFbmRUYWc6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50IDogTm9kZSwgYkVuZD8gOiBib29sZWFuLCByb290PyA6IE5vZGUpIHtcbiAgICAgICAgdGhpcy5yb290ID0gcm9vdCB8fCBlbGVtZW50O1xuICAgICAgICB0aGlzLm5vZGUgPSBlbGVtZW50O1xuICAgICAgICB0aGlzLmJFbmRUYWcgPSAoYkVuZCA9PSB1bmRlZmluZWQgPyBmYWxzZSA6IGJFbmQgPT0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgYXRSb290KCkgOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCh0aGlzIGFzIGFueSkub3duZXJFbGVtZW50KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnJvb3QgPT09IHRoaXMubm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5yb290LmlzU2FtZU5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJvb3QuaXNTYW1lTm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucm9vdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm9vdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzLm5vZGUpID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTm90IHN1cHBvcnRlZCBpbiB0aGlzIGVudmlyb25tZW50IC0gdHJ5IG91ciBiZXN0XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlLnBhcmVudE5vZGUgPT09IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0Tm9kZSgpIDogYm9vbGVhbiB7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5iRW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlmcmFtZU5vZGUgPSAodGhpcy5ub2RlIGFzIEhUTUxJRnJhbWVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudE5vZGUgPSAodGhpcy5ub2RlIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgc2xvdEVsZW1lbnQgPSAodGhpcy5ub2RlIGFzIEhUTUxTbG90RWxlbWVudClcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovIFxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gXCJJRlJBTUVcIlxuICAgICAgICAgICAgICAgICAgICAmJiBET01VdGlsLmlzTm9kZVZpc2libGUoaWZyYW1lTm9kZSlcbiAgICAgICAgICAgICAgICAgICAgJiYgaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgJiYgaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG93bmVyRWxlbWVudCA9IHRoaXMubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ub2RlIGFzIGFueSkub3duZXJFbGVtZW50ID0gb3duZXJFbGVtZW50O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovIFxuICAgICAgICAgICAgICAgICAgICAmJiBET01VdGlsLmlzTm9kZVZpc2libGUoZWxlbWVudE5vZGUpXG4gICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnROb2RlLnNoYWRvd1Jvb3RcbiAgICAgICAgICAgICAgICAgICAgJiYgZWxlbWVudE5vZGUuc2hhZG93Um9vdC5maXJzdENoaWxkKVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG93bmVyRWxlbWVudCA9IHRoaXMubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gZWxlbWVudE5vZGUuc2hhZG93Um9vdDtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudCA9IG93bmVyRWxlbWVudDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSBcbiAgICAgICAgICAgICAgICAgICAgJiYgZWxlbWVudE5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJzbG90XCJcbiAgICAgICAgICAgICAgICAgICAgJiYgc2xvdEVsZW1lbnQuYXNzaWduZWROb2RlcygpLmxlbmd0aCA+IDApIFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNsb3RPd25lciA9IHRoaXMubm9kZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gc2xvdEVsZW1lbnQuYXNzaWduZWROb2RlcygpWzBdO1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5ub2RlIGFzIGFueSkuc2xvdE93bmVyID0gc2xvdE93bmVyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyB8fCB0aGlzLm5vZGUubm9kZVR5cGUgPT09IDExKSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyAmJiB0aGlzLm5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGUuZmlyc3RDaGlsZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXRSb290KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5ub2RlIGFzIGFueSkub3duZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9ICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5ub2RlIGFzIGFueSkuc2xvdE93bmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vZGUubm9kZVR5cGUgIT09IDEgfHwgISh0aGlzLm5vZGUgYXMgSFRNTEVsZW1lbnQpLmhhc0F0dHJpYnV0ZShcInNsb3RcIikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgd2Fzbid0IGEgbmFtZWQgc2xvdCwgbG9vayBmb3IgdGhlIG5leHQgdW5uYW1lZCBub2RlIHRvIHB1dCBpbiB0aGUgc2xvdFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSB0aGlzLm5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAobiAmJiB0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRoaXMubm9kZSBhcyBIVE1MRWxlbWVudCkuaGFzQXR0cmlidXRlKFwic2xvdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB0aGlzLm5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBmb3VuZCBhbm90aGVyIHVubmFtZWQgc2xvdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzbG90T3duZXIgPSAodGhpcy5ub2RlIGFzIGFueSkuc2xvdE93bmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IG47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lciA9IHNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gKHRoaXMubm9kZSBhcyBhbnkpLnNsb3RPd25lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYkVuZFRhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IHRoaXMubm9kZS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gd2hpbGUgKFxuICAgICAgICAgICAgKHRoaXMubm9kZS5ub2RlVHlwZSAhPT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyAmJiB0aGlzLm5vZGUubm9kZVR5cGUgIT09IDExICYmIHRoaXMubm9kZS5ub2RlVHlwZSAhPT0gMyAvKiBOb2RlLlRFWFRfTk9ERSAqLylcbiAgICAgICAgICAgIHx8ICh0aGlzLm5vZGUubm9kZVR5cGUgPT09IDEgJiYgKHRoaXMubm9kZSBhcyBFbGVtZW50KS5nZXRBdHRyaWJ1dGUoXCJhQ2hlY2tlclwiKSA9PT0gXCJBQ0VcIilcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJldk5vZGUoKSA6IGJvb2xlYW4ge1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAodGhpcy5iRW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgbGV0IGlmcmFtZU5vZGUgPSAodGhpcy5ub2RlIGFzIEhUTUxJRnJhbWVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudE5vZGUgPSAodGhpcy5ub2RlIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovIFxuICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLm5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gXCJJRlJBTUVcIlxuICAgICAgICAgICAgICAgICAgICAmJiBET01VdGlsLmlzTm9kZVZpc2libGUoaWZyYW1lTm9kZSlcbiAgICAgICAgICAgICAgICAgICAgJiYgaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnRcbiAgICAgICAgICAgICAgICAgICAgJiYgaWZyYW1lTm9kZS5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSBcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvd25lckVsZW1lbnQgPSB0aGlzLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IGlmcmFtZU5vZGUuY29udGVudERvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudCA9IG93bmVyRWxlbWVudDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMSAvKiBOb2RlLkVMRU1FTlRfTk9ERSAqLyBcbiAgICAgICAgICAgICAgICAgICAgJiYgRE9NVXRpbC5pc05vZGVWaXNpYmxlKGVsZW1lbnROb2RlKVxuICAgICAgICAgICAgICAgICAgICAmJiBlbGVtZW50Tm9kZS5zaGFkb3dSb290XG4gICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnROb2RlLnNoYWRvd1Jvb3QubGFzdENoaWxkKSBcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvd25lckVsZW1lbnQgPSB0aGlzLm5vZGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZSA9IGVsZW1lbnROb2RlLnNoYWRvd1Jvb3Q7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQgPSBvd25lckVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovIHx8IHRoaXMubm9kZS5ub2RlVHlwZSA9PT0gMTEpICYmIHRoaXMubm9kZS5sYXN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLmxhc3RDaGlsZDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJFbmRUYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF0Um9vdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gdGhpcy5ub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCh0aGlzLm5vZGUgYXMgYW55KS5vd25lckVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlID0gKHRoaXMubm9kZSBhcyBhbnkpLm93bmVyRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iRW5kVGFnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAoXG4gICAgICAgICAgICAodGhpcy5ub2RlLm5vZGVUeXBlICE9PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovICYmIHRoaXMubm9kZS5ub2RlVHlwZSAhPT0gMTEpXG4gICAgICAgICAgICB8fCAodGhpcy5ub2RlLm5vZGVUeXBlID09PSAxICYmICh0aGlzLm5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKFwiYUNoZWNrZXJcIikgPT09IFwiQUNFXCIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgIENvcHlyaWdodDo6IDIwMjAtIElCTSwgSW5jXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IENvbW1vbk1hcHBlciB9IGZyb20gXCIuLi9jb21tb24vQ29tbW9uTWFwcGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBTdHlsZU1hcHBlciBleHRlbmRzIENvbW1vbk1hcHBlciB7XG4gICAgY2hpbGRyZW5IYXZlUm9sZShub2RlOiBOb2RlLCByb2xlOiBzdHJpbmcpIDogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRSb2xlKG5vZGU6IE5vZGUpIDogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFwiY29tcHV0ZWRcIjtcbiAgICB9XG4gICAgZ2V0TmFtZXNwYWNlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcImNzc1wiXG4gICAgfVxuICAgIGdldEF0dHJpYnV0ZXMobm9kZTogTm9kZSkgOiB7IFtrZXk6c3RyaW5nXTogc3RyaW5nIH0ge1xuICAgICAgICBsZXQgcmV0VmFsID0ge307XG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAxIC8qIE5vZGUuRUxFTUVOVF9OT0RFICovKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTtcbiAgICAgICAgICAgIGZvciAobGV0IGlkeD0wOyBpZHg8c3R5bGUubGVuZ3RoOyArK2lkeCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzdHlsZVtpZHhdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0VmFsW25hbWVdID0gc3R5bGVbbmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiIiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9zcmMvaW5kZXgudHNcIik7XG4iLCIiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/rule-server/src/static/archives/2022.02.01/js/ace-node-debug.js b/rule-server/src/static/archives/2022.02.01/js/ace-node-debug.js index fbc53f57b..e8f820e07 100644 --- a/rule-server/src/static/archives/2022.02.01/js/ace-node-debug.js +++ b/rule-server/src/static/archives/2022.02.01/js/ace-node-debug.js @@ -1,110 +1,147 @@ /*! * Copyright:: 2016,2017,2019,2020- IBM, Inc - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ -module.exports = -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 4); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ 3607: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + + +/****************************************************************************** + Copyright:: 2020- IBM, Inc + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + *****************************************************************************/ +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.DOMWalker = exports.Config = exports.checkDemo = exports.ARIAMapper = exports.Context = exports.Checker = void 0; +var Context_1 = __webpack_require__(2306); +Object.defineProperty(exports, "Context", ({ enumerable: true, get: function () { return Context_1.Context; } })); +// import { Simulator } from "./v2/simulator" +var checker_1 = __webpack_require__(9113); +Object.defineProperty(exports, "Checker", ({ enumerable: true, get: function () { return checker_1.Checker; } })); +var ARIAMapper_1 = __webpack_require__(4944); +Object.defineProperty(exports, "ARIAMapper", ({ enumerable: true, get: function () { return ARIAMapper_1.ARIAMapper; } })); +var Config_1 = __webpack_require__(3962); +Object.defineProperty(exports, "Config", ({ enumerable: true, get: function () { return Config_1.Config; } })); +var DOMWalker_1 = __webpack_require__(7440); +Object.defineProperty(exports, "DOMWalker", ({ enumerable: true, get: function () { return DOMWalker_1.DOMWalker; } })); +String.prototype.startsWith = String.prototype.startsWith || function (str) { + return this.indexOf(str) === 0; +}; +String.prototype.includes = String.prototype.includes || function (str) { + return this.indexOf(str) !== -1; +}; +Array.prototype.includes = Array.prototype.includes || function (str) { + return this.indexOf(str) !== -1; +}; +/* +function simDemo(timeout?: number) { + if (!timeout) timeout = 0; + setTimeout(function() { + let sim = new Simulator(); + let s = sim.renderItem(document.documentElement); + console.group("--- Item View ---"); + console.log(s); + console.groupEnd(); + console.group("--- Link View ---"); + s = sim.renderLink(document.documentElement); + console.log(s); + console.groupEnd(); + }, timeout); +} +*/ +function checkDemo(timeout) { + if (!timeout) + timeout = 0; + var checker = new checker_1.Checker(); + setTimeout(function () { + checker.check(document.documentElement, ["IBM_Accessibility", "IBM_Design"]) + .then(function (report) { + console.log(report); + var vals = { + "FAIL": 0, + "POTENTIAL": 1, + "MANUAL": 2, + "PASS": 3 + }; + for (var idx = 0; idx < report.results.length; ++idx) { + if (report.results[idx].value[1] === "PASS") { + report.results.splice(idx--, 1); + } + } + report.results.sort(function (a, b) { + if (a.category != b.category) { + return a.category.localeCompare(b.category); + } + if (a.path["aria"] === b.path["aria"]) { + return vals[a.value[1]] - vals[b.value[1]]; + } + return a.path["aria"].localeCompare(b.path["aria"]); + }); + var lastPath = null; + var category = null; + for (var _i = 0, _a = report.results; _i < _a.length; _i++) { + var result = _a[_i]; + if (category !== result.category) { + if (category !== null) { + console.groupEnd(); + console.groupEnd(); + lastPath = null; + } + category = result.category; + console.group(result.category); + } + if (result.path["aria"] != lastPath) { + if (lastPath !== null) { + console.groupEnd(); + } + lastPath = result.path["aria"]; + if (lastPath === "") { + console.group("page"); + } + else { + console.group(lastPath); + } + } + console.log(result.value, result.message); + } + console.groupEnd(); + console.groupEnd(); + }); + }, timeout); +} +exports.checkDemo = checkDemo; + + +/***/ }), + +/***/ 9077: +/***/ ((__unused_webpack_module, exports) => { -"use strict"; /****************************************************************************** Copyright:: 2020- IBM, Inc @@ -121,7 +158,7 @@ module.exports = See the License for the specific language governing permissions and limitations under the License. *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); +Object.defineProperty(exports, "__esModule", ({ value: true })); exports.RuleManual = exports.RulePotential = exports.RuleFail = exports.RuleRender = exports.RulePass = exports.eRulesetType = exports.eRuleCategory = exports.eToolkitLevel = exports.eRulePolicy = exports.eRuleConfidence = void 0; var eRuleConfidence; (function (eRuleConfidence) { @@ -212,10 +249,10 @@ exports.RuleManual = RuleManual; /***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +/***/ 8235: +/***/ ((__unused_webpack_module, exports) => { + /****************************************************************************** Copyright:: 2020- IBM, Inc @@ -232,15711 +269,2338 @@ exports.RuleManual = RuleManual; See the License for the specific language governing permissions and limitations under the License. *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.NodeWalker = exports.ColorObj = exports.RPTUtilStyle = exports.RPTUtil = void 0; -var ARIADefinitions_1 = __webpack_require__(5); -var ARIAMapper_1 = __webpack_require__(9); -var DOMUtil_1 = __webpack_require__(2); -var fragment_1 = __webpack_require__(3); -var RPTUtil = /** @class */ (function () { - function RPTUtil() { +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ARIADefinitions = void 0; +var ARIADefinitions = /** @class */ (function () { + function ARIADefinitions() { } - RPTUtil.isDefinedAriaAttributeAtIndex = function (ele, index) { - var attrName = ele.attributes[index].name; - return RPTUtil.isDefinedAriaAttribute(ele, attrName); + ARIADefinitions.nameFromContent = function (role) { + return (role in ARIADefinitions.designPatterns) + && ARIADefinitions.designPatterns[role].nameFrom + && ARIADefinitions.designPatterns[role].nameFrom.includes("contents"); }; - /** - * This method handles implicit aria definitions, for example, an input with checked is equivalent to aria-checked="true" + /* + * array of WAI-ARIA global states and properties + * @see https://www.w3.org/TR/wai-aria-1.2/#global_states */ - RPTUtil.getAriaAttribute = function (ele, attributeName) { - // If the attribute is defined, it takes precedence - var retVal = ele.getAttribute(attributeName); - if (ele.hasAttribute(attributeName) && retVal.trim() === "") { //"" is treated as false, so we need return it before the below check - return retVal; - } - // Then determine implicit values from other attributes - if (!retVal) { - var tag = ele.nodeName.toLowerCase(); - if (attributeName in RPTUtil.ariaAttributeImplicitMappings) { - if (tag in RPTUtil.ariaAttributeImplicitMappings[attributeName]) { - retVal = RPTUtil.ariaAttributeImplicitMappings[attributeName][tag]; - if (typeof (retVal) === "function") { - retVal = retVal(ele); - } - } - else if ("*" in RPTUtil.ariaAttributeImplicitMappings[attributeName]) { - retVal = RPTUtil.ariaAttributeImplicitMappings[attributeName]["*"]; - if (typeof (retVal) === "function") { - retVal = retVal(ele); - } - } - } - } - // Check role-based defaults - if (!retVal) { - var role = ARIAMapper_1.ARIAMapper.nodeToRole(ele); - if (role in RPTUtil.ariaAttributeRoleDefaults && attributeName in RPTUtil.ariaAttributeRoleDefaults[role]) { - retVal = RPTUtil.ariaAttributeRoleDefaults[role][attributeName]; - if (typeof (retVal) === "function") { - retVal = retVal(ele); - } - } - } - // Still not defined? Check global defaults - if (!retVal && attributeName in RPTUtil.ariaAttributeGlobalDefaults) { - retVal = RPTUtil.ariaAttributeGlobalDefaults[attributeName]; - } - return retVal; - }; - RPTUtil.wordCount = function (str) { - str = str.trim(); - if (str.length === 0) - return 0; - return str.split(/\s+/g).length; - }; - /** - * Note that this only detects if the element itself is in the tab order. - * However, this element may delegate focus to another element via aria-activedescendant - * Also, focus varies by browser... sticking to things that are focusable on chrome and firefox + ARIADefinitions.globalProperties = ["aria-atomic", "aria-busy", "aria-controls", "aria-current", "aria-describedby", + "aria-details", "aria-dropeffect", "aria-flowto", "aria-grabbed", "aria-hidden", "aria-keyshortcuts", + "aria-label", "aria-labelledby", "aria-live", "aria-owns", "aria-relevant", "aria-roledescription"]; + /* + * XSD data types for all WAI-ARIA properties + * along with valid values when the data type is NMTOKEN + * WAI-ARIA properties data types explaned: + * type: Used to identify the type of values allowed for the WAI-ARIA property + * values: Used to identify specific values of an WAI-ARIA property when type is nmtoken + * hiddenIDRefSupported: Used to identify if the WAI-ARIA property supports referencing hidden ID + * true: refers to WAI-ARIA property supports hidden ID references + * false: refers to WAI-ARIA property does not support hidden ID references + * Default value will be set to false, if not specified. */ - RPTUtil.isTabbable = function (element) { - // Using https://allyjs.io/data-tables/focusable.html - // Handle the explicit cases first - if (!RPTUtil.isNodeVisible(element)) - return false; - if (element.hasAttribute("tabindex")) { - return parseInt(element.getAttribute("tabindex")) >= 0; - } - // Explicit cases handled - now the implicit - var nodeName = element.nodeName.toLowerCase(); - if (nodeName in RPTUtil.tabTagMap) { - var retVal = RPTUtil.tabTagMap[nodeName]; - if (typeof (retVal) === "function") { - retVal = retVal(element); - } - return retVal; - } - else { - return false; - } - }; - RPTUtil.tabIndexLEZero = function (elem) { - if (RPTUtil.hasAttribute(elem, "tabindex")) { - if (elem.getAttribute("tabindex").match(/^-?\d+$/)) { - var tabindexValue = parseInt(elem.getAttribute("tabindex")); - return tabindexValue === 0 || tabindexValue === -1; - } - } - return false; - }; - //TODO: function does not handle equivalents for roles: row, link, header, button - // But it may not have to. Bug reports have been about radio buttons and checkboxes. - RPTUtil.isHtmlEquiv = function (node, htmlEquiv) { - var retVal = false; - if (node) { - var nodeName = node.nodeName.toLowerCase(); - if (nodeName === "input") { - var type = node.getAttribute("type").toLowerCase(); - if (type) { - if (htmlEquiv.indexOf("checkbox") != -1) { - retVal = type === "checkbox"; - } - else if (htmlEquiv.indexOf("radio") != -1) { - retVal = type === "radio"; - } - } - } - } - return retVal; - }; - RPTUtil.isDefinedAriaAttribute = function (ele, attrName) { - var isDefinedAriaAttribute = false; - if (attrName.substring(0, 5) === 'aria-') { - // User agents SHOULD treat state and property attributes with a value of "" the same as they treat an absent attribute. - isDefinedAriaAttribute = ele.hasAttribute && ele.hasAttribute(attrName) && ele.getAttribute(attrName).length > 0; - } - return isDefinedAriaAttribute; - }; - RPTUtil.normalizeSpacing = function (s) { - return s.trim().replace(/\s+/g, ' '); - }; - ; - RPTUtil.nonExistantIDs = function (node, targetids) { - var returnnotfoundids = ''; - if (RPTUtil.normalizeSpacing(targetids).length < 1) - return returnnotfoundids; - var targetArray = targetids.split(" "); - var doc = node.ownerDocument; - for (var i = 0; i < targetArray.length; i++) { - var xp = "//*[@id='" + targetArray[i] + "']"; - var xpathResult = doc.evaluate(xp, node, doc.defaultNSResolver, 0 /* XPathResult.ANY_TYPE */, null); - var r = xpathResult.iterateNext(); - if (!r) - returnnotfoundids += targetArray[i] + ', '; - } - if (RPTUtil.normalizeSpacing(returnnotfoundids).length >= 2) - returnnotfoundids = returnnotfoundids.substring(0, returnnotfoundids.length - 2); - else - returnnotfoundids = ''; - return returnnotfoundids; - }; - RPTUtil.getDocElementsByTag = function (elem, tagName) { - var doc = fragment_1.FragmentUtil.getOwnerFragment(elem); - tagName = tagName.toLowerCase(); - var cache = RPTUtil.getCache(doc, "RPT_DOCELEMSBYTAG", {}); - if (!(tagName in cache)) { - cache[tagName] = doc.querySelectorAll(tagName); - RPTUtil.setCache(doc, "RPT_DOCELEMSBYTAG", cache); + ARIADefinitions.propertyDataTypes = { + "aria-activedescendant": { + type: "http://www.w3.org/2001/XMLSchema#idref", + hiddenIDRefSupported: true + }, + "aria-atomic": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-autocomplete": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["inline", "list", "both", "none", "undefined"] //add undefined to handle value empty + }, + "aria-busy": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-checked": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "mixed", "undefined"] + }, + "aria-colcount": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-colindex": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-colspan": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-controls": { + type: "http://www.w3.org/2001/XMLSchema#idrefs", + hiddenIDRefSupported: true + }, + "aria-current": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["page", "step", "location", "date", "time", "true", "false", "undefined"] //add undefined for empty value + }, + "aria-describedby": { + type: "http://www.w3.org/2001/XMLSchema#idrefs", + hiddenIDRefSupported: true + }, + "aria-details": { + type: "http://www.w3.org/2001/XMLSchema#idrefs" + }, + "aria-disabled": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-dropeffect": { + type: "http://www.w3.org/2001/XMLSchema#nmtokens", + values: ["copy", "move", "link", "execute", "popup", "none"] + }, + "aria-errormessage": { + type: "http://www.w3.org/2001/XMLSchema#idref", + hiddenIDRefSupported: true + }, + "aria-expanded": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "undefined"] + }, + "aria-flowto": { + type: "http://www.w3.org/2001/XMLSchema#idrefs", + hiddenIDRefSupported: false + }, + "aria-grabbed": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "undefined"] + }, + "aria-haspopup": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "menu", "listbox", "tree", "grid", "dialog"] + }, + "aria-hidden": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "undefined"] + }, + "aria-invalid": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "spelling", "grammar", "undefined"] //add undefined for empty value + }, + "aria-keyshortcuts": { + type: "http://www.w3.org/2001/XMLSchema#string" + }, + "aria-label": { + type: "http://www.w3.org/2001/XMLSchema#string" + }, + "aria-labelledby": { + type: "http://www.w3.org/2001/XMLSchema#idrefs", + hiddenIDRefSupported: true + }, + "aria-level": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-live": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["off", "polite", "assertive"] + }, + "aria-modal": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-multiline": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-multiselectable": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-orientation": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["horizontal", "vertical", "undefined"] + }, + "aria-owns": { + type: "http://www.w3.org/2001/XMLSchema#idrefs", + hiddenIDRefSupported: true + }, + "aria-placeholder": { + type: "http://www.w3.org/2001/XMLSchema#string" + }, + "aria-posinset": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-pressed": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "mixed", "undefined"] + }, + "aria-readonly": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-relevant": { + type: "http://www.w3.org/2001/XMLSchema#nmtokens", + values: ["additions", "removals", "text", "all"] + }, + "aria-required": { + type: "http://www.w3.org/2001/XMLSchema#boolean" + }, + "aria-roledescription": { + type: "http://www.w3.org/2001/XMLSchema#string" + }, + "aria-rowcount": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-rowindex": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-rowspan": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-selected": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["true", "false", "undefined"] + }, + "aria-setsize": { + type: "http://www.w3.org/2001/XMLSchema#int" + }, + "aria-sort": { + type: "http://www.w3.org/2001/XMLSchema#nmtoken", + values: ["ascending", "descending", "other", "none"] + }, + "aria-valuemax": { + type: "http://www.w3.org/2001/XMLSchema#decimal" + }, + "aria-valuemin": { + type: "http://www.w3.org/2001/XMLSchema#decimal" + }, + "aria-valuenow": { + type: "http://www.w3.org/2001/XMLSchema#decimal" + }, + "aria-valuetext": { + type: "http://www.w3.org/2001/XMLSchema#string" } - return cache[tagName]; - }; - /** - * This function is responsible for get a list of all the child elemnts which match the tag - * name provided. - * - * Note: This is a wrapper function to: RPTUtil.getChildByTagHidden - * - * @parm {element} parentElem - The parent element - * @parm {string} tagName - The tag to search for under the parent element - * @parm {boolean} ignoreHidden - true if hidden elements with the tag should ignored from the list - * false if the hidden elements should be added - * - * @return {List} retVal - list of all the elements which matched the tag under the parent that were provided. - * - * @memberOf RPTUtil - */ - RPTUtil.getChildByTag = function (parentElem, tagName) { - return RPTUtil.getChildByTagHidden(parentElem, tagName, false, false); }; - /** - * This function is responsible for get a list of all the child elemnts which match the tag - * name provided. - * - * @parm {element} parentElem - The parent element - * @parm {string} tagName - The tag to search for under the parent element - * @parm {boolean} ignoreHidden - true if hidden elements with the tag should ignored from the list - * false if the hidden elements should be added - * @parm {bool} considerHiddenSetting - true or false based on if hidden setting should be considered. - * - * @return {List} retVal - list of all the elements which matched the tag under the parent that were provided. + /* + * design patterns for concrete WAI-ARIA roles + * legitimate keys for each role include: * - * @memberOf RPTUtil + * - container: appropriate container(s) for that role + * - props: states and properties that may be associated with this role (in addition to the global states and properties listed above) + * - reqProps: required states or properties for this role + * - reqChildren: required children for this role + * - htmlEquiv: HTML equivalent for this role + * - roleType: one of widget, structure, landmark, liveRegion, window (as seen in https://www.w3.org/TR/wai-aria-1.2/#roles_categorization) + * - nameRequired: determines whether an accessible name is required for a widget (see ARIA spec.) + * - nameFrom: determines how an accessible name is supplied (author or content - see ARIA spec.) + * - deprecated: if present, indicates that the role is deprecated, and provides a list of alternative role(s) */ - RPTUtil.getChildByTagHidden = function (parentElem, tagName, ignoreHidden, considerHiddenSetting) { - // Variable Decleration - var retVal = []; - var child = parentElem.firstChild; - // Loop over all the child elements of the parent to build a list of all the elements that - // match the tagName provided - while (child != null) { - // Only include the children into the return array if they match with tagname. - if (child.nodeName.toLowerCase() === tagName) { - // In the case that ignorehidden was set to true, then perform a isNodeVisible check - // and in the case the node is not visilble we more to theses then move to the next node. - // Perform a couple of checks to determine if hidden elements should be ignored or not. - // 1. When ignoreHidden is set to true upfront, then perform a isNodeVisible - // 2. If considerHiddenSetting option is set to true then we perform the check to consider the - // Check Hidden Content that is provided. - // 2.1. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we do not - // add it to the roleToElems hash at all or even do any checking for it at all. - if ((ignoreHidden || (considerHiddenSetting && !RPTUtil.shouldCheckHiddenContent(child))) && !RPTUtil.isNodeVisible(child)) { - // Move on to the next element - child = child.nextSibling; - continue; - } - // Push the element - retVal.push(child); - } - // Move to the next sibling element - child = child.nextSibling; - } - return retVal; - }; - /** - * This function is responsible for finding a list of elements that match given roles(s). - * This function by defauly will not consider Check Hidden Setting at all. - * This function by defauly will not consider implicit roles. - * Note: This is a wrapper function to: RPTUtil.getElementsByRoleHidden - * - * @parm {document} doc - The document node - * @parm {list or string} roles - List or single role for which to return elements based on. - * - * @return {List} retVal - list of all the elements which matched the role(s) that were provided. - * - * @memberOf RPTUtil - */ - RPTUtil.getElementsByRole = function (doc, roles) { - return RPTUtil.getElementsByRoleHidden(doc, roles, false, false); - }; - /** - * This function is responsible for finding a list of elements that match given roles(s). - * This function aslo finds elements with implicit roles. - * This function will also consider elements that are hidden based on the if the Check - * Hidden Content settings should be considered or not. - * - * @parm {document} doc - The document node - * @parm {list or string} roles - List or single role for which to return elements based on. - * @parm {bool} considerHiddenSetting - true or false based on if hidden setting should be considered. - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {List} retVal - list of all the elements which matched the role(s) that were provided. - * - * @memberOf RPTUtil - */ - RPTUtil.getElementsByRoleHidden = function (doc, roles, considerHiddenSetting, considerImplicitRoles) { - // In the case that the role to element assoication is already made, and available in the global hasAttribute - // we can just use that one instead of building a new one. - var roleToElems = null; - if (considerImplicitRoles) { - roleToElems = RPTUtil.getCache(doc, "RPTUtil_GETELEMENTSBY_ROLE_IMPLICIT", null); - } - else { - roleToElems = RPTUtil.getCache(doc, "RPTUtil_GETELEMENTSBY_ROLE", null); - } - // Build the new role to element, this is where we loop through all the elements and extract all the - // elements bsaed on roles. - if (roleToElems === null) { - // Re-initialize the roleToElems hash - roleToElems = {}; - // Get the body of the doc - var root = doc.body; - // Keep looping until we are at the very parent node of the entire page, so that we can loop through - // all the nodes. - while (DOMUtil_1.DOMUtil.parentNode(root) !== null) { - // Get the parentNode - root = DOMUtil_1.DOMUtil.parentNode(root); - } - // Build a nodewalter based of the root node, this node walter will be use loop over all the nodes - // and build the roles to Element coralation - var nw = new NodeWalker(root); - // Loop over the entire doc/list of nodes to build the role to element map - // Note: This will build an roleToElems hash which is in the following format. - // roleToElems = { - // document: [{div},{abbr},{var}], - // main: [{div}], - // navigation: [{div}] - // } - while (nw.nextNode()) { - // Only check the elements which have the role attribute assiciated to them - if (!nw.bEndTag) { - var wRoles = []; - //check if the node has role attributes - if (nw.elem() && nw.elem().hasAttribute("role")) { - // Extract all the roles that are assigned to this element, can have multiple roles on one - // element split by space, so we need to extract all of them into an array. - wRoles = nw.elem().getAttribute("role").split(" "); - } - if (wRoles.length === 0 && considerImplicitRoles) { - var tagProperty = RPTUtil.getElementAriaProperty(nw.node); - //check if there are any implicit roles for this element. - if (tagProperty && tagProperty.implicitRole) { - wRoles = tagProperty.implicitRole; - } - } - if (wRoles.length === 0) { - continue; - } - // Following are the steps that are executed at this stage to determine if the node should be classified as hidden - // or not. - // 1. If considerHiddenSetting option is set to true then we perform the check to consider the - // Check Hidden Content that is provided. - // 2. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we do not - // add it to the roleToElems hash at all or even do any checking for it at all. - // - // Note: The if conditions uses short-circuiting so if the first condition is not true it will not check the next one, - // so on and so forth. - if (considerHiddenSetting && RPTUtil.shouldNodeBeSkippedHidden(nw.node)) { - continue; - } - // Loop through all the roles and assigned this node to all thes roles - for (var i = 0; i < wRoles.length; ++i) { - // In the case that the role key is not already in the roleToElems hash, construct the - // add the key and assign empty array. - if (!(wRoles[i] in roleToElems)) { - roleToElems[wRoles[i]] = []; - } - // Add the node to the array for the role - roleToElems[wRoles[i]].push(nw.node); - } - } - } - // Set the roleToElems hash map as a global variable - if (considerImplicitRoles) { - RPTUtil.setCache(doc, "RPTUtil_GETELEMENTSBY_ROLE_IMPLICIT", roleToElems); - } - else { - RPTUtil.setCache(doc, "RPTUtil_GETELEMENTSBY_ROLE", roleToElems); - } - } - // Initilize the return value - var retVal = []; - // Handle the cases where the provided role is a string and not an array, - // for this case we take the string and put it into an array - if (typeof (roles) === "string") { - var role = roles; - roles = []; - roles.push(role); - } - // Loop through the roles that were provided and find the list of elements for this roles - // and add them to the return value. - if (roles.length) { - // loop over all the roles - for (var i = 0; i < roles.length; ++i) { - // Extract the role from the array - var nextRole = roles[i]; - // Fetch the list of all the elements for this role - var copyRoles = roleToElems[nextRole]; - // If there are elements to copy to another array, then perform the copy - if (copyRoles) { - // Loop over all the elements which are to be copied - for (var j = 0; j < copyRoles.length; ++j) { - // Add this element to the return val - retVal.push(copyRoles[j]); - } - } - } - } - return retVal; - }; - /** - * This function is responsible for retrieving element's roles. - * This function aslo finds implicit roles. - * @parm {HTMLElement} ele - element for which to find role. - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {List} roles - list of attribute roles and implicit roles. - * - * @memberOf RPTUtil - */ - RPTUtil.getRoles = function (ele, considerImplicitRoles) { - var roles = []; - if (ele && ele.hasAttribute && ele.hasAttribute("role")) { - var attrRoles = RPTUtil.normalizeSpacing(ele.getAttribute("role").trim()).split(" "); - for (var i = 0; i < attrRoles.length; ++i) { - roles.push(attrRoles[i]); - } - } - //check if implicit roles exist. - //Note: element can have multiple implicit roles - if (considerImplicitRoles) { - var implicitRole = RPTUtil.getImplicitRole(ele); - if (implicitRole.length > 0) { - //add implicit roles to the attributes roles. - RPTUtil.concatUniqueArrayItemList(implicitRole, roles); - } - } - return roles; - }; - /** - * Returns the implicit role of the elemement - * @parm {HTMLElement} ele - element for which to find role. - * - * @return the implicit role or [] if doesn't exist - * - * @memberOf RPTUtil - */ - RPTUtil.getImplicitRole = function (ele) { - var tagProperty = RPTUtil.getElementAriaProperty(ele); - //check if there are any implicit roles for this element. - if (tagProperty) { - if (tagProperty.implicitRole) { - return tagProperty.implicitRole; - } - } - return []; - }; - /** - * Returns the required properties of the role - * @parm {string} role - the role - * @parm {HTMLElement} ele - element for which to find role. - * - * @return {List} properties - list of properties that are required by the role - * - * @memberOf RPTUtil - */ - RPTUtil.getRoleRequiredProperties = function (role, ele) { - if (role === null) { - return null; - } - if (ARIADefinitions_1.ARIADefinitions.designPatterns[role]) { - var requiredAttributes = ARIADefinitions_1.ARIADefinitions.designPatterns[role].reqProps; - // handle special case of separator - if (role.toLowerCase() === "separator" && RPTUtil.isFocusable(ele)) { - RPTUtil.concatUniqueArrayItemList(["aria-valuenow"], requiredAttributes || []); - } - return requiredAttributes; - } - else { - return null; - } - }; - /** - * Test if the ele node is focusable - */ - RPTUtil.isFocusable = function (ele) { - if (ele === "undefined" || ele === null) { - return false; - } - return RPTUtil.isTabbable(ele); - }; - /** - * This function is responsible for finding if a element has given role. - * This function aslo finds if element has given roles as implicit role. - * @parm {HTMLElement} ele - element for which to find role. - * @parm {list or string} roles - List or single role for which to find if element has these roles. - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {List} retVal - true or false based on if th element has the specified role. - * - * @memberOf RPTUtil - * - * Consider to use hasRoleInSemantics() instead. - */ - RPTUtil.hasRole = function (ele, role, considerImplicitRoles) { - var retVal = false; - if (ele && ele.hasAttribute && ele.hasAttribute("role")) { - if (typeof (role) != typeof ("")) { - var roles = ele.getAttribute("role").trim().split(" "); - for (var i = 0; !retVal && i < roles.length; ++i) { - retVal = roles[i] in role; - } - } - else { - var roles = ele.getAttribute("role").trim().split(" "); - for (var i = 0; !retVal && i < roles.length; ++i) { - retVal = roles[i] === role; - } - } - } - //if none of the the attribute roles matched with given role - //check if implicit roles matches. - //Note: element can have multiple implicit roles - if (!retVal && considerImplicitRoles) { - var tagProperty = RPTUtil.getElementAriaProperty(ele); - var wRoles = []; - //check if there are any implicit roles for this element. - if (tagProperty && tagProperty.implicitRole !== null) { - //add implicit roles to the attributes roles. - RPTUtil.concatUniqueArrayItemList(tagProperty.implicitRole, wRoles); - //if role is array loop thru and see if any of the implicit role present in the array - if (typeof (role) != typeof ("")) { - for (var i = 0; !retVal && i < wRoles.length; ++i) { - retVal = wRoles[i] in role; - } - } - else { - for (var i = 0; !retVal && i < wRoles.length; ++i) { - retVal = wRoles[i] === role; - } - } - } - } - return retVal; - }; - /** - * Checks if the element has the role, including the implied role if role is not explicitly specified. - * - * This function is replacing the hasRole function - * - * @parm {HTMLElement} ele - element for which to find role. - * @parm {list or string} roles - List or single role for which to find if element has these roles. - * - * @return {List} retVal - true or false based on if the element has the specified role. - * - * @memberOf RPTUtil - */ - RPTUtil.hasRoleInSemantics = function (ele, role) { - var retVal = false; - var roleSpecified = false; - if (ele && ele.hasAttribute && ele.hasAttribute("role")) { - if (typeof (role) != typeof ("")) { - var roles = ele.getAttribute("role").trim().toLowerCase().split(/\s+/); - for (var i = 0; !retVal && i < roles.length; ++i) { - roleSpecified = true; - retVal = roles[i] in role; - } - } - else { - var roles = ele.getAttribute("role").trim().toLowerCase().split(/\s+/); - for (var i = 0; !retVal && i < roles.length; ++i) { - roleSpecified = true; - retVal = roles[i] === role; - } - } - } - if (roleSpecified) { - return retVal; - } - //check if implicit roles matches. - //Note: element can have multiple implicit roles - var tagProperty = RPTUtil.getElementAriaProperty(ele); - //check if there are any implicit roles for this element. - if (tagProperty && tagProperty.implicitRole !== null) { - var impRoles = tagProperty.implicitRole; - //if role is array loop thru and see if any of the implicit role present in the array - if (typeof (role) != typeof ("")) { - for (var i = 0; !retVal && i < impRoles.length; ++i) { - retVal = impRoles[i] in role; - } - } - else { - for (var i = 0; !retVal && i < impRoles.length; ++i) { - retVal = impRoles[i] === role; - } - } - } - return retVal; - }; - /** - * This function is responsible for finding if a element has given role. - * This function also checks if element has given roles as implicit roles. - * @parm {HTMLElement} ele - element for which to find role. - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {bool} retVal - true or false based on if the element has the specified role. - * - * @memberOf RPTUtil - */ - RPTUtil.hasAnyRole = function (ele, considerImplicitRoles) { - var retVal = false; - if (ele && ele.hasAttribute && ele.hasAttribute("role")) { - retVal = true; - } - //check if implicit roles exist. - //Note: element can have multiple implicit roles - if (!retVal && considerImplicitRoles) { - var tagProperty = RPTUtil.getElementAriaProperty(ele); - //check if there are any implicit roles for this element. - if (tagProperty && tagProperty.implicitRole !== null && - tagProperty.implicitRole.length > 0) { - retVal = true; - } - } - return retVal; - }; - RPTUtil.isDataTable = function (tableNode) { - return !(RPTUtil.hasRole(tableNode, "none") || RPTUtil.hasRole(tableNode, "presentation")); - }; - /* - * A complex data table is a data table with any of the following characteristics: - * - * a thead element that contains two or more tr elements - * a table with more than one thead element - * a table with two or more tr elements that contain only th elements - * a th or td element with a rowspan or colspan attribute - * a tr element that contains at least one td element and two or more th elements - * a table with headers not located in the first row or first column - * a td element with a headers attribute value that contains more than two IDREFs - */ - RPTUtil.isComplexDataTable = function (table) { - if ("RPTUtil_isComplexDataTable" in table) { - return !!table.RPTUtil_isComplexDataTable; - } - var isComplexTable = false; - if (table && RPTUtil.isDataTable(table)) { - var thNodes = null, tdNodes = null; - var trNodes = table.getElementsByTagName("tr"); - var trNodeCount = trNodes.length; - var tdNodeCount = 0, thNodeCount = 0, trNodesHavingOnlyThNodes = 0; - for (var i = 0; !isComplexTable && i < trNodeCount; ++i) { - thNodes = trNodes[i].getElementsByTagName("th"); - tdNodes = trNodes[i].getElementsByTagName("td"); - thNodeCount = thNodes.length; - tdNodeCount = tdNodes.length; - if (tdNodeCount !== 0) { - // a tr element that contains at least one td element and two or more th elements; - isComplexTable = thNodeCount > 1; - // a th element with a rowspan or colspan attribute - for (var j = 0; !isComplexTable && j < thNodeCount; ++j) { - isComplexTable = ((thNodes[j].hasAttribute("rowspan") || - thNodes[j].hasAttribute("colspan")) && - RPTUtil.getAncestor(thNodes[j], "table") === table); - } - // a td element with a rowspan or colspan attribute - // a td element with a headers attribute value that contains more than two IDREFs - for (var k = 0; !isComplexTable && k < tdNodeCount; ++k) { - isComplexTable = ((tdNodes[k].hasAttribute("rowspan") || - tdNodes[k].hasAttribute("colspan") || - (tdNodes[k].hasAttribute("headers") && RPTUtil.normalizeSpacing(tdNodes[k].getAttribute("headers")).split(" ").length > 2)) && - RPTUtil.getAncestor(tdNodes[k], "table") === table); - } - } - else { - // two or more tr elements that contain only th elements - if (thNodeCount > 0) { - ++trNodesHavingOnlyThNodes; - } - isComplexTable = trNodesHavingOnlyThNodes === 2; - } - } - if (!isComplexTable) { - var theadNodes = table.getElementsByTagName("thead"); - var theadNodesLength = theadNodes.length; - if (theadNodesLength > 0) { - // table has more than one thead element - isComplexTable = theadNodesLength > 1; - // a thead element that contains two or more tr elements - if (!isComplexTable) { - isComplexTable = theadNodes[0].getElementsByTagName("tr").length > 1; - } - } - } - if (!isComplexTable && trNodeCount !== 0) { - // a table with headers not located in the first row or first column - isComplexTable = thNodeCount > 0 && !RPTUtil.isTableHeaderInFirstRowOrColumn(table); - } - } - table.RPTUtil_isComplexDataTable = isComplexTable; - return isComplexTable; - }; - // Return true if a table's header is in the first row or column - RPTUtil.isTableHeaderInFirstRowOrColumn = function (ruleContext) { - var passed = false; - var rows = ruleContext.rows; - // Check if the first row is all TH's - if (rows != null && rows.length > 0) { - var firstRow = rows[0]; - passed = firstRow.cells.length > 0 && RPTUtil.getChildByTagHidden(firstRow, "td", false, true).length === 0; - // If the first row isn't a header row, try the first column - if (!passed) { - // Assume that the first column has all TH's unless we find a TD in the first column. - passed = true; - for (var i = 0; passed && i < rows.length; ++i) { - // If no cells in this row, that's okay too. - passed = !rows[i].cells || - rows[i].cells.length === 0 || - rows[i].cells[0].nodeName.toLowerCase() != "td"; - } - } - if (!passed) { - // Special case - both first row and first column are headers, but they did not use - // a th for the upper-left cell - passed = true; - for (var i = 1; passed && i < firstRow.cells.length; ++i) { - passed = firstRow.cells[i].nodeName.toLowerCase() != "td"; - } - for (var i = 1; passed && i < rows.length; ++i) { - // If no cells in this row, that's okay too. - passed = !rows[i].cells || - rows[i].cells.length === 0 || - rows[i].cells[0].nodeName.toLowerCase() != "td"; - } - } - } - return passed; - }; - RPTUtil.isNodeInGrid = function (node) { - return RPTUtil.getAncestorWithRole(node, "grid") != null; - }; - RPTUtil.isLayoutTable = function (tableNode) { - return RPTUtil.hasRole(tableNode, "presentation") || RPTUtil.hasRole(tableNode, "none"); - }; - RPTUtil.getFileExt = function (url) { - var m = url.match(/\.(([^;?#\.]|^$)+)([;?#]|$)/); - if (m != null && m.length >= 2) { - return "." + m[1]; - } - return ""; - }; - RPTUtil.getFileAnchor = function (url) { - var m = url.match(/#(([^;?\.]|^$)+)([;?]|$)/); - if (m != null && m.length >= 2) { - return m[1]; - } - return ""; - }; - RPTUtil.checkObjEmbed = function (node, extTest, mimeTest) { - var nodeName = node.nodeName.toLowerCase(); - if (nodeName != "object" && nodeName != "embed" && - nodeName != "a" && nodeName != "area") - return false; - var retVal = false; - // Check mime type - if (!retVal && node.hasAttribute("type")) { - var mime = node.getAttribute("type").toLowerCase(); - retVal = mimeTest(mime); - } - if (!retVal && node.hasAttribute("codetype")) { - var mime = node.getAttribute("codetype"); - retVal = mimeTest(mime); - } - // Check the filename - if (!retVal) { - var filename = ""; - if (nodeName === "embed") { - filename = node.getAttribute("src"); - } - else if (nodeName === "a" || nodeName === "area") { - filename = node.getAttribute("href"); - } - else if (node.hasAttribute("data")) { - filename = node.getAttribute("data"); - } - if (filename === null) - filename = ""; - var ext = RPTUtil.getFileExt(filename); - retVal = extTest(ext); - } - // Check for filenames in the params - if (!retVal && nodeName === "object") { - // In the case that Check Hidden Option is set then comply with that setting - var params = RPTUtil.getChildByTagHidden(node, "param", false, true); - for (var i = 0; !retVal && params != null && i < params.length; ++i) { - retVal = params[i].hasAttribute("value") && - extTest(RPTUtil.getFileExt(params[i].getAttribute("value"))); - } - } - return retVal; - }; - RPTUtil.isAudioObjEmbedLink = function (node) { - return RPTUtil.checkObjEmbed(node, RPTUtil.isAudioExt, function (mime) { - return mime.startsWith("audio"); - }); - }; - RPTUtil.isAudioExt = function (ext) { - var audio_extensions = [".aif", ".aifc", ".aiff", ".air", ".asf", ".au", ".cda", - ".dsm", ".dss", ".dwd", ".iff", ".kar", ".m1a", ".med", - ".mp2", ".mp3", ".mpa", ".pcm", ".ra", ".ram", ".rm", - ".sam", ".sf", ".sf2", ".smp", ".snd", ".svx", ".ul", - ".voc", ".wav", ".wma", ".wve" - ]; - return RPTUtil.valInArray(ext.toLowerCase(), audio_extensions); - }; - RPTUtil.isVideoObjEmbedLink = function (node) { - return RPTUtil.checkObjEmbed(node, RPTUtil.isVideoExt, function (mime) { - return mime.startsWith("video") || - mime.startsWith("application/x-shockwave-flash"); - }); - }; - RPTUtil.isVideoExt = function (ext) { - var video_extensions = [".asf", ".avi", ".divx", ".dv", ".m1v", ".m2p", ".m2v", ".moov", - ".mov", ".mp4", ".mpeg", ".mpg", ".mpv", ".ogm", ".omf", ".qt", - ".rm", ".rv", ".smi", ".smil", ".swf", ".vob", ".wmv", ".rmvb", - ".mvb" - ]; - return RPTUtil.valInArray(ext.toLowerCase(), video_extensions); - }; - RPTUtil.isImageObjEmbedLink = function (node) { - return RPTUtil.checkObjEmbed(node, RPTUtil.isImgExt, function (mime) { - return mime.startsWith("image"); - }); - }; - RPTUtil.isImgExt = function (ext) { - var image_extensions = [".bmp", ".gif", ".jpg", ".jpeg", ".pcx", ".png"]; - return RPTUtil.valInArray(ext.toLowerCase(), image_extensions); - }; - RPTUtil.isHtmlExt = function (ext) { - var html_extensions = [".asp", ".aspx", ".cfm", ".cfml", ".cgi", ".htm", ".html", ".shtm", - ".shtml", ".php", ".pl", ".py", ".shtm", ".shtml", ".xhtml" - ]; - return RPTUtil.valInArray(ext.toLowerCase(), html_extensions); - }; - RPTUtil.isPresentationalElement = function (node) { - // Elements extracted from https://developer.mozilla.org/en/docs/Web/HTML/Element#Inline_text_semantics, - // http://dev.w3.org/html5/html-author/#text-level-semantics and https://wiki.whatwg.org/wiki/Presentational_elements_and_attributes - var presentationalElements = ["abbr", "b", "bdi", "bdo", "br", "cite", "code", "data", "dfn", - "em", "i", "kbd", "mark", "q", "rp", "rt", "rtc", "ruby", "s", - "samp", "small", "span", "strong", "sub", "sup", "time", "u", - "var", "wbr", "a", "progress", "meter", "basefont", "big", "center", - "strike", "tt", "font", "blink", "h1", "h2", "h3", "h4", "h5", "h6", - "hr", "blockquote", "p" - ]; - return RPTUtil.valInArray(node.nodeName.toLowerCase(), presentationalElements); - }; - RPTUtil.hasTriggered = function (doc, id) { - return RPTUtil.getCache(doc, id, false); - }; - RPTUtil.triggerOnce = function (doc, id, passed) { - if (passed) - return true; - var triggered = RPTUtil.getCache(doc, id, false); - RPTUtil.setCache(doc, id, true); - return triggered; - }; - /* determine if the given value exists in the given array */ - RPTUtil.valInArray = function (value, arr) { - for (var idx in arr) { - if (arr[idx] === value) - return true; - } - return false; - }; - /** - * return the ancestor of the given element - * @param tagNames string, array, or dictionary containing the tags to search for - */ - RPTUtil.getAncestor = function (element, tagNames) { - var walkNode = element; - while (walkNode != null) { - var thisTag = walkNode.nodeName.toLowerCase(); - if (typeof (tagNames) === "string") { - if (thisTag === tagNames.toLowerCase()) { - break; - } - } - else if (tagNames.length) { - for (var idx in tagNames) { - // Packages.java.lang.System.err.println(thisTag + ":" + tagNames[idx] + ":" + (tagNames[idx] === thisTag)); - if (tagNames[idx] === thisTag) - return walkNode; - } - } - else if (thisTag in tagNames) { - break; - } - walkNode = DOMUtil_1.DOMUtil.parentNode(walkNode); - } - return walkNode; - }; - // return true if element1 and element2 are siblings - RPTUtil.isSibling = function (element1, element2) { - if (element1 && element2) { - var node = null; - if (DOMUtil_1.DOMUtil.parentNode(element1) && DOMUtil_1.DOMUtil.parentNode(element1).firstChild) { - node = DOMUtil_1.DOMUtil.parentNode(element1).firstChild; - } - while (node) { - if (node === element2) - return true; - node = node.nextSibling; - } - } - return false; - }; - /** - * return the ancestor of the given element and role. - * - * @parm {element} element - The element to start the node walk on to find parent node - * @parm {string} role - The role to search for on an element under the provided element - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {node} walkNode - A parent node of the element passed in, which has the provided role - * - * @memberOf RPTUtil - */ - RPTUtil.getAncestorWithRole = function (element, roleName, considerImplicitRoles) { - var walkNode = DOMUtil_1.DOMUtil.parentNode(element); - while (walkNode != null) { - if (considerImplicitRoles) { - if (RPTUtil.hasRoleInSemantics(walkNode, roleName)) { - break; - } - } - else { - if (RPTUtil.hasRole(walkNode, roleName, false)) { - break; - } - } - walkNode = DOMUtil_1.DOMUtil.parentNode(walkNode); - } - return walkNode; - }; - /** - * This function is responsible for finding a node which matches the role and is a sibling of the - * provided element. - * - * This function by default will not consider Check Hidden Setting at all. - * - * Note: This is a wrapper function to: RPTUtil.getSiblingWithRoleHidden - * - * @parm {element} element - The element to start the node walk on to find sibling node - * @parm {string} role - The role to search for on an element under the provided element - * - * @return {node} walkNode - A sibling node of the element passed in, which has the provided role - * - * @memberOf RPTUtil - */ - RPTUtil.getSiblingWithRole = function (element, role) { - return RPTUtil.getSiblingWithRoleHidden(element, role, false); - }; - /** - * This function is responsible for finding a node which matches the role and is a sibling of the - * provided element. - * - * This function also considers implicit roles for the elements. - * - * This function will also consider elements that are hidden based on the if the Check - * Hidden Content settings should be considered or not. - * - * @parm {element} element - The element to start the node walk on to find sibling node - * @parm {string} role - The role to search for on an element under the provided element - * @parm {bool} considerHiddenSetting - true or false based on if hidden setting should be considered. - * @parm {bool} considerImplicit - true or false based on if Implicit roles should be considered. - * - * @return {node} walkNode - A sibling node of the element passed in, which has the provided role - * - * @memberOf RPTUtil - */ - RPTUtil.getSiblingWithRoleHidden = function (element, role, considerHiddenSetting, considerImplicitRole) { - // Variable Declaration - var walkNode = null; - var hasRole = false; - // Only perform the check if element and role are both provided - if (element && role) { - // Fetch the next sibling element - walkNode = element.nextSibling; - // Keep looping over the next siblings to find element which matches - // the provided role. - while (walkNode != null && !hasRole) { - // Following are the steps that are executed at this stage to determine if the node should be classified as hidden - // or not. - // 1. If considerHiddenSetting option is set to true then we perform the check to consider the - // Check Hidden Content that is provided. - // 2. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we do not - // add it to the roleToElems hash at all or even do any checking for it at all. - // - // Note: The if conditions uses short-circuiting so if the first condition is not true it will not check the next one, - // so on and so forth. - if (considerHiddenSetting && RPTUtil.shouldNodeBeSkippedHidden(walkNode)) { - // Move on to the next node - walkNode = walkNode.nextSibling; - continue; - } - // Check if this node has the role that we need to check exists - if (considerImplicitRole) { - hasRole = RPTUtil.hasRoleInSemantics(walkNode, role); - } - else { - hasRole = RPTUtil.hasRole(walkNode, role, false); - } - // Move on to the next node - walkNode = walkNode.nextSibling; - } - // If we still have not found a node that matches the role, start a reverse look up - if (!walkNode) { - // Fetch the previous Sibling of this element - walkNode = element.previousSibling; - // Keep looping over all the previous siblings to search for an element which - // matches the provided role. - while (walkNode != null && !hasRole) { - // Following are the steps that are executed at this stage to determine if the node should be classified as hidden - // or not. - // 1. If considerHiddenSetting option is set to true then we perform the check to consider the - // Check Hidden Content that is provided. - // 2. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we do not - // add it to the roleToElems hash at all or even do any checking for it at all. - // - // Note: The if conditions uses short-circuiting so if the first condition is not true it will not check the next one, - // so on and so forth. - if (considerHiddenSetting && RPTUtil.shouldNodeBeSkippedHidden(walkNode)) { - // Move on to the next node - walkNode = walkNode.previousSibling; - continue; - } - // Check if this node has the role that we need to check exists - hasRole = RPTUtil.hasRole(walkNode, role, considerImplicitRole); - // Move on to the next node - walkNode = walkNode.previousSibling; - } - } - } - return walkNode; - }; - RPTUtil.isDescendant = function (parent, child) { - var node = DOMUtil_1.DOMUtil.parentNode(child); - while (node != null) { - if (node === parent) { - return true; - } - node = DOMUtil_1.DOMUtil.parentNode(node); - } - return false; - }; - //check if the first form control child is disabled - RPTUtil.isDisabledByFirstChildFormElement = function (element) { - var formElements = ["input", "textarea", "select", "keygen", "progress", "meter", "output"]; - if (element.firstChild != null) { - var nw = new NodeWalker(element); - while (nw.nextNode()) { - if (formElements.includes(nw.node.nodeName.toLowerCase())) { - if (RPTUtil.isNodeDisabled(nw.node)) - return true; - return false; - } - } - } - return false; - }; - RPTUtil.isDisabledByReferringElement = function (element) { - var id = element.getAttribute("id"); - var doc = element.ownerDocument; - var root = doc.body; - while (DOMUtil_1.DOMUtil.parentNode(root) !== null) { - // Get the parentNode - root = DOMUtil_1.DOMUtil.parentNode(root); - } - var nw = new NodeWalker(root); - while (nw.nextNode()) { - // check the element whose 'aria-describedby' equals to the id - if (nw.node && nw.node.nodeType === 1 && nw.elem() && nw.elem().getAttribute("aria-describedby") === id) { - if (RPTUtil.isNodeDisabled(nw.node)) { - return true; - } - return false; - } - } - return false; - }; - /** - * This function is responsible for getting a descendant element with the specified role, under - * the element that was provided. - * - * Note by default this function will not consider the Check Hidden Content Setting. - * - * Note: This is a wrapper function to: RPTUtil.getDescendantWithRoleHidden - * - * @parm {element} element - parent element for which we will be checking descendants for - * @parm {string} roleName - The role to look for on the descendants elements - * - * @return {node} - The descendant element that matches the role specified (only one) - * - * @memberOf RPTUtil - */ - RPTUtil.getDescendantWithRole = function (element, roleName) { - return RPTUtil.getDescendantWithRoleHidden(element, roleName, false); - }; - /** - * This function is responsible for getting a descendant element with the specified role, under - * the element that was provided. This function aslo finds elements with implicit roles. - * - * @parm {element} element - parent element for which we will be checking descendants for - * @parm {string} roleName - The role to look for on the descendants elements - * @parm {bool} considerHiddenSetting - true or false based on if hidden setting should be considered. - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {node} - The descendant element that matches the role specified (only one) - * - * @memberOf RPTUtil - */ - RPTUtil.getDescendantWithRoleHidden = function (element, roleName, considerHiddenSetting, considerImplicitRoles) { - // Variable Decleration - var descendant = null; - var nw = new NodeWalker(element); - // Loop over all the childrens of the element provided and check if the rolename provided exists - while (nw.nextNode() && nw.node != element && nw.node != element.nextSibling) { - // Following are the steps that are executed at this stage to determine if the node should be classified as hidden - // or not. - // 1. If considerHiddenSetting option is set to true then we perform the check to consider the - // Check Hidden Content that is provided. - // 2. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we do not - // add it to the roleToElems hash at all or even do any checking for it at all. - // - // Note: The if conditions uses short-circuiting so if the first condition is not true it will not check the next one, - // so on and so forth. - if (considerHiddenSetting && RPTUtil.shouldNodeBeSkippedHidden(nw.node)) { - continue; - } - // Check if this node has the role specified, if it does then set this as the descendant and stop checking the rest of the - // nodes. - // Check if this node has the implicit roles, if it does then set this as the descendant and stop checking the rest of the - // nodes. - if (considerImplicitRoles ? RPTUtil.hasRoleInSemantics(nw.node, roleName) : RPTUtil.hasRole(nw.node, roleName, false)) { - descendant = nw.node; - break; - } - } - return descendant; - }; - /** - * This function is responsible for getting All descendant elements with the specified role, under - * the element that was provided. This function aslo finds elements with implicit roles. - * - * @parm {element} element - parent element for which we will be checking descendants for - * @parm {string} roleName - The role to look for on the descendants elements - * @parm {bool} considerHiddenSetting - true or false based on if hidden setting should be considered. - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {node} - The descendant element that matches the role specified (only one) - * - * @memberOf RPTUtil - */ - RPTUtil.getAllDescendantsWithRoleHidden = function (element, roleName, considerHiddenSetting, considerImplicitRoles) { - // Variable Decleration - var descendants = []; - var nw = new NodeWalker(element); - // Loop over all the childrens of the element provided and check if the rolename provided exists - while (nw.nextNode() && nw.node != element && nw.node != element.nextSibling) { - if (nw.bEndTag) { - continue; - } - // Following are the steps that are executed at this stage to determine if the node should be classified as hidden - // or not. - // 1. If considerHiddenSetting option is set to true then we perform the check to consider the - // Check Hidden Content that is provided. - // 2. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we do not - // add it to the roleToElems hash at all or even do any checking for it at all. - // - // Note: The if conditions uses short-circuiting so if the first condition is not true it will not check the next one, - // so on and so forth. - if (considerHiddenSetting && RPTUtil.shouldNodeBeSkippedHidden(nw.node)) { - continue; - } - // Check if this node has the role specified, if it does then set this as the descendant and stop checking the rest of the - // nodes. - // Check if this node has the implicit roles, if it does then set this as the descendant and stop checking the rest of the - // nodes. - if (RPTUtil.hasRole(nw.node, roleName, considerImplicitRoles)) { - descendants.push(nw.node); - } - } - return descendants; - }; - /** - * This function is responsible for getting an element referenced by aria-owns and has the - * role that was specified. - * - * Note by default this function will not consider the Check Hidden Content Setting. - * - * Note: This is a wrapper function to: RPTUtil.getAriaOwnsWithRoleHidden - * - * @parm {element} element - Element to check for aria-owns - * @parm {string} roleName - The role to look for on the aria-owns element - * - * @return {node} - The element that is referenced by aria-owns and has role specified. - * - * @memberOf RPTUtil - */ - RPTUtil.getAriaOwnsWithRole = function (element, roleName) { - return RPTUtil.getAriaOwnsWithRoleHidden(element, roleName, false); - }; - /** - * This function is responsible for getting an element referenced by aria-owns and has the - * role that was specified. This function aslo finds elements with implicit roles. - * - * @parm {element} element - Element to check for aria-owns - * @parm {string} roleName - The role to look for on the aria-owns element - * @parm {bool} considerHiddenSetting - true or false based on if hidden setting should be considered. - * @parm {bool} considerImplicitRoles - true or false based on if implicit roles setting should be considered. - * - * @return {node} - The element that is referenced by aria-owns and has role specified. - * - * @memberOf RPTUtil - */ - RPTUtil.getAriaOwnsWithRoleHidden = function (element, roleName, considerHiddenSetting, considerImplicitRoles) { - // Variable Decleration - var referencedElement = null; - var referencedElemHasRole = false; - // In the case aria-owns is not on the element just break out of this function with null - if (RPTUtil.attributeNonEmpty(element, "aria-owns")) { - // Get the reference ID - var referenceID = element.getAttribute("aria-owns"); - // Get the element for the reference ID - referencedElement = fragment_1.FragmentUtil.getById(element, referenceID); - // Following are the steps that are executed at this stage to determine if the node should be classified as hidden - // or not. - // 1. If considerHiddenSetting option is set to true then we perform the check to consider the - // Check Hidden Content that is provided. - // 2. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we do not - // add it to the roleToElems hash at all or even do any checking for it at all. - if (considerHiddenSetting && referencedElement != null && RPTUtil.shouldNodeBeSkippedHidden(referencedElement)) { - referencedElemHasRole = null; - } - else { - referencedElemHasRole = RPTUtil.hasRole(referencedElement, roleName, considerImplicitRoles); - } - } - return referencedElemHasRole ? referencedElement : null; - }; - /** get element containing label for the given element - * @deprecated Deprecated because the function name is misleading. Use getLabelForElement(element) instead - */ - RPTUtil.getInputLabel = function (element) { - return RPTUtil.getLabelForElement(element); - }; - /** - * This function is responsible for getting the element containing the label for the given element. - * - * Note: This is a wrapper function to: RPTUtil.getLabelForElementHidden - * - * @parm {element} element - The element for which to get the label element for. - * - * @return {element} element - return the element for the label, otherwise null - * - * @memberOf RPTUtil - */ - RPTUtil.getLabelForElement = function (element) { - return RPTUtil.getLabelForElementHidden(element, false); - }; - /** - * This function is responsible for getting the element containing the label for the given element. - * - * This function will return null if the containing lable element is hidden, when the ignoreHidden option - * is set to true. - * - * @parm {element} element - The element for which to get the label element for. - * @parm {boolean} ignoreHidden - true if hidden elements with label should be ignored from the list - * false if the hidden elements should be added - * - * @return {element} element - return the element for the label, otherwise null - * - * @memberOf RPTUtil - */ - RPTUtil.getLabelForElementHidden = function (element, ignoreHidden) { - // Check if the global RPTUtil_LABELS hash is available, as this will contain the label nodes based on - // for attribute. - if (!RPTUtil.getCache(element.ownerDocument, "RPTUtil_LABELS", null)) { - // Variable Decleration - var idToLabel = {}; - // Get all the label elements in the entire doc - var labelNodes = RPTUtil.getDocElementsByTag(element, "label"); - // Loop over all the label nodes, in the case the label node has a for attribute, - // extract that attribute and add this node to the hash if it is visible. - for (var i = 0; i < labelNodes.length; ++i) { - if (labelNodes[i].hasAttribute("for")) { - // If ignore hidden is specified and the node is not visible we do not add it to the - // labelNodes hash. - if (ignoreHidden && !RPTUtil.isNodeVisible(labelNodes[i])) { - continue; - } - idToLabel[labelNodes[i].getAttribute("for")] = labelNodes[i]; - } - } - // Add the built hash to the ownerDocument (document), to be used later to fast retrival - RPTUtil.setCache(element.ownerDocument, "RPTUtil_LABELS", idToLabel); - } - // If this element has an id attribute, get the corosponding label element - if (element.hasAttribute("id")) { - // Fetch the id attribute - var ctrlId = element.getAttribute("id"); - // Return the corosponding label element. - // Note: in the case that the the id is not found in the hash that means, it does not exists or is hidden - if (ctrlId.trim().length > 0) { - return RPTUtil.getCache(element.ownerDocument, "RPTUtil_LABELS", {})[ctrlId]; - } - } - return null; - }; - /* Return specified element attribute if present else return null */ - RPTUtil.getElementAttribute = function (element, attr) { - return (element && element.hasAttribute && element.hasAttribute(attr)) ? element.getAttribute(attr) : null; - }; - // Return true if the element has an ARIA label - RPTUtil.hasAriaLabel = function (element) { - // Rpt_Aria_ValidIdRef determines if the aria-labelledby id points to a valid element - return RPTUtil.attributeNonEmpty(element, "aria-label") || RPTUtil.attributeNonEmpty(element, "aria-labelledby"); - }; - // Return true if element has valid implicit label - RPTUtil.hasImplicitLabel = function (element) { - var parentNode = RPTUtil.getAncestor(element, "label"); - // Test a) if the parent is a label which is the implicit label - // b) if the form element is the first child of the label - // c) if the form element requires an implicit or explicit label : "input", "textarea", "select", "keygen", "progress", "meter", "output" - // form elements that do not require implicit or explicit label element are: - // "optgroup", "option", "datalist"(added later). These were handled differently in the main rule, might need to refactor the code later - if (parentNode && parentNode.tagName.toLowerCase() === "label" && RPTUtil.isFirstFormElement(parentNode, element)) { - var parentClone = parentNode.cloneNode(true); - // exclude all form elements from the label since they might also have inner content - parentClone = RPTUtil.removeAllFormElementsFromLabel(parentClone); - return RPTUtil.hasInnerContentHidden(parentClone); - } - else { - return false; - } - }; - RPTUtil.isFirstFormElement = function (parentNode, element) { - var formElementsRequiringLabel = ["input", "textarea", "select", "keygen", "progress", "meter", "output"]; - if (parentNode.firstChild != null) { - var nw = new NodeWalker(parentNode); - while (nw.nextNode()) { - if (formElementsRequiringLabel.indexOf(nw.node.nodeName.toLowerCase()) !== -1) { - return nw.node === element; - } - } - } - return false; - }; - RPTUtil.removeAllFormElementsFromLabel = function (element) { - var formElements = ["input", "textarea", "select", "button", "datalist", "optgroup", "option", "keygen", "output", "progress", "meter"]; - var childNodes = element.childNodes; - for (var i = 0; i < childNodes.length; i++) { - if (formElements.indexOf(childNodes[i].nodeName.toLowerCase()) > -1) { - element.removeChild(childNodes[i]); - } - } - return element; - }; - // Given an array of elements, return true if the elements have unique ARIA labels - RPTUtil.hasUniqueAriaLabelsLocally = function (elements, isGlobal) { - if (elements.length === 0) - return false; - var doc = elements[0].ownerDocument; - var hasDuplicateLabels = false; - var uniqueAriaLabels = null; - if (isGlobal) { - uniqueAriaLabels = RPTUtil.getCache(doc, "RPTUtil_HAS_UNIQUE_ARIA_LABELS", null); - } - if (uniqueAriaLabels === null) { - uniqueAriaLabels = {}; - } - for (var i = 0; !hasDuplicateLabels && i < elements.length; ++i) { - if (elements[i].hasAttribute) { - if (elements[i].hasAttribute("aria-label")) { - var ariaLabel = RPTUtil.normalizeSpacing(elements[i].getAttribute("aria-label")).toLowerCase(); - hasDuplicateLabels = ariaLabel in uniqueAriaLabels; - uniqueAriaLabels[ariaLabel] = true; - } - else if (elements[i].hasAttribute("aria-labelledby")) { - var labelID = elements[i].getAttribute("aria-labelledby"); - var labelNode = fragment_1.FragmentUtil.getById(elements[i], labelID); - var label = labelNode ? RPTUtil.getInnerText(labelNode) : ""; - var normalizedLabel = RPTUtil.normalizeSpacing(label).toLowerCase(); - hasDuplicateLabels = normalizedLabel in uniqueAriaLabels; - uniqueAriaLabels[normalizedLabel] = true; - } - else { - // Has no label at all - hasDuplicateLabels = true; - } - } - } - if (isGlobal) { - RPTUtil.setCache(doc, "RPTUtil_HAS_UNIQUE_ARIA_LABELS", uniqueAriaLabels); - } - return !hasDuplicateLabels; - }; - RPTUtil.getAriaLabel = function (ele) { - if (ele.hasAttribute) { - if (ele.hasAttribute("aria-labelledby")) { - var labelIDs = ele.getAttribute("aria-labelledby").trim().split(" "); - var normalizedLabel = ""; - for (var j = 0, length_1 = labelIDs.length; j < length_1; ++j) { - var labelID = labelIDs[j]; - var labelNode = fragment_1.FragmentUtil.getById(ele, labelID); - var label = labelNode ? RPTUtil.getInnerText(labelNode) : ""; - normalizedLabel += RPTUtil.normalizeSpacing(label).toLowerCase(); - } - return normalizedLabel.trim(); - } - else if (ele.hasAttribute("aria-label")) { - return RPTUtil.normalizeSpacing(ele.getAttribute("aria-label")).toLowerCase().trim(); - } - } - if (ele.nodeName.toLowerCase() === "input") { - var label = RPTUtil.getLabelForElement(ele); - if (!label) - return ""; - return (RPTUtil.getAriaLabel(label) || label.innerText || "").trim(); - } - return ""; - }; - RPTUtil.findAriaLabelDupes = function (elements) { - var dupeMap = {}; - elements.forEach(function (ele) { - dupeMap[RPTUtil.getAriaLabel(ele)] = (dupeMap[RPTUtil.getAriaLabel(ele)] || 0) + 1; - }); - return dupeMap; - }; - // Given an array of elements, return true if the elements have unique ARIA labels globally - RPTUtil.hasUniqueAriaLabels = function (elements) { - return RPTUtil.hasUniqueAriaLabelsLocally(elements, true); - }; - // Given an array of elements, return true if the elements have unique ARIA labels - RPTUtil.hasDuplicateAriaLabelsLocally = function (elements, isGlobal) { - if (elements.length === 0) - return false; - var doc = elements[0].ownerDocument; - var hasDuplicateLabels = false; - var uniqueAriaLabels = null; - var duplicateLabelNameArray = new Array(); - if (isGlobal) { - uniqueAriaLabels = RPTUtil.getCache(doc, "RPTUtil_HAS_UNIQUE_ARIA_LABELS", null); - } - if (uniqueAriaLabels === null) { - uniqueAriaLabels = {}; - } - for (var i = 0; i < elements.length; ++i) { - if (elements[i].hasAttribute) { - if (elements[i].hasAttribute("aria-label")) { - var ariaLabel = RPTUtil.normalizeSpacing(elements[i].getAttribute("aria-label")).toLowerCase(); - hasDuplicateLabels = ariaLabel in uniqueAriaLabels; - uniqueAriaLabels[ariaLabel] = true; - if (!(ariaLabel in duplicateLabelNameArray)) { - duplicateLabelNameArray[ariaLabel] = new Array(); - } - duplicateLabelNameArray[ariaLabel].push(elements[i].nodeName.toLowerCase()); - } - else if (elements[i].hasAttribute("aria-labelledby")) { - var labelIDs = elements[i].getAttribute("aria-labelledby").trim().split(" "); - var normalizedLabel = ""; - for (var j = 0, length_2 = labelIDs.length; j < length_2; ++j) { - var labelID = labelIDs[j]; - var labelNode = fragment_1.FragmentUtil.getById(elements[i], labelID); - var label = labelNode ? RPTUtil.getInnerText(labelNode) : ""; - normalizedLabel += RPTUtil.normalizeSpacing(label).toLowerCase(); - } - hasDuplicateLabels = normalizedLabel in uniqueAriaLabels; - uniqueAriaLabels[normalizedLabel] = true; - if (!(normalizedLabel in duplicateLabelNameArray)) { - duplicateLabelNameArray[normalizedLabel] = new Array(); - } - duplicateLabelNameArray[normalizedLabel].push(elements[i].nodeName.toLowerCase()); - } - } - } - if (isGlobal) { - RPTUtil.setCache(doc, "RPTUtil_HAS_UNIQUE_ARIA_LABELS", uniqueAriaLabels); - } - return duplicateLabelNameArray; - }; - // Given an array of elements, return true if the elements have unique ARIA labels globally - RPTUtil.hasDuplicateAriaLabels = function (elements) { - return RPTUtil.hasDuplicateAriaLabelsLocally(elements, true); - }; - // Given an array of elements, return true if the elements have unique aria-labelledby attributes - RPTUtil.hasUniqueAriaLabelledby = function (elements) { - var hasDuplicateLabels = false; - var labelRefs = {}; - for (var i = 0; !hasDuplicateLabels && i < elements.length; ++i) { - if (elements[i].hasAttribute && elements[i].hasAttribute("aria-labelledby")) { - var labelRef = RPTUtil.normalizeSpacing(elements[i].getAttribute("aria-labelledby")); - hasDuplicateLabels = labelRef in labelRefs; - labelRefs[labelRef] = true; - } - else { - hasDuplicateLabels = true; - } - } - return !hasDuplicateLabels; - }; - /* Determine the node depth of the given element */ - RPTUtil.nodeDepth = function (element) { - var depth = 0; - var walkNode = element; - while (walkNode != null) { - walkNode = DOMUtil_1.DOMUtil.parentNode(walkNode); - depth = depth + 1; - } - return depth; - }; - /* compare node order of the 2 given nodes */ - /* returns - * 0 if the nodes are equal - * 1 if node b is before node a - * -1 if node a is before node b - * 2 if node a is nested in node b - * -2 if node b is nested in node a - * null if either node is null or their parent nodes are not equal - */ - RPTUtil.compareNodeOrder = function (nodeA, nodeB) { - if (nodeA === nodeB) - return 0; - var aDepth = RPTUtil.nodeDepth(nodeA); - var bDepth = RPTUtil.nodeDepth(nodeB); - if (bDepth > aDepth) { - for (var i = 0; i < bDepth - aDepth; ++i) - nodeB = DOMUtil_1.DOMUtil.parentNode(nodeB); - if (nodeA === nodeB) // Node B nested in Node A - return -2; - } - else if (aDepth > bDepth) { - for (var i = 0; i < aDepth - bDepth; ++i) - nodeA = DOMUtil_1.DOMUtil.parentNode(nodeA); - if (nodeA === nodeB) // Node A nested in Node B - return 2; - } - while (nodeA != null && nodeB != null && DOMUtil_1.DOMUtil.parentNode(nodeA) != DOMUtil_1.DOMUtil.parentNode(nodeB)) { - nodeA = DOMUtil_1.DOMUtil.parentNode(nodeA); - nodeB = DOMUtil_1.DOMUtil.parentNode(nodeB); - } - if (nodeA === null || nodeB === null || DOMUtil_1.DOMUtil.parentNode(nodeA) != DOMUtil_1.DOMUtil.parentNode(nodeB)) - return null; - while (nodeB != null && nodeB != nodeA) - nodeB = nodeB.previousSibling; - if (nodeB === null) // nodeB before nodeA - return 1; - else - return -1; - }; - /** - * Determine if the given attribute of the given element is not empty - * @memberOf RPTUtil - */ - RPTUtil.attributeNonEmpty = function (element, attrStr) { - return element.hasAttribute(attrStr) && element.getAttribute(attrStr).trim().length > 0; - }; - /* Return a pointer to the given global variable - * with its initial value as given */ - RPTUtil.getCache = function (cacheSpot, keyName, initValue) { - var cacheObj = (cacheSpot.nodeType === 9 /* Node.DOCUMENT_NODE */) ? cacheSpot : cacheSpot; - if (cacheObj.aceCache === undefined) { - cacheObj.aceCache = {}; - } - if (cacheObj.aceCache[keyName] === undefined) { - cacheObj.aceCache[keyName] = initValue; - } - return cacheObj.aceCache[keyName]; - }; - RPTUtil.setCache = function (cacheSpot, globalName, value) { - var cacheObj = (cacheSpot.nodeType === 9 /* Node.DOCUMENT_NODE */) ? cacheSpot : cacheSpot; - if (cacheObj.aceCache === undefined) { - cacheObj.aceCache = {}; - } - cacheObj.aceCache[globalName] = value; - return value; - }; - /* Return a pointer to the given frame, null if not found */ - RPTUtil.getFrameByName = function (ruleContext, frameName) { - var window = ruleContext.ownerDocument.defaultView; - var frameList = [window]; - var idx = 0; - while (idx < frameList.length) { - try { - if (frameList[idx].name === frameName) - return frameList[idx]; - for (var i = 0; i < frameList[idx].frames.length; ++i) { - try { - // Ensure it's a real frame and avoid recursion - if (frameList[idx].frames[i] && !frameList.includes(frameList[idx].frames[i])) { - frameList.push(frameList[idx].frames[i]); - } - } - catch (e) { } - } - } - catch (e) { } - ++idx; - } - return null; - }; - RPTUtil.defaultNSResolver = function (prefix) { - var uri; - switch (prefix) { - case 'html': - uri = 'http://www.w3.org/1999/xhtml'; - case 'x2': - uri = 'http://www.w3.org/TR/xhtml2'; - case 'x': - uri = 'http://www.w3.org/1999/xhtml'; - case 'xhtml': - uri = 'http://www.w3.org/1999/xhtml'; - default: - uri = null; - } - return uri; - }; - //checking if only the inner text is empty or not - RPTUtil.isInnerTextOnlyEmpty = function (element) { - // Get the innerText of the element - var text = element.innerText; - if (text === undefined && element.textContent !== undefined) { - // In headless mode, innerText is sometimes 'undefined' - // so we try textContent as a workaround - text = element.textContent; - } - var retVal = !(text !== null && text.trim().length > 0); - if (element.nodeType === 1 && element.nodeName.toLowerCase() === "slot") { - for (var _i = 0, _a = element.assignedNodes(); _i < _a.length; _i++) { - var slotElem = _a[_i]; - retVal = retVal && RPTUtil.isInnerTextEmpty(slotElem); - } - } - // Trim the inner text and verify that it is not empty. - return retVal; - }; - /* Return the inner text of the given element */ - RPTUtil.getInnerText = function (element) { - var retVal = element.innerText; - if (retVal === undefined || retVal.trim() === "") - retVal = element.textContent; - return retVal; - }; - /** - * This function is responsible for checking if elements inner text is empty or not. - * - * @parm {element} node The node which should be checked it has inner text or not. - * @return {bool} true if element has empty inner text, false otherwise - * - * @memberOf RPTUtil - */ - RPTUtil.isInnerTextEmpty = function (element) { - // Get the innerText of the element - var text = RPTUtil.getInnerText(element); - // Trim the inner text and verify that it is not empty. - return !(text != null && text.trim().length > 0); - }; - RPTUtil.hasInnerContent = function (element) { - var text = RPTUtil.getInnerText(element); - var hasContent = (text != null && text.trim().length > 0); - if (element.firstChild != null) { - var nw = new NodeWalker(element); - while (!hasContent && nw.nextNode()) { - hasContent = (nw.node.nodeName.toLowerCase() === "img" && - RPTUtil.attributeNonEmpty(nw.node, "alt")); - } - } - return hasContent; - }; - /** - * This function is responsible for determine if an element has inner content. - * This function also considers cases where inner text is hidden, which now will - * be classified as does not have hidden content. - * - * @parm {element} node The node which should be checked it has inner text or not. - * @return {bool} true if element has empty inner text, false otherwise - * - * @memberOf RPTUtil - */ - RPTUtil.hasInnerContentHidden = function (element) { - return RPTUtil.hasInnerContentHiddenHyperLink(element, false); - }; - RPTUtil.svgHasName = function (element) { - return RPTUtil.attributeNonEmpty(element, "aria-label") - || RPTUtil.attributeNonEmpty(element, "aria-labelledby") - || !!element.querySelector(":scope > title"); - }; - RPTUtil.hasInnerContentHiddenHyperLink = function (element, hyperlink_flag) { - if (!element) - return false; - // Variable Decleration - var childElement = element.firstElementChild; - var hasContent = false; - // In the case that the childElement is not null then we need to check each of the elements - // to make sure that the elements are not all hidden. - if (childElement != null) { - // Get the nodewalter of the element node, so that we can loop over it and verify - // that the elements under the element are not completly hidden. - var nw = new NodeWalker(element); - // Loop over all the nodes until there are no more nodes or we have determine that there is content under - // this parent element. - while (!hasContent && nw.nextNode() && nw.node != element) { - // Get the next node - var node = nw.node; - // In the case an img element is present with alt then we can mark this as pass - // otherwise keep checking all the other elements. Make sure that this image element is not hidden. - hasContent = (node.nodeName.toLowerCase() === "img" - && (RPTUtil.attributeNonEmpty(node, "alt") || RPTUtil.attributeNonEmpty(node, "title")) - && RPTUtil.isNodeVisible(node)) || (node.nodeName.toLowerCase() === "svg" - && RPTUtil.svgHasName(node)); - // Now we check if this node is of type element, visible - if (!hasContent && node.nodeType === 1 && RPTUtil.isNodeVisible(node)) { - // Check if the innerText of the element is empty or not - hasContent = !RPTUtil.isInnerTextOnlyEmpty(node); - if (!hasContent && hyperlink_flag === true) { - hasContent = RPTUtil.attributeNonEmpty(node, "aria-label") || RPTUtil.attributeNonEmpty(node, "aria-labelledby"); - var doc = node.ownerDocument; - if (doc) { - var win = doc.defaultView; - if (win) { - var cStyle = win.getComputedStyle(node); - if (!hasContent && cStyle != null) { - // console.log(cStyle.backgroundImage); - // console.log(cStyle.content) - hasContent = ((cStyle.backgroundImage && cStyle.backgroundImage.indexOf) || cStyle.content) && RPTUtil.attributeNonEmpty(node, "alt"); - } - } - } - } - } - // Check for cases where there is text node after an element under the parent - // In the case we detect nodetype as text node and the patent of the text node is - // the same element we are checking has Inner content for then get the inner content of this - // text node. - if (node.nodeType === 3 && DOMUtil_1.DOMUtil.parentElement(node) === element) { - // Check if the innerText of the element is empty or not - hasContent = !RPTUtil.isInnerTextEmpty(node); - } - } - } - // In the case there are no child elements then we can simply perform the check for only innertext - // the img with alt case will be covered in the above if, as img is considers as an element. - else { - // Check if the innerText of the element is empty or not - hasContent = !RPTUtil.isInnerTextEmpty(element); - } - return hasContent; - }; - RPTUtil.hasInnerContentOrAlt = function (element) { - var text = RPTUtil.getInnerText(element); - var hasContent = (text != null && text.trim().length > 0) || RPTUtil.attributeNonEmpty(element, "alt"); - if (element.firstChild != null) { - var nw = new NodeWalker(element); - while (!hasContent && nw.nextNode() && nw.node != element) { - hasContent = (nw.node.nodeName.toLowerCase() === "img" && - RPTUtil.attributeNonEmpty(nw.node, "alt")); - if (!hasContent - && (RPTUtil.hasRole(nw.node, "button", true) || RPTUtil.hasRole(nw.node, "textbox")) - && (RPTUtil.hasAriaLabel(nw.node) || RPTUtil.attributeNonEmpty(nw.node, "title") || RPTUtil.getLabelForElementHidden(nw.elem(), true))) { - hasContent = true; - } - } - } - return hasContent; - }; - RPTUtil.concatUniqueArrayItem = function (item, arr) { - arr.indexOf(item) === -1 && item !== null ? arr.push(item) : false; - return arr; - }; - RPTUtil.concatUniqueArrayItemList = function (itemList, arr) { - for (var i = 0; itemList !== null && i < itemList.length; i++) { - arr = RPTUtil.concatUniqueArrayItem(itemList[i], arr); - } - return arr; - }; - RPTUtil.getElementAriaProperty = function (ruleContext) { - var tagName = null; - var name = null; - if (ruleContext.tagName) { - tagName = ruleContext.tagName.toLowerCase(); - } - else if (ruleContext.nodeName) { - tagName = ruleContext.nodeName.toLowerCase(); - } - // check if the tagProperty exists in the documentConformanceRequirement hash. - var tagProperty = ARIADefinitions_1.ARIADefinitions.documentConformanceRequirement[tagName]; - // The tag needs to check some special attributes - if (tagProperty === null || tagProperty === undefined) { - var specialTagProperties = ARIADefinitions_1.ARIADefinitions.documentConformanceRequirementSpecialTags[tagName]; - switch (tagName) { // special cases - case "a": - RPTUtil.attributeNonEmpty(ruleContext, "href") ? tagProperty = specialTagProperties["with-href"] : tagProperty = specialTagProperties["without-href"]; - break; - case "area": - RPTUtil.attributeNonEmpty(ruleContext, "href") ? tagProperty = specialTagProperties["with-href"] : tagProperty = specialTagProperties["without-href"]; - break; - case "figure": { - var fcs = RPTUtil.getChildByTag(ruleContext, "figcaption"); - fcs !== null && fcs.length > 0 ? tagProperty = specialTagProperties["child-figcaption"] : tagProperty = specialTagProperties["no-child-figcaption"]; - break; - } - case "footer": { - var ancestor_1 = RPTUtil.getAncestorWithRole(ruleContext, "article", true); - if (ancestor_1 === null) - ancestor_1 = RPTUtil.getAncestorWithRole(ruleContext, "complementary", true); - if (ancestor_1 === null) - ancestor_1 = RPTUtil.getAncestorWithRole(ruleContext, "main", true); - if (ancestor_1 === null) - ancestor_1 = RPTUtil.getAncestorWithRole(ruleContext, "navigation", true); - if (ancestor_1 === null) - ancestor_1 = RPTUtil.getAncestorWithRole(ruleContext, "region", true); - ancestor_1 !== null ? tagProperty = specialTagProperties["des-section-article"] : tagProperty = specialTagProperties["not-des-section-article"]; - break; - } - case "form": - name = ARIAMapper_1.ARIAMapper.computeName(ruleContext); - if (name && name.trim().length > 0) { - tagProperty = specialTagProperties["with-name"]; - } - else { - tagProperty = specialTagProperties["without-name"]; - } - break; - case "header": - var ancestor = RPTUtil.getAncestorWithRole(ruleContext, "article", true); - if (ancestor === null) - ancestor = RPTUtil.getAncestorWithRole(ruleContext, "complementary", true); - if (ancestor === null) - ancestor = RPTUtil.getAncestorWithRole(ruleContext, "main", true); - if (ancestor === null) - ancestor = RPTUtil.getAncestorWithRole(ruleContext, "navigation", true); - if (ancestor === null) - ancestor = RPTUtil.getAncestorWithRole(ruleContext, "region", true); - ancestor !== null ? tagProperty = specialTagProperties["des-section-article"] : tagProperty = specialTagProperties["not-des-section-article"]; - break; - case "img": - if (ruleContext.hasAttribute("alt")) { - ruleContext.getAttribute("alt").trim() === "" ? tagProperty = specialTagProperties["img-with-empty-alt"] : tagProperty = specialTagProperties["img-with-alt-text"]; - } - else { - RPTUtil.hasAriaLabel(ruleContext) ? tagProperty = specialTagProperties["img-with-alt-text"] : tagProperty = specialTagProperties["img-without-alt"]; - } - break; - case "input": - if (RPTUtil.attributeNonEmpty(ruleContext, "type")) { - var type = ruleContext.getAttribute("type").trim().toLowerCase(); - tagProperty = specialTagProperties[type]; - if (tagProperty === null || tagProperty === undefined) { - switch (type) { - case "checkbox": - RPTUtil.attributeNonEmpty(ruleContext, "aria-pressed") ? tagProperty = specialTagProperties["checkbox-with-aria-pressed"] : tagProperty = specialTagProperties["checkbox-without-aria-pressed"]; - break; - case "email": - RPTUtil.attributeNonEmpty(ruleContext, "list") ? tagProperty = specialTagProperties["email-with-list"] : tagProperty = specialTagProperties["email-no-list"]; - break; - case "search": - RPTUtil.attributeNonEmpty(ruleContext, "list") ? tagProperty = specialTagProperties["search-with-list"] : tagProperty = specialTagProperties["search-no-list"]; - break; - case "tel": - RPTUtil.attributeNonEmpty(ruleContext, "list") ? tagProperty = specialTagProperties["tel-with-list"] : tagProperty = specialTagProperties["tel-no-list"]; - break; - case "text": - RPTUtil.attributeNonEmpty(ruleContext, "list") ? tagProperty = specialTagProperties["text-with-list"] : tagProperty = specialTagProperties["text-no-list"]; - break; - case "url": - RPTUtil.attributeNonEmpty(ruleContext, "list") ? tagProperty = specialTagProperties["url-with-list"] : tagProperty = specialTagProperties["url-no-list"]; - break; - default: - // default type is the same as type=text - RPTUtil.attributeNonEmpty(ruleContext, "list") ? tagProperty = specialTagProperties["text-with-list"] : tagProperty = specialTagProperties["text-no-list"]; - break; - } - } - } - else { - // default type is the same as type=text - RPTUtil.attributeNonEmpty(ruleContext, "list") ? tagProperty = specialTagProperties["text-with-list"] : tagProperty = specialTagProperties["text-no-list"]; - } - break; - case "section": - name = ARIAMapper_1.ARIAMapper.computeName(ruleContext); - if (name && name.trim().length > 0) { - tagProperty = specialTagProperties["with-name"]; - } - else { - tagProperty = specialTagProperties["without-name"]; - } - break; - case "select": - specialTagProperties = ARIADefinitions_1.ARIADefinitions.documentConformanceRequirementSpecialTags["select"]; - if (ruleContext.hasAttribute("multiple") || - RPTUtil.attributeNonEmpty(ruleContext, "size") && ruleContext.getAttribute("size") > 1) - tagProperty = specialTagProperties["multiple-attr-size-gt1"]; - else - tagProperty = specialTagProperties["no-multiple-attr-size-gt1"]; - break; - case "td": - case "th": - case "tr": - if (RPTUtil.getAncestorWithRole(ruleContext, "table", true) !== null) { - tagProperty = specialTagProperties["des-table"]; - } - else { - RPTUtil.getAncestorWithRole(ruleContext, "grid", true) || RPTUtil.getAncestorWithRole(ruleContext, "treegrid", true) ? tagProperty = specialTagProperties["des-grid"] : tagProperty = specialTagProperties["des-other"]; - } - break; - default: - tagProperty = ARIADefinitions_1.ARIADefinitions.documentConformanceRequirementSpecialTags["default"]; - } //switch - } - return tagProperty || null; - }; - RPTUtil.getAllowedAriaRoles = function (ruleContext, properties) { - var allowedRoles = []; - var tagProperty = null; - if (properties !== null && properties !== undefined) { - tagProperty = properties; - } - else { - tagProperty = RPTUtil.getElementAriaProperty(ruleContext); - } - if (tagProperty !== null && tagProperty !== undefined) { - if (tagProperty.implicitRole !== null) { - RPTUtil.concatUniqueArrayItemList(tagProperty.implicitRole, allowedRoles); - } - if (tagProperty.validRoles !== null) { - RPTUtil.concatUniqueArrayItemList(tagProperty.validRoles, allowedRoles); - } - } - return allowedRoles; - }; - RPTUtil.getAllowedAriaAttributes = function (ruleContext, permittedRoles, properties) { - var tagName = ruleContext.tagName.toLowerCase(); - var allowedAttributes = []; - /*These needs to be handled first since its applicable to all elements*/ - if (ruleContext.hasAttribute("disabled") && ARIADefinitions_1.ARIADefinitions.elementsAllowedDisabled.indexOf(tagName) === -1) { - /*Element with a disabled attribute https://www.w3.org/TR/html5/disabled-elements.html - Use the disabled attribute on any element that is allowed the disabled attribute in HTML5. aria-disabled="true" - Only use the aria-disabled attribute for elements that are not allowed to have a disabled attribute in HTML5 */ - allowedAttributes = RPTUtil.concatUniqueArrayItem("aria-disabled", allowedAttributes); - } - if (ruleContext.hasAttribute("required") && ARIADefinitions_1.ARIADefinitions.elementsAllowedRequired.indexOf(tagName) > -1) { - /*Element with a required attribute // http://www.the-art-of-web.com/html/html5-form-validation/ - * aria-required="true" Use the aria-required attribute on any element that is allowed the required attribute in HTML5. - * MAY also be used for elements that have an attached ARIA role which allows the aria-required attribute.*/ - allowedAttributes = RPTUtil.concatUniqueArrayItem("aria-required", allowedAttributes); - } - if (ruleContext.hasAttribute("readonly") && ARIADefinitions_1.ARIADefinitions.elementsAllowedReadOnly.indexOf(tagName) === -1) { - /*Element with a readonly attribute* aria-readonly="true" * Use the readonly attribute on any element that is allowed the readonly attribute in HTML5. - Only use the aria-readonly attribute for elements that are not allowed to have a readonly attribute in HTML5 */ - allowedAttributes = RPTUtil.concatUniqueArrayItem("aria-readonly", allowedAttributes); - } - if (ruleContext.hasAttribute("hidden")) { - /*Element with a hidden attribute Use the aria-hidden attribute on any HTML element. - Note: If an element has a hidden attribute, an aria-hidden attribute is not required.*/ - allowedAttributes = RPTUtil.concatUniqueArrayItem("aria-hidden", allowedAttributes); - } - var tagProperty = null; - if (properties != null && properties !== undefined) - tagProperty = properties; - else - tagProperty = RPTUtil.getElementAriaProperty(ruleContext); - var skipImplicitRoleCheck = false; - if (tagName === "form" || tagName === "section") { - // special case: form has an implicit role only if it has an accessible name - skipImplicitRoleCheck = !ruleContext.hasAttribute("aria-label") && - !ruleContext.hasAttribute("aria-labelledby") && - !ruleContext.hasAttribute("title"); - } - if (tagProperty !== null && tagProperty !== undefined) { - // add the implicit role allowed attributes to the allowed role list if there is no specified role - if (tagProperty.implicitRole !== null && - (permittedRoles === null || permittedRoles === undefined || permittedRoles.length === 0) && - !skipImplicitRoleCheck) { - for (var i = 0; i < tagProperty.implicitRole.length; i++) { - var roleProperty = ARIADefinitions_1.ARIADefinitions.designPatterns[tagProperty.implicitRole[i]]; - if (roleProperty !== null && roleProperty !== undefined) { - var properties_1 = roleProperty.props; - RPTUtil.concatUniqueArrayItemList(properties_1, allowedAttributes); - properties_1 = RPTUtil.getRoleRequiredProperties(tagProperty.implicitRole[i], ruleContext); - RPTUtil.concatUniqueArrayItemList(properties_1, allowedAttributes); - // special case of separator - if (tagProperty.implicitRole[i] === "separator" && RPTUtil.isFocusable(ruleContext)) { - RPTUtil.concatUniqueArrayItemList(["aria-disabled", "aria-valuemax", "aria-valuemin", "aria-valuetext"], allowedAttributes); - } - } - } - } - // Adding the global properties to the valid attribute list - if (tagProperty.globalAriaAttributesValid) { - var properties_2 = ARIADefinitions_1.ARIADefinitions.globalProperties; // global properties - RPTUtil.concatUniqueArrayItemList(properties_2, allowedAttributes); - } - else { - // special case: with alt="" allows only aria-hidden - if (tagName === "img" && - ruleContext.hasAttribute("alt") && - ruleContext.getAttribute("alt").trim() === "") { - RPTUtil.concatUniqueArrayItemList(["aria-hidden"], allowedAttributes); - } - } - } - // adding the specified role properties to the allowed attribute list - for (var i = 0; permittedRoles !== null && i < permittedRoles.length; i++) { - var roleProperties = ARIADefinitions_1.ARIADefinitions.designPatterns[permittedRoles[i]]; - if (roleProperties !== null && roleProperties !== undefined) { - var properties_3 = roleProperties.props; // allowed properties - RPTUtil.concatUniqueArrayItemList(properties_3, allowedAttributes); - properties_3 = RPTUtil.getRoleRequiredProperties(permittedRoles[i], ruleContext); // required properties - RPTUtil.concatUniqueArrayItemList(properties_3, allowedAttributes); - // special case for separator - if (permittedRoles[i] === "separator" && RPTUtil.isFocusable(ruleContext)) { - RPTUtil.concatUniqueArrayItemList(["aria-disabled", "aria-valuemax", "aria-valuemin", "aria-valuetext"], allowedAttributes); - } - } - } - // ignore aria-level, aria-setsize or aria-posinset if "row" is not in treegrid - if (permittedRoles.includes("row") && RPTUtil.getAncestorWithRole(ruleContext, "treegrid", true) == null) { - var index = -1; - if ((index = allowedAttributes.indexOf("aria-level")) > -1) - allowedAttributes.splice(index, 1); - if ((index = allowedAttributes.indexOf("aria-setsize")) > -1) - allowedAttributes.splice(index, 1); - if ((index = allowedAttributes.indexOf("aria-posinset")) > -1) - allowedAttributes.splice(index, 1); - } - return allowedAttributes; - }; - RPTUtil.CSS = function (element) { - var styleText = ""; - if (element === null) - return []; - if (element.IBM_CSS_THB) - return element.IBM_CSS_THB; - var nodeName = element.nodeName.toLowerCase(); - if (nodeName === "style") { - styleText = RPTUtil.getInnerText(element); - } - else if (element.hasAttribute("style")) { - styleText = element.getAttribute("style"); - } - else - return []; - if (styleText === null || styleText.trim().length === 0) - return []; - //remove comment blocks - var re = /(\/\*+(?:(?:(?:[^\*])+)|(?:[\*]+(?!\/)))[*]+\/)|\/\/.*/g; - var subst = ' '; - styleText = styleText.replace(re, subst); - // Find all "key : val;" pairs with various whitespace inbetween - var rKeyVals = /\s*([^:\s]+)\s*:\s*([^;$}]+)\s*(;|$)/g; - // Find all "selector { csskeyvals } with various whitespace inbetween - var rSelectors = /\s*([^{]*){([^}]*)}/g; - if (styleText.indexOf("{") === -1) { - var keyVals = {}; - var m = void 0; - while ((m = rKeyVals.exec(styleText)) != null) { - keyVals[m[1]] = m[2].trim().toLowerCase(); - } - var retVal = [{ - selector: null, - values: keyVals - }]; - element.IBM_CSS_THB = retVal; - return retVal; - } - else { - var retVal = []; - var m = void 0; - var m2 = void 0; - while ((m = rSelectors.exec(styleText)) != null) { - var keyVals = {}; - var selKey = m[1]; - var selVal = m[2]; - while ((m2 = rKeyVals.exec(selVal)) != null) { - keyVals[m2[1]] = m2[2].trim().toLowerCase(); - } - retVal.push({ - selector: selKey, - values: keyVals - }); - } - element.IBM_CSS_THB = retVal; - return retVal; - } - }; - /** - * This function is responsible for checking if the node that is provied is - * visible or not. Following is how the check is performed: - * 1. Check if the current node is hidden with the following options: - * CSS --> dislay: none - * CSS --> visibility: hidden - * attribute --> hidden - * 2. Check if the any of the current nodes parents are hidden with the same - * options listed in 1. - * - * Note: If either current node or any of the parent nodes are hidden then this - * function will return false (node is not visible). - * - * @parm {element} node The node which should be checked if it is visible or not. - * @return {bool} false if the node is NOT visible, true otherwise - * - * @memberOf RPTUtil - */ - RPTUtil.isNodeVisible = function (node) { - // Set PT_NODE_HIDDEN to false for all the nodes, before the check and this will be changed to - // true when we detect that the node is hidden. We have to set it to false so that we know - // the rules has already been checked. - RPTUtil.setCache(node, "PT_NODE_HIDDEN", RPTUtil.getCache(node, "PT_NODE_HIDDEN", false)); - // Check the nodeType if this node, if this node is a text node then - // we get the parentnode and set that as the node as a text nodes, - // visibility is directly related to the parent node. - if (node.nodeType === 3) { - node = DOMUtil_1.DOMUtil.parentNode(node); - } - // We should only allow nodeType element, and TextNode all other nodesTypes - // we can return the visibility as visible. - // Following nodes will be returned as visable by default, since we can not - // actually change their visibility. - // Node.PROCESSING_INSTRUCTION_NODE --> 7 - // Node.COMMENT_NODE --> 8 - // 9 /* Node.DOCUMENT_NODE */ --> 9 - // Node.DOCUMENT_TYPE_NODE --> 10 - // Node.DOCUMENT_FRAGMENT_NODE --> 11 - if (node.nodeType !== 1) { - return true; - } - // Make sure that the ownerDocument is present before moving forward - // in detecting if the node is visible or not. In the case that ownerDocument - // does not exist then we simply return node is visible by default. - if (!node.ownerDocument) { - return true; - } - // Variable Declaration - var compStyle; - var nodeName = node.nodeName.toLowerCase(); - // In the case this node is a script, link or style node, right away return node is visible - // because scripts, links and style nodes can not be hidden by HTML attribute or CSS or are hidden by default. But we want to scan - // the elements everytime as they render content still which is still visible to users. - // script --> script elements have display: none by default - // link --> link elements have display: none by default, but the actually CSS script is still executed so we have to - // mark this element as visible at all times. - // style --> style elements have display: none by default, but the actually CSS script is still executed so we have to - // mark this element as visible at all times. - if (RPTUtil.hiddenByDefaultElements != null && RPTUtil.hiddenByDefaultElements != undefined && RPTUtil.hiddenByDefaultElements.indexOf(nodeName) > -1) { - return true; - } - // Check if this node is visible, we check couple of CSS properties and hidden attribute. - // area, param and audio elements we do not check if they are hidden as it does not apply to them. - // Check the unhideableElements array which is part of the rules, to check if this element is allowed to be hidden or not - // in the case that the element is part of the unhideableElements array then we do not run the hidden check on this element, - // and go stright to the parent node. - // Array check elements like: - // area --> area element is part of a map element and it can not be hidden because it is used to - // make an certian parts of an map interactive. - // param --> element can only be part of object elment and it cannot be hidden directly, it - // can only be hidden if the parent is hidden. - // audio --> If this element is hidden it will still play the music, so we should still trigger - // violations for this element. - // In the case that unhideableElements array is not defined then we just scan all elements and do no filtering at all. - if (RPTUtil.unhideableElements === null || RPTUtil.unhideableElements === undefined || RPTUtil.unhideableElements.indexOf(nodeName) === -1) { - // Check if defaultView exists for this node, if it does then use this to run the getComputedStyle - // function to get the CSS style for the node. - if (node.ownerDocument.defaultView) { - // Run the getComputedStyle on this node to fetch the CSS compuation of the node - compStyle = node.ownerDocument.defaultView.getComputedStyle(node, null); - } - // In the case that defaultView does not exists return true to identify that this - // node is visible, because were not able to detect if it was not. - else { - return true; - } - // Get the hidden element property and hidden attribute - var hiddenAttribute = node.getAttribute("hidden"); - var hiddenPropertyCustom = RPTUtil.getCache(node, "PT_NODE_HIDDEN", undefined); - // To get the hidden property we need to perform a special check as in some cases the hidden property will not be - // a boolean, for theses cases we set it to false as we are not able to determine the true hidden condition. - // The reason for this is because form elements are able to perform an override, so when we have id="hidden" for an element - // which is under the form element then, node.hidden gives the element/list of elements which have id="hidden". Refer to - // mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1267356 - var hiddenProperty = typeof node.hidden === "boolean" ? node.hidden : false; - // If compStyle object is empty, node does't have hidden property, node does't have hidden attribute and does't have custom PT - // hidden property then we can just return true (node visible) at this point. - if (!compStyle && - !hiddenProperty && // this covers false, null, or undefined - (hiddenAttribute === null || hiddenAttribute === undefined) && - !hiddenPropertyCustom // This covers false, null or undefined - ) { - return true; - } - // In the case that the compStyle is defined we check the following: - // CSS style display set to none - // CSS style visibility set to hidden - // Note: For this property since it is inherited, need to skip the check on parents as - // the parent can have hidden but the child can be visible. So we only check this property - // on child elements/elements that are passed to this function the first time. - // node hidden property set (node.hidden) - // node attribute hidden set (to any value) - // node custom hidden property ser (node.PT_NODE_HIDDEN) - // If any of the above conditions are true then we return false as this element is not visible - if ((compStyle !== null && ((compStyle.getPropertyValue('display') === 'none' || - (!RPTUtil.getCache(node, "Visibility_Check_Parent", null) && compStyle.getPropertyValue('visibility') === 'hidden'))) || - (compStyle.getPropertyValue('display') !== 'block' && (hiddenProperty || hiddenAttribute != null || hiddenPropertyCustom)))) { - // Set a custom expandos property on the the node to identify that it is hidden, so that we can uses - // use this in the rules to determine if the node is hidden or not, if we need to. - // Use expandos property instead of a hash map which stores the elements, adding/checking expandos - // properties is a lot faster performance whise. For Hash map we need to store based on xpath, and to calculate - // xpath it is more performance impact. - RPTUtil.setCache(node, "PT_NODE_HIDDEN", true); - return false; - } - } - // Get the parentNode for this node, becuase we have to check all parents to make sure they do not have - // the hidden CSS, property or attribute. Only keep checking until we are all the way back to the parentNode - // element. - var parentElement = DOMUtil_1.DOMUtil.parentNode(node); - // If the parent node exists and the nodetype is element (1), then run recursive call to perform the check - // all the way up to the very parent node. Use recursive call here instead of a while loop so that we do not - // have to duplicate the logic for checking if the node is visible or not for all the parents starting with - // child node. - if (parentElement != null && parentElement.nodeType === 1) { - // When we have a parent element going through the isNodeVisible function we have to mark it as such - // so that in the function we can skip checking visibility: hidden for parent elements since visibility: hidden - // is inherited, which allows a child to have a different setting then the child. This property only needs to be checked - // once for the first element that is passed down and that is all. Ignore it for all the parents that we iterate over. - RPTUtil.setCache(parentElement, "Visibility_Check_Parent", true); - // Check upwards recursively, and save the results in an variable - var nodeVisible = RPTUtil.isNodeVisible(parentElement); - // If the node is found to not be visible then add the custom PT_NODE_HIDDEN to true. - // so that we can use this in the rules. - if (!nodeVisible) { - RPTUtil.setCache(node, "PT_NODE_HIDDEN", true); - } - // Check upwards recursively - return nodeVisible; - } - // Return true (node is visible) - return true; - }; - RPTUtil.getControlOfLabel = function (node) { - // Handle the easy case of label -> for - var labelAncestor = RPTUtil.getAncestor(node, "label"); - if (labelAncestor) { - if (labelAncestor.hasAttribute("for")) { - return fragment_1.FragmentUtil.getById(node, labelAncestor.getAttribute("for")); - } - } - // Create a dictionary containing ids of parent nodes - var idDict = {}; - var parentWalk = node; - while (parentWalk) { - if (parentWalk.nodeType === 1 /* Node.ELEMENT_NODE */) { - var ancestor = parentWalk; - if (ancestor.hasAttribute("id")) { - idDict[ancestor.getAttribute("id")] = true; - } - } - parentWalk = DOMUtil_1.DOMUtil.parentNode(parentWalk); - } - // Iterate through controls that use aria-labelledby and see if any of them reference one of my ancestor ids - var inputsUsingLabelledBy = node.ownerDocument.querySelectorAll("*[aria-labelledby]"); - for (var idx = 0; idx < inputsUsingLabelledBy.length; ++idx) { - var inputUsingLabelledBy = inputsUsingLabelledBy[idx]; - var ariaLabelledBy = inputUsingLabelledBy.getAttribute("aria-labelledby"); - var sp = ariaLabelledBy.split(" "); - for (var _i = 0, sp_1 = sp; _i < sp_1.length; _i++) { - var id = sp_1[_i]; - if (id in idDict) { - return inputUsingLabelledBy; - } - } - } - // Find the cases where we're within an aria labelledby - return null; - }; - /** - * This function is responsible for checking if the node that is provied is - * disabled or not. Following is how the check is performed: - * 1. Check if the current node is disabled with the following options: - * attribute --> disabled - * Also needs to be "button", "input", "select", "textarea", "optgroup", "option", - * "menuitem", "fieldset" nodes (in array elementsAllowedDisabled) - * attribute --> aria-disabled="true" - * 2. Check if any of the current nodes parents are disabled with the same - * options listed in 1. - * - * Note: If either current node or any of the parent nodes are disabled then this - * function will return true (node is disabled). - * - * @parm {HTMLElement} node - The node which should be checked if it is disabled or not. - * @return {bool} true if the node is disabled, false otherwise - * - * @memberOf RPTUtil - */ - RPTUtil.isNodeDisabled = function (node) { - // Set PT_NODE_DISABLED to false for all the nodes, before the check and this will be changed to - // true when we detect that the node is disabled. We have to set it to false so that we know - // the node has already been checked. Only set it to false if the setting is undefined or null - // as if it is defined we do not wnat to reset it. As if it is true then we should make use of it - // to speed up the check. - var PT_NODE_DISABLED = RPTUtil.getCache(node, "PT_NODE_DISABLED", false); - // Check the nodeType of this node, if this node is a text node then - // we get the parentnode and set that as the node as a text nodes, - // disabled is directly related to the parent node. - if (node.nodeType === 3) { - node = DOMUtil_1.DOMUtil.parentNode(node); - } - // Variable Declaration - var nodeName = node.nodeName.toLowerCase(); - // Get the disabled element property, disabled and aria-disabled attribute and check that it is true - var disabledAttribute = node.hasAttribute("disabled"); - var disabledPropertyCustom = PT_NODE_DISABLED; - var ariaDisabledAttribute = node.hasAttribute('aria-disabled') && node.getAttribute("aria-disabled") === 'true'; - // If this node has disabled attribute and the node allows disabled attribute, then return true. - // Disabled attribute is only allowed on "button", "input", "select", "textarea", "optgroup", "option", "menuitem", "fieldset" - // In the case aria-disabled is set to true, then also return true - if (disabledPropertyCustom || (disabledAttribute && ARIADefinitions_1.ARIADefinitions.elementsAllowedDisabled.indexOf(nodeName) > -1) || ariaDisabledAttribute) { - PT_NODE_DISABLED = true; - RPTUtil.setCache(node, "PT_NODE_DISABLED", PT_NODE_DISABLED); - return true; - } - // Get the parentNode for this node, becuase we have to check all parents to make sure they do not have - // disabled attribute. Only keep checking until we are all the way back to the parentNode - // element. - var parentElement = DOMUtil_1.DOMUtil.parentNode(node); - // If the parent node exists and the nodetype is element (1), then run recursive call to perform the check - // all the way up to the very parent node. Use recursive call here instead of a while loop so that we do not - // have to duplicate the logic for checking if the node is disabled or not for all the parents starting with - // child node. - if (parentElement != null && parentElement.nodeType === 1) { - // Check upwards recursively, and save the results in an variable - var nodeDisabled = RPTUtil.isNodeDisabled(parentElement); - // If the node is found to be disabled then add the custom PT_NODE_DISABLED to true. - // so that we can use this next time, to quickly determine if node is disabled or not. - // This is extra percaution, the isNodeDisabled function already sets this. - if (nodeDisabled) { - PT_NODE_DISABLED = true; - } - // Check upwards recursively - RPTUtil.setCache(node, "PT_NODE_DISABLED", PT_NODE_DISABLED); - return nodeDisabled; - } - // Return false (node is not disabled) - return false; - }; - /** - * This function is responsible for determine if hidden content should be checked - * in rules. - * - * @parm {element} node - A node so that the document can be accessed to check for the - * option. Can be document element or a simple node element. - * @return {bool} true if hidden content should be checked, false otherwise - * - * @memberOf RPTUtil - */ - RPTUtil.shouldCheckHiddenContent = function (node) { - return false; - }; - /** - * This function is responsible for determining if node should be skipped from checking or not, based - * on the Check Hidden Content settings and if the node is visible or not. - * - * @parm {element} node - Node to check if it is visible or not based on the Check Hidden Content - * setting. - * - * @return {bool} true if node should be skipped, false otherwise - * - * @memberOf RPTUtil - */ - RPTUtil.shouldNodeBeSkippedHidden = function (node) { - // Following are the steps that are executed at this stage to determine if the node should be classified as hidden - // or not. - // 1. Only run isNodeVisible check if hidden content should NOT be checked. In the case that hidden content is to, - // be scanned then we can just scan everything as normal. In the case that the current node is hidden we - // return true to identify that the node should not be scanned/added to any hash/array. - // - // Note: The if conditions uses short-circuiting so if the first condition is not true it will not check the next one, - // so on and so forth. - if (!RPTUtil.shouldCheckHiddenContent(node) && !RPTUtil.isNodeVisible(node)) { - return true; - } - return false; - }; - RPTUtil.isfocusableByDefault = function (node) { - var focusableElements = ['input', 'select', 'button', 'textarea', 'option', 'area']; - if (node.nodeName.toLowerCase() === "a" && RPTUtil.hasAttribute(node, 'href')) - return true; - if (node.nodeName.toLowerCase() === "area" && RPTUtil.hasAttribute(node, 'href')) - return true; - if (focusableElements.indexOf(node.nodeName.toLowerCase()) != -1) - return true; - return false; - }; - /** - * This function check if a non-tabable node has valid tabable content. - * If it is tabable (the tabindex is not speicified or is not -1), returns false; - * If it is non-tabable, but a child is tabable and does not have element content, returns false; - * Otherwise, returns true. - */ - RPTUtil.nonTabableChildCheck = function (element) { - if (!element.hasAttribute("tabindex") || - (parseInt(element.getAttribute("tabindex")) != -1)) { - return false; - } - var nw = new NodeWalker(element); - while (nw.nextNode()) { - var child = nw.elem(); - if (child === null) { // Text node. usually is a cartridge return. - continue; - } - if (child.hasAttribute("tabindex") && - (parseInt(child.getAttribute("tabindex")) != -1) && - !RPTUtil.hasInnerContent(child)) { - return false; - } - } - return true; - }; - // Rewrite the color object to account for alpha - RPTUtil.Color = function (cssStyleColor) { - cssStyleColor = cssStyleColor.toLowerCase(); - if (cssStyleColor === "transparent") - return new ColorObj(255, 255, 255, 0); - if (cssStyleColor in RPTUtil.CSSColorLookup) - cssStyleColor = RPTUtil.CSSColorLookup[cssStyleColor]; - if (cssStyleColor.startsWith("rgb(")) { - var rgbRegex = /\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/; - var m = cssStyleColor.match(rgbRegex); - if (m === null) - return null; - else { - return new ColorObj(m[1], m[2], m[3]); - } - } - else if (cssStyleColor.startsWith("rgba(")) { - var rgbRegex = /\s*rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(.+)\s*\)/; - var m = cssStyleColor.match(rgbRegex); - if (m === null) - return null; - else { - return new ColorObj(m[1], m[2], m[3], m[4]); - } - } - else if (cssStyleColor.charAt(0) != "#") { - return null; - } - else { - if (cssStyleColor.length === 4) { - // The three-digit RGB (#rgb) is converted to six-digit form (#rrggbb) by replicating digits - // (https://www.w3.org/TR/css-color-3/#rgb-color) - cssStyleColor = "#" + cssStyleColor.charAt(1).repeat(2) + - cssStyleColor.charAt(2).repeat(2) + - cssStyleColor.charAt(3).repeat(2); - } - var thisRed = parseInt(cssStyleColor.substring(1, 3), 16); - var thisGreen = parseInt(cssStyleColor.substring(3, 5), 16); - var thisBlue = parseInt(cssStyleColor.substring(5, 7), 16); - return new ColorObj(thisRed, thisGreen, thisBlue); - } - // return null; // Unreachable - }; - ; - RPTUtil.ColorCombo = function (ruleContext) { - var doc = ruleContext.ownerDocument; - if (!doc) { - return null; - } - var win = doc.defaultView; - if (!win) { - return null; - } - var ancestors = []; - var walkNode = ruleContext; - while (walkNode) { - if (walkNode.nodeType === 1) - ancestors.push(walkNode); - walkNode = DOMUtil_1.DOMUtil.parentElement(walkNode); - } - var retVal = { - "hasGradient": false, - "hasBGImage": false, - "fg": null, - "bg": null - }; - var compStyleColor = win.getComputedStyle(ruleContext).color; - if (!compStyleColor) - compStyleColor = "black"; - var fg = RPTUtil.Color(compStyleColor); - var reColor = /transparent|rgba?\([^)]+\)/gi; - var guessGradColor = function (gradList, bgColor, fgColor) { - try { - // If there's only one color, return that - if (typeof gradList.length === "undefined") - return gradList; - var overallWorst = null; - var overallWorstRatio = null; - for (var iGrad = 1; iGrad < gradList.length; ++iGrad) { - var worstColor = gradList[iGrad - 1]; - var worstRatio = fgColor.contrastRatio(gradList[iGrad - 1]); - var step = .1; - var idx = 0; - while (step > .0001) { - while (idx + step <= 1 && worstRatio > fgColor.contrastRatio(gradList[iGrad].mix(gradList[iGrad - 1], idx + step).getOverlayColor(bgColor))) { - worstColor = gradList[iGrad].mix(gradList[iGrad - 1], idx + step).getOverlayColor(bgColor); - worstRatio = fgColor.contrastRatio(worstColor); - idx = idx + step; - } - while (idx - step >= 0 && worstRatio > fgColor.contrastRatio(gradList[iGrad].mix(gradList[iGrad - 1], idx - step).getOverlayColor(bgColor))) { - worstColor = gradList[iGrad].mix(gradList[iGrad - 1], idx - step).getOverlayColor(bgColor); - worstRatio = fgColor.contrastRatio(worstColor); - idx = idx - step; - } - step = step / 10; - } - if (overallWorstRatio === null || overallWorstRatio > worstRatio) { - overallWorstRatio = worstRatio; - overallWorst = worstColor; - } - } - return overallWorst; - } - catch (e) { - console.log(e); - } - return bgColor; - }; - var priorStackBG = RPTUtil.Color("white"); - var thisStackOpacity = null; - var thisStackAlpha = null; - var thisStackBG = null; - // Ancestors processed from the topmost parent toward the child - while (ancestors.length > 0) { - var procNext = ancestors.pop(); - // cStyle is the computed style of this layer - var cStyle = win.getComputedStyle(procNext); - if (cStyle === null) - continue; - // thisBgColor is the color of this layer or null if the layer is transparent - var thisBgColor = null; - if (cStyle.backgroundColor && cStyle.backgroundColor != "transparent" && cStyle.backgroundColor != "rgba(0, 0, 0, 0)") { - thisBgColor = RPTUtil.Color(cStyle.backgroundColor); - } - // If there is a gradient involved, set thisBgColor to the worst color combination available against the foreground - if (cStyle.backgroundImage && cStyle.backgroundImage.indexOf && cStyle.backgroundImage.indexOf("gradient") != -1) { - var gradColors = cStyle.backgroundImage.match(reColor); - if (gradColors) { - var gradColorComp = []; - for (var i = 0; i < gradColors.length; ++i) { - if (!gradColors[i].length) { - gradColors.splice(i--, 1); - } - else { - gradColorComp.push(RPTUtil.Color(gradColors[i])); - } - } - thisBgColor = guessGradColor(gradColorComp, thisStackBG || priorStackBG, fg); - } - } - // Handle non-solid opacity - if (thisStackOpacity === null || (cStyle.opacity && cStyle.opacity.length > 0 && parseFloat(cStyle.opacity) < 1)) { - // New stack, reset - if (thisStackBG != null) { - // Overlay - thisStackBG.alpha = thisStackOpacity * thisStackAlpha; - priorStackBG = thisStackBG.getOverlayColor(priorStackBG); - } - thisStackOpacity = 1.0; - thisStackAlpha = null; - thisStackBG = null; - if (cStyle.opacity && cStyle.opacity.length > 0) { - thisStackOpacity = parseFloat(cStyle.opacity); - } - if (thisBgColor != null) { - thisStackBG = thisBgColor; - thisStackAlpha = thisStackBG.alpha || 1.0; - delete thisStackBG.alpha; - if (thisStackOpacity === 1.0 && thisStackAlpha === 1.0) { - retVal.hasBGImage = false; - retVal.hasGradient = false; - } - } - } - // Handle solid color backgrounds and gradient color backgrounds - else if (thisBgColor != null) { - // If this stack already has a background color, blend it - if (thisStackBG === null) { - thisStackBG = thisBgColor; - thisStackAlpha = thisStackBG.alpha || 1.0; - delete thisStackBG.alpha; - } - else { - thisStackBG = thisBgColor.getOverlayColor(thisStackBG); - } - // #526: If thisBgColor had an alpha value, it may not expose through thisStackBG in the above code - // We can't wipe out the gradient info if this layer was transparent - if (thisStackOpacity === 1.0 && thisStackAlpha === 1.0 && (thisStackBG.alpha || 1.0) === 1.0 && (thisBgColor.alpha || 1.0) === 0) { - retVal.hasBGImage = false; - retVal.hasGradient = false; - } - } - if (cStyle.backgroundImage && cStyle.backgroundImage != "none") { - if (cStyle.backgroundImage.indexOf && cStyle.backgroundImage.indexOf("gradient") != -1) { - retVal.hasGradient = true; - } - else { - retVal.hasBGImage = true; - } - } - } - if (thisStackBG != null) { - fg = fg.getOverlayColor(thisStackBG); - delete fg.alpha; - } - fg.alpha = (fg.alpha || 1) * thisStackOpacity; - fg = fg.getOverlayColor(priorStackBG); - if (thisStackBG != null) { - thisStackBG.alpha = thisStackOpacity * thisStackAlpha; - priorStackBG = thisStackBG.getOverlayColor(priorStackBG); - } - retVal.fg = fg; - retVal.bg = priorStackBG; - return retVal; - }; - ; - RPTUtil.hasAttribute = function (element, attributeName) { - var hasAttribute = false; - if (element.hasAttribute) { - hasAttribute = element.hasAttribute(attributeName); - } - else if (element.attributes && element.attributes.getNamedItem) { - var attr = element.attributes.getNamedItem(attributeName); - hasAttribute = attr && attr.specified; - } - return hasAttribute; - }; - // This list contains a list of element tags which can not be hidden, when hidden is - // added to theses elements it does not do anything at all. - // area --> area element is part of a map element and it can not be hidden because it is used to - // make an certian parts of an map interactive. - // param --> element can only be part of object elment and it cannot be hidden directly, it - // can only be hidden if the parent is hidden. - // audio --> If this element is hidden it will still play the music, so we should still trigger - // violations for this element. - // Note: All element tags that are added here should be added as lowercase, as we are using indexOf to do the check. - RPTUtil.unhideableElements = ['area', 'param', 'audio']; - // This list contains a list of elements tags which have display: none by default, since we have rules triggering - // on theses elements we need to make then visible by default so that the rules can trigger regardless of the - // Check Hidden Content option in the tools. - // script --> script elements have display: none by default - // link --> link elements have display: none by default, but the actually CSS script is still executed so we have to - // mark this element as visible at all times. - // style --> style elements have display: none by default, but the actually CSS script is still executed so we have to - // mark this element as visible at all times. - // head --> head elements have display: none by default, but it will still behave correct - // title --> title elements have display: none by default, but it will still display the title - // meta --> meta elements have display: none by default, but it will still perform the action that meta is suppose to - // base --> base elements have display: none by default, but it will still perform the action that meta is suppose to - // noscript --> noscript elements have display: none by default, but it will still perform the action that meta is suppose to - // template --> template elements have display: none by default, because they are just a mechanism for holding client-side content - // that is not to be rendered when a page is loaded. https://developer.mozilla.org/en/docs/Web/HTML/Element/template - // datalist --> datalist elements have display: none by default, - RPTUtil.hiddenByDefaultElements = ['script', 'link', 'style', 'head', 'title', 'meta', 'base', 'noscript', 'template', 'datalist']; - // This list contains a list of elements tags which have display: none by default, since we have rules triggering - RPTUtil.navLinkKeywords = ['start', 'next', 'prev', 'previous', 'contents', 'index']; - // This list contains a list of rule ids for the rules that have to check for hidden content regardless of the Check Hidden - // Content Setting. This means that when the engine is actually determine which elements to mass to the rules, it will always - // pass theses rules no matter what the Check Hidden Content Setting is. - RPTUtil.rulesThatHaveToCheckHidden = ['RPT_Elem_UniqueId']; - // https://www.w3.org/TR/wai-aria-1.1/#introstates - RPTUtil.ariaAttributeRoleDefaults = { - "alert": { - "aria-live": "assertive", - "aria-atomic": "true" - }, - "combobox": { - "aria-haspopup": "listbox" - }, - "listbox": { - "aria-orientation": "vertical" - }, - "log": { - "aria-live": "polite" - }, - "menu": { - "aria-orientation": "vertical" - }, - "menubar": { - "aria-orientation": "horizontal" - }, - "meter": { - "aria-valuemin": "0", - "aria-valuemax": "100" - }, - "option": { - "aria-selected": "false" - }, - "progressbar": { - "aria-valuemin": "0", - "aria-valuemax": "100" - }, - "scrollbar": { - "aria-orientation": "vertical", - "aria-valuemin": "0", - "aria-valuemax": "100" - }, - "separator": { - "aria-orientation": "horizontal", - "aria-valuemin": "0", - "aria-valuemax": "100" - }, - "slider": { - "aria-orientation": "horizontal", - "aria-valuemin": "0", - "aria-valuemax": "100" - }, - "spinbutton": { - // Not sure how to encode min/max (or now in 1.2 - "has no value") - //"aria-valuenow": "0" TODO: at risk: maybe delete after ARIA 1.2 reaches proposed rec - // Probably just delete spinbutton from this list completely and let user agents handle "defaults" - }, - "status": { - "aria-live": "polite", - "aria-atomic": "true" - }, - "tab": { - "aria-selected": "false" - }, - "tablist": { - "aria-orientation": "horizontal" - }, - "toolbar": { - "aria-orientation": "horizontal" - }, - "tree": { - "aria-orientation": "vertical" - } - }; - // https://www.w3.org/TR/wai-aria-1.1/#aria-atomic - RPTUtil.ariaAttributeGlobalDefaults = { - "aria-atomic": "false", - "aria-autocomplete": "none", - "aria-busy": "false", - "aria-checked": undefined, - "aria-current": "false", - "aria-disabled": "false", - "aria-dropeffect": "none", - "aria-expanded": undefined, - "aria-grabbed": undefined, - "aria-haspopup": "false", - "aria-hidden": undefined, - "aria-invalid": "false", - "aria-live": "off", - "aria-modal": "false", - "aria-multiline": "false", - "aria-multiselectable": "false", - "aria-orientation": undefined, - "aria-pressed": undefined, - "aria-readonly": "false", - //"aria-relevant": "additions text", TODO: are multiple values supported? - "aria-required": "false", - "aria-selected": undefined, - "aria-sort": "none" - }; - // https://www.w3.org/TR/html-aam-1.0/#html-attribute-state-and-property-mappings - RPTUtil.ariaAttributeImplicitMappings = { - "aria-autocomplete": { - "form": function (e) { - return "off" === e.getAttribute("autocomplete") ? "none" : "both"; - }, - "input": function (e) { - return "off" === e.getAttribute("autocomplete") ? "none" : "both"; - }, - "select": function (e) { - return "off" === e.getAttribute("autocomplete") ? "none" : "both"; - }, - "textarea": function (e) { - return "off" === e.getAttribute("autocomplete") ? "none" : "both"; - } - }, - "aria-checked": { - "input": function (e) { - if (e.hasAttribute("indeterminate")) - return "mixed"; - return "" + e.hasAttribute("checked"); - }, - "menuitem": function (e) { - if (e.hasAttribute("indeterminate")) - return "mixed"; - return "" + e.hasAttribute("checked"); - }, - "*": function (e) { - if (e.hasAttribute("indeterminate")) - return "mixed"; - }, - }, - "aria-disabled": { - "button": function (e) { - return e.hasAttribute("disabled") ? "true" : "false"; - }, - "fieldset": function (e) { - return e.hasAttribute("disabled") ? "true" : "false"; - }, - "input": function (e) { - return e.hasAttribute("disabled") ? "true" : "false"; - }, - "optgroup": function (e) { - return e.hasAttribute("disabled") ? "true" : "false"; - }, - "option": function (e) { - return e.hasAttribute("disabled") ? "true" : "false"; - }, - "select": function (e) { - return e.hasAttribute("disabled") ? "true" : "false"; - }, - "textarea": function (e) { - return e.hasAttribute("disabled") ? "true" : "false"; - } - }, - "aria-expanded": { - "details": function (e) { - return e.getAttribute("open"); - }, - "dialog": function (e) { - return e.getAttribute("open"); - } - }, - "aria-multiselectable": { - "select": function (e) { - if (e.hasAttribute("multiple")) - return "true"; - return; - } - }, - "aria-placeholder": { - "input": function (e) { - return e.getAttribute("placeholder"); - }, - "textarea": function (e) { - return e.getAttribute("placeholder"); - } - }, - "aria-required": { - "input": function (e) { - return e.getAttribute("required"); - }, - "select": function (e) { - return e.getAttribute("required"); - }, - "textarea": function (e) { - return e.getAttribute("required"); - } - } - }; - RPTUtil.tabTagMap = { - "button": function (element) { - return !element.hasAttribute("disabled"); - }, - "iframe": true, - "input": function (element) { - return element.getAttribute("type") !== "hidden" && !element.hasAttribute("disabled"); - }, - "select": function (element) { - return !element.hasAttribute("disabled"); - }, - "textarea": true, - "div": function (element) { - return element.hasAttribute("contenteditable"); - }, - "a": function (element) { - // xlink:href?? see svg - return element.hasAttribute("href"); - }, - "area": function (element) { - return element.hasAttribute("href"); - }, - "audio": function (element) { - return element.hasAttribute("controls"); - }, - "video": function (element) { - return element.hasAttribute("controls"); - }, - "summary": true - }; - RPTUtil.CSSColorLookup = { - "aliceblue": "#f0f8ff", - "antiquewhite": "#faebd7", - "aqua": "#00ffff", - "aquamarine": "#7fffd4", - "azure": "#f0ffff", - "beige": "#f5f5dc", - "bisque": "#ffe4c4", - "black": "#000000", - "blanchedalmond": "#ffebcd", - "blue": "#0000ff", - "blueviolet": "#8a2be2", - "brown": "#a52a2a", - "burlywood": "#deb887", - "cadetblue": "#5f9ea0", - "chartreuse": "#7fff00", - "chocolate": "#d2691e", - "coral": "#ff7f50", - "cornflowerblue": "#6495ed", - "cornsilk": "#fff8dc", - "crimson": "#dc143c", - "cyan": "#00ffff", - "darkblue": "#00008b", - "darkcyan": "#008b8b", - "darkgoldenrod": "#b8860b", - "darkgray": "#a9a9a9", - "darkgreen": "#006400", - "darkkhaki": "#bdb76b", - "darkmagenta": "#8b008b", - "darkolivegreen": "#556b2f", - "darkorange": "#ff8c00", - "darkorchid": "#9932cc", - "darkred": "#8b0000", - "darksalmon": "#e9967a", - "darkseagreen": "#8fbc8f", - "darkslateblue": "#483d8b", - "darkslategray": "#2f4f4f", - "darkturquoise": "#00ced1", - "darkviolet": "#9400d3", - "deeppink": "#ff1493", - "deepskyblue": "#00bfff", - "dimgray": "#696969", - "dodgerblue": "#1e90ff", - "firebrick": "#b22222", - "floralwhite": "#fffaf0", - "forestgreen": "#228b22", - "fuchsia": "#ff00ff", - "gainsboro": "#dcdcdc", - "ghostwhite": "#f8f8ff", - "gold": "#ffd700", - "goldenrod": "#daa520", - "gray": "#808080", - "green": "#008000", - "greenyellow": "#adff2f", - "honeydew": "#f0fff0", - "hotpink": "#ff69b4", - "indianred": "#cd5c5c", - "indigo": "#4b0082", - "ivory": "#fffff0", - "khaki": "#f0e68c", - "lavender": "#e6e6fa", - "lavenderblush": "#fff0f5", - "lawngreen": "#7cfc00", - "lemonchiffon": "#fffacd", - "lightblue": "#add8e6", - "lightcoral": "#f08080", - "lightcyan": "#e0ffff", - "lightgoldenrodyellow": "#fafad2", - "lightgrey": "#d3d3d3", - "lightgreen": "#90ee90", - "lightpink": "#ffb6c1", - "lightsalmon": "#ffa07a", - "lightseagreen": "#20b2aa", - "lightskyblue": "#87cefa", - "lightslategray": "#778899", - "lightsteelblue": "#b0c4de", - "lightyellow": "#ffffe0", - "lime": "#00ff00", - "limegreen": "#32cd32", - "linen": "#faf0e6", - "magenta": "#ff00ff", - "maroon": "#800000", - "mediumaquamarine": "#66cdaa", - "mediumblue": "#0000cd", - "mediumorchid": "#ba55d3", - "mediumpurple": "#9370d8", - "mediumseagreen": "#3cb371", - "mediumslateblue": "#7b68ee", - "mediumspringgreen": "#00fa9a", - "mediumturquoise": "#48d1cc", - "mediumvioletred": "#c71585", - "midnightblue": "#191970", - "mintcream": "#f5fffa", - "mistyrose": "#ffe4e1", - "moccasin": "#ffe4b5", - "navajowhite": "#ffdead", - "navy": "#000080", - "oldlace": "#fdf5e6", - "olive": "#808000", - "olivedrab": "#6b8e23", - "orange": "#ffa500", - "orangered": "#ff4500", - "orchid": "#da70d6", - "palegoldenrod": "#eee8aa", - "palegreen": "#98fb98", - "paleturquoise": "#afeeee", - "palevioletred": "#d87093", - "papayawhip": "#ffefd5", - "peachpuff": "#ffdab9", - "peru": "#cd853f", - "pink": "#ffc0cb", - "plum": "#dda0dd", - "powderblue": "#b0e0e6", - "purple": "#800080", - "red": "#ff0000", - "rosybrown": "#bc8f8f", - "royalblue": "#4169e1", - "saddlebrown": "#8b4513", - "salmon": "#fa8072", - "sandybrown": "#f4a460", - "seagreen": "#2e8b57", - "seashell": "#fff5ee", - "sienna": "#a0522d", - "silver": "#c0c0c0", - "skyblue": "#87ceeb", - "slateblue": "#6a5acd", - "slategray": "#708090", - "snow": "#fffafa", - "springgreen": "#00ff7f", - "steelblue": "#4682b4", - "tan": "#d2b48c", - "teal": "#008080", - "thistle": "#d8bfd8", - "tomato": "#ff6347", - "turquoise": "#40e0d0", - "violet": "#ee82ee", - "wheat": "#f5deb3", - "white": "#ffffff", - "whitesmoke": "#f5f5f5", - "yellow": "#ffff00", - "yellowgreen": "#9acd32", - "buttontext": "rgba(0, 0, 0, 0.847)", - "buttonface": "#ffffff", - "graytext": "rgba(0, 0, 0, 0.247)" - }; - return RPTUtil; -}()); -exports.RPTUtil = RPTUtil; -var RPTUtilStyle = /** @class */ (function () { - function RPTUtilStyle() { - } - RPTUtilStyle.getWeightNumber = function (styleVal) { - var map = { - "light": 100, - "bold": 700 - }; - var retVal = parseInt(styleVal); - if (retVal) - return retVal; - if (styleVal in map) - return map[styleVal]; - return 400; - }; - RPTUtilStyle.getFontInPixels = function (styleVal) { - var map = { - "xx-small": 16, - "x-small": 10, - "small": 13, - "medium": 16, - "large": 18, - "x-large": 24, - "xx-large": 32 - }; - var value = parseFloat(styleVal); - if (!value) { - return map[styleVal]; - } - var units = styleVal.substring(("" + value).length); - if (units === "" || units === "px") - return value; - if (units === "em") - return value * 16; - if (units === "%") - return value / 100 * 16; - if (units === "pt") - return value * 4 / 3; - return Math.round(value); - }; - return RPTUtilStyle; -}()); -exports.RPTUtilStyle = RPTUtilStyle; -var ColorObj = /** @class */ (function () { - function ColorObj(red, green, blue, alpha) { - function fixComponent(comp) { - if (typeof (comp) != typeof ("")) - return comp; - var compStr = comp; - compStr = compStr.trim(); - if (compStr[compStr.length - 1] != "%") - return parseInt(compStr); - return Math.round(parseFloat(compStr.substring(0, compStr.length - 1)) * 2.55); - } - this.red = fixComponent(red); - this.green = fixComponent(green); - this.blue = fixComponent(blue); - if (typeof (alpha) != "undefined") { - this.alpha = (typeof (alpha) === typeof ("")) ? parseFloat(alpha) : alpha; - } - } - ColorObj.prototype.toHexHelp = function (value) { - var retVal = Math.round(value).toString(16); - if (retVal.length === 1) - return "0" + retVal; - return retVal; - }; - ; - ColorObj.prototype.toHex = function () { - return "#" + this.toHexHelp(this.red) + this.toHexHelp(this.green) + this.toHexHelp(this.blue); - }; - ; - ColorObj.prototype.contrastRatio = function (bgColor) { - var fgColor = this; - if (typeof (this.alpha) != "undefined") - fgColor = this.getOverlayColor(bgColor); - var lum1 = fgColor.relativeLuminance(); - if (!bgColor.relativeLuminance) { - var s = ""; - for (var key in bgColor) { - s += key + "\n"; - } - alert(bgColor); - alert(s); - } - var lum2 = bgColor.relativeLuminance(); - var ratio = (lum1 > lum2) ? (lum1 + .05) / (lum2 + .05) : (lum2 + .05) / (lum1 + .05); - return ratio; - }; - ; - ColorObj.prototype.relativeLuminance = function () { - var R = this.red / 255.0; - var G = this.green / 255.0; - var B = this.blue / 255.0; - R = R <= .03928 ? R / 12.92 : Math.pow((R + .055) / 1.055, 2.4); - G = G <= .03928 ? G / 12.92 : Math.pow((G + .055) / 1.055, 2.4); - B = B <= .03928 ? B / 12.92 : Math.pow((B + .055) / 1.055, 2.4); - return 0.2126 * R + 0.7152 * G + 0.0722 * B; - }; - ; - ColorObj.prototype.mix = function (color2, percThis) { - if (typeof (this.alpha) === "undefined" && typeof (color2.alpha) === "undefined") { - return new ColorObj(percThis * this.red + (1 - percThis) * color2.red, percThis * this.green + (1 - percThis) * color2.green, percThis * this.blue + (1 - percThis) * color2.blue); - } - else { - var alphaThis = this.alpha ? this.alpha : 1; - var alphaOther = color2.alpha ? color2.alpha : 1; - return new ColorObj(percThis * this.red + (1 - percThis) * color2.red, percThis * this.green + (1 - percThis) * color2.green, percThis * this.blue + (1 - percThis) * color2.blue, percThis * alphaThis + (1 - percThis) * alphaOther); - } - }; - ; - ColorObj.prototype.getOverlayColor = function (bgColor) { - if (typeof (this.alpha) === "undefined" || this.alpha >= 1) { - // No mixing required - it's opaque - return this; - } - if (this.alpha < 0) { - // Haac.Error.logError("Invalid alpha value"); - return null; - } - if (typeof (bgColor.alpha) != "undefined" && bgColor.alpha < 1) { - // Haac.Error.logError("Cannot mix with a background alpha"); - return null; - } - var retVal = this.mix(bgColor, this.alpha); - delete retVal.alpha; - return retVal; - }; - ColorObj.fromCSSColor = function (cssStyleColor) { - var thisRed = -1; - var thisGreen = -1; - var thisBlue = -1; - cssStyleColor = cssStyleColor.toLowerCase(); - if (cssStyleColor.startsWith("rgb(")) { - var rgbRegex = /\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/; - var m = cssStyleColor.match(rgbRegex); - if (m === null) - return null; - else { - thisRed = m[1]; - thisGreen = m[2]; - thisBlue = m[3]; - } - } - else if (cssStyleColor.startsWith("rgba(")) { - var rgbRegex = /\s*rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(.+)\s*\)/; - var m = cssStyleColor.match(rgbRegex); - if (m === null) - return null; - else { - thisRed = m[1]; - thisGreen = m[2]; - thisBlue = m[3]; - } - } - else { - if (cssStyleColor.charAt(0) != "#") { - if (cssStyleColor in RPTUtil.CSSColorLookup) - cssStyleColor = RPTUtil.CSSColorLookup[cssStyleColor]; - else - return null; - } - var fromHex = function (val) { - var lookup = { - "a": 10, - "b": 11, - "c": 12, - "d": 13, - "e": 14, - "f": 15 - }; - var retVal = 0; - for (var i = 0; i < val.length; ++i) { - retVal = retVal * 16 + - parseInt(val.charAt(i) in lookup ? lookup[val.charAt(i)] : val.charAt(i)); - } - return retVal; - }; - if (cssStyleColor.length === 4) { - // The three-digit RGB (#rgb) is converted to six-digit form (#rrggbb) by replicating digits - // (https://www.w3.org/TR/css-color-3/#rgb-color) - cssStyleColor = "#" + cssStyleColor.charAt(1).repeat(2) + - cssStyleColor.charAt(2).repeat(2) + - cssStyleColor.charAt(3).repeat(2); - } - thisRed = fromHex(cssStyleColor.substring(1, 3)); - thisGreen = fromHex(cssStyleColor.substring(3, 5)); - thisBlue = fromHex(cssStyleColor.substring(5, 7)); - } - return new ColorObj(thisRed, thisGreen, thisBlue); - }; - return ColorObj; -}()); -exports.ColorObj = ColorObj; -/* Return a node walker for the given element. - * bEnd is optional and defaults to false - * but if true, indicates the node is the end node*/ -var NodeWalker = /** @class */ (function () { - function NodeWalker(node, bEnd) { - this.node = node; - this.bEndTag = (bEnd === undefined ? false : bEnd === true); - } - NodeWalker.prototype.elem = function () { - return this.node.nodeType === 1 && this.node || null; - }; - NodeWalker.prototype.nextNode = function () { - if (!this.bEndTag) { - var iframeNode = this.node; - var elementNode = this.node; - var slotElement = this.node; - if (this.node.nodeType === 1 /* Node.ELEMENT_NODE */ - && this.node.nodeName.toUpperCase() === "IFRAME" - && iframeNode.contentDocument - && iframeNode.contentDocument.documentElement) { - var ownerElement = this.node; - this.node = iframeNode.contentDocument.documentElement; - this.node.ownerElement = ownerElement; - } - else if (this.node.nodeType === 1 /* Node.ELEMENT_NODE */ - && elementNode.shadowRoot - && elementNode.shadowRoot.firstChild) { - var ownerElement = this.node; - this.node = elementNode.shadowRoot; - this.node.ownerElement = ownerElement; - } - else if (this.node.nodeType === 1 - && elementNode.nodeName.toLowerCase() === "slot" - && slotElement.assignedNodes().length > 0) { - var slotOwner = this.node; - this.node = slotElement.assignedNodes()[0]; - this.node.slotOwner = slotOwner; - } - else if (this.node.firstChild) { - this.node = this.node.firstChild; - } - else { - this.bEndTag = true; - return this.nextNode(); - } - } - else { - if (this.node.nextSibling) { - this.node = this.node.nextSibling; - this.bEndTag = false; - } - else if (this.node.ownerElement) { - this.node = this.node.ownerElement; - this.bEndTag = true; - } - else if (this.node.slotOwner) { - if (this.node.nodeType !== 1 || !this.node.hasAttribute("slot")) { - // If this wasn't a named slot, look for the next unnamed node to put in the slot - var n = this.node.nextSibling; - while (n && this.node.nodeType === 1 && this.node.hasAttribute("slot")) { - n = this.node.nextSibling; - } - if (n) { - // We found another unnamed slot - var slotOwner = this.node.slotOwner; - this.node = n; - this.node.slotOwner = slotOwner; - this.bEndTag = false; - } - else { - this.node = this.node.slotOwner; - this.bEndTag = true; - } - } - else { - this.node = this.node.slotOwner; - this.bEndTag = true; - } - } - else if (this.node.parentNode) { - this.node = this.node.parentNode; - this.bEndTag = true; - } - else { - return false; - } - } - return true; - }; - NodeWalker.prototype.prevNode = function () { - if (this.bEndTag && this.node.lastChild) { - this.node = this.node.lastChild; - this.bEndTag = true; - } - else if (this.node.previousSibling) { - this.node = this.node.previousSibling; - this.bEndTag = true; - } - else if (this.node.parentNode) { - this.node = this.node.parentNode; - this.bEndTag = false; - } - else { - return false; - } - if (this.bEndTag && (this.node.firstChild === null || typeof (this.node.firstChild) === 'undefined')) - this.bEndTag = false; - return true; - }; - return NodeWalker; -}()); -exports.NodeWalker = NodeWalker; - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DOMUtil = void 0; -var DOMUtil = /** @class */ (function () { - function DOMUtil() { - } - DOMUtil.hasParent = function (node, names) { - var p = DOMUtil.parentElement(node); - while (p && !names.includes(p.nodeName)) { - p = DOMUtil.parentElement(p); - } - return !!p; - }; - DOMUtil.getAncestor = function (node, names) { - var p = DOMUtil.parentElement(node); - while (p && !names.includes(p.nodeName.toLowerCase())) { - p = DOMUtil.parentElement(p); - } - return p; - }; - DOMUtil.isNodeVisible = function (node) { - try { - var vis = null; - while (node && node.nodeType !== 1 /* Node.ELEMENT_NODE */) { - node = DOMUtil.parentElement(node); - } - var elem = node; - var w = elem.ownerDocument.defaultView; - do { - var cs = w.getComputedStyle(elem); - if (cs.display === "none") - return false; - if (vis === null && cs.visibility) { - vis = cs.visibility; - if (vis === "hidden") - return false; - } - elem = DOMUtil.parentElement(elem); - } while (elem); - return true; - } - catch (err) { - return false; - } - }; - DOMUtil.sameNode = function (a, b) { - if (a === b) { - return true; - } - else if (a.isSameNode) { - return a.isSameNode(b); - } - else if (a.compareDocumentPosition) { - return a.compareDocumentPosition(b) === 0; - } - else { - // Not supported in this environment - try our best - return true; - } - }; - DOMUtil.cleanWhitespace = function (s) { - var retVal = s.replace(/[ \t\r\n]/g, " ").replace(/ +/g, " "); - return retVal; - }; - DOMUtil.cleanSpace = function (s) { - var retVal = s.replace(/ +/g, " "); - return retVal; - }; - DOMUtil.parentNode = function (node) { - var p = node.parentNode; - if (p && p.nodeType === 11) { - if (p.host) { - p = p.host; - } - else if (p.ownerElement) { - p = p.ownerElement; - } - else { - p = null; - } - } - return p; - }; - DOMUtil.parentElement = function (node) { - var elem = node; - do { - elem = DOMUtil.parentNode(elem); - } while (elem && elem.nodeType !== 1); - return elem; - }; - return DOMUtil; -}()); -exports.DOMUtil = DOMUtil; - - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FragmentUtil = void 0; -var FragmentUtil = /** @class */ (function () { - function FragmentUtil() { - } - FragmentUtil.getOwnerFragment = function (node) { - var n = node; - while (n.parentNode && (n = n.parentNode)) { - if (n.nodeType === 11) { - return n; - } - } - return node.ownerDocument; - }; - FragmentUtil.getById = function (node, id) { - return this.getOwnerFragment(node).getElementById(id); - }; - FragmentUtil.getAncestor = function (hierarchies, elemName) { - var matches = hierarchies["dom"].filter(function (info) { return info.role === elemName; }); - return matches.length > 0 && matches[0].node || null; - }; - FragmentUtil.getAncestorWithRole = function (hierarchies, role) { - var matches = hierarchies["aria"].filter(function (info) { return info.role === role; }); - return matches.length > 0 && matches[0].node || null; - }; - return FragmentUtil; -}()); -exports.FragmentUtil = FragmentUtil; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DOMWalker = exports.Config = exports.checkDemo = exports.ARIAMapper = exports.Context = exports.Checker = void 0; -var Context_1 = __webpack_require__(11); -Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return Context_1.Context; } }); -// import { Simulator } from "./v2/simulator" -var checker_1 = __webpack_require__(13); -Object.defineProperty(exports, "Checker", { enumerable: true, get: function () { return checker_1.Checker; } }); -var ARIAMapper_1 = __webpack_require__(9); -Object.defineProperty(exports, "ARIAMapper", { enumerable: true, get: function () { return ARIAMapper_1.ARIAMapper; } }); -var Config_1 = __webpack_require__(7); -Object.defineProperty(exports, "Config", { enumerable: true, get: function () { return Config_1.Config; } }); -var DOMWalker_1 = __webpack_require__(6); -Object.defineProperty(exports, "DOMWalker", { enumerable: true, get: function () { return DOMWalker_1.DOMWalker; } }); -String.prototype.startsWith = String.prototype.startsWith || function (str) { - return this.indexOf(str) === 0; -}; -String.prototype.includes = String.prototype.includes || function (str) { - return this.indexOf(str) !== -1; -}; -Array.prototype.includes = Array.prototype.includes || function (str) { - return this.indexOf(str) !== -1; -}; -/* -function simDemo(timeout?: number) { - if (!timeout) timeout = 0; - setTimeout(function() { - let sim = new Simulator(); - let s = sim.renderItem(document.documentElement); - console.group("--- Item View ---"); - console.log(s); - console.groupEnd(); - console.group("--- Link View ---"); - s = sim.renderLink(document.documentElement); - console.log(s); - console.groupEnd(); - }, timeout); -} -*/ -function checkDemo(timeout) { - if (!timeout) - timeout = 0; - var checker = new checker_1.Checker(); - setTimeout(function () { - checker.check(document.documentElement, ["IBM_Accessibility", "IBM_Design"]) - .then(function (report) { - console.log(report); - var vals = { - "FAIL": 0, - "POTENTIAL": 1, - "MANUAL": 2, - "PASS": 3 - }; - for (var idx = 0; idx < report.results.length; ++idx) { - if (report.results[idx].value[1] === "PASS") { - report.results.splice(idx--, 1); - } - } - report.results.sort(function (a, b) { - if (a.category != b.category) { - return a.category.localeCompare(b.category); - } - if (a.path["aria"] === b.path["aria"]) { - return vals[a.value[1]] - vals[b.value[1]]; - } - return a.path["aria"].localeCompare(b.path["aria"]); - }); - var lastPath = null; - var category = null; - for (var _i = 0, _a = report.results; _i < _a.length; _i++) { - var result = _a[_i]; - if (category !== result.category) { - if (category !== null) { - console.groupEnd(); - console.groupEnd(); - lastPath = null; - } - category = result.category; - console.group(result.category); - } - if (result.path["aria"] != lastPath) { - if (lastPath !== null) { - console.groupEnd(); - } - lastPath = result.path["aria"]; - if (lastPath === "") { - console.group("page"); - } - else { - console.group(lastPath); - } - } - console.log(result.value, result.message); - } - console.groupEnd(); - console.groupEnd(); - }); - }, timeout); -} -exports.checkDemo = checkDemo; - - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ARIADefinitions = void 0; -var ARIADefinitions = /** @class */ (function () { - function ARIADefinitions() { - } - ARIADefinitions.nameFromContent = function (role) { - return (role in ARIADefinitions.designPatterns) - && ARIADefinitions.designPatterns[role].nameFrom - && ARIADefinitions.designPatterns[role].nameFrom.includes("contents"); - }; - /* - * array of WAI-ARIA global states and properties - * @see https://www.w3.org/TR/wai-aria-1.2/#global_states - */ - ARIADefinitions.globalProperties = ["aria-atomic", "aria-busy", "aria-controls", "aria-current", "aria-describedby", - "aria-details", "aria-dropeffect", "aria-flowto", "aria-grabbed", "aria-hidden", "aria-keyshortcuts", - "aria-label", "aria-labelledby", "aria-live", "aria-owns", "aria-relevant", "aria-roledescription"]; - /* - * XSD data types for all WAI-ARIA properties - * along with valid values when the data type is NMTOKEN - * WAI-ARIA properties data types explaned: - * type: Used to identify the type of values allowed for the WAI-ARIA property - * values: Used to identify specific values of an WAI-ARIA property when type is nmtoken - * hiddenIDRefSupported: Used to identify if the WAI-ARIA property supports referencing hidden ID - * true: refers to WAI-ARIA property supports hidden ID references - * false: refers to WAI-ARIA property does not support hidden ID references - * Default value will be set to false, if not specified. - */ - ARIADefinitions.propertyDataTypes = { - "aria-activedescendant": { - type: "http://www.w3.org/2001/XMLSchema#idref", - hiddenIDRefSupported: true - }, - "aria-atomic": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-autocomplete": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["inline", "list", "both", "none", "undefined"] //add undefined to handle value empty - }, - "aria-busy": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-checked": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "mixed", "undefined"] - }, - "aria-colcount": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-colindex": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-colspan": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-controls": { - type: "http://www.w3.org/2001/XMLSchema#idrefs", - hiddenIDRefSupported: true - }, - "aria-current": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["page", "step", "location", "date", "time", "true", "false", "undefined"] //add undefined for empty value - }, - "aria-describedby": { - type: "http://www.w3.org/2001/XMLSchema#idrefs", - hiddenIDRefSupported: true - }, - "aria-details": { - type: "http://www.w3.org/2001/XMLSchema#idrefs" - }, - "aria-disabled": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-dropeffect": { - type: "http://www.w3.org/2001/XMLSchema#nmtokens", - values: ["copy", "move", "link", "execute", "popup", "none"] - }, - "aria-errormessage": { - type: "http://www.w3.org/2001/XMLSchema#idref", - hiddenIDRefSupported: true - }, - "aria-expanded": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "undefined"] - }, - "aria-flowto": { - type: "http://www.w3.org/2001/XMLSchema#idrefs", - hiddenIDRefSupported: false - }, - "aria-grabbed": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "undefined"] - }, - "aria-haspopup": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "menu", "listbox", "tree", "grid", "dialog"] - }, - "aria-hidden": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "undefined"] - }, - "aria-invalid": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "spelling", "grammar", "undefined"] //add undefined for empty value - }, - "aria-keyshortcuts": { - type: "http://www.w3.org/2001/XMLSchema#string" - }, - "aria-label": { - type: "http://www.w3.org/2001/XMLSchema#string" - }, - "aria-labelledby": { - type: "http://www.w3.org/2001/XMLSchema#idrefs", - hiddenIDRefSupported: true - }, - "aria-level": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-live": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["off", "polite", "assertive"] - }, - "aria-modal": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-multiline": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-multiselectable": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-orientation": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["horizontal", "vertical", "undefined"] - }, - "aria-owns": { - type: "http://www.w3.org/2001/XMLSchema#idrefs", - hiddenIDRefSupported: true - }, - "aria-placeholder": { - type: "http://www.w3.org/2001/XMLSchema#string" - }, - "aria-posinset": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-pressed": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "mixed", "undefined"] - }, - "aria-readonly": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-relevant": { - type: "http://www.w3.org/2001/XMLSchema#nmtokens", - values: ["additions", "removals", "text", "all"] - }, - "aria-required": { - type: "http://www.w3.org/2001/XMLSchema#boolean" - }, - "aria-roledescription": { - type: "http://www.w3.org/2001/XMLSchema#string" - }, - "aria-rowcount": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-rowindex": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-rowspan": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-selected": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["true", "false", "undefined"] - }, - "aria-setsize": { - type: "http://www.w3.org/2001/XMLSchema#int" - }, - "aria-sort": { - type: "http://www.w3.org/2001/XMLSchema#nmtoken", - values: ["ascending", "descending", "other", "none"] - }, - "aria-valuemax": { - type: "http://www.w3.org/2001/XMLSchema#decimal" - }, - "aria-valuemin": { - type: "http://www.w3.org/2001/XMLSchema#decimal" - }, - "aria-valuenow": { - type: "http://www.w3.org/2001/XMLSchema#decimal" - }, - "aria-valuetext": { - type: "http://www.w3.org/2001/XMLSchema#string" - } - }; - /* - * design patterns for concrete WAI-ARIA roles - * legitimate keys for each role include: - * - * - container: appropriate container(s) for that role - * - props: states and properties that may be associated with this role (in addition to the global states and properties listed above) - * - reqProps: required states or properties for this role - * - reqChildren: required children for this role - * - htmlEquiv: HTML equivalent for this role - * - roleType: one of widget, structure, landmark, liveRegion, window (as seen in https://www.w3.org/TR/wai-aria-1.2/#roles_categorization) - * - nameRequired: determines whether an accessible name is required for a widget (see ARIA spec.) - * - nameFrom: determines how an accessible name is supplied (author or content - see ARIA spec.) - * - deprecated: if present, indicates that the role is deprecated, and provides a list of alternative role(s) - */ - ARIADefinitions.designPatterns = { - "alert": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "liveRegion", - nameRequired: false, - nameFrom: ["author"] - }, - "alertdialog": { - container: null, - props: ["aria-modal"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "window", - nameRequired: true, - nameFrom: ["author"] - }, - "application": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-errormessage", "aria-expanded", "aria-haspopup", "aria-invalid"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameRequired: true, - nameFrom: ["author"] - }, - "article": { - container: null, - props: ["aria-posinset", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "banner": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "blockquote": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "button": { - container: null, - props: ["aria-disabled", "aria-expanded", "aria-haspopup", "aria-pressed"], - reqProps: null, - reqChildren: null, - htmlEquiv: "button | input[@type='button']", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "caption": { - container: ["figure", "grid", "table", "treegrid"], - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "cell": { - container: ["row"], - props: ["aria-colindex", "aria-colspan", "aria-rowindex", "aria-rowspan"], - reqProps: null, - reqChildren: null, - htmlEquiv: "td", - roleType: "structure", - nameFrom: ["author", "contents"] - }, - "checkbox": { - container: null, - props: ["aria-disabled", "aria-errormessage", "aria-expanded", "aria-invalid", "aria-readonly", "aria-required"], - reqProps: ["aria-checked"], - reqChildren: null, - htmlEquiv: "input[@type='checkbox']", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "code": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "columnheader": { - container: ["row"], - props: ["aria-colindex", "aria-colspan", "aria-disabled", "aria-errormessage", "aria-expanded", "aria-haspopup", "aria-invalid", "aria-readonly", "aria-required", "aria-rowindex", "aria-rowspan", "aria-selected", "aria-sort"], - reqProps: null, - reqChildren: null, - htmlEquiv: "th[@scope='col']", - roleType: "structure", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "combobox": { - container: null, - props: ["aria-controls", "aria-activedescendant", "aria-autocomplete", "aria-disabled", "aria-errormessage", "aria-haspopup", "aria-invalid", "aria-readonly", "aria-required"], - reqProps: ["aria-expanded"], - reqChildren: [], - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "complementary": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "contentinfo": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "definition": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "deletion": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "dialog": { - container: null, - props: ["aria-modal"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "window", - nameRequired: true, - nameFrom: ["author"] - }, - "directory": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"], - deprecated: ["list"] // TODO - }, - "doc-abstract": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-acknowledgments": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-afterword": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-appendix": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-backlink": { - container: null, - props: ["aria-disabled", "aria-expanded", "aria-haspopup"], - reqProps: null, - reqChildren: null, - htmlEquiv: "a | link", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "doc-biblioentry": { - container: ["directory", "list"], - props: ["aria-level", "aria-posinset", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: "li", - roleType: "structure", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-bibliography": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-biblioref": { - container: null, - props: ["aria-disabled", "aria-expanded", "aria-haspopup"], - reqProps: null, - reqChildren: null, - htmlEquiv: "a | link", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "doc-chapter": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-colophon": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-conclusion": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-cover": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: "img", - roleType: "structure", - nameFrom: ["author"], - presentationalChildren: true - }, - "doc-credit": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-credits": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-dedication": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-endnote": { - container: ["directory", "list"], - props: ["aria-level", "aria-posinset", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: "li", - roleType: "structure", - nameFrom: ["author"] - }, - "doc-endnotes": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-epigraph": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-epilogue": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-errata": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-example": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-footnote": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-foreword": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-glossary": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-glossref": { - container: null, - props: ["aria-disabled", "aria-expanded", "aria-haspopup"], - reqProps: null, - reqChildren: null, - htmlEquiv: "a | link", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "doc-index": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "doc-introduction": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-noteref": { - container: null, - props: ["aria-disabled", "aria-expanded", "aria-haspopup"], - reqProps: null, - reqChildren: null, - htmlEquiv: "a | link", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "doc-notice": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "doc-pagebreak": { - container: null, - props: ["aria-orientation"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"], - presentationalChildren: true - }, - "doc-pagelist": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "doc-part": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-preface": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-prologue": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-pullquote": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "doc-qna": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "doc-subtitle": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "doc-tip": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "doc-toc": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "document": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameRequired: false, - nameFrom: ["author"] - }, - "emphasis": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "feed": { - container: null, - props: null, - reqProps: null, - reqChildren: ["article"], - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "figure": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "form": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: "form", - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "generic": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "graphics-document": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - nameRequired: true, - nameFrom: ["author"] - }, - "graphics-object": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - nameRequired: false, - nameFrom: ["contents", "author"] - }, - "graphics-symbol": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - nameRequired: true, - nameFrom: ["author"], - presentationalChildren: true - }, - "grid": { - container: null, - props: ["aria-activedescendant", "aria-colcount", "aria-disabled", "aria-multiselectable", "aria-readonly", "aria-rowcount"], - reqProps: null, - reqChildren: ["row", "rowgroup"], - htmlEquiv: "table", - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "gridcell": { - container: ["row"], - props: ["aria-colindex", "aria-colspan", "aria-disabled", "aria-errormessage", "aria-expanded", "aria-haspopup", "aria-invalid", "aria-readonly", "aria-required", "aria-rowindex", "aria-rowspan", "aria-selected"], - reqProps: null, - reqChildren: null, - htmlEquiv: "td", - roleType: "widget", - nameFrom: ["author", "contents"] - }, - "group": { - container: null, - props: ["aria-activedescendant", "aria-disabled"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "heading": { - container: null, - props: null, - reqProps: ["aria-level"], - reqChildren: null, - htmlEquiv: "h1 | h2 | h3 | h4 | h5 | h6", - roleType: "structure", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "img": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: "img", - roleType: "structure", - nameRequired: true, - nameFrom: ["author"], - presentationalChildren: true - }, - "insertion": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "link": { - container: null, - props: ["aria-disabled", "aria-expanded", "aria-haspopup"], - reqProps: null, - reqChildren: null, - htmlEquiv: "a | link", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "list": { - container: null, - props: null, - reqProps: null, - reqChildren: ["listitem"], - htmlEquiv: "ol | ul", - roleType: "structure", - nameFrom: ["author"] - }, - "listbox": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-errormessage", "aria-expanded", "aria-invalid", "aria-multiselectable", "aria-orientation", "aria-readonly", "aria-required"], - reqProps: null, - reqChildren: ["group", "option"], - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "listitem": { - container: ["directory", "list"], - props: ["aria-level", "aria-posinset", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: "li", - roleType: "structure", - nameFrom: ["author"] - }, - "log": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "liveRegion", - nameFrom: ["author"] - }, - "main": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "marquee": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "liveRegion", - nameRequired: true, - nameFrom: ["author"] - }, - "math": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"], - presentationalChildren: false - }, - "menu": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-orientation"], - reqProps: null, - reqChildren: ["group", "menuitem", "menuitemcheckbox", "menuitemradio"], - htmlEquiv: null, - roleType: "widget", - nameRequired: false, - nameFrom: ["author"] - }, - "menubar": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-orientation"], - reqProps: null, - reqChildren: ["group", "menuitem", "menuitemcheckbox", "menuitemradio"], - htmlEquiv: null, - roleType: "widget", - nameRequired: false, - nameFrom: ["author"] - }, - "menuitem": { - container: ["group", "menu", "menubar"], - props: ["aria-disabled", "aria-expanded", "aria-haspopup", "aria-posinset", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "menuitemcheckbox": { - container: ["group", "menu", "menubar"], - props: ["aria-disabled", "aria-expanded", "aria-haspopup", "aria-posinset", "aria-setsize"], - reqProps: ["aria-checked"], - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "menuitemradio": { - container: ["group", "menu", "menubar"], - props: ["aria-disabled", "aria-expanded", "aria-haspopup", "aria-posinset", "aria-setsize"], - reqProps: ["aria-checked"], - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "meter": { - container: null, - props: ["aria-valuemax", "aria-valuemin", "aria-valuetext"], - reqProps: ["aria-valuenow"], - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameRequired: true, - nameFrom: ["author"], - presentationalChildren: true - }, - "navigation": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "none": { - container: null, - props: [], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - }, - "note": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "option": { - container: ["group", "listbox"], - props: ["aria-selected", "aria-checked", "aria-disabled", "aria-posinset", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: "option", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "paragraph": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "presentation": { - container: null, - props: [], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - }, - "progressbar": { - container: null, - props: ["aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-valuetext"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"], - presentationalChildren: true - }, - "radio": { - container: null, - props: ["aria-disabled", "aria-posinset", "aria-setsize"], - reqProps: ["aria-checked"], - reqChildren: null, - htmlEquiv: "input[@type='radio']", - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "radiogroup": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-errormessage", "aria-invalid", "aria-orientation", "aria-readonly", "aria-required"], - reqProps: null, - reqChildren: ["radio"], - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "region": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameRequired: true, - nameFrom: ["author"] - }, - "row": { - container: ["grid", "rowgroup", "table", "treegrid"], - props: ["aria-activedescendant", "aria-colindex", "aria-disabled", "aria-expanded", "aria-level", "aria-posinset", "aria-rowindex", "aria-selected", "aria-setsize"], - reqProps: null, - reqChildren: ["cell", "columnheader", "gridcell", "rowheader"], - htmlEquiv: "tr", - roleType: "structure", - nameFrom: ["author", "contents"] - }, - "rowgroup": { - container: ["grid", "table", "treegrid"], - props: [], - reqProps: null, - reqChildren: ["row"], - htmlEquiv: "tbody | tfoot | thead", - roleType: "structure", - nameFrom: ["author"] - }, - "rowheader": { - container: ["row"], - props: ["aria-colindex", "aria-colspan", "aria-disabled", "aria-errormessage", "aria-expanded", "aria-haspopup", "aria-invalid", "aria-readonly", "aria-required", "aria-rowindex", "aria-rowspan", "aria-selected", "aria-sort"], - reqProps: null, - reqChildren: null, - htmlEquiv: "th[@scope='row']", - roleType: "structure", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - "scrollbar": { - container: null, - props: ["aria-disabled", "aria-orientation", "aria-valuemax", "aria-valuemin", "aria-valuetext"], - reqProps: ["aria-controls", "aria-valuenow"], - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: false, - nameFrom: ["author"], - presentationalChildren: true - }, - "search": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "landmark", - nameFrom: ["author"] - }, - "searchbox": { - container: null, - props: ["aria-activedescendant", "aria-autocomplete", "aria-disabled", "aria-errormessage", "aria-haspopup", "aria-invalid", "aria-multiline", "aria-placeholder", "aria-readonly", "aria-required"], - reqProps: null, - reqChildren: null, - htmlEquiv: "input[@type='search']", - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "separator": { - container: null, - props: ["aria-orientation"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"], - presentationalChildren: true - }, - "slider": { - container: null, - props: ["aria-disabled", "aria-errormessage", "aria-haspopup", "aria-invalid", "aria-orientation", "aria-readonly", "aria-valuemax", "aria-valuemin", "aria-valuetext"], - reqProps: ["aria-valuenow"], - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"], - presentationalChildren: true - }, - "spinbutton": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-errormessage", "aria-invalid", "aria-readonly", "aria-required", "aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-valuetext"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "status": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "liveRegion", - nameFrom: ["author"] - }, - "strong": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "subscript": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "superscript": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["prohibited"] - }, - "switch": { - container: null, - props: ["aria-disabled", "aria-errormessage", "aria-expanded", "aria-invalid", "aria-readonly", "aria-required"], - reqProps: ["aria-checked"], - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "tab": { - container: ["tablist"], - props: ["aria-disabled", "aria-expanded", "aria-haspopup", "aria-posinset", "aria-selected", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameFrom: ["author", "contents"], - presentationalChildren: true - }, - "table": { - container: null, - props: ["aria-colcount", "aria-rowcount"], - reqProps: null, - reqChildren: ["row", "rowgroup"], - htmlEquiv: "table", - roleType: "structure", - nameRequired: true, - nameFrom: ["author"] - }, - "tablist": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-multiselectable", "aria-orientation"], - reqProps: null, - reqChildren: ["tab"], - htmlEquiv: null, - roleType: "widget", - nameRequired: false, - nameFrom: ["author"] - }, - "tabpanel": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "term": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: "dfn", - roleType: "structure", - nameFrom: ["author"] - }, - "textbox": { - container: null, - props: ["aria-activedescendant", "aria-autocomplete", "aria-disabled", "aria-errormessage", "aria-haspopup", "aria-invalid", "aria-multiline", "aria-placeholder", "aria-readonly", "aria-required"], - reqProps: null, - reqChildren: null, - htmlEquiv: "input[@type='text']", - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "time": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "timer": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "liveRegion", - nameFrom: ["author"] - }, - "toolbar": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-orientation"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameFrom: ["author"] - }, - "tooltip": { - container: null, - props: null, - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "structure", - nameRequired: false, - nameFrom: ["author", "contents"] - }, - "tree": { - container: null, - props: ["aria-activedescendant", "aria-disabled", "aria-errormessage", "aria-invalid", "aria-multiselectable", "aria-orientation", "aria-required"], - reqProps: null, - reqChildren: ["group", "treeitem"], - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "treegrid": { - container: null, - props: ["aria-activedescendant", "aria-colcount", "aria-disabled", "aria-errormessage", "aria-invalid", "aria-multiselectable", "aria-orientation", "aria-readonly", "aria-required", "aria-rowcount"], - reqProps: null, - reqChildren: ["row", "rowgroup"], - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author"] - }, - "treeitem": { - container: ["group", "tree"], - props: ["aria-checked", "aria-disabled", "aria-expanded", "aria-haspopup", "aria-level", "aria-posinset", "aria-selected", "aria-setsize"], - reqProps: null, - reqChildren: null, - htmlEquiv: null, - roleType: "widget", - nameRequired: true, - nameFrom: ["author", "contents"] - }, - }; // end designPatterns - // copied from https://html.spec.whatwg.org/multipage/semantics-other.html#disabled-elements - // https://html.spec.whatwg.org/multipage/input.html#input-type-attr-summary - ARIADefinitions.elementsAllowedDisabled = ["button", "input", "select", "textarea", "optgroup", "option", "fieldset"]; // also form-associated custom element - ARIADefinitions.elementsAllowedRequired = ["input", "select", "textarea"]; // required is not supported on input@type="range", "color", "hidden" or any button types - ARIADefinitions.elementsAllowedReadOnly = ["input", "textarea"]; // readonly is not supported on input@type="checkbox", "radio", "range", "color", "file", hidden" or any button types - /* https://www.w3.org/TR/html-aria/#docconformance - * documentConformanceRequirement contains properties of the tags related to role without any additional attribute value - * documentConformanceRequirementSpecialTags contains those tags that require special considerations - */ - ARIADefinitions.documentConformanceRequirement = { - "abbr": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "address": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "article": { - implicitRole: ["article"], - validRoles: ["application", "document", "feed", "main", "none", "presentation", "region"], - globalAriaAttributesValid: true - }, - "aside": { - implicitRole: ["complementary"], - validRoles: ["doc-dedication", "doc-example", "doc-footnote", "doc-pullquote", "doc-tip", "feed", "none", "note", "presentation", "region", "search"], - globalAriaAttributesValid: true - }, - "audio": { - implicitRole: null, - validRoles: ["application"], - globalAriaAttributesValid: true - }, - "b": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "base": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "bdi": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "bdo": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "blockquote": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "body": { - implicitRole: ["document"], - validRoles: null, - globalAriaAttributesValid: true - }, - "br": { - implicitRole: null, - validRoles: ["none", "presentation"], - globalAriaAttributesValid: true - }, - "button": { - implicitRole: ["button"], - validRoles: ["checkbox", "link", "menuitem", "menuitemcheckbox", "menuitemradio", "option", "radio", "switch", "tab"], - globalAriaAttributesValid: true - }, - "canvas": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "caption": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: true - }, - "cite": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "code": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "col": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "colgroup": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "data": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "datalist": { - implicitRole: ["listbox"], - validRoles: null, - globalAriaAttributesValid: true - }, - "dd": { - implicitRole: ["definition"], - validRoles: null, - globalAriaAttributesValid: true - }, - "del": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "details": { - implicitRole: ["group"], - validRoles: null, - globalAriaAttributesValid: true - }, - "dfn": { - implicitRole: ["term"], - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "dialog": { - implicitRole: ["dialog"], - validRoles: ["alertdialog"], - globalAriaAttributesValid: true - }, - "div": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "dl": { - implicitRole: null, - validRoles: ["group", "list", "none", "presentation"], - globalAriaAttributesValid: true - }, - "dt": { - implicitRole: ["term"], - validRoles: ["listitem"], - globalAriaAttributesValid: true - }, - "em": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "embed": { - implicitRole: null, - validRoles: ["application", "document", "img", "none", "presentation"], - globalAriaAttributesValid: true - }, - "fieldset": { - implicitRole: ["group"], - validRoles: ["none", "presentation", "radiogroup"], - globalAriaAttributesValid: true - }, - "figcaption": { - implicitRole: null, - validRoles: ["group", "none", "presentation"], - globalAriaAttributesValid: true - }, - "head": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "h1": { - implicitRole: ["heading"], - validRoles: ["doc-subtitle", "none", "presentation", "tab"], - globalAriaAttributesValid: true - }, - "h2": { - implicitRole: ["heading"], - validRoles: ["doc-subtitle", "none", "presentation", "tab"], - globalAriaAttributesValid: true - }, - "h3": { - implicitRole: ["heading"], - validRoles: ["doc-subtitle", "none", "presentation", "tab"], - globalAriaAttributesValid: true - }, - "h4": { - implicitRole: ["heading"], - validRoles: ["doc-subtitle", "none", "presentation", "tab"], - globalAriaAttributesValid: true - }, - "h5": { - implicitRole: ["heading"], - validRoles: ["doc-subtitle", "none", "presentation", "tab"], - globalAriaAttributesValid: true - }, - "h6": { - implicitRole: ["heading"], - validRoles: ["doc-subtitle", "none", "presentation", "tab"], - globalAriaAttributesValid: true - }, - "hgroup": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "hr": { - implicitRole: ["separator"], - validRoles: ["doc-pagebreak", "none", "presentation"], - globalAriaAttributesValid: true - }, - "html": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "i": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "iframe": { - implicitRole: null, - validRoles: ["application", "document", "img", "none", "presentation"], - globalAriaAttributesValid: true - }, - "ins": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "kbd": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "label": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: true - }, - "legend": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: true - }, - "li": { - implicitRole: ["listitem"], - validRoles: ["doc-biblioentry", "doc-endnote", "menuitem", "menuitemcheckbox", "menuitemradio", "none", "option", "presentation", "radio", "separator", "tab", "treeitem"], - globalAriaAttributesValid: true - }, - "link": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "main": { - implicitRole: ["main"], - validRoles: null, - globalAriaAttributesValid: true - }, - "map": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "mark": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "math": { - implicitRole: ["math"], - validRoles: null, - globalAriaAttributesValid: true - }, - "menu": { - implicitRole: ["list"], - validRoles: ["directory", "group", "listbox", "menu", "menubar", "none", "presentation", "radiogroup", "tablist", "toolbar", "tree"], - globalAriaAttributesValid: true - }, - "meta": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "meter": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: true - }, - "nav": { - implicitRole: ["navigation"], - validRoles: ["doc-index", "doc-pagelist", "doc-toc", "menu", "menubar", "tablist"], - globalAriaAttributesValid: true - }, - "noscript": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "object": { - implicitRole: null, - validRoles: ["application", "document", "img"], - globalAriaAttributesValid: true - }, - "ol": { - implicitRole: ["list"], - validRoles: ["directory", "group", "listbox", "menu", "menubar", "none", "presentation", "radiogroup", "tablist", "toolbar", "tree"], - globalAriaAttributesValid: true - }, - "optgroup": { - implicitRole: ["group"], - validRoles: null, - globalAriaAttributesValid: true - }, - "option": { - implicitRole: ["option"], - validRoles: null, - globalAriaAttributesValid: true - }, - "output": { - implicitRole: ["status"], - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "p": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "param": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "picture": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "pre": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "progress": { - implicitRole: ["progressbar"], - validRoles: null, - globalAriaAttributesValid: true - }, - "q": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "rp": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "rt": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "ruby": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "s": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "samp": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "script": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "slot": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "small": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "source": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "span": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "strong": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "style": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "sub": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "summary": { - implicitRole: ["button"], - validRoles: null, - globalAriaAttributesValid: true - }, - "sup": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "svg": { - implicitRole: ["graphics-document"], - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "table": { - implicitRole: ["table"], - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "tbody": { - implicitRole: ["rowgroup"], - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "template": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "textarea": { - implicitRole: ["textbox"], - validRoles: null, - globalAriaAttributesValid: true - }, - "tfoot": { - implicitRole: ["rowgroup"], - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "thead": { - implicitRole: ["rowgroup"], - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "time": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "title": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "track": { - implicitRole: null, - validRoles: null, - globalAriaAttributesValid: false - }, - "u": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "ul": { - implicitRole: ["list"], - validRoles: ["directory", "group", "listbox", "menu", "menubar", "none", "presentation", "radiogroup", "tablist", "toolbar", "tree"], - globalAriaAttributesValid: true - }, - "var": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - }, - "video": { - implicitRole: null, - validRoles: ["application"], - globalAriaAttributesValid: true - }, - "wbr": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - } - }; // end documentConformanceRequirement - ARIADefinitions.documentConformanceRequirementSpecialTags = { - "a": { - "with-href": { - implicitRole: ["link"], - //roleCondition: " when non-empty href attribute is present", - validRoles: ["button", "checkbox", "doc-backlink", "doc-biblioref", "doc-glossref", "doc-noteref", "menuitem", "menuitemcheckbox", "menuitemradio", "option", "radio", "switch", "tab", "treeitem"], - globalAriaAttributesValid: true - }, - "without-href": { - implicitRole: null, - //roleCondition: " when href attribute is not present", - validRoles: ["any"], - globalAriaAttributesValid: true - } - }, - "area": { - "with-href": { - implicitRole: ["link"], - //roleCondition: " when non-empty href attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "without-href": { - implicitRole: null, - //roleCondition: " when href attribute is not present", - validRoles: null, - globalAriaAttributesValid: true - } - }, - // TODO - // "autonomous custom element": { - // implicitRole: ["Role exposed from author defined ElementInternals. Otherwise no corresponding role."], - // validRoles: ["If role defined by ElementInternals", "any role", "no role Otherwise"], - // globalAriaAttributesValid: true - // }, - "figure": { - "child-figcaption": { - implicitRole: ["figure"], - validRoles: null, - globalAriaAttributesValid: true - }, - "no-child-figcaption": { - implicitRole: ["figure"], - validRoles: ["any"], - globalAriaAttributesValid: true - } - }, - "footer": { - "des-section-article": { - implicitRole: null, - //roleCondition: " when descendant of an article, aside, main, nav or section element", - validRoles: ["doc-footnote", "group", "none", "presentation"], - globalAriaAttributesValid: true - }, - "not-des-section-article": { - implicitRole: ["contentinfo"], - //roleCondition: " when not a descendant of an article, aside, main, nav or section element", - validRoles: ["doc-footnote", "group", "none", "presentation"], - globalAriaAttributesValid: true - } - }, - "form": { - "with-name": { - implicitRole: ["form"], - //roleCondition: " when accessible name is present", - validRoles: ["none", "presentation", "search"], - globalAriaAttributesValid: true - }, - "without-name": { - implicitRole: null, - //roleCondition: " when accessible name is not present", - validRoles: ["none", "presentation", "search"], - globalAriaAttributesValid: true - } - }, - // TODO - // "form-associated custom element": { - // implicitRole: ["Role exposed from author defined ElementInternals. Otherwise no corresponding role."], - // validRoles: ["If role defined by ElementInternals", "form-related roles: button", "checkbox", "combobox", "group", "listbox", "progressbar", "radio", "radiogroup", "searchbox", "slider", "spinbutton", "switch", "textbox", "no role Otherwise"], - // globalAriaAttributesValid: true - // }, - "header": { - "des-section-article": { - implicitRole: null, - //roleCondition: " when descendant of an article, aside, main, nav or section element", - validRoles: ["group", "none", "presentation"], - globalAriaAttributesValid: true - }, - "not-des-section-article": { - implicitRole: ["banner"], - //roleCondition: " when not a descendant of an article, aside, main, nav or section element", - validRoles: ["group", "none", "presentation"], - globalAriaAttributesValid: true - } - }, - "img": { - "img-with-alt-text": { - implicitRole: ["img"], - //roleCondition: " when alt attribute has text (is not empty)", - validRoles: ["button", "checkbox", "doc-cover", "link", "menuitem", "menuitemcheckbox", "menuitemradio", "option", "progressbar", "scrollbar", "separator", "slider", "switch", "tab", "treeitem"], - globalAriaAttributesValid: true - }, - "img-with-empty-alt": { - implicitRole: ["presentation"], - //roleCondition: " when alt attribute is empty", - validRoles: null, - globalAriaAttributesValid: false // TODO aria-hidden="true" is allowed - }, - "img-without-alt": { - implicitRole: ["img"], - //roleCondition: " when alt attribute, aria-label, or aria-labelledby are not present", - validRoles: null, - globalAriaAttributesValid: false // TODO aria-hidden="true" is allowed - } - }, - "input": { - "button": { - implicitRole: ["button"], - validRoles: ["link", "menuitem", "menuitemcheckbox", "menuitemradio", "option", "radio", "switch", "tab"], - globalAriaAttributesValid: true - }, - "checkbox-with-aria-pressed": { - implicitRole: ["checkbox"], - //roleCondition: " with type=checkbox and aria-pressed attribute is present", - validRoles: ["button"], - globalAriaAttributesValid: true - }, - "checkbox-without-aria-pressed": { - implicitRole: ["checkbox"], - //roleCondition: " with type=checkbox and aria-pressed attribute is not present", - validRoles: ["menuitemcheckbox", "option", "switch"], - globalAriaAttributesValid: true - }, - "color": { - implicitRole: null, - //roleCondition: " with type=color", - validRoles: null, - globalAriaAttributesValid: true - }, - "date": { - implicitRole: null, - //roleCondition: " with type=date", - validRoles: null, - globalAriaAttributesValid: true - }, - "datetime-local": { - implicitRole: null, - //roleCondition: " with type=datetime", - validRoles: null, - globalAriaAttributesValid: true - }, - "email-no-list": { - implicitRole: ["textbox"], - //roleCondition: " with type=email and no list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "email-with-list": { - implicitRole: ["combobox"], - //roleCondition: " with type=email and a list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "file": { - implicitRole: null, - //roleCondition: " with type=file", - validRoles: null, - globalAriaAttributesValid: true - }, - "hidden": { - implicitRole: null, - //roleCondition: " with type=hidden", - validRoles: null, - globalAriaAttributesValid: false - }, - "image": { - implicitRole: ["button"], - //roleCondition: " with type=image", - validRoles: ["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio", "switch"], - globalAriaAttributesValid: true - }, - "month": { - implicitRole: null, - //roleCondition: " with type=month", - validRoles: null, - globalAriaAttributesValid: true - }, - "number": { - implicitRole: ["spinbutton"], - //roleCondition: " with type=number", - validRoles: null, - globalAriaAttributesValid: true - }, - "password": { - implicitRole: null, - //roleCondition: " with type=password", - validRoles: null, - globalAriaAttributesValid: true - }, - "radio": { - implicitRole: ["radio"], - //roleCondition: " with type=radio", - validRoles: ["menuitemradio"], - globalAriaAttributesValid: true - }, - "range": { - implicitRole: ["slider"], - //roleCondition: " with type=radio", - validRoles: null, - globalAriaAttributesValid: true - }, - "reset": { - implicitRole: ["button"], - //roleCondition: " with type=reset", - validRoles: null, - globalAriaAttributesValid: true - }, - "search-no-list": { - implicitRole: ["searchbox"], - //roleCondition: " with type=search and no list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "search-with-list": { - implicitRole: ["combobox"], - //roleCondition: " with type=search and a list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "submit": { - implicitRole: ["button"], - //roleCondition: " with type=submit", - validRoles: null, - globalAriaAttributesValid: true - }, - "tel-no-list": { - implicitRole: ["textbox"], - //roleCondition: " with type=tel and no list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "tel-with-list": { - implicitRole: ["combobox"], - //roleCondition: " with type=tel and a list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "text-no-list": { - implicitRole: ["textbox"], - //roleCondition: " with type=text and no list attribute is present", - validRoles: ["combobox", "searchbox", "spinbutton"], - globalAriaAttributesValid: true - }, - "text-with-list": { - implicitRole: ["combobox"], - //roleCondition: " with type=text and a list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "time": { - implicitRole: null, - //roleCondition: " with type=time", - validRoles: null, - globalAriaAttributesValid: true - }, - "url-no-list": { - implicitRole: ["textbox"], - //roleCondition: " with type=url and no list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "url-with-list": { - implicitRole: ["combobox"], - //roleCondition: " with type=url and a list attribute is present", - validRoles: null, - globalAriaAttributesValid: true - }, - "week": { - implicitRole: null, - //roleCondition: " with type=week", - validRoles: null, - globalAriaAttributesValid: true - }, - "default": { - implicitRole: null, - //roleCondition: "", - validRoles: null, - globalAriaAttributesValid: true - } - }, - "section": { - "with-name": { - implicitRole: ["region"], - //roleCondition: " when accessible name is present", - validRoles: ["alert", "alertdialog", "application", "banner", "complementary", "contentinfo", "dialog", "doc-abstract", "doc-acknowledgments", "doc-afterword", "doc-appendix", "doc-bibliography", "doc-chapter", "doc-colophon", "doc-conclusion", "doc-credit", "doc-credits", "doc-dedication", "doc-endnotes", "doc-epigraph", "doc-epilogue", "doc-errata", "doc-example", "doc-foreword", "doc-glossary", "doc-index", "doc-introduction", "doc-notice", "doc-pagelist", "doc-part", "doc-preface", "doc-prologue", "doc-pullquote", "doc-qna", "doc-toc", "document", "feed", "log", "main", "marquee", "navigation", "none", "note", "presentation", "search", "status", "tabpanel"], - globalAriaAttributesValid: true - }, - "without-name": { - implicitRole: null, - //roleCondition: " when accessible name is not present", - validRoles: ["alert", "alertdialog", "application", "banner", "complementary", "contentinfo", "dialog", "doc-abstract", "doc-acknowledgments", "doc-afterword", "doc-appendix", "doc-bibliography", "doc-chapter", "doc-colophon", "doc-conclusion", "doc-credit", "doc-credits", "doc-dedication", "doc-endnotes", "doc-epigraph", "doc-epilogue", "doc-errata", "doc-example", "doc-foreword", "doc-glossary", "doc-index", "doc-introduction", "doc-notice", "doc-pagelist", "doc-part", "doc-preface", "doc-prologue", "doc-pullquote", "doc-qna", "doc-toc", "document", "feed", "log", "main", "marquee", "navigation", "none", "note", "presentation", "search", "status", "tabpanel"], - globalAriaAttributesValid: true - } - }, - "select": { - "no-multiple-attr-size-gt1": { - //roleCondition: " with a multiple attribute or a size attribute having value greater than 1" - implicitRole: ["combobox"], - validRoles: ["menu"], - globalAriaAttributesValid: true - }, - "multiple-attr-size-gt1": { - //roleCondition: " with no multiple attribute and no size attribute having value greater than 1" - implicitRole: ["listbox"], - validRoles: null, - globalAriaAttributesValid: true - } - }, - "td": { - "des-table": { - implicitRole: ["cell"], - validRoles: null, - globalAriaAttributesValid: true - }, - "des-grid": { - implicitRole: ["gridcell"], - validRoles: null, - globalAriaAttributesValid: true - }, - "des-other": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - } - }, - "th": { - "des-table": { - implicitRole: ["columnheader", "rowheader", "cell"], - validRoles: null, - globalAriaAttributesValid: true - }, - "des-grid": { - implicitRole: ["columnheader", "rowheader", "gridcell"], - validRoles: null, - globalAriaAttributesValid: true - }, - "des-other": { - implicitRole: null, - validRoles: ["any"], - globalAriaAttributesValid: true - } - }, - "tr": { - "des-table": { - implicitRole: ["row"], - validRoles: null, - globalAriaAttributesValid: true - }, - "des-grid": { - implicitRole: ["row"], - validRoles: null, - globalAriaAttributesValid: true - }, - "des-other": { - implicitRole: ["row"], - validRoles: ["any"], - globalAriaAttributesValid: true - } - }, - "default": { - implicitRole: null, - //roleCondition: "", - validRoles: ["any"], - globalAriaAttributesValid: true - } - }; // end of documentConformanceRequirementSpecialTags - ARIADefinitions.containers = []; - return ARIADefinitions; -}()); -exports.ARIADefinitions = ARIADefinitions; -; -var containerArray = []; -for (var roleDesign in ARIADefinitions.designPatterns) { - var containers = ARIADefinitions.designPatterns[roleDesign].container; - if (containers !== null) { - for (var _i = 0, containers_1 = containers; _i < containers_1.length; _i++) { - var container = containers_1[_i]; - if (containerArray.indexOf(container) == -1) { - containerArray.push(container); - } - } - } -} -ARIADefinitions.containers = containerArray; - - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DOMWalker = void 0; -var DOMUtil_1 = __webpack_require__(2); -var DOMWalker = /** @class */ (function () { - function DOMWalker(element, bEnd, root) { - this.root = root || element; - this.node = element; - this.bEndTag = (bEnd == undefined ? false : bEnd == true); - } - DOMWalker.prototype.atRoot = function () { - if (this.ownerElement) - return false; - if (this.root === this.node) { - return true; - } - else if (this.root.isSameNode) { - return this.root.isSameNode(this.node); - } - else if (this.root.compareDocumentPosition) { - return this.root.compareDocumentPosition(this.node) === 0; - } - else { - // Not supported in this environment - try our best - return this.node.parentNode === null; - } - }; - DOMWalker.prototype.nextNode = function () { - do { - if (!this.bEndTag) { - var iframeNode = this.node; - var elementNode = this.node; - var slotElement = this.node; - if (this.node.nodeType === 1 /* Node.ELEMENT_NODE */ - && this.node.nodeName.toUpperCase() === "IFRAME" - && DOMUtil_1.DOMUtil.isNodeVisible(iframeNode) - && iframeNode.contentDocument - && iframeNode.contentDocument.documentElement) { - var ownerElement = this.node; - this.node = iframeNode.contentDocument.documentElement; - this.node.ownerElement = ownerElement; - } - else if (this.node.nodeType === 1 /* Node.ELEMENT_NODE */ - && DOMUtil_1.DOMUtil.isNodeVisible(elementNode) - && elementNode.shadowRoot - && elementNode.shadowRoot.firstChild) { - var ownerElement = this.node; - this.node = elementNode.shadowRoot; - this.node.ownerElement = ownerElement; - } - else if (this.node.nodeType === 1 - && elementNode.nodeName.toLowerCase() === "slot" - && slotElement.assignedNodes().length > 0) { - var slotOwner = this.node; - this.node = slotElement.assignedNodes()[0]; - this.node.slotOwner = slotOwner; - } - else if ((this.node.nodeType === 1 /* Node.ELEMENT_NODE */ || this.node.nodeType === 11) /* Node.ELEMENT_NODE */ && this.node.firstChild) { - this.node = this.node.firstChild; - } - else { - this.bEndTag = true; - } - } - else { - if (this.atRoot()) { - return false; - } - else if (this.node.nextSibling) { - this.node = this.node.nextSibling; - this.bEndTag = false; - } - else if (this.node.ownerElement) { - this.node = this.node.ownerElement; - this.bEndTag = true; - } - else if (this.node.slotOwner) { - if (this.node.nodeType !== 1 || !this.node.hasAttribute("slot")) { - // If this wasn't a named slot, look for the next unnamed node to put in the slot - var n = this.node.nextSibling; - while (n && this.node.nodeType === 1 && this.node.hasAttribute("slot")) { - n = this.node.nextSibling; - } - if (n) { - // We found another unnamed slot - var slotOwner = this.node.slotOwner; - this.node = n; - this.node.slotOwner = slotOwner; - this.bEndTag = false; - } - else { - this.node = this.node.slotOwner; - this.bEndTag = true; - } - } - else { - this.node = this.node.slotOwner; - this.bEndTag = true; - } - } - else if (this.node.parentNode) { - this.node = this.node.parentNode; - this.bEndTag = true; - } - else { - return false; - } - } - } while ((this.node.nodeType !== 1 /* Node.ELEMENT_NODE */ && this.node.nodeType !== 11 && this.node.nodeType !== 3 /* Node.TEXT_NODE */) - || (this.node.nodeType === 1 && this.node.getAttribute("aChecker") === "ACE")); - return true; - }; - DOMWalker.prototype.prevNode = function () { - do { - if (this.bEndTag) { - var iframeNode = this.node; - var elementNode = this.node; - if (this.node.nodeType === 1 /* Node.ELEMENT_NODE */ - && this.node.nodeName.toUpperCase() === "IFRAME" - && DOMUtil_1.DOMUtil.isNodeVisible(iframeNode) - && iframeNode.contentDocument - && iframeNode.contentDocument.documentElement) { - var ownerElement = this.node; - this.node = iframeNode.contentDocument.documentElement; - this.node.ownerElement = ownerElement; - } - else if (this.node.nodeType === 1 /* Node.ELEMENT_NODE */ - && DOMUtil_1.DOMUtil.isNodeVisible(elementNode) - && elementNode.shadowRoot - && elementNode.shadowRoot.lastChild) { - var ownerElement = this.node; - this.node = elementNode.shadowRoot; - this.node.ownerElement = ownerElement; - } - else if ((this.node.nodeType === 1 /* Node.ELEMENT_NODE */ || this.node.nodeType === 11) && this.node.lastChild) { - this.node = this.node.lastChild; - } - else { - this.bEndTag = false; - } - } - else { - if (this.atRoot()) { - return false; - } - else if (this.node.previousSibling) { - this.node = this.node.previousSibling; - this.bEndTag = true; - } - else if (this.node.ownerElement) { - this.node = this.node.ownerElement; - this.bEndTag = false; - } - else if (this.node.parentNode) { - this.node = this.node.parentNode; - this.bEndTag = false; - } - else { - return false; - } - } - } while ((this.node.nodeType !== 1 /* Node.ELEMENT_NODE */ && this.node.nodeType !== 11) - || (this.node.nodeType === 1 && this.node.getAttribute("aChecker") === "ACE")); - return true; - }; - return DOMWalker; -}()); -exports.DOMWalker = DOMWalker; - - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Config = void 0; -var Config = /** @class */ (function () { - function Config() { - } - Config.DEBUG = false; - Config.helpRoot = "https://able.ibm.com/rules/tools/help"; - return Config; -}()); -exports.Config = Config; - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CommonMapper = void 0; -var DOMUtil_1 = __webpack_require__(2); -var CommonMapper = /** @class */ (function () { - function CommonMapper() { - this.hierarchyRole = null; - this.hierarchyChildrenHaveRole = null; - this.hierarchyPath = null; - this.hierarchyResults = null; - } - CommonMapper.prototype.getBounds = function (node) { - return null; - }; - CommonMapper.prototype.reset = function (node) { - this.hierarchyRole = []; - this.hierarchyResults = []; - this.hierarchyChildrenHaveRole = []; - this.hierarchyPath = [{ - rolePath: "", - roleCount: {} - }]; - var ancestors = []; - var parent = DOMUtil_1.DOMUtil.parentNode(node); - while (parent && parent.nodeType != 9 /* Node.DOCUMENT_NODE */) { - ancestors.push(parent); - parent = DOMUtil_1.DOMUtil.parentNode(parent); - } - ancestors = ancestors.reverse(); - for (var _i = 0, ancestors_1 = ancestors; _i < ancestors_1.length; _i++) { - var ancestor = ancestors_1[_i]; - var siblings = []; - var sibling = ancestor.previousSibling; - while (sibling) { - siblings.push(sibling); - sibling = sibling.previousSibling; - } - siblings = siblings.reverse(); - for (var _a = 0, siblings_1 = siblings; _a < siblings_1.length; _a++) { - var sibling_1 = siblings_1[_a]; - this.pushHierarchy(sibling_1); - this.popHierarchy(); - } - this.pushHierarchy(ancestor); - } - }; - CommonMapper.prototype.pushHierarchy = function (node) { - var role; - var presentationalContainer = this.hierarchyChildrenHaveRole.length > 0 && !this.hierarchyChildrenHaveRole[this.hierarchyChildrenHaveRole.length - 1]; - if (presentationalContainer) { - role = "none"; - this.hierarchyChildrenHaveRole.push(false); - } - else { - role = this.getRole(node) || "none"; - this.hierarchyChildrenHaveRole.push(this.childrenHaveRole(node, role)); - } - this.hierarchyRole.push(role); - if (role !== "none") { - var parentPathInfo = this.hierarchyPath[this.hierarchyPath.length - 1]; - parentPathInfo.roleCount[role] = (parentPathInfo.roleCount[role] || 0) + 1; - this.hierarchyPath.push({ - "rolePath": parentPathInfo.rolePath + "/" + role + "[" + parentPathInfo.roleCount[role] + "]", - "roleCount": {} - }); - } - var attr = {}; - if (node.nodeType === 1) { - attr = this.getAttributes(node); - } - this.hierarchyResults.push({ - node: node, - namespace: this.getNamespace(), - role: role, - attributes: attr, - rolePath: this.hierarchyPath[this.hierarchyPath.length - 1].rolePath, - bounds: this.getBounds(node) - }); - }; - CommonMapper.prototype.popHierarchy = function () { - var role = this.hierarchyRole.pop(); - this.hierarchyChildrenHaveRole.pop(); - if (role !== "none") { - this.hierarchyPath.pop(); - } - this.hierarchyResults.pop(); - }; - CommonMapper.prototype.openScope = function (node) { - if (this.hierarchyRole === null) { - this.reset(node); - } - this.pushHierarchy(node); - return this.hierarchyResults; - }; - CommonMapper.prototype.closeScope = function (node) { - var retVal = []; - for (var _i = 0, _a = this.hierarchyResults; _i < _a.length; _i++) { - var res = _a[_i]; - // const temp = res.node; - // res.node = null; - // let cloned = JSON.parse(JSON.stringify(res)); - // cloned.node = res.node = temp; - // retVal.push(cloned); - retVal.push(res); - } - retVal[retVal.length - 1].role = "/" + retVal[retVal.length - 1].role; - this.popHierarchy(); - return retVal; - }; - return CommonMapper; -}()); -exports.CommonMapper = CommonMapper; - - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ARIAMapper = void 0; -var ARIADefinitions_1 = __webpack_require__(5); -var CommonMapper_1 = __webpack_require__(8); -var DOMUtil_1 = __webpack_require__(2); -var legacy_1 = __webpack_require__(1); -var fragment_1 = __webpack_require__(3); -var ARIAMapper = /** @class */ (function (_super) { - __extends(ARIAMapper, _super); - function ARIAMapper() { - return _super !== null && _super.apply(this, arguments) || this; - } - ARIAMapper.prototype.childrenHaveRole = function (node, role) { - // if (node.nodeType === 1 /* Node.ELEMENT_NODE */) { - // const elem = node as Element; - // if (elem.getAttribute("aria-hidden") === "true") { - // return false; - // } - // } - return !(role in ARIADefinitions_1.ARIADefinitions.designPatterns && ARIADefinitions_1.ARIADefinitions.designPatterns[role].presentationalChildren); - }; - ARIAMapper.prototype.getRole = function (node) { - var role = ARIAMapper.nodeToRole(node); - return role; - }; - ARIAMapper.prototype.getNamespace = function () { - return "aria"; - }; - ARIAMapper.prototype.getAttributes = function (node) { - var retVal = {}; - if (node.nodeType === 1 /* Node.ELEMENT_NODE */) { - var elem_1 = node; - for (var idx = 0; idx < elem_1.attributes.length; ++idx) { - var attrInfo = elem_1.attributes[idx]; - var name_1 = attrInfo.name.toLowerCase(); - if (name_1.startsWith("aria-")) { - retVal[name_1.substring(5)] = attrInfo.nodeValue; - } - } - var applyAttrRole = function (nodeName) { - if (!(nodeName in ARIAMapper.elemAttrValueCalculators)) - return; - for (var attr in ARIAMapper.elemAttrValueCalculators[nodeName]) { - if (!(attr in retVal)) { - var value = ARIAMapper.elemAttrValueCalculators[nodeName][attr]; - if (typeof value != "undefined" && value !== null) { - if (typeof value !== typeof "") { - value = value(elem_1); - } - retVal[attr] = value; - } - } - } - }; - applyAttrRole("global"); - applyAttrRole(node.nodeName.toLowerCase()); - } - else if (node.nodeType === 3 /* Node.TEXT_NODE */) { - for (var attr in ARIAMapper.textAttrValueCalculators) { - var val = ARIAMapper.textAttrValueCalculators[attr](node); - if (typeof val != "undefined" && val !== null) { - retVal[attr] = val; - } - } - } - return retVal; - }; - ARIAMapper.prototype.reset = function (node) { - ARIAMapper.nameComputationId = 0; - _super.prototype.reset.call(this, node); - }; - ARIAMapper.computeName = function (cur) { - ++ARIAMapper.nameComputationId; - return ARIAMapper.computeNameHelp(ARIAMapper.nameComputationId, cur, false, false); - }; - ARIAMapper.computeNameHelp = function (walkId, cur, labelledbyTraverse, walkTraverse) { - // 2g. None of the other content applies to text nodes, so just do this first - if (cur.nodeType === 3 /* Node.TEXT_NODE */) - return cur.nodeValue; - if (cur.nodeType === 11) - return ""; - if (cur.nodeType !== 1 /* Node.ELEMENT_NODE */) { - if (walkTraverse || labelledbyTraverse) - return ""; - throw new Error("Can only compute name on Element and Text" + cur.nodeType); - } - var elem = cur; - // We've been here before - prevent recursion - if (legacy_1.RPTUtil.getCache(elem, "data-namewalk", null) === "" + walkId) - return ""; - legacy_1.RPTUtil.setCache(elem, "data-namewalk", "" + walkId); - // See https://www.w3.org/TR/html-aam-1.0/#input-type-text-input-type-password-input-type-search-input-type-tel-input-type-url-and-textarea-element - // 2a. Only show hidden content if it's referenced by a labelledby - if (!labelledbyTraverse && !DOMUtil_1.DOMUtil.isNodeVisible(cur)) { - return ""; - } - // 2b. collect valid id references - if (!labelledbyTraverse && elem.hasAttribute("aria-labelledby")) { - var labelledby = elem.getAttribute("aria-labelledby").split(" "); - var validElems = []; - for (var _i = 0, labelledby_1 = labelledby; _i < labelledby_1.length; _i++) { - var ref = labelledby_1[_i]; - var refElem = fragment_1.FragmentUtil.getById(cur, ref); - if (refElem) { - validElems.push(refElem); - } - } - if (validElems.length > 0) { - var accumulated = ""; - for (var _a = 0, validElems_1 = validElems; _a < validElems_1.length; _a++) { - var elem_2 = validElems_1[_a]; - accumulated += " " + this.computeNameHelp(walkId, elem_2, true, false); - } - return accumulated.trim(); - } - } - // 2c. If label or walk, and this is a control, skip to the value, otherwise provide the label - var role = ARIAMapper.nodeToRole(cur); - var isEmbeddedControl = [ - "textbox", "button", "combobox", "listbox", - "progressbar", "scrollbar", "slider", "spinbutton" - ].includes(role); - if (elem.hasAttribute("aria-label") && elem.getAttribute("aria-label").trim().length > 0) { - // If I'm not an embedded control or I'm not recursing, return the aria-label - if (!labelledbyTraverse && !walkTraverse || !isEmbeddedControl) { - return elem.getAttribute("aria-label").trim(); - } - } - // 2d. - if (role !== "presentation" && role !== "none") { - if ((cur.nodeName.toLowerCase() === "img" || cur.nodeName.toLowerCase() === "area") && elem.hasAttribute("alt")) { - return DOMUtil_1.DOMUtil.cleanWhitespace(elem.getAttribute("alt")).trim(); - } - if (cur.nodeName.toLowerCase() === "input" && elem.hasAttribute("id") && elem.getAttribute("id").length > 0) { - var label = elem.ownerDocument.querySelector("label[for='" + elem.getAttribute("id") + "']"); - if (label) { - return this.computeNameHelp(walkId, label, false, false); - } - } - } - // 2e. - if ((walkTraverse || labelledbyTraverse) && isEmbeddedControl) { - // If the embedded control has role textbox, return its value. - if (role === "textbox") { - if (elem.nodeName.toLowerCase() === "input") { - if (elem.hasAttribute("value")) - return elem.getAttribute("value"); - } - else { - walkTraverse = false; - } - } - // If the embedded control has role button, return the text alternative of the button. - if (role === "button") { - if (elem.nodeName.toLowerCase() === "input") { - var type = elem.getAttribute("type").toLowerCase(); - if (["button", "submit", "reset"].includes(type)) { - if (elem.hasAttribute("value")) - return elem.getAttribute("value"); - if (type === "submit") - return "Submit"; - if (type === "reset") - return "Reset"; - } - } - else { - walkTraverse = false; - } - } - // TODO: If the embedded control has role combobox or listbox, return the text alternative of the chosen option. - if (role === "combobox") { - if (elem.hasAttribute("aria-activedescendant")) { - var selected = fragment_1.FragmentUtil.getById(elem, "aria-activedescendant"); - if (selected) { - return ARIAMapper.computeNameHelp(walkId, selected, false, false); - } - } - } - // If the embedded control has role range (e.g., a spinbutton or slider): - if (["progressbar", "scrollbar", "slider", "spinbutton"].includes(role)) { - // If the aria-valuetext property is present, return its value, - if (elem.hasAttribute("aria-valuetext")) - return elem.getAttribute("aria-valuetext"); - // Otherwise, if the aria-valuenow property is present, return its value, - if (elem.hasAttribute("aria-valuenow")) - return elem.getAttribute("aria-valuenow"); - // TODO: Otherwise, use the value as specified by a host language attribute. - } - } - // 2f. 2h. - if (walkTraverse || ARIADefinitions_1.ARIADefinitions.nameFromContent(role) || labelledbyTraverse) { - // 2fi. Set the accumulated text to the empty string. - var accumulated = ""; - // 2fii. Check for CSS generated textual content associated with the current node and - // include it in the accumulated text. The CSS :before and :after pseudo elements [CSS2] - // can provide textual content for elements that have a content model. - // For :before pseudo elements, User agents MUST prepend CSS textual content, without - // a space, to the textual content of the current node. - // For :after pseudo elements, User agents MUST append CSS textual content, without a - // space, to the textual content of the current node. - var before = null; - before = elem.ownerDocument.defaultView.getComputedStyle(elem, "before").content; - if (before && before !== "none") { - before = before.replace(/^"/, "").replace(/"$/, ""); - accumulated += before; - } - // 2fiii. For each child node of the current node: - // Set the current node to the child node. - // Compute the text alternative of the current node beginning with step 2. Set the result - // to that text alternative. - // Append the result to the accumulated text. - var walkChild = elem.firstChild; - while (walkChild) { - accumulated += " " + ARIAMapper.computeNameHelp(walkId, walkChild, labelledbyTraverse, true); - walkChild = walkChild.nextSibling; - } - var after = null; - try { - after = elem.ownerDocument.defaultView.getComputedStyle(elem, "after").content; - } - catch (e) { } - if (after && after !== "none") { - after = after.replace(/^"/, "").replace(/"$/, ""); - accumulated += after; - } - // 2fiv. Return the accumulated text. - accumulated = accumulated.replace(/\s+/g, " ").trim(); - if (accumulated.trim().length > 0) { - return accumulated; - } - } - // 2i. Otherwise, if the current node has a Tooltip attribute, return its value. - if (elem.hasAttribute("title")) { - return elem.getAttribute("title"); - } - if (elem.tagName.toLowerCase() === "svg") { - var title = elem.querySelector("title"); - if (title) { - return title.textContent || title.innerText; - } - } - return ""; - }; - /* if (role in ARIADefinitions.designPatterns - && ARIADefinitions.designPatterns[role].nameFrom - && ARIADefinitions.designPatterns[role].nameFrom.includes("contents")) - { - name = elem.textContent; - } - if (elem.nodeName.toLowerCase() === "input" && elem.hasAttribute("id") && elem.getAttribute("id").trim().length > 0) { - name = elem.ownerDocument.querySelector("label[for='"+elem.getAttribute("id").trim()+"']").textContent; - } - if (elem.hasAttribute("aria-label")) { - name = elem.getAttribute("aria-label"); - } - if (elem.hasAttribute("aria-labelledby")) { - name = ""; - const ids = elem.getAttribute("aria-labelledby").split(" "); - for (const id of ids) { - name += FragmentUtil.getById(elem, id).textContent + " "; - } - name = name.trim(); - } - return name; - }*/ - ARIAMapper.nodeToRole = function (node) { - if (node.nodeType === 3 /* Node.TEXT_NODE */) { - return "text"; - } - else if (node.nodeType !== 1 /* Node.ELEMENT_NODE */) { - return null; - } - var elem = node; - if (!elem || elem.nodeType !== 1 /* Node.ELEMENT_NODE */) { - return null; - } - if (elem.hasAttribute("role") && elem.getAttribute("role").trim().length > 0) { - var roleStr = elem.getAttribute("role").trim(); - var roles = roleStr.split(" "); - for (var _i = 0, roles_1 = roles; _i < roles_1.length; _i++) { - var role = roles_1[_i]; - if (role === "presentation" || role === "none") { - // If element is focusable, then presentation roles are to be ignored - if (!legacy_1.RPTUtil.isFocusable(elem)) { - return null; - } - } - else if (role in ARIADefinitions_1.ARIADefinitions.designPatterns) { - return role; - } - } - } - return this.elemToImplicitRole(elem); - }; - ARIAMapper.elemToImplicitRole = function (elem) { - var nodeName = elem.nodeName.toLowerCase(); - if (!(nodeName in ARIAMapper.elemToRoleMap)) { - return null; - } - var role = ARIAMapper.elemToRoleMap[nodeName]; - if (typeof role === "string") { - return role; - } - else if (typeof role === "function") { - return role(elem); - } - else { - return null; - } - }; - ARIAMapper.hasParentRole = function (element, role) { - var parent = DOMUtil_1.DOMUtil.parentNode(element); - // If link is in a menu, it's a menuitem - while (parent) { - if (ARIAMapper.nodeToRole(parent) === role) - return true; - parent = DOMUtil_1.DOMUtil.parentNode(parent); - } - return false; - }; - ARIAMapper.inputToRole = function (element) { - if (!element) { - return null; - } - var eType = "text"; - if (element.hasAttribute("type") && element.getAttribute("type").toLowerCase().trim().length > 0) { - eType = element.getAttribute("type").toLowerCase().trim(); - } - if (!(eType in ARIAMapper.inputToRoleMap)) { - return null; - } - var role = ARIAMapper.inputToRoleMap[eType]; - if (typeof role === "string") { - return role; - } - else if (typeof role === "function") { - return role(element); - } - else { - return null; - } - }; - //////////////////////////////////////////////////////////////////////////// - // Helper functions - //// - // https://www.w3.org/TR/html-aam-1.0/#mapping-html-to-accessibility-apis - ARIAMapper.elemAttrValueCalculators = { - "global": { - "name": ARIAMapper.computeName - }, - "datalist": { - // set to "true" if the datalist's selection model allows multiple option elements to be - // selected at a time, and "false" otherwise - "multiselectable": function (elem) { - var id = elem.getAttribute("id"); - if (id && id.length > 0) { - var input = elem.ownerDocument.querySelector("input[list='" + id + "']"); - return "" + (elem.getAttribute("multiple") - && (elem.getAttribute("multiple") == "true" || elem.getAttribute("multiple") == "")); - } - return null; - } - }, - "h1": { - "level": "1" - }, - "h2": { - "level": "2" - }, - "h3": { - "level": "3" - }, - "h4": { - "level": "4" - }, - "h5": { - "level": "5" - }, - "h6": { - "level": "6" - }, - "input": { - // - type="checkbox" state set to "mixed" if the element's indeterminate IDL attribute - // is true, or "true" if the element's checkedness is true, or "false" otherwise - // - type="radio" state set to "true" if the element's checkedness is true, or "false" - // otherwise. - "checked": function (elem) { - if (elem.getAttribute("type") === "checkbox" || elem.getAttribute("type") === "radio") { - return "" + elem.checked; - } - return null; - } - // - type="radio" and not in menu reflecting number of type=radio input elements - // within the radio button group - , - "setsize": function (elem) { return null; throw new Error("NOT IMPLEMENTED"); } - // - type="radio" and not in menu value reflecting the elements position - // within the radio button group." - , - "posinset": function (elem) { return null; throw new Error("NOT IMPLEMENTED"); } - // input (type attribute in the Text, Search, Telephone, URL, or E-mail states with a - // suggestions source element) combobox role, with the aria-owns property set to the same - // value as the list attribute - , - "owns": function (elem) { return null; throw new Error("NOT IMPLEMENTED"); } - }, - "keygen": { - "multiselectable": "false" - }, - "li": { - // Number of li elements within the ol, ul, menu - "setsize": function (elem) { - var parent = DOMUtil_1.DOMUtil.getAncestor(elem, ["ol", "ul", "menu"]); - if (!parent) - return null; - var lis = parent.querySelectorAll("li"); - var otherlis = parent.querySelectorAll("ol li, ul li, menu li"); - return "" + (lis.length - otherlis.length); - } - // Position of li element within the ol, ul, menu - , - "posinset": function (elem) { - var parent = DOMUtil_1.DOMUtil.getAncestor(elem, ["ol", "ul", "menu"]); - if (!parent) - return null; - var lis = parent.querySelectorAll("li"); - var num = 0; - for (var idx = 0; idx < lis.length; ++idx) { - var li = lis[idx]; - if (DOMUtil_1.DOMUtil.sameNode(parent, DOMUtil_1.DOMUtil.getAncestor(li, ["ol", "ul", "menu"]))) { - return "" + num; - } - ++num; - } - return null; - } - }, - "menuitem": { - // type = checkbox or radio, set to "true" if the checked attribute - // is present, and "false" otherwise - "checked": function (elem) { return "" + !!(elem.getAttribute("checked") - && (elem.getAttribute("checked") == "true" || elem.getAttribute("checked") == "")); } - }, - "option": { - // set to "true" if the element's selectedness is true, or "false" otherwise. - "selected": function (elem) { return "" + !!(elem.getAttribute("selected") - && (elem.getAttribute("selected") == "true" || elem.getAttribute("selected") == "")); } - }, - "progress": { - "valuemax": function (elem) { return elem.getAttribute("max") || "1"; }, - "valuemin": function (elem) { return "0"; }, - "valuenow": function (elem) { return elem.getAttribute("value"); } - } - }; - ARIAMapper.textAttrValueCalculators = { - "name": function (node) { return node.nodeValue; } - }; - ARIAMapper.nameComputationId = 0; - ARIAMapper.inputToRoleMap = (function () { - var menuButtonCheck = function (element) { - return ARIAMapper.hasParentRole(element, "menu") ? "menuitem" : "button"; - }; - var textSuggestions = function (element) { - if (element.hasAttribute("list")) { - var id = element.getAttribute("list"); - var idRef = fragment_1.FragmentUtil.getById(element, id); - if (idRef && idRef.nodeName.toLowerCase() === "datalist") { - return "combobox"; - } - } - return "textbox"; - }; - return { - "button": menuButtonCheck, - "image": menuButtonCheck, - "checkbox": function (element) { - return ARIAMapper.hasParentRole(element, "menu") ? "menuitemcheckbox" : "checkbox"; - }, - "radio": function (element) { - return ARIAMapper.hasParentRole(element, "menu") ? "menuitemradio" : "radio"; - }, - "email": textSuggestions, - "search": textSuggestions, - "tel": textSuggestions, - "text": textSuggestions, - "url": textSuggestions, - "password": "textbox", - "number": "spinbutton", - "range": "slider", - "reset": "button", - "submit": "button" - }; - })(); - ARIAMapper.elemToRoleMap = (function () { - var sectioningRoots = { - "blockquote": true, - "body": true, - "details": true, - "dialog": true, - "fieldset": true, - "figure": true, - "td": true - }; - var sectioningContent = { - "article": true, - "aside": true, - "nav": true, - "section": true - }; - var inputToRole = function (element) { - return ARIAMapper.inputToRole(element); - }; - return { - "a": function (element) { - // If it doesn't represent a hyperlink, no corresponding role - if (!element.hasAttribute("href")) - return null; - // If link is in a menu, it's a menuitem, otherwise it's a link - return ARIAMapper.hasParentRole(element, "menu") ? "menuitem" : "link"; - }, - "area": function (element) { - // If it doesn't represent a hyperlink, no corresponding role - if (!element.hasAttribute("href")) - return null; - return "link"; - }, - "article": "article", - "aside": "complementary", - "body": "document", - "button": "button", - "datalist": "listbox", - "dd": "definition", - "details": "group", - "dialog": "dialog", - "footer": function (element) { - var parent = DOMUtil_1.DOMUtil.parentNode(element); - var nodeName = parent.nodeName.toLowerCase(); - // If nearest sectioningRoot or sectioningContent is body - while (parent) { - if (sectioningRoots[nodeName] || sectioningContent[nodeName]) { - return (nodeName === "body") ? "contentinfo" : null; - } - parent = DOMUtil_1.DOMUtil.parentNode(parent); - nodeName = parent.nodeName.toLowerCase(); - } - return null; - }, - "form": "form", - "h1": "heading", - "h2": "heading", - "h3": "heading", - "h4": "heading", - "h5": "heading", - "h6": "heading", - "header": function (element) { - var parent = DOMUtil_1.DOMUtil.parentNode(element); - // If nearest sectioningRoot or sectioningContent is body - while (parent && parent.nodeType === 1) { - var nodeName = parent.nodeName.toLowerCase(); - if (sectioningRoots[nodeName] || sectioningContent[nodeName]) { - return (nodeName === "body") ? "banner" : null; - } - parent = DOMUtil_1.DOMUtil.parentNode(parent); - } - return null; - }, - "hr": "separator", - "img": function (element) { - if (element.hasAttribute("alt") && element.getAttribute("alt").length === 0) { - return "presentation"; - } - else { - return "img"; - } - }, - "input": inputToRole, - "keygen": "listbox", - "li": "listitem", - "main": "main", - "math": "math", - "menu": function (element) { - if (!element.hasAttribute("type")) - return null; - var eType = element.getAttribute("type").toLowerCase(); - if (eType === "context") - return "menu"; - if (eType === "toolbar") - return "toolbar"; - return null; - }, - "menuitem": function (element) { - // Default type is command - if (!element.hasAttribute("type")) - return "menuitem"; - var eType = element.getAttribute("type").toLowerCase(); - if (eType.trim().length == 0) - return "menuitem"; - if (eType === "command") - return "menuitem"; - if (eType === "checkbox") - return "menuitemcheckbox"; - if (eType === "radio") - return "menuitemradio"; - return null; - }, - "meter": "progressbar", - "nav": "navigation", - "ol": "list", - "optgroup": "group", - "option": "option", - "output": "status", - "progress": "progressbar", - "section": "region", - "select": function (element) { - if (element.hasAttribute("multiple") || (element.hasAttribute("size") && parseInt(element.getAttribute("size")) > 1)) { - return "listbox"; - } - else { - return "combobox"; - } - }, - "table": "table", - "textarea": "textbox", - "tbody": "rowgroup", - "td": function (element) { - var parent = DOMUtil_1.DOMUtil.parentNode(element); - while (parent) { - var role = ARIAMapper.nodeToRole(parent); - if (role === "table") - return "cell"; - if (role === "grid") - return "gridcell"; - parent = DOMUtil_1.DOMUtil.parentNode(parent); - } - return null; - }, - "th": function (element) { - /** https://www.w3.org/TR/html5/tabular-data.html#header-and-data-cell-semantics - * A header cell anchored at the slot with coordinate (x, y) with width width and height height is - * said to be a column header if any of the following conditions are true: - * * The cell's scope attribute is in the column state, or - * * The cell's scope attribute is in the auto state, and there are no data cells in any of - * the cells covering slots with y-coordinates y .. y+height-1. - * A header cell anchored at the slot with coordinate (x, y) with width width and height height is - * said to be a row header if any of the following conditions are true: - * * The cell's scope attribute is in the row state, or - * * The cell's scope attribute is in the auto state, the cell is not a column header, and there are - * no data cells in any of the cells covering slots with x-coordinates x .. x+width-1. - */ - // Note: auto is default scope - // Easiest answer is if scope is specified - if (element.hasAttribute("scope")) { - var scope = element.getAttribute("scope").toLowerCase(); - if (scope === "row") - return "rowheader"; - if (scope === "col") - return "columnheader"; - } - // We don't have a scope.. figure out if we might be a column or data header - if (!element.hasAttribute("scope") || element.getAttribute("scope").toLowerCase() === "auto") { - // TODO: We need to generate the full table. We should do this once on the table as part of the engine - // and re-use it in the rules. We are already doing this in the table rules, but should formalize it better - // and move it into the engine. - } - // We're a cell - determine if we're a table cell or a grid cell - var parent = DOMUtil_1.DOMUtil.parentNode(element); - while (parent) { - var role = ARIAMapper.nodeToRole(parent); - if (role === "table") - return "cell"; - if (role === "grid") - return "gridcell"; - parent = DOMUtil_1.DOMUtil.parentNode(parent); - } - return null; - }, - "tfoot": "rowgroup", - "thead": "rowgroup", - "tr": "row", - "ul": "list" - }; - })(); - return ARIAMapper; -}(CommonMapper_1.CommonMapper)); -exports.ARIAMapper = ARIAMapper; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AncestorUtil = void 0; -var AncestorUtil = /** @class */ (function () { - function AncestorUtil() { - } - AncestorUtil.isPresentationFrame = function (contextHierarchy) { - if (contextHierarchy && contextHierarchy.dom) { - // Skip current node because we want ancestry - for (var idx = contextHierarchy.dom.length - 2; idx >= 0; --idx) { - var elem = contextHierarchy.dom[idx].node; - if (elem.nodeType === 1 - && elem.nodeName.toLowerCase() === "iframe" - && (elem.getAttribute("role") === "presentation" || elem.getAttribute("aria-hidden") === "true")) { - return true; - } - } - } - return false; - }; - AncestorUtil.isFrame = function (contextHierarchy) { - if (contextHierarchy && contextHierarchy.dom) { - // Skip current node because we want ancestry - for (var idx = contextHierarchy.dom.length - 2; idx >= 0; --idx) { - var elem = contextHierarchy.dom[idx].node; - if (elem.nodeType === 1 && elem.nodeName.toLowerCase() === "iframe") { - return true; - } - } - } - return false; - }; - return AncestorUtil; -}()); -exports.AncestorUtil = AncestorUtil; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -/****************************************************************************** - Copyright:: 2020- IBM, Inc - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - *****************************************************************************/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Context = exports.PartInfo = exports.AttrInfo = void 0; -// Context that will cause this rule to execute. -// Context syntax: -// Triggers: -// aria:role - Triggers on element with ARIA role role -// aria:role[attribute] - Triggers on elements with the equivalent logical -// aria- attribute (e.g., button[disabled] will trigger on -//