@unifylib/ui-lib 1.1.24 → 1.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,4 +55,4 @@ export class FieldInfo {
55
55
  this.showSearchIcon = fieldInfo.showSearchIcon;
56
56
  }
57
57
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2Jhc2UtbW9kZWwvZmllbGQtaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sU0FBUztJQW9EcEIsWUFBWSxTQUFvQjtRQW5EOUIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixtQkFBYyxHQUFZLEVBQUUsQ0FBQztRQUU3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFNBQUksR0FBMlcsTUFBTSxDQUFDO1FBRXRYLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0IsVUFBSyxHQUFZLEVBQUUsQ0FBQztRQWlCcEIsY0FBUyxHQUFhLEtBQUssQ0FBQztRQUc1QixZQUFPLEdBQWEsSUFBSSxDQUFDO1FBd0JyQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQzVGLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJ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SUFDckQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtWYWxpZGF0b3JGbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi9maWx0ZXIubW9kZWxcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWVsZEluZm8ge1xyXG4gICAgcHJvcGVydHk6IHN0cmluZyA9IFwiXCI7XHJcbiAgICB0YXJnZXRQcm9wZXJ0eT86IHN0cmluZyA9IFwiXCI7XHJcbiAgICByb3c6IG51bWJlcjtcclxuICAgIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB0eXBlOiAndGV4dCcgfCAnYW1vdW50JyB8J2NvbG9yLXBpY2tlcicgfCAnY3VycmVuY3knIHwgJ2RhdGUnIHwgJ251bWJlcicgfCAnc2VxdWVuY2UnIHwgJ2xpc3QnIHwnbG9va3VwJ3wgJ211bHRpLXNlbGVjdCcgfCAncGFzc3dvcmQnfCAncmljaC10ZXh0J3wncmFkaW8tYnV0dG9uJ3wgJ3Bob25lLW51bWJlcid8ICdpYmFuLXRleHQnfCdjaGVja2JveCcgfCd0ZXh0YXJlYScgfCdidXR0b24nfCdzcGFjZXInIHwgJ2F0dGFjaG1lbnQnfCAnc2VjdGlvbi10aXRsZSd8ICdjaGlwLWxpc3QnIHwndGltZScgfCAnZGl2aWRlcicgfCAnaHlwZXItdGV4dCcgfCdzdGF0ZVR5cGUnfCdzdGF0dXMnIHwgJ3llYXInIHwgJ2VxdWF0aW9uLWJ1aWxkZXInID0gJ3RleHQnO1xyXG4gICAgdGV4dEZvcm1hdD86ICdqc29uJztcclxuICAgIHJlYWRvbmx5PzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgdmlld29ubHk/OiBib29sZWFuIDtcclxuICAgIGxhYmVsPzogc3RyaW5nID0gJyc7XHJcbiAgICBjdXJyZW5jeT86IHN0cmluZztcclxuICAgIGxvb2t1cEFwaVBhdGg/OiBzdHJpbmc7XHJcbiAgICBtdWx0aT86Ym9vbGVhbjtcclxuICAgIHN1cHBvcnRlZFR5cGVzPzpzdHJpbmc7XHJcbiAgICBjYXNjYWRlZEJ5Pzogc3RyaW5nO1xyXG4gICAgY2FzY2FkZWRCeVByb3BlcnR5Pzogc3RyaW5nO1xyXG4gICAgcGF0aFBhcmFtcz86IHN0cmluZztcclxuICAgIGxpc3RPcHRpb25zPzogYW55W107XHJcbiAgICBvcGVyYXRvcnM/OiBhbnlbXTtcclxuICAgIGZpZWxkc0FwaT86IHN0cmluZztcclxuICAgIHJlcG9ydEZpbHRlcj86c3RyaW5nO1xyXG4gICAgdXBkYXRlT25seT86IGJvb2xlYW47XHJcbiAgICBmaWVsZFNpemUgPzogbnVtYmVyICA7XHJcbiAgICBpbmNsdWRlQWxsT3B0aW9uPzogYm9vbGVhbjtcclxuICAgIGRlZmF1bHRMaXN0T3B0aW9uPzogYW55O1xyXG4gICAgYWNjZXB0TmV3SXRlbT86IGJvb2xlYW47XHJcbiAgICB0cmFuc2xhdGU/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yRm5bXTtcclxuICAgIHBsYWNlaG9sZGVyPzogYW55O1xyXG4gICAgdmlzaWJsZT86IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcGF0dGVybj86IHN0cmluZztcclxuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICAgIGFkdmFuY2VkRmlsdGVyPzogYm9vbGVhbjtcclxuICAgIGZpbHRlck9wZXJhdG9yPzogJ0dSRUFURVJfVEhBTl9FUVVBTCd8J0dSRUFURVJfVEhBTid8ICdMRVNTX1RIQU4nfCdMRVNTX1RIQU5fRVFVQUwnfCAnRVFVQUxTJ3wgJ0xJS0UnfCAnTk9UX0VRJ3wgJ0lOJyA7XHJcbiAgICB3b3JrZmxvd01hbmFnZWQ/OiBib29sZWFuO1xyXG4gICAgd29ya2Zsb3dDYXNjYWRpbmdGaWVsZD86IHN0cmluZztcclxuICAgIGF0dGFjaG1lbnRUeXBlPzogc3RyaW5nO1xyXG4gICAgbG9va3VwRmlsdGVyTGlzdD86IEZpbHRlcltdO1xyXG4gICAgYnV0dG9uVHlwZT86IHN0cmluZztcclxuICAgIGhpZGVGaWxlcz86IGJvb2xlYW47XHJcbiAgICBiZWhhdmlvcmFsTmFtZT86IHN0cmluZztcclxuICAgIGZsYXR0ZW5CeVN1YkF0dHJpYnV0ZT86IHN0cmluZztcclxuICAgIGRlZmF1bHRWYWx1ZT86YW55O1xyXG4gICAgZXh0cmFMb29rdXBzQ29sdW1ucz86IHN0cmluZ1tdO1xyXG4gICAgZGlzcGxheUNvbHVtbj86IHN0cmluZztcclxuICAgIHNlYXJjaEF0dHJpYnV0ZT86c3RyaW5nO1xyXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VzPzogYW55O1xyXG4gICAgaGlkZUxhYmVsPzpib29sZWFuO1xyXG4gICAgc2VhcmNoT3BlcmF0b3I/OlwiR1JFQVRFUl9USEFOX0VRVUFMXCIgfCBcIkdSRUFURVJfVEhBTlwiIHwgXCJMRVNTX1RIQU5cIiB8IFwiTEVTU19USEFOX0VRVUFMXCIgfCBcIkVRVUFMU1wiIHwgXCJMSUtFXCIgfCBcIk5PVF9FUVwiIHwgXCJJTlwiIHwgXCJOT1RfTlVMTFwiO1xyXG4gICAgc2hvd1NlYXJjaEljb24/OiBib29sZWFuO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoZmllbGRJbmZvOiBGaWVsZEluZm8pIHtcclxuICAgICAgICB0aGlzLnByb3BlcnR5ID0gZmllbGRJbmZvLnByb3BlcnR5O1xyXG4gICAgICAgIHRoaXMudGFyZ2V0UHJvcGVydHkgPSBmaWVsZEluZm8udGFyZ2V0UHJvcGVydHk7XHJcbiAgICAgICAgdGhpcy5yZXF1aXJlZCA9IGZpZWxkSW5mby5yZXF1aXJlZDtcclxuICAgICAgICB0aGlzLnR5cGUgPSBmaWVsZEluZm8udHlwZTtcclxuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gZmllbGRJbmZvLnJlYWRvbmx5O1xyXG4gICAgICAgIHRoaXMubGFiZWwgPSBmaWVsZEluZm8ubGFiZWw7XHJcbiAgICAgICAgdGhpcy5maWVsZFNpemUgPSBmaWVsZEluZm8uZmllbGRTaXplO1xyXG4gICAgICAgIHRoaXMubG9va3VwQXBpUGF0aCA9IGZpZWxkSW5mby5sb29rdXBBcGlQYXRoID8gZmllbGRJbmZvLmxvb2t1cEFwaVBhdGggOiBmaWVsZEluZm8ucHJvcGVydHk7XHJcbiAgICAgICAgdGhpcy5yb3cgPSBmaWVsZEluZm8ucm93O1xyXG4gICAgICAgIHRoaXMuc3VwcG9ydGVkVHlwZXMgPSBmaWVsZEluZm8uc3VwcG9ydGVkVHlwZXM7XHJcbiAgICAgICAgdGhpcy5saXN0T3B0aW9ucyA9IGZpZWxkSW5mby5saXN0T3B0aW9ucztcclxuICAgICAgICB0aGlzLnBhdGhQYXJhbXMgPSBmaWVsZEluZm8ucGF0aFBhcmFtcztcclxuICAgICAgICB0aGlzLnZpZXdvbmx5ID0gZmllbGRJbmZvLnZpZXdvbmx5O1xyXG4gICAgICAgIHRoaXMubXVsdGkgPSBmaWVsZEluZm8ubXVsdGk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVPbmx5ID0gZmllbGRJbmZvLnVwZGF0ZU9ubHk7XHJcbiAgICAgICAgdGhpcy5pbmNsdWRlQWxsT3B0aW9uID0gZmllbGRJbmZvLmluY2x1ZGVBbGxPcHRpb247XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0TGlzdE9wdGlvbiA9IGZpZWxkSW5mby5kZWZhdWx0TGlzdE9wdGlvbjtcclxuICAgICAgICB0aGlzLmFjY2VwdE5ld0l0ZW0gPSBmaWVsZEluZm8uYWNjZXB0TmV3SXRlbTtcclxuICAgICAgICB0aGlzLmNhc2NhZGVkQnkgPSBmaWVsZEluZm8uY2FzY2FkZWRCeTtcclxuICAgICAgICB0aGlzLmNhc2NhZGVkQnlQcm9wZXJ0eSA9IGZpZWxkSW5mby5jYXNjYWRlZEJ5UHJvcGVydHkgPyBmaWVsZEluZm8uY2FzY2FkZWRCeVByb3BlcnR5IDogIGZpZWxkSW5mby5jYXNjYWRlZEJ5O1xyXG4gICAgICAgIHRoaXMuY3VycmVuY3kgPSBmaWVsZEluZm8uY3VycmVuY3k7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUgPSBmaWVsZEluZm8udHJhbnNsYXRlO1xyXG4gICAgICAgIHRoaXMuYWR2YW5jZWRGaWx0ZXIgPSBmaWVsZEluZm8uYWR2YW5jZWRGaWx0ZXI7XHJcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZpZWxkSW5mby5wbGFjZWhvbGRlcjtcclxuICAgICAgICB0aGlzLnZhbGlkYXRvcnMgPSBmaWVsZEluZm8udmFsaWRhdG9ycztcclxuICAgICAgICB0aGlzLmZpbHRlck9wZXJhdG9yID0gZmllbGRJbmZvLmZpbHRlck9wZXJhdG9yO1xyXG4gICAgICAgIHRoaXMucGF0dGVybiA9IGZpZWxkSW5mby5wYXR0ZXJuO1xyXG4gICAgICAgIHRoaXMud29ya2Zsb3dNYW5hZ2VkID0gZmllbGRJbmZvLndvcmtmbG93TWFuYWdlZDtcclxuICAgICAgICB0aGlzLndvcmtmbG93Q2FzY2FkaW5nRmllbGQgPSBmaWVsZEluZm8ud29ya2Zsb3dDYXNjYWRpbmdGaWVsZDtcclxuICAgICAgICB0aGlzLnZpc2libGUgPSBmaWVsZEluZm8udmlzaWJsZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkSW5mby52aXNpYmxlO1xyXG4gICAgICAgIHRoaXMuYXR0YWNobWVudFR5cGUgPSBmaWVsZEluZm8uYXR0YWNobWVudFR5cGU7XHJcbiAgICAgICAgdGhpcy5sb29rdXBGaWx0ZXJMaXN0ID0gZmllbGRJbmZvLmxvb2t1cEZpbHRlckxpc3Q7XHJcbiAgICAgICAgdGhpcy5leHRyYUxvb2t1cHNDb2x1bW5zID0gZmllbGRJbmZvLmV4dHJhTG9va3Vwc0NvbHVtbnM7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29sdW1uID0gZmllbGRJbmZvLmRpc3BsYXlDb2x1bW47XHJcbiAgICAgICAgdGhpcy50ZXh0Rm9ybWF0ID0gZmllbGRJbmZvLnRleHRGb3JtYXQ7XHJcbiAgICAgICAgdGhpcy5idXR0b25UeXBlID0gZmllbGRJbmZvLmJ1dHRvblR5cGU7XHJcbiAgICAgICAgdGhpcy5oaWRlRmlsZXMgPSBmaWVsZEluZm8uaGlkZUZpbGVzO1xyXG4gICAgICAgIHRoaXMuYmVoYXZpb3JhbE5hbWUgPSBmaWVsZEluZm8uYmVoYXZpb3JhbE5hbWU7XHJcbiAgICAgICAgdGhpcy5mbGF0dGVuQnlTdWJBdHRyaWJ1dGUgPSBmaWVsZEluZm8uZmxhdHRlbkJ5U3ViQXR0cmlidXRlO1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gZmllbGRJbmZvLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaEF0dHJpYnV0ZSA9IGZpZWxkSW5mby5zZWFyY2hBdHRyaWJ1dGUgfHwgdGhpcy5wcm9wZXJ0eTtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25NZXNzYWdlcyA9IGZpZWxkSW5mby52YWxpZGF0aW9uTWVzc2FnZXM7XHJcbiAgICAgICAgdGhpcy5oaWRlTGFiZWwgPSBmaWVsZEluZm8uaGlkZUxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoT3BlcmF0b3IgPSBmaWVsZEluZm8uc2VhcmNoT3BlcmF0b3IgfHwgJ0VRVUFMUyc7XHJcbiAgICAgICAgdGhpcy5zaG93U2VhcmNoSWNvbiA9IGZpZWxkSW5mby5zaG93U2VhcmNoSWNvbjtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL2Jhc2UtbW9kZWwvZmllbGQtaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sU0FBUztJQW9EcEIsWUFBWSxTQUFvQjtRQW5EOUIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixtQkFBYyxHQUFZLEVBQUUsQ0FBQztRQUU3QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLFNBQUksR0FBcVgsTUFBTSxDQUFDO1FBRWhZLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFFM0IsVUFBSyxHQUFZLEVBQUUsQ0FBQztRQWlCcEIsY0FBUyxHQUFhLEtBQUssQ0FBQztRQUc1QixZQUFPLEdBQWEsSUFBSSxDQUFDO1FBd0JyQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQzVGLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUN6QixJQUFJ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SUFDckQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtWYWxpZGF0b3JGbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi9maWx0ZXIubW9kZWxcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWVsZEluZm8ge1xyXG4gICAgcHJvcGVydHk6IHN0cmluZyA9IFwiXCI7XHJcbiAgICB0YXJnZXRQcm9wZXJ0eT86IHN0cmluZyA9IFwiXCI7XHJcbiAgICByb3c6IG51bWJlcjtcclxuICAgIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB0eXBlOiAndGV4dCcgfCAnYW1vdW50JyB8J2NvbG9yLXBpY2tlcicgfCAnY3VycmVuY3knIHwgJ2RhdGUnIHwgJ251bWJlcicgfCAnc2VxdWVuY2UnIHwgJ2xpc3QnIHwnbG9va3VwJ3wgJ211bHRpLXNlbGVjdCcgfCAncGFzc3dvcmQnfCAncmljaC10ZXh0J3wncmFkaW8tYnV0dG9uJ3wgJ3Bob25lLW51bWJlcid8ICdpYmFuLXRleHQnfCdjaGVja2JveCcgfCd0ZXh0YXJlYScgfCdidXR0b24nfCdzcGFjZXInIHwgJ2F0dGFjaG1lbnQnfCAnc2VjdGlvbi10aXRsZSd8ICdjaGlwLWxpc3QnIHwndGltZScgfCAnZGl2aWRlcicgfCAnaHlwZXItdGV4dCcgfCdzdGF0ZVR5cGUnfCdzdGF0dXMnIHwgJ3llYXInIHwgJ2VxdWF0aW9uLWJ1aWxkZXInfCAndG9nZ2xlJyA9ICd0ZXh0JztcclxuICAgIHRleHRGb3JtYXQ/OiAnanNvbic7XHJcbiAgICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHZpZXdvbmx5PzogYm9vbGVhbiA7XHJcbiAgICBsYWJlbD86IHN0cmluZyA9ICcnO1xyXG4gICAgY3VycmVuY3k/OiBzdHJpbmc7XHJcbiAgICBsb29rdXBBcGlQYXRoPzogc3RyaW5nO1xyXG4gICAgbXVsdGk/OmJvb2xlYW47XHJcbiAgICBzdXBwb3J0ZWRUeXBlcz86c3RyaW5nO1xyXG4gICAgY2FzY2FkZWRCeT86IHN0cmluZztcclxuICAgIGNhc2NhZGVkQnlQcm9wZXJ0eT86IHN0cmluZztcclxuICAgIHBhdGhQYXJhbXM/OiBzdHJpbmc7XHJcbiAgICBsaXN0T3B0aW9ucz86IGFueVtdO1xyXG4gICAgb3BlcmF0b3JzPzogYW55W107XHJcbiAgICBmaWVsZHNBcGk/OiBzdHJpbmc7XHJcbiAgICByZXBvcnRGaWx0ZXI/OnN0cmluZztcclxuICAgIHVwZGF0ZU9ubHk/OiBib29sZWFuO1xyXG4gICAgZmllbGRTaXplID86IG51bWJlciAgO1xyXG4gICAgaW5jbHVkZUFsbE9wdGlvbj86IGJvb2xlYW47XHJcbiAgICBkZWZhdWx0TGlzdE9wdGlvbj86IGFueTtcclxuICAgIGFjY2VwdE5ld0l0ZW0/OiBib29sZWFuO1xyXG4gICAgdHJhbnNsYXRlPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuW107XHJcbiAgICBwbGFjZWhvbGRlcj86IGFueTtcclxuICAgIHZpc2libGU/OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHBhdHRlcm4/OiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgICBhZHZhbmNlZEZpbHRlcj86IGJvb2xlYW47XHJcbiAgICBmaWx0ZXJPcGVyYXRvcj86ICdHUkVBVEVSX1RIQU5fRVFVQUwnfCdHUkVBVEVSX1RIQU4nfCAnTEVTU19USEFOJ3wnTEVTU19USEFOX0VRVUFMJ3wgJ0VRVUFMUyd8ICdMSUtFJ3wgJ05PVF9FUSd8ICdJTicgO1xyXG4gICAgd29ya2Zsb3dNYW5hZ2VkPzogYm9vbGVhbjtcclxuICAgIHdvcmtmbG93Q2FzY2FkaW5nRmllbGQ/OiBzdHJpbmc7XHJcbiAgICBhdHRhY2htZW50VHlwZT86IHN0cmluZztcclxuICAgIGxvb2t1cEZpbHRlckxpc3Q/OiBGaWx0ZXJbXTtcclxuICAgIGJ1dHRvblR5cGU/OiBzdHJpbmc7XHJcbiAgICBoaWRlRmlsZXM/OiBib29sZWFuO1xyXG4gICAgYmVoYXZpb3JhbE5hbWU/OiBzdHJpbmc7XHJcbiAgICBmbGF0dGVuQnlTdWJBdHRyaWJ1dGU/OiBzdHJpbmc7XHJcbiAgICBkZWZhdWx0VmFsdWU/OmFueTtcclxuICAgIGV4dHJhTG9va3Vwc0NvbHVtbnM/OiBzdHJpbmdbXTtcclxuICAgIGRpc3BsYXlDb2x1bW4/OiBzdHJpbmc7XHJcbiAgICBzZWFyY2hBdHRyaWJ1dGU/OnN0cmluZztcclxuICAgIHZhbGlkYXRpb25NZXNzYWdlcz86IGFueTtcclxuICAgIGhpZGVMYWJlbD86Ym9vbGVhbjtcclxuICAgIHNlYXJjaE9wZXJhdG9yPzpcIkdSRUFURVJfVEhBTl9FUVVBTFwiIHwgXCJHUkVBVEVSX1RIQU5cIiB8IFwiTEVTU19USEFOXCIgfCBcIkxFU1NfVEhBTl9FUVVBTFwiIHwgXCJFUVVBTFNcIiB8IFwiTElLRVwiIHwgXCJOT1RfRVFcIiB8IFwiSU5cIiB8IFwiTk9UX05VTExcIjtcclxuICAgIHNob3dTZWFyY2hJY29uPzogYm9vbGVhbjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKGZpZWxkSW5mbzogRmllbGRJbmZvKSB7XHJcbiAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IGZpZWxkSW5mby5wcm9wZXJ0eTtcclxuICAgICAgICB0aGlzLnRhcmdldFByb3BlcnR5ID0gZmllbGRJbmZvLnRhcmdldFByb3BlcnR5O1xyXG4gICAgICAgIHRoaXMucmVxdWlyZWQgPSBmaWVsZEluZm8ucmVxdWlyZWQ7XHJcbiAgICAgICAgdGhpcy50eXBlID0gZmllbGRJbmZvLnR5cGU7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IGZpZWxkSW5mby5yZWFkb25seTtcclxuICAgICAgICB0aGlzLmxhYmVsID0gZmllbGRJbmZvLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuZmllbGRTaXplID0gZmllbGRJbmZvLmZpZWxkU2l6ZTtcclxuICAgICAgICB0aGlzLmxvb2t1cEFwaVBhdGggPSBmaWVsZEluZm8ubG9va3VwQXBpUGF0aCA/IGZpZWxkSW5mby5sb29rdXBBcGlQYXRoIDogZmllbGRJbmZvLnByb3BlcnR5O1xyXG4gICAgICAgIHRoaXMucm93ID0gZmllbGRJbmZvLnJvdztcclxuICAgICAgICB0aGlzLnN1cHBvcnRlZFR5cGVzID0gZmllbGRJbmZvLnN1cHBvcnRlZFR5cGVzO1xyXG4gICAgICAgIHRoaXMubGlzdE9wdGlvbnMgPSBmaWVsZEluZm8ubGlzdE9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5wYXRoUGFyYW1zID0gZmllbGRJbmZvLnBhdGhQYXJhbXM7XHJcbiAgICAgICAgdGhpcy52aWV3b25seSA9IGZpZWxkSW5mby52aWV3b25seTtcclxuICAgICAgICB0aGlzLm11bHRpID0gZmllbGRJbmZvLm11bHRpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlT25seSA9IGZpZWxkSW5mby51cGRhdGVPbmx5O1xyXG4gICAgICAgIHRoaXMuaW5jbHVkZUFsbE9wdGlvbiA9IGZpZWxkSW5mby5pbmNsdWRlQWxsT3B0aW9uO1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdExpc3RPcHRpb24gPSBmaWVsZEluZm8uZGVmYXVsdExpc3RPcHRpb247XHJcbiAgICAgICAgdGhpcy5hY2NlcHROZXdJdGVtID0gZmllbGRJbmZvLmFjY2VwdE5ld0l0ZW07XHJcbiAgICAgICAgdGhpcy5jYXNjYWRlZEJ5ID0gZmllbGRJbmZvLmNhc2NhZGVkQnk7XHJcbiAgICAgICAgdGhpcy5jYXNjYWRlZEJ5UHJvcGVydHkgPSBmaWVsZEluZm8uY2FzY2FkZWRCeVByb3BlcnR5ID8gZmllbGRJbmZvLmNhc2NhZGVkQnlQcm9wZXJ0eSA6ICBmaWVsZEluZm8uY2FzY2FkZWRCeTtcclxuICAgICAgICB0aGlzLmN1cnJlbmN5ID0gZmllbGRJbmZvLmN1cnJlbmN5O1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlID0gZmllbGRJbmZvLnRyYW5zbGF0ZTtcclxuICAgICAgICB0aGlzLmFkdmFuY2VkRmlsdGVyID0gZmllbGRJbmZvLmFkdmFuY2VkRmlsdGVyO1xyXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmaWVsZEluZm8ucGxhY2Vob2xkZXI7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0b3JzID0gZmllbGRJbmZvLnZhbGlkYXRvcnM7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcGVyYXRvciA9IGZpZWxkSW5mby5maWx0ZXJPcGVyYXRvcjtcclxuICAgICAgICB0aGlzLnBhdHRlcm4gPSBmaWVsZEluZm8ucGF0dGVybjtcclxuICAgICAgICB0aGlzLndvcmtmbG93TWFuYWdlZCA9IGZpZWxkSW5mby53b3JrZmxvd01hbmFnZWQ7XHJcbiAgICAgICAgdGhpcy53b3JrZmxvd0Nhc2NhZGluZ0ZpZWxkID0gZmllbGRJbmZvLndvcmtmbG93Q2FzY2FkaW5nRmllbGQ7XHJcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmllbGRJbmZvLnZpc2libGUgPT09IHVuZGVmaW5lZCB8fCBmaWVsZEluZm8udmlzaWJsZTtcclxuICAgICAgICB0aGlzLmF0dGFjaG1lbnRUeXBlID0gZmllbGRJbmZvLmF0dGFjaG1lbnRUeXBlO1xyXG4gICAgICAgIHRoaXMubG9va3VwRmlsdGVyTGlzdCA9IGZpZWxkSW5mby5sb29rdXBGaWx0ZXJMaXN0O1xyXG4gICAgICAgIHRoaXMuZXh0cmFMb29rdXBzQ29sdW1ucyA9IGZpZWxkSW5mby5leHRyYUxvb2t1cHNDb2x1bW5zO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbiA9IGZpZWxkSW5mby5kaXNwbGF5Q29sdW1uO1xyXG4gICAgICAgIHRoaXMudGV4dEZvcm1hdCA9IGZpZWxkSW5mby50ZXh0Rm9ybWF0O1xyXG4gICAgICAgIHRoaXMuYnV0dG9uVHlwZSA9IGZpZWxkSW5mby5idXR0b25UeXBlO1xyXG4gICAgICAgIHRoaXMuaGlkZUZpbGVzID0gZmllbGRJbmZvLmhpZGVGaWxlcztcclxuICAgICAgICB0aGlzLmJlaGF2aW9yYWxOYW1lID0gZmllbGRJbmZvLmJlaGF2aW9yYWxOYW1lO1xyXG4gICAgICAgIHRoaXMuZmxhdHRlbkJ5U3ViQXR0cmlidXRlID0gZmllbGRJbmZvLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZTtcclxuICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGZpZWxkSW5mby5kZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hBdHRyaWJ1dGUgPSBmaWVsZEluZm8uc2VhcmNoQXR0cmlidXRlIHx8IHRoaXMucHJvcGVydHk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZXMgPSBmaWVsZEluZm8udmFsaWRhdGlvbk1lc3NhZ2VzO1xyXG4gICAgICAgIHRoaXMuaGlkZUxhYmVsID0gZmllbGRJbmZvLmhpZGVMYWJlbDtcclxuICAgICAgICB0aGlzLnNlYXJjaE9wZXJhdG9yID0gZmllbGRJbmZvLnNlYXJjaE9wZXJhdG9yIHx8ICdFUVVBTFMnO1xyXG4gICAgICAgIHRoaXMuc2hvd1NlYXJjaEljb24gPSBmaWVsZEluZm8uc2hvd1NlYXJjaEljb247XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -460,7 +460,7 @@ export class ActivityReportFormComponent {
460
460
  return !groupByValues.some(v => value.includes(v) && value.length >= v.length);
461
461
  }
462
462
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityReportFormComponent, deps: [{ token: i1.TranslateService }, { token: i2.BackendService }, { token: i3.ActivatedRoute }, { token: i0.Injector }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.MatDialog }, { token: i5.Directionality }, { token: i6.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
463
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityReportFormComponent, isStandalone: true, selector: "app-report-form", inputs: { showDetails: "showDetails", showExtractButton: "showExtractButton", columns: "columns", actionRequestCallback: "actionRequestCallback", enrichDrillDownReportRequest: "enrichDrillDownReportRequest", enrichHyperLinkReportRequest: "enrichHyperLinkReportRequest", enrichJuniorReportRequest: "enrichJuniorReportRequest" }, outputs: { userAction: "userAction" }, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row row-center-start mb-10px full-width\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n <mat-icon *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"help-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\"\r\n [disabled]=\"!isValidForm()\" class=\"action-button\" id=\"activity-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\"\r\n color=\"primary\" class=\"btn-none-background-primary action-button\" id=\"activity-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n <button mat-flat-button (click)=\"clear()\"\r\n [disabled]=\"isFormEmpty() || activeLevel > 1\"\r\n class=\"action-button\" id=\"activity-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button\r\n (click)=\"drillDown()\" class=\"action-button\" id=\"activity-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel > 1 && !(isComparisonReport && activeLevel == 2)\" color=\"warn\"\r\n mat-flat-button (click)=\"goUp()\" class=\"action-button\" id=\"activity-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n <!-- Base tables -->\r\n <ng-container *ngIf=\"activeLevel === 1\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"pageInfo\" [columns]=\"columnsDefinition\" [enforceRefresh]=\"reloadData\"\r\n id=\"parent\" [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 2\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"child\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 3\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"junior\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 4\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'activity-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;flex-wrap:wrap;width:100%}.column{display:flex;flex-direction:column}.flex-49{flex:0 0 49%}.flex-100{flex:0 0 100%}.row-center-start{align-items:center;justify-content:flex-start}.mt-3vh{margin-top:3vh}.mb-10px{margin-bottom:10px}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}.help-icon{cursor:pointer;margin-left:10px}@media (max-width: 960px){.flex-49,.flex-100{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}.help-icon{margin-left:0;margin-top:5px}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "data", "listAction", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
463
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityReportFormComponent, isStandalone: true, selector: "app-report-form", inputs: { showDetails: "showDetails", showExtractButton: "showExtractButton", columns: "columns", actionRequestCallback: "actionRequestCallback", enrichDrillDownReportRequest: "enrichDrillDownReportRequest", enrichHyperLinkReportRequest: "enrichHyperLinkReportRequest", enrichJuniorReportRequest: "enrichJuniorReportRequest" }, outputs: { userAction: "userAction" }, ngImport: i0, template: "<div class=\"page-container\">\r\n\r\n <div class=\"row row-center-start mb-10px full-width\">\r\n <app-title-bar [pageTitle]=\"getTitle()\" [newAction]=\"false\"></app-title-bar>\r\n <mat-icon *ngIf=\"pageInfo?.hasHint\"\r\n [matTooltip]=\"pageInfo.labelsSection + '.hint' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\"\r\n class=\"help-icon\"\r\n matTooltipClass=\"custom-tooltip\">\r\n help_outline\r\n </mat-icon>\r\n </div>\r\n\r\n <app-base-form-canvas\r\n [pageInfo]=\"pageInfo\"\r\n [fields]=\"fields\"\r\n [editable]=\"isEditable\"\r\n [errors]=\"errors\"\r\n [item]=\"reportForm?.value || {}\"\r\n (formUpdated)=\"updateForm($event)\">\r\n </app-base-form-canvas>\r\n\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-49\">\r\n <div class=\"row row-center-start\">\r\n <button *ngIf=\"activeLevel === 1\" color=\"primary\" mat-flat-button (click)=\"doAction(x)\"\r\n [disabled]=\"!isValidForm()\" class=\"action-button\" id=\"activity-generate-btn\">\r\n {{ 'REPORTS.generate' | translate }}\r\n </button>\r\n <button mat-raised-button [matMenuTriggerFor]=\"menu\" [disabled]=\"getIsEmptyList()\"\r\n color=\"primary\" class=\"btn-none-background-primary action-button\" id=\"activity-extract-trigger\">\r\n {{ 'extract' | translate }}\r\n <mat-icon class=\"expand_more actionButton__expand\">expand_more</mat-icon>\r\n </button>\r\n <button mat-flat-button (click)=\"clear()\"\r\n [disabled]=\"isFormEmpty() || activeLevel > 1\"\r\n class=\"action-button\" id=\"activity-clear-btn\">\r\n {{ 'REPORTS.clear' | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel === 1 && drillDownEnabled()\" color=\"warn\" mat-flat-button\r\n (click)=\"drillDown()\" class=\"action-button\" id=\"activity-drilldown-btn\">\r\n {{ drillDownLabel() | translate }}\r\n </button>\r\n <button *ngIf=\"activeLevel > 1 && !(isComparisonReport && activeLevel == 2)\" color=\"warn\"\r\n mat-flat-button (click)=\"goUp()\" class=\"action-button\" id=\"activity-up-btn\">\r\n {{ 'REPORTS.up' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"column flex-49\"></div>\r\n </div>\r\n\r\n <!-- Base tables -->\r\n <ng-container *ngIf=\"activeLevel === 1\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"pageInfo\" [columns]=\"columnsDefinition\" [enforceRefresh]=\"reloadData\"\r\n id=\"parent\" [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 2\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"child\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 3\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\" id=\"junior\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeLevel === 4\">\r\n <div class=\"row main-form-canvas mt-3vh\">\r\n <div class=\"column flex-100\">\r\n <app-base-table [pageInfo]=\"drillDownPageInfo\" [columns]=\"drillDownColumns\"\r\n [reportRequest]=\"reportRequest\"\r\n (userAction)=\"emitUserAction($event)\"\r\n (hyperLinkAction)=\"emitHyperLinkAction($event)\">\r\n </app-base-table>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<!-- Menu -->\r\n<mat-menu #menu=\"matMenu\">\r\n <button type=\"button\" mat-menu-item *ngFor=\"let type of types\" (click)=\"extractReport(type)\" [attr.id]=\"'activity-extract-item-' + type\">\r\n {{ type }}\r\n </button>\r\n</mat-menu>\r\n", styles: [".page-container{display:flex;flex-direction:column;width:100%}.row{display:flex;flex-direction:row;gap:10px;flex-wrap:wrap;width:100%}.column{display:flex;flex-direction:column}.flex-49{flex:0 0 49%}.flex-100{flex:0 0 100%}.row-center-start{align-items:center;justify-content:flex-start}.mt-3vh{margin-top:3vh}.mb-10px{margin-bottom:10px}.action-button{font-weight:700;min-width:140px;max-width:200px;margin:0 10px}.help-icon{cursor:pointer;margin-left:10px}@media (max-width: 960px){.flex-49,.flex-100{flex:1 1 100%}}@media (max-width: 600px){.row{flex-direction:column;align-items:center}.action-button{width:100%;max-width:300px;margin:5px 0}.help-icon{margin-left:0;margin-top:5px}}\n"], dependencies: [{ kind: "component", type: TitleBarComponent, selector: "app-title-bar", inputs: ["pageTitle", "showExtractButton", "totalElements", "titleMode", "pageInfo", "subTitle", "statusDesc", "newAction", "extraButton", "showDetails", "showImport", "showButton", "extraData", "titleCorporateAdmin", "hideBackButton", "buttons", "buttonsDisplayMode", "draftSupported", "isPending", "onViewModeChange"], outputs: ["newActionClicked", "extraButtonClicked", "extractReport", "buttonClicked", "viewModeChanged"] }, { kind: "component", type: BaseFormCanvasComponent, selector: "app-base-form-canvas", inputs: ["pageInfo", "currency", "fields", "errors", "workflowEditableFields", "isWorkflowEditableManaged", "supportingAttributes", "editable", "emitOnValueChanges", "item", "equationSuggestedFields", "currentEquationValue"], outputs: ["attachmentEmitter", "actionEmitter", "formUpdated", "hyperTextEvent", "currentEquationValueChange"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BaseTableComponent, selector: "app-base-table", inputs: ["filterFields", "noDataFoundSvgPath", "noDataFoundTitle", "noDataFoundSubtitle", "noResultSvgPath", "noResultTitle", "noResultSubtitle", "pageInfo", "enablePagination", "data", "listAction", "extraActions", "buttonsDisplayMode", "columns", "filters", "pathParam", "extraButton", "enforceRefresh", "isPending", "trigger", "reportRequest", "separateEndpointData", "manageablePages", "totalPagesCount", "currentPageIndex", "customizedData"], outputs: ["buttonClicked", "pageChange", "userAction", "hyperLinkAction", "extraAction", "selectedColumn", "listActionClicked", "showDialog", "clickRoutePage"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
464
464
  }
465
465
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityReportFormComponent, decorators: [{
466
466
  type: Component,
@@ -496,4 +496,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
496
496
  }], userAction: [{
497
497
  type: Output
498
498
  }] } });
499
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktcmVwb3J0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpdml0eS1yZXBvcnQtZm9ybS9hY3Rpdml0eS1yZXBvcnQtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LXJlcG9ydC1mb3JtL2FjdGl2aXR5LXJlcG9ydC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBVyxNQUFNLDRCQUE0QixDQUFDO0FBR3JFLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFJdEUsT0FBTyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sK0JBQStC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QWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1AsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsSUFBSTt3QkFDSixhQUFhO3dCQUNiLFNBQVM7d0JBQ1QsVUFBVTtxQkFDWDt1U0FNRCxXQUFXO3NCQURWLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFLRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGaWVsZEluZm99IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2ZpZWxkLWluZm9cIjtcclxuaW1wb3J0IHtFTVBUWV9QQUdFX0lORk8sIFBhZ2VJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9wYWdlLWluZm9cIjtcclxuaW1wb3J0IHtUYWJsZUNvbHVtbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvdGFibGUtY29sdW1uLmludGVyZmFjZVwiO1xyXG5pbXBvcnQge0ZpZWxkTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvYXBpLXJlc3BvbnNlXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYmFja2VuZC1zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge2Zvcm1hdERhdGUsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRNZW51LCBNYXRNZW51SXRlbSwgTWF0TWVudVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHtCYXNlVGFibGVDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLXRhYmxlL2Jhc2UtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtGaWx0ZXJSZXF1ZXN0fSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9maWx0ZXItcmVxdWVzdFwiO1xyXG5pbXBvcnQge1JlcG9ydFJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3JlcG9ydC1yZXF1ZXN0Lm1vZGVsXCI7XHJcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9maWx0ZXIubW9kZWxcIjtcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QmFzZUZvcm1DYW52YXNDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50XCI7XHJcbmltcG9ydCBDbGFzc2ljRWRpdG9yIGZyb20gXCJAY2tlZGl0b3IvY2tlZGl0b3I1LWJ1aWxkLWNsYXNzaWNcIjtcclxuaW1wb3J0IHtEUklMTF9ET1dOX0FDVElPTiwgSlVOSU9SX0RPV05fQUNUSU9OLCBTbmFja01lc3NhZ2UsIFRhYmxlUGFnZVVzZXJBY3Rpb259IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsXCI7XHJcbmltcG9ydCB7fSBmcm9tIFwiLi4vYXVkaXQtbG9nLWRldGFpbHMtZGlhbG9nL2F1ZGl0LWxvZy1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtSZXBvcnREZXRhaWxzRGlhbG9nQ29tcG9uZW50fSBmcm9tIFwiLi4vcmVwb3J0LWRldGFpbHMtZGlhbG9nL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9iaWRpXCI7XHJcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuXHJcblxyXG5jb25zdCBOT05fUkVQT1JUX0NPTFVNTlMgPSBbJ2xpc3RBY3Rpb24nLCAnYnV0dG9uJywgJ2NoZWNrYm94J107XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yZXBvcnQtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUaXRsZUJhckNvbXBvbmVudCxcclxuICAgIEJhc2VGb3JtQ2FudmFzQ29tcG9uZW50LFxyXG4gICAgTWF0TWVudSxcclxuICAgIE1hdE1lbnVJdGVtLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE1hdE1lbnVUcmlnZ2VyLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQmFzZVRhYmxlQ29tcG9uZW50LFxyXG4gICAgTmdJZixcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRUb29sdGlwXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktcmVwb3J0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hY3Rpdml0eS1yZXBvcnQtZm9ybS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5UmVwb3J0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKVxyXG4gIHNob3dEZXRhaWxzIDogYW55ID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0V4dHJhY3RCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXSA9W107XHJcbiAgcHJpdmF0ZSBvcmlnaW5hbENvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG5cclxuICBASW5wdXQoKSBhY3Rpb25SZXF1ZXN0Q2FsbGJhY2shOiAoYWN0aW9uUmVxdWVzdDogVGFibGVQYWdlVXNlckFjdGlvbikgPT4gVGFibGVQYWdlVXNlckFjdGlvbjtcclxuICBASW5wdXQoKSBlbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0ITogKGFjdGlvblJlcXVlc3Q6IFRhYmxlUGFnZVVzZXJBY3Rpb24sIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3QpID0+IFRhYmxlUGFnZVVzZXJBY3Rpb247XHJcbiAgQElucHV0KCkgZW5yaWNoSHlwZXJMaW5rUmVwb3J0UmVxdWVzdCE6IChhY3Rpb25SZXF1ZXN0OiBUYWJsZVBhZ2VVc2VyQWN0aW9uLCByZXBvcnRSZXF1ZXN0OiBSZXBvcnRSZXF1ZXN0KSA9PiBUYWJsZVBhZ2VVc2VyQWN0aW9uO1xyXG4gIEBJbnB1dCgpIGVucmljaEp1bmlvclJlcG9ydFJlcXVlc3QhOiAoYWN0aW9uUmVxdWVzdDogVGFibGVQYWdlVXNlckFjdGlvbiwgcmVwb3J0UmVxdWVzdDogUmVwb3J0UmVxdWVzdCkgPT4gVGFibGVQYWdlVXNlckFjdGlvbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdXNlckFjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG4gIGFjdGl2ZUxldmVsOiBudW1iZXIgPSAxO1xyXG4gIGl0ZW1zID0gWzQsIDUsNiw3XTtcclxuICBwcml2YXRlIGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3Q7XHJcbiAgeDogYW55O1xyXG4gIGlzRWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGZpZWxkczogRmllbGRJbmZvW10gPSBbXTtcclxuICBwYWdlSW5mbzogUGFnZUluZm8gPSBFTVBUWV9QQUdFX0lORk87XHJcbiAgZHJpbGxEb3duUGFnZUluZm86IFBhZ2VJbmZvID0gRU1QVFlfUEFHRV9JTkZPO1xyXG4gIGRyaWxsRG93bkNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXSA9IFtdO1xyXG4gIGhpZGVEcmlsbERvd25CdXR0b246IGZhbHNlO1xyXG5cclxuICBqdW5pb3JQYWdlSW5mbzogUGFnZUluZm8gPSBFTVBUWV9QQUdFX0lORk87XHJcbiAganVuaW9yQ29sdW1uczogVGFibGVDb2x1bW48YW55PltdID0gW107XHJcblxyXG4gIGNvbHVtbnNEZWZpbml0aW9uOiBUYWJsZUNvbHVtbjxhbnk+W10gPSBbXTtcclxuICB0eXBlczogc3RyaW5nW10gPSBbXCJwZGZcIiwgXCJjc3ZcIiwgXCJ4bHN4XCJdXHJcbiAgc2VhcmNoU3RyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgZXJyb3JzOiBGaWVsZE1lc3NhZ2VbXSA9IFtdO1xyXG5cclxuICByZWxvYWREYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJpbGxEb3duUmVxdWVzdFN0YWNrOiBhbnlbXSA9IFtdO1xyXG4gIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3QgPSBuZXcgUmVwb3J0UmVxdWVzdCh7fSk7XHJcbiAgY2hpbGRSZXBvcnRSZXF1ZXN0OiBSZXBvcnRSZXF1ZXN0ID0gbmV3IFJlcG9ydFJlcXVlc3Qoe30pO1xyXG4gIGp1bmlvclJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3QgPSBuZXcgUmVwb3J0UmVxdWVzdCh7fSk7XHJcbiAgcHVibGljIHJlcG9ydEZvcm06IEZvcm1Hcm91cDtcclxuICByZWFkeVRvU2VhcmNoID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwYWdlU2l6ZTogYW55O1xyXG4gIHByaXZhdGUgZGlhbG9nUmVwb3J0UmVxdWVzdDogYW55O1xyXG4gIGN1cnJlbnREaXJlY3Rpb246ICdsdHInIHwgJ3J0bCc7XHJcbiAgcHJvdGVjdGVkIGlzQ29tcGFyaXNvblJlcG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICBDbGFzc2ljRWRpdG9yLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgIHRvb2xiYXI6IHtcclxuICAgICAgICBpdGVtczogWydoZWFkaW5nJywgJ3wnLCAnYm9sZCcsICdpdGFsaWMnLCAnfCcsICdidWxsZXRlZExpc3QnLCAnbnVtYmVyZWRMaXN0J11cclxuICAgICAgfSxcclxuICAgICAgaW1hZ2U6IHtcclxuICAgICAgICB0b29sYmFyOiBbJ2ltYWdlU3R5bGU6c2lkZScsICd8JywgJ2ltYWdlVGV4dEFsdGVybmF0aXZlJ11cclxuICAgICAgfSxcclxuICAgICAgdGFibGU6IHtcclxuICAgICAgICBjb250ZW50VG9vbGJhcjogWyAndGFibGVDb2x1bW4nLCAndGFibGVSb3cnLCAnbWVyZ2VUYWJsZUNlbGxzJyBdXHJcbiAgICAgIH0sXHJcbiAgICAgIGxhbmd1YWdlOiAnZW4nXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcclxuICAgIHRoaXMuZGlyZWN0aW9uYWxpdHkuY2hhbmdlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uID0gdmFsdWU7XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuZGF0YS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZUluZm8gPSBkYXRhWydwYWdlSW5mbyddO1xyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdlSW5mby5wYWdlU2l6ZSA/PyAxMDtcclxuICAgICAgdGhpcy5maWx0ZXJSZXF1ZXN0PSBuZXcgRmlsdGVyUmVxdWVzdCh0aGlzLnBhZ2VTaXplKTtcclxuICAgICAgZGF0YVsncGFnZUluZm8nXS5sYXp5TG9hZERhdGEgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRyaWxsRG93blBhZ2VJbmZvID0gZGF0YVsnZHJpbGxEb3duUGFnZUluZm8nXTtcclxuICAgICAgdGhpcy5kcmlsbERvd25Db2x1bW5zID0gZGF0YVsnZHJpbGxEb3duQ29sdW1ucyddO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IFsuLi50aGlzLmRyaWxsRG93bkNvbHVtbnNdO1xyXG4gICAgICB0aGlzLmhpZGVEcmlsbERvd25CdXR0b24gPSBkYXRhWydoaWRlRHJpbGxEb3duQnV0dG9uJ10gPz8gZmFsc2U7XHJcbiAgICAgIHRoaXMuanVuaW9yUGFnZUluZm8gPSBkYXRhWydqdW5pb3JQYWdlSW5mbyddO1xyXG4gICAgICB0aGlzLmp1bmlvckNvbHVtbnMgPSBkYXRhWydqdW5pb3JDb2x1bW5zJ107XHJcbiAgICAgIHRoaXMuY29sdW1uc0RlZmluaXRpb24gPSBkYXRhWydjb2x1bW5zRGVmaW5pdGlvbiddLmZpbHRlcihjID0+ICh0aGlzLmRyaWxsRG93blBhZ2VJbmZvICYmIHRoaXMuZHJpbGxEb3duQ29sdW1ucyB8fCAoIU5PTl9SRVBPUlRfQ09MVU1OUy5pbmNsdWRlcyhjLnR5cGUpKSkpO1xyXG4gICAgICB0aGlzLmZpZWxkcyA9IGRhdGFbJ2ZpZWxkcyddO1xyXG4gICAgICBpZiAoZGF0YVsnZW5yaWNoRHJpbGxEb3duUmVwb3J0UmVxdWVzdCddKSB7XHJcbiAgICAgICAgdGhpcy5lbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0ID0gZGF0YVsnZW5yaWNoRHJpbGxEb3duUmVwb3J0UmVxdWVzdCddKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkYXRhWydlbnJpY2hKdW5pb3JSZXBvcnRSZXF1ZXN0J10pIHtcclxuICAgICAgICB0aGlzLmVucmljaEp1bmlvclJlcG9ydFJlcXVlc3QgPSBkYXRhWydlbnJpY2hKdW5pb3JSZXBvcnRSZXF1ZXN0J10odGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChkYXRhWydlbnJpY2hIeXBlckxpbmtSZXBvcnRSZXF1ZXN0J10pIHtcclxuICAgICAgICB0aGlzLmVucmljaEh5cGVyTGlua1JlcG9ydFJlcXVlc3QgPSBkYXRhWydlbnJpY2hIeXBlckxpbmtSZXBvcnRSZXF1ZXN0J10odGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5pc0NvbXBhcmlzb25SZXBvcnQgPSBwYXJhbXMuZ2V0KCdjb21wYXJpc29uUmVwb3J0JykgPT09ICd0cnVlJztcclxuICAgICAgaWYgKCF0aGlzLmlzQ29tcGFyaXNvblJlcG9ydCkgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgY29tcGFyaXNvblN0ciA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NvbXBhcmlzb25SZXBvcnRQYWdlSW5mbycpO1xyXG4gICAgICBpZiAoIWNvbXBhcmlzb25TdHIpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGNvbXBhcmlzb25EYXRhID0gSlNPTi5wYXJzZShjb21wYXJpc29uU3RyKTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplQ29tcGFyaXNvblJlcG9ydChjb21wYXJpc29uRGF0YSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBhcmlzb25SZXBvcnQoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLmxhenlMb2FkRGF0YSA9IGRhdGEubGF6eUxvYWREYXRhID8/IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVMZXZlbCA9IGRhdGEuYWN0aXZlTGV2ZWwgPz8gMjtcclxuICAgIHRoaXMuaXNFZGl0YWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kcmlsbERvd25QYWdlSW5mbyA9IGRhdGEuZHJpbGxEb3duUGFnZUluZm87XHJcbiAgICB0aGlzLmRyaWxsRG93bkNvbHVtbnMgPSBkYXRhLmRyaWxsRG93bkNvbHVtbnM7XHJcblxyXG4gICAgY29uc3QgcmVwb3J0UmVxdWVzdCA9IGRhdGEucmVwb3J0UmVxdWVzdDtcclxuXHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmJ1aWxkUmVwb3J0UmVxdWVzdChcclxuICAgICAgdGhpcy5kcmlsbERvd25Db2x1bW5zLFxyXG4gICAgICBgJHt0aGlzLmRyaWxsRG93blBhZ2VJbmZvLmxhYmVsc1NlY3Rpb259LiR7dGhpcy5kcmlsbERvd25QYWdlSW5mby5pZH1gLFxyXG4gICAgICByZXBvcnRSZXF1ZXN0LFxyXG4gICAgICAnJyxcclxuICAgICAgdGhpcy5kcmlsbERvd25QYWdlSW5mbyxcclxuICAgICAgJ0xBTkRTQ0FQRSdcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXR1cEZvcm0oZGF0YS5mb3JtKTtcclxuICAgIHRoaXMucmVtb3ZlQ2hlY2tib3hGaWVsZHMoKTtcclxuICAgIHRoaXMuc2V0dXBGaWx0ZXJzKGRhdGEucmVwb3J0UmVxdWVzdCwgZGF0YS5pdGVtKTtcclxuICAgIHRoaXMuc2V0dXBKdW5pb3JSZXBvcnRSZXF1ZXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRm9ybShmb3JtRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcG9ydEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZGlyZWN0b3JhdGU6IFtbXV0sXHJcbiAgICAgIGZyb21EYXRlOiBbJyddLFxyXG4gICAgICB0b0RhdGU6IFsnJ10sXHJcbiAgICAgIHNlY3Rvcjoge30sXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoZm9ybURhdGEpIHtcclxuICAgICAgdGhpcy5yZXBvcnRGb3JtLnBhdGNoVmFsdWUoZm9ybURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVDaGVja2JveEZpZWxkcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLnR5cGUgIT09ICdjaGVja2JveCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEZpbHRlcnMocmVwb3J0UmVxdWVzdDogYW55LCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcblxyXG4gICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcihyZXBvcnRSZXF1ZXN0LCB7XHJcbiAgICAgIGtleTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgIGZpZWxkTmFtZTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgIHZhbHVlOiB0aGlzLmFjdGl2ZUxldmVsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZE9yVXBkYXRlRmlsdGVyKHJlcG9ydFJlcXVlc3QsIHtcclxuICAgICAgaWQ6ICdpU2VjVmFsdWUnLFxyXG4gICAgICBrZXk6ICdpU2VjVmFsdWUnLFxyXG4gICAgICBmaWVsZE5hbWU6ICdpU2VjVmFsdWUnLFxyXG4gICAgICB2YWx1ZTogaXRlbT8uaXNlY192YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcihyZXBvcnRSZXF1ZXN0LCB7XHJcbiAgICAgIGlkOiAncGVyaW9kJyxcclxuICAgICAga2V5OiAncGVyaW9kJyxcclxuICAgICAgZmllbGROYW1lOiAncGVyaW9kJyxcclxuICAgICAgdmFsdWU6IGl0ZW0/LnBlcmlvZFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcihyZXBvcnRSZXF1ZXN0LCB7XHJcbiAgICAgIGlkOiAneWVhcicsXHJcbiAgICAgIGtleTogJ3llYXInLFxyXG4gICAgICBmaWVsZE5hbWU6ICd5ZWFyJyxcclxuICAgICAgdmFsdWU6IGl0ZW0/LnllYXJcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0ID0gcmVwb3J0UmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBKdW5pb3JSZXBvcnRSZXF1ZXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5qdW5pb3JSZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QoXHJcbiAgICAgIHRoaXMuanVuaW9yQ29sdW1ucyxcclxuICAgICAgYCR7dGhpcy5qdW5pb3JQYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke3RoaXMuanVuaW9yUGFnZUluZm8uaWR9YCxcclxuICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsXHJcbiAgICAgICcnLFxyXG4gICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLFxyXG4gICAgICAnTEFORFNDQVBFJ1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmp1bmlvclJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlU2l6ZSA9IDUwMDtcclxuICB9XHJcblxyXG4gIGlzTWF0Y2hIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5wYWdlSGVpZ2h0ID09PSAnbWF0Y2gnO1xyXG4gIH1cclxuXHJcblxyXG4gIGRvQWN0aW9uKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLnJlbG9hZERhdGEgPSAhdGhpcy5yZWxvYWREYXRhO1xyXG4gICAgICBjb25zdCBmaWx0ZXJSZXF1ZXN0OiBGaWx0ZXJSZXF1ZXN0ID0gbmV3IEZpbHRlclJlcXVlc3QodGhpcy5wYWdlU2l6ZSk7XHJcbiAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xyXG4gICAgICB0aGlzLmFkZE9yVXBkYXRlRmlsdGVyKGZpbHRlclJlcXVlc3QsIHtcclxuICAgICAgICBrZXk6ICdpU2VjTGV2ZWwnLFxyXG4gICAgICAgIGZpZWxkTmFtZTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuYWN0aXZlTGV2ZWxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBwYXJhbXNTdHJpbmc6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIHRoaXMuZmllbGRzLmZpbHRlcih4ID0+IHgudHlwZSAhPT0gJ3NwYWNlcicpLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0UGFyYW1WYWx1ZShmKSAhPSBudWxsICYmIHRoaXMuZ2V0UGFyYW1WYWx1ZShmKS50b1N0cmluZygpLnRyaW0oKSAhPT0gJycpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ211bHRpLXNlbGVjdCcgfHwgZi50eXBlID09PSAnbG9va3VwJykge1xyXG4gICAgICAgICAgICAvLyBkbyBub3QgZmlsdGVyIGlmIHRoaXMgZmllbGQgYXMgY2FzY2FkaW5nIGZvciBhbm90aGVyIG9uZSBhbmQgdGhlIG90aGVyIG9uZSBnb3Qgc2VsZWN0ZWQgdmFsdWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRmllbGRJZHggPSB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZmllbGQgPT4gZmllbGQuY2FzY2FkZWRCeSA9PT0gZi5wcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZEZpZWxkSWR4ID4gLTEgJiYgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldCh0aGlzLmZpZWxkc1tjaGlsZEZpZWxkSWR4XS5wcm9wZXJ0eSk/LnZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGlkejogbnVtYmVyW10gPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW06IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0uZ2V0KGYucHJvcGVydHkpPy52YWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlKVxyXG4gICAgICAgICAgICAgICYmIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0uZ2V0KGYucHJvcGVydHkpPy52YWx1ZS5mb3JFYWNoKChhOiB7XHJcbiAgICAgICAgICAgICAgICBjaGFubmVsSWQ6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGVuZ2xpc2hOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICBpZDogbnVtYmVyO1xyXG4gICAgICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChmLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICBpZHoucHVzaChhW2YuZmxhdHRlbkJ5U3ViQXR0cmlidXRlXSk7XHJcbiAgICAgICAgICAgICAgICAgIHBhcmFtLnB1c2goYVtmLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZV0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkcy5maW5kKHMgPT4gcy5wcm9wZXJ0eSA9PT0gJ3Rlcm1pbmFsSWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICBpZHoucHVzaChhLmNoYW5uZWxJZCk7XHJcbiAgICAgICAgICAgICAgICAgIHBhcmFtLnB1c2goYS5lbmdsaXNoTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZHoucHVzaChhLmlkKTtcclxuICAgICAgICAgICAgICAgICAgcGFyYW0ucHVzaChhLmVuZ2xpc2hOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycz8ucHVzaChuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnR5LCBmaWVsZE5hbWU6IGYucHJvcGVydHksIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLCBvcGVyYXRvcjogZi5maWx0ZXJPcGVyYXRvcixcclxuICAgICAgICAgICAgICAgIHZhbHVlT2JqZWN0OiBpZHpcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgcGFyYW1zU3RyaW5nLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZi5sYWJlbCkgKyAnIDogJyArIHBhcmFtLmpvaW4oJywnKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUgJiYgZi5mbGF0dGVuQnlTdWJBdHRyaWJ1dGUpIHtcclxuICAgICAgICAgICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnM/LnB1c2gobmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0eSwgZmllbGROYW1lOiBmLnByb3BlcnR5LCBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZi5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJywgb3BlcmF0b3I6IGYuZmlsdGVyT3BlcmF0b3IsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdDogdGhpcy5nZXRQYXJhbVZhbHVlKGYpW2YuZmxhdHRlbkJ5U3ViQXR0cmlidXRlXVxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzPy5wdXNoKG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGYucHJvcGVydHksIGZpZWxkTmFtZTogZi5wcm9wZXJ0eSwgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGYubGFiZWwpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsIG9wZXJhdG9yOiBmLmZpbHRlck9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuZ2V0UGFyYW1WYWx1ZShmKVxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJhbXNTdHJpbmcucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmLmxhYmVsKSArICcgOiAnICsgdGhpcy5nZXRQYXJhbVZhbHVlTGFiZWwoZikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH19KVxyXG4gICAgICBjb25zdCByZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QodGhpcy5jb2x1bW5zRGVmaW5pdGlvbiwgdGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgJy4nICsgdGhpcy5wYWdlSW5mby5pZCxcclxuICAgICAgICBmaWx0ZXJSZXF1ZXN0LCB0eXBlLCB0aGlzLnBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgIHJlcG9ydFJlcXVlc3Quc2VhcmNoU3RyID0gcGFyYW1zU3RyaW5nLmpvaW4oJyAsICcpO1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSByZXBvcnRSZXF1ZXN0O1xyXG4gICAgICAvLyB0aGlzLmFjdGl2ZUxldmVsID0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UoJ0lOVkFMSURfUkVQT1JUX0ZPUk0nLCB0cnVlLCAnZXJyb3InKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmFtVmFsdWUoZjogRmllbGRJbmZvKSB7XHJcbiAgICBpZiAoZi50eXBlID09PSAnZGF0ZScgJiYgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUpIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdERhdGUodGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUsICd5eXl5LU1NLWRkJywgJ2VuX1VTJylcclxuICAgIH1lbHNlIGlmIChmLnR5cGUgPT09ICdjaGVja2JveCcpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWU7XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0uZ2V0KGYucHJvcGVydHkpPy52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyYW1WYWx1ZUxhYmVsKGY6IEZpZWxkSW5mbykge1xyXG4gICAgaWYgKGYudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgneWVzJykgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbm8nKTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VGl0bGUoKSB7XHJcbiAgICBjb25zdCBwYWdlSW5mb01hcCA9IHtcclxuICAgICAgMTogdGhpcy5wYWdlSW5mbyxcclxuICAgICAgMjogdGhpcy5kcmlsbERvd25QYWdlSW5mbyxcclxuICAgICAgMzogdGhpcy5qdW5pb3JQYWdlSW5mb1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50SW5mbyA9IHBhZ2VJbmZvTWFwW3RoaXMuYWN0aXZlTGV2ZWxdIHx8IHRoaXMucGFnZUluZm87XHJcbiAgICByZXR1cm4gYCR7Y3VycmVudEluZm8ubGFiZWxzU2VjdGlvbn0uJHtjdXJyZW50SW5mby5pZH1gO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybSgkZXZlbnQ6IEZvcm1Hcm91cCkge1xyXG4gICAgdGhpcy5yZXBvcnRGb3JtID0gJGV2ZW50O1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtID0gJGV2ZW50O1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWFkeVRvU2VhcmNoID0gdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLnZhbGlkO1xyXG4gICAgICB9XHJcblxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWRGb3JtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1NlYXJjaCA7XHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICBlbWl0VXNlckFjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgICRldmVudC5wYWdlSW5mbyA9IHRoaXMucGFnZUluZm87XHJcbiAgICB0aGlzLmRvQURyaWxsRG93bkFjdGlvbigkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZW1pdEh5cGVyTGlua0FjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLnNob3VsZFByb2Nlc3NFdmVudEl0ZW0oJGV2ZW50Lml0ZW0pKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVwb3J0UmVxdWVzdCA9IGNsb25lRGVlcCh0aGlzLnJlcG9ydFJlcXVlc3QpO1xyXG4gICAgICBjb25zdCByZXBvcnRSZXF1ZXN0MSA9IHRoaXMuYmFja2VuZFNlcnZpY2UuYnVpbGRSZXBvcnRSZXF1ZXN0KFxyXG4gICAgICAgIHRoaXMuanVuaW9yQ29sdW1ucyxcclxuICAgICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyB0aGlzLmp1bmlvclBhZ2VJbmZvLmlkLFxyXG4gICAgICAgIHsgLi4udGhpcy5kaWFsb2dSZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QgfSxcclxuICAgICAgICAnJyxcclxuICAgICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLFxyXG4gICAgICAgICdMQU5EU0NBUEUnXHJcbiAgICAgICk7XHJcbiAgICAgIHJlcG9ydFJlcXVlc3QxLmZpbHRlclJlcXVlc3QucGFnZUluZGV4ID0gMFxyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlcG9ydERldGFpbHNEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBwYWdlSW5mbzogdGhpcy5qdW5pb3JQYWdlSW5mbyxcclxuICAgICAgICAgIHJlcXVlc3Q6IHJlcG9ydFJlcXVlc3QxLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5qdW5pb3JDb2x1bW5zLFxyXG4gICAgICAgICAgaXRlbSA6JGV2ZW50Lml0ZW1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGhlaWdodDogJzUwdncnLFxyXG4gICAgICAgIG1heFdpZHRoOiAnMTIwdncnLFxyXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50RGlyZWN0aW9uLFxyXG4gICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGlhbG9nUmVmLmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRvSHlwZXJMaW5rQWN0aW9uKCRldmVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGVtaXRKdW5pb3JBY3Rpb24oJGV2ZW50OiBUYWJsZVBhZ2VVc2VyQWN0aW9uKSB7XHJcbiAgICBjb25zb2xlLmxvZygnJGV2ZW50IGNhbGwganVuaW9yJywgJGV2ZW50KTtcclxuICAgIGNvbnN0IGp1bmlvckFjdGlvbiA9IEpVTklPUl9ET1dOX0FDVElPTjtcclxuICAgIGp1bmlvckFjdGlvbi5wYWdlSW5mbyA9IHRoaXMuZHJpbGxEb3duUGFnZUluZm87XHJcbiAgICB0aGlzLmRvSnVuaW9yQWN0aW9uKCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBkcmlsbERvd24oKSB7XHJcbiAgICBjb25zdCBkcmlsbGRvd25hY3Rpb24gPSBEUklMTF9ET1dOX0FDVElPTjtcclxuICAgIGRyaWxsZG93bmFjdGlvbi5wYWdlSW5mbyA9IHRoaXMuZHJpbGxEb3duUGFnZUluZm87XHJcbiAgICB0aGlzLmRvQURyaWxsRG93bkFjdGlvbihkcmlsbGRvd25hY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb0p1bmlvckFjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgIHRoaXMuanVuaW9yQ29sdW1ucyA9IHRoaXMub3JpZ2luYWxDb2x1bW5zXHJcbiAgICBpZiAodGhpcy5qdW5pb3JDb2x1bW5zICYmIHRoaXMuanVuaW9yUGFnZUluZm8pIHtcclxuICAgICAgaWYgKHRoaXMuZW5yaWNoSnVuaW9yUmVwb3J0UmVxdWVzdCkge1xyXG5cclxuICAgICAgICB0aGlzLmlzRWRpdGFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmp1bmlvclJlcG9ydFJlcXVlc3QgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmJ1aWxkUmVwb3J0UmVxdWVzdCh0aGlzLmp1bmlvckNvbHVtbnMsXHJcbiAgICAgICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyB0aGlzLmp1bmlvclBhZ2VJbmZvLmlkLFxyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsICcnLCB0aGlzLmp1bmlvclBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgICAgdGhpcy5lbnJpY2hKdW5pb3JSZXBvcnRSZXF1ZXN0KCRldmVudCwgdGhpcy5qdW5pb3JSZXBvcnRSZXF1ZXN0KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGl2ZUxldmVsID0gdGhpcy5hY3RpdmVMZXZlbCArMTtcclxuICAgICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcih0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdCwge1xyXG4gICAgICAgIGtleTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgICAgZmllbGROYW1lOiAnaVNlY0xldmVsJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5hY3RpdmVMZXZlbFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBkb0FEcmlsbERvd25BY3Rpb24oJGV2ZW50OiBUYWJsZVBhZ2VVc2VyQWN0aW9uKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuZHJpbGxEb3duQ29sdW1ucyAmJiB0aGlzLmRyaWxsRG93blBhZ2VJbmZvKSB7XHJcbiAgICAgIHRoaXMuZHJpbGxEb3duUmVxdWVzdFN0YWNrLnB1c2goY2xvbmVEZWVwKHRoaXMucmVwb3J0UmVxdWVzdCkpO1xyXG4gICAgICBpZiAodGhpcy5lbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0KSB7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGlsZFJlcG9ydFJlcXVlc3QgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmJ1aWxkUmVwb3J0UmVxdWVzdCh0aGlzLmRyaWxsRG93bkNvbHVtbnMsXHJcbiAgICAgICAgICB0aGlzLmRyaWxsRG93blBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyB0aGlzLmRyaWxsRG93blBhZ2VJbmZvLmlkLFxyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsICcnLCB0aGlzLmRyaWxsRG93blBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgICAgdGhpcy5lbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0KCRldmVudCwgdGhpcy5jaGlsZFJlcG9ydFJlcXVlc3QpO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoaWxkUmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gNTAwXHJcbiAgICAgIHRoaXMuYWN0aXZlTGV2ZWwgPSB0aGlzLmFjdGl2ZUxldmVsICsxO1xyXG4gICAgICB0aGlzLmFkZE9yVXBkYXRlRmlsdGVyKHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LCB7XHJcbiAgICAgICAga2V5OiAnaVNlY0xldmVsJyxcclxuICAgICAgICBmaWVsZE5hbWU6ICdpU2VjTGV2ZWwnLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmFjdGl2ZUxldmVsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy5pc0NvbXBhcmlzb25SZXBvcnQpe1xyXG4gICAgICAgIHRoaXMuYWRkT3JVcGRhdGVGaWx0ZXIodGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsIHtcclxuICAgICAgICAgIGlkOiAnaVNlY1ZhbHVlJyxcclxuICAgICAgICAgIGtleTogJ2lTZWNWYWx1ZScsXHJcbiAgICAgICAgICBmaWVsZE5hbWU6ICdpU2VjVmFsdWUnLFxyXG4gICAgICAgICAgdmFsdWU6ICRldmVudC5pdGVtLmlzZWNfdmFsdWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYWN0aXZlTGV2ZWwgPT09IDQpIHtcclxuICAgICAgICB0aGlzLmRyaWxsRG93bkNvbHVtbnMgPSB0aGlzLmRyaWxsRG93bkNvbHVtbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9PSAnYnV0dG9uJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWxvYWREYXRhID0gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRPclVwZGF0ZUZpbHRlcihcclxuICAgIGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QsXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgIGlkPzogc3RyaW5nO1xyXG4gICAgICBrZXk6IHN0cmluZztcclxuICAgICAgZmllbGROYW1lOiBzdHJpbmc7XHJcbiAgICAgIHZhbHVlOiBhbnk7XHJcbiAgICB9XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGlkLCBrZXksIGZpZWxkTmFtZSwgdmFsdWUgfSA9IG9wdGlvbnM7XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdGaWx0ZXJJbmRleCA9IGZpbHRlclJlcXVlc3QuZmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcjogRmlsdGVyKSA9PlxyXG4gICAgICBpZCA/IGZpbHRlci5pZCA9PT0gaWQgOiBmaWx0ZXIua2V5ID09PSBrZXlcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgbmV3RmlsdGVyID0gbmV3IEZpbHRlcih7XHJcbiAgICAgIC4uLihpZCAmJiB7IGlkIH0pLFxyXG4gICAgICBrZXksXHJcbiAgICAgIGZpZWxkTmFtZSxcclxuICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJyxcclxuICAgICAgb3BlcmF0b3I6ICdFUVVBTFMnLFxyXG4gICAgICB2YWx1ZU9iamVjdDogdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0ZpbHRlckluZGV4ICE9PSAtMSkge1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnNbZXhpc3RpbmdGaWx0ZXJJbmRleF0gPSBuZXdGaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMucHVzaChuZXdGaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb0h5cGVyTGlua0FjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLmVucmljaEh5cGVyTGlua1JlcG9ydFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5qdW5pb3JSZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QodGhpcy5qdW5pb3JDb2x1bW5zLFxyXG4gICAgICAgIHRoaXMuanVuaW9yUGFnZUluZm8ubGFiZWxzU2VjdGlvbiArICcuJyArIHRoaXMuanVuaW9yUGFnZUluZm8uaWQsXHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsICcnLCB0aGlzLmp1bmlvclBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgIHRoaXMuZW5yaWNoSHlwZXJMaW5rUmVwb3J0UmVxdWVzdCgkZXZlbnQsIHRoaXMuanVuaW9yUmVwb3J0UmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHRyYWN0UmVwb3J0KHJlcG9ydFR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LnJlcG9ydFR5cGUgPSByZXBvcnRUeXBlO1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5kb3dubG9hZFJlcG9ydCh0aGlzLnJlcG9ydFJlcXVlc3QsIHRoaXMuZHJpbGxEb3duUGFnZUluZm8uYXBpVXJpICk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ29VcCgpIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMucmVwb3J0Rm9ybS5jb250cm9scykuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnJlcG9ydEZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgICAgY29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgIGNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pc0VkaXRhYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aXZlTGV2ZWwgPSB0aGlzLmFjdGl2ZUxldmVsIC0gMTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUxldmVsID4gMSApIHtcclxuICAgICAgdGhpcy5pc0VkaXRhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRvQWN0aW9uKHRoaXMueCk7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmRyaWxsRG93blJlcXVlc3RTdGFjay5wb3AoKTtcclxuICAgIHRoaXMuYWRkT3JVcGRhdGVGaWx0ZXIodGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsIHtcclxuICAgICAga2V5OiAnaVNlY0xldmVsJyxcclxuICAgICAgZmllbGROYW1lOiAnaVNlY0xldmVsJyxcclxuICAgICAgdmFsdWU6IHRoaXMuYWN0aXZlTGV2ZWxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWxvYWREYXRhID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUxldmVsICE9PSA0KSB7XHJcbiAgICAgIHRoaXMuZHJpbGxEb3duQ29sdW1ucyA9IFsuLi50aGlzLm9yaWdpbmFsQ29sdW1uc107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZHJpbGxEb3duRW5hYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRyaWxsRG93blBhZ2VJbmZvICYmICF0aGlzLmhpZGVEcmlsbERvd25CdXR0b24gJiYgIXRoaXMuZ2V0SXNFbXB0eUxpc3QoKTtcclxuICB9XHJcblxyXG4gIGRyaWxsRG93bkxhYmVsKCkge1xyXG4gICAgcmV0dXJuIGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uZHJpbGxEb3duTGFiZWxgIDtcclxuICB9XHJcbiAgZ2V0SXNFbXB0eUxpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kU2VydmljZS5pc0VtcHR5SXRlbXM7XHJcbiAgfVxyXG4gIGNsZWFyKCkge1xyXG4gICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2N1cnJlbnRVcmxdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzRm9ybUVtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLnJlcG9ydEZvcm0gfHwgIXRoaXMucmVwb3J0Rm9ybS52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnJlcG9ydEZvcm0udmFsdWUpLmV2ZXJ5KHZhbHVlID0+IHtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMDtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3VsZFByb2Nlc3NFdmVudEl0ZW0oaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBncm91cEJ5UHJvcCA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlQcm9wZXJ0eTtcclxuICAgIGNvbnN0IGdyb3VwQnlWYWx1ZXMgPSB0aGlzLnBhZ2VJbmZvPy5ncm91cEJ5VmFsdWU7XHJcblxyXG4gICAgaWYgKCFncm91cEJ5UHJvcCB8fCAhZ3JvdXBCeVZhbHVlcyB8fCAhaXRlbVtncm91cEJ5UHJvcF0pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBpdGVtW2dyb3VwQnlQcm9wXS50b1N0cmluZygpO1xyXG5cclxuICAgIHJldHVybiAhZ3JvdXBCeVZhbHVlcy5zb21lKHYgPT4gdmFsdWUuaW5jbHVkZXModikgJiYgdmFsdWUubGVuZ3RoID49IHYubGVuZ3RoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwYWdlLWNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jZW50ZXItc3RhcnQgbWItMTBweCBmdWxsLXdpZHRoXCI+XHJcbiAgICA8YXBwLXRpdGxlLWJhciBbcGFnZVRpdGxlXT1cImdldFRpdGxlKClcIiBbbmV3QWN0aW9uXT1cImZhbHNlXCI+PC9hcHAtdGl0bGUtYmFyPlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwicGFnZUluZm8/Lmhhc0hpbnRcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLmhpbnQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImhlbHAtaWNvblwiXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj5cclxuICAgICAgaGVscF9vdXRsaW5lXHJcbiAgICA8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YXBwLWJhc2UtZm9ybS1jYW52YXNcclxuICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAgICBbZWRpdGFibGVdPVwiaXNFZGl0YWJsZVwiXHJcbiAgICBbZXJyb3JzXT1cImVycm9yc1wiXHJcbiAgICBbaXRlbV09XCJyZXBvcnRGb3JtPy52YWx1ZSB8fCB7fVwiXHJcbiAgICAoZm9ybVVwZGF0ZWQpPVwidXBkYXRlRm9ybSgkZXZlbnQpXCI+XHJcbiAgPC9hcHAtYmFzZS1mb3JtLWNhbnZhcz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNlbnRlci1zdGFydFwiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMZXZlbCA9PT0gMVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwiZG9BY3Rpb24oeClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc1ZhbGlkRm9ybSgpXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgaWQ9XCJhY3Rpdml0eS1nZW5lcmF0ZS1idG5cIj5cclxuICAgICAgICAgIHt7ICdSRVBPUlRTLmdlbmVyYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbZGlzYWJsZWRdPVwiZ2V0SXNFbXB0eUxpc3QoKVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImJ0bi1ub25lLWJhY2tncm91bmQtcHJpbWFyeSBhY3Rpb24tYnV0dG9uXCIgaWQ9XCJhY3Rpdml0eS1leHRyYWN0LXRyaWdnZXJcIj5cclxuICAgICAgICAgIHt7ICdleHRyYWN0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZXhwYW5kX21vcmUgYWN0aW9uQnV0dG9uX19leHBhbmRcIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cImNsZWFyKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRm9ybUVtcHR5KCkgfHwgYWN0aXZlTGV2ZWwgPiAxXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIGlkPVwiYWN0aXZpdHktY2xlYXItYnRuXCI+XHJcbiAgICAgICAgICB7eyAnUkVQT1JUUy5jbGVhcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGV2ZWwgPT09IDEgJiYgZHJpbGxEb3duRW5hYmxlZCgpXCIgY29sb3I9XCJ3YXJuXCIgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHJpbGxEb3duKClcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIiBpZD1cImFjdGl2aXR5LWRyaWxsZG93bi1idG5cIj5cclxuICAgICAgICAgIHt7IGRyaWxsRG93bkxhYmVsKCkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGV2ZWwgPiAxICYmICEoaXNDb21wYXJpc29uUmVwb3J0ICYmIGFjdGl2ZUxldmVsID09IDIpXCIgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICAgIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwiZ29VcCgpXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgaWQ9XCJhY3Rpdml0eS11cC1idG5cIj5cclxuICAgICAgICAgIHt7ICdSRVBPUlRTLnVwJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gQmFzZSB0YWJsZXMgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZUxldmVsID09PSAxXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IG1haW4tZm9ybS1jYW52YXMgbXQtM3ZoXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gZmxleC0xMDBcIj5cclxuICAgICAgICA8YXBwLWJhc2UtdGFibGUgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCIgW2NvbHVtbnNdPVwiY29sdW1uc0RlZmluaXRpb25cIiBbZW5mb3JjZVJlZnJlc2hdPVwicmVsb2FkRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFyZW50XCIgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyQWN0aW9uKT1cImVtaXRVc2VyQWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHlwZXJMaW5rQWN0aW9uKT1cImVtaXRIeXBlckxpbmtBY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWJhc2UtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVMZXZlbCA9PT0gMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGZsZXgtMTAwXCI+XHJcbiAgICAgICAgPGFwcC1iYXNlLXRhYmxlIFtwYWdlSW5mb109XCJkcmlsbERvd25QYWdlSW5mb1wiIFtjb2x1bW5zXT1cImRyaWxsRG93bkNvbHVtbnNcIiBpZD1cImNoaWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyQWN0aW9uKT1cImVtaXRVc2VyQWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHlwZXJMaW5rQWN0aW9uKT1cImVtaXRIeXBlckxpbmtBY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWJhc2UtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVMZXZlbCA9PT0gM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGZsZXgtMTAwXCI+XHJcbiAgICAgICAgPGFwcC1iYXNlLXRhYmxlIFtwYWdlSW5mb109XCJkcmlsbERvd25QYWdlSW5mb1wiIFtjb2x1bW5zXT1cImRyaWxsRG93bkNvbHVtbnNcIiBpZD1cImp1bmlvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXBvcnRSZXF1ZXN0XT1cInJlcG9ydFJlcXVlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlckFjdGlvbik9XCJlbWl0VXNlckFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh5cGVyTGlua0FjdGlvbik9XCJlbWl0SHlwZXJMaW5rQWN0aW9uKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1iYXNlLXRhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlTGV2ZWwgPT09IDRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbWFpbi1mb3JtLWNhbnZhcyBtdC0zdmhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTEwMFwiPlxyXG4gICAgICAgIDxhcHAtYmFzZS10YWJsZSBbcGFnZUluZm9dPVwiZHJpbGxEb3duUGFnZUluZm9cIiBbY29sdW1uc109XCJkcmlsbERvd25Db2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyQWN0aW9uKT1cImVtaXRVc2VyQWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHlwZXJMaW5rQWN0aW9uKT1cImVtaXRIeXBlckxpbmtBY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWJhc2UtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L2Rpdj5cclxuXHJcbjwhLS0gTWVudSAtLT5cclxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHR5cGUgb2YgdHlwZXNcIiAoY2xpY2spPVwiZXh0cmFjdFJlcG9ydCh0eXBlKVwiIFthdHRyLmlkXT1cIidhY3Rpdml0eS1leHRyYWN0LWl0ZW0tJyArIHR5cGVcIj5cclxuICAgIHt7IHR5cGUgfX1cclxuICA8L2J1dHRvbj5cclxuPC9tYXQtbWVudT5cclxuIl19
499
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktcmVwb3J0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpdml0eS1yZXBvcnQtZm9ybS9hY3Rpdml0eS1yZXBvcnQtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LXJlcG9ydC1mb3JtL2FjdGl2aXR5LXJlcG9ydC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBVyxNQUFNLDRCQUE0QixDQUFDO0FBR3JFLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFJdEUsT0FBTyxFQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sK0JBQStC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QWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLE9BQU87d0JBQ1AsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsSUFBSTt3QkFDSixhQUFhO3dCQUNiLFNBQVM7d0JBQ1QsVUFBVTtxQkFDWDt1U0FNRCxXQUFXO3NCQURWLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFLRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBR04sVUFBVTtzQkFEVCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGaWVsZEluZm99IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL2ZpZWxkLWluZm9cIjtcclxuaW1wb3J0IHtFTVBUWV9QQUdFX0lORk8sIFBhZ2VJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9wYWdlLWluZm9cIjtcclxuaW1wb3J0IHtUYWJsZUNvbHVtbn0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvdGFibGUtY29sdW1uLmludGVyZmFjZVwiO1xyXG5pbXBvcnQge0ZpZWxkTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvYXBpLXJlc3BvbnNlXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5pbXBvcnQge0JhY2tlbmRTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYmFja2VuZC1zZXJ2aWNlXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge2Zvcm1hdERhdGUsIE5nRm9yT2YsIE5nSWZ9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHtNYXRNZW51LCBNYXRNZW51SXRlbSwgTWF0TWVudVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7TWF0QnV0dG9uLCBNYXRCdXR0b25Nb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcclxuaW1wb3J0IHtCYXNlVGFibGVDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLXRhYmxlL2Jhc2UtdGFibGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtGaWx0ZXJSZXF1ZXN0fSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9maWx0ZXItcmVxdWVzdFwiO1xyXG5pbXBvcnQge1JlcG9ydFJlcXVlc3R9IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3JlcG9ydC1yZXF1ZXN0Lm1vZGVsXCI7XHJcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9maWx0ZXIubW9kZWxcIjtcclxuaW1wb3J0IHtUaXRsZUJhckNvbXBvbmVudH0gZnJvbSBcIi4uL3RpdGxlLWJhci90aXRsZS1iYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QmFzZUZvcm1DYW52YXNDb21wb25lbnR9IGZyb20gXCIuLi9iYXNlLWZvcm0tY2FudmFzL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50XCI7XHJcbmltcG9ydCBDbGFzc2ljRWRpdG9yIGZyb20gXCJAY2tlZGl0b3IvY2tlZGl0b3I1LWJ1aWxkLWNsYXNzaWNcIjtcclxuaW1wb3J0IHtEUklMTF9ET1dOX0FDVElPTiwgSlVOSU9SX0RPV05fQUNUSU9OLCBTbmFja01lc3NhZ2UsIFRhYmxlUGFnZVVzZXJBY3Rpb259IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsXCI7XHJcbmltcG9ydCB7fSBmcm9tIFwiLi4vYXVkaXQtbG9nLWRldGFpbHMtZGlhbG9nL2F1ZGl0LWxvZy1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtSZXBvcnREZXRhaWxzRGlhbG9nQ29tcG9uZW50fSBmcm9tIFwiLi4vcmVwb3J0LWRldGFpbHMtZGlhbG9nL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9iaWRpXCI7XHJcbmltcG9ydCB7TWF0VG9vbHRpcH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcclxuXHJcblxyXG5jb25zdCBOT05fUkVQT1JUX0NPTFVNTlMgPSBbJ2xpc3RBY3Rpb24nLCAnYnV0dG9uJywgJ2NoZWNrYm94J107XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1yZXBvcnQtZm9ybScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUaXRsZUJhckNvbXBvbmVudCxcclxuICAgIEJhc2VGb3JtQ2FudmFzQ29tcG9uZW50LFxyXG4gICAgTWF0TWVudSxcclxuICAgIE1hdE1lbnVJdGVtLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE1hdE1lbnVUcmlnZ2VyLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgQmFzZVRhYmxlQ29tcG9uZW50LFxyXG4gICAgTmdJZixcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRUb29sdGlwXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aXZpdHktcmVwb3J0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hY3Rpdml0eS1yZXBvcnQtZm9ybS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5UmVwb3J0Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKVxyXG4gIHNob3dEZXRhaWxzIDogYW55ID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd0V4dHJhY3RCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXSA9W107XHJcbiAgcHJpdmF0ZSBvcmlnaW5hbENvbHVtbnM6IGFueVtdID0gW107XHJcblxyXG5cclxuICBASW5wdXQoKSBhY3Rpb25SZXF1ZXN0Q2FsbGJhY2shOiAoYWN0aW9uUmVxdWVzdDogVGFibGVQYWdlVXNlckFjdGlvbikgPT4gVGFibGVQYWdlVXNlckFjdGlvbjtcclxuICBASW5wdXQoKSBlbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0ITogKGFjdGlvblJlcXVlc3Q6IFRhYmxlUGFnZVVzZXJBY3Rpb24sIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3QpID0+IFRhYmxlUGFnZVVzZXJBY3Rpb247XHJcbiAgQElucHV0KCkgZW5yaWNoSHlwZXJMaW5rUmVwb3J0UmVxdWVzdCE6IChhY3Rpb25SZXF1ZXN0OiBUYWJsZVBhZ2VVc2VyQWN0aW9uLCByZXBvcnRSZXF1ZXN0OiBSZXBvcnRSZXF1ZXN0KSA9PiBUYWJsZVBhZ2VVc2VyQWN0aW9uO1xyXG4gIEBJbnB1dCgpIGVucmljaEp1bmlvclJlcG9ydFJlcXVlc3QhOiAoYWN0aW9uUmVxdWVzdDogVGFibGVQYWdlVXNlckFjdGlvbiwgcmVwb3J0UmVxdWVzdDogUmVwb3J0UmVxdWVzdCkgPT4gVGFibGVQYWdlVXNlckFjdGlvbjtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdXNlckFjdGlvbjogRXZlbnRFbWl0dGVyPFRhYmxlUGFnZVVzZXJBY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVBhZ2VVc2VyQWN0aW9uPigpO1xyXG4gIGFjdGl2ZUxldmVsOiBudW1iZXIgPSAxO1xyXG4gIGl0ZW1zID0gWzQsIDUsNiw3XTtcclxuICBwcml2YXRlIGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3Q7XHJcbiAgeDogYW55O1xyXG4gIGlzRWRpdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGZpZWxkczogRmllbGRJbmZvW10gPSBbXTtcclxuICBwYWdlSW5mbzogUGFnZUluZm8gPSBFTVBUWV9QQUdFX0lORk87XHJcbiAgZHJpbGxEb3duUGFnZUluZm86IFBhZ2VJbmZvID0gRU1QVFlfUEFHRV9JTkZPO1xyXG4gIGRyaWxsRG93bkNvbHVtbnM6IFRhYmxlQ29sdW1uPGFueT5bXSA9IFtdO1xyXG4gIGhpZGVEcmlsbERvd25CdXR0b246IGZhbHNlO1xyXG5cclxuICBqdW5pb3JQYWdlSW5mbzogUGFnZUluZm8gPSBFTVBUWV9QQUdFX0lORk87XHJcbiAganVuaW9yQ29sdW1uczogVGFibGVDb2x1bW48YW55PltdID0gW107XHJcblxyXG4gIGNvbHVtbnNEZWZpbml0aW9uOiBUYWJsZUNvbHVtbjxhbnk+W10gPSBbXTtcclxuICB0eXBlczogc3RyaW5nW10gPSBbXCJwZGZcIiwgXCJjc3ZcIiwgXCJ4bHN4XCJdXHJcbiAgc2VhcmNoU3RyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgZXJyb3JzOiBGaWVsZE1lc3NhZ2VbXSA9IFtdO1xyXG5cclxuICByZWxvYWREYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJpbGxEb3duUmVxdWVzdFN0YWNrOiBhbnlbXSA9IFtdO1xyXG4gIHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3QgPSBuZXcgUmVwb3J0UmVxdWVzdCh7fSk7XHJcbiAgY2hpbGRSZXBvcnRSZXF1ZXN0OiBSZXBvcnRSZXF1ZXN0ID0gbmV3IFJlcG9ydFJlcXVlc3Qoe30pO1xyXG4gIGp1bmlvclJlcG9ydFJlcXVlc3Q6IFJlcG9ydFJlcXVlc3QgPSBuZXcgUmVwb3J0UmVxdWVzdCh7fSk7XHJcbiAgcHVibGljIHJlcG9ydEZvcm06IEZvcm1Hcm91cDtcclxuICByZWFkeVRvU2VhcmNoID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBwYWdlU2l6ZTogYW55O1xyXG4gIHByaXZhdGUgZGlhbG9nUmVwb3J0UmVxdWVzdDogYW55O1xyXG4gIGN1cnJlbnREaXJlY3Rpb246ICdsdHInIHwgJ3J0bCc7XHJcbiAgcHJvdGVjdGVkIGlzQ29tcGFyaXNvblJlcG9ydDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwdWJsaWMgYmFja2VuZFNlcnZpY2U6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICBDbGFzc2ljRWRpdG9yLmRlZmF1bHRDb25maWcgPSB7XHJcbiAgICAgIHRvb2xiYXI6IHtcclxuICAgICAgICBpdGVtczogWydoZWFkaW5nJywgJ3wnLCAnYm9sZCcsICdpdGFsaWMnLCAnfCcsICdidWxsZXRlZExpc3QnLCAnbnVtYmVyZWRMaXN0J11cclxuICAgICAgfSxcclxuICAgICAgaW1hZ2U6IHtcclxuICAgICAgICB0b29sYmFyOiBbJ2ltYWdlU3R5bGU6c2lkZScsICd8JywgJ2ltYWdlVGV4dEFsdGVybmF0aXZlJ11cclxuICAgICAgfSxcclxuICAgICAgdGFibGU6IHtcclxuICAgICAgICBjb250ZW50VG9vbGJhcjogWyAndGFibGVDb2x1bW4nLCAndGFibGVSb3cnLCAnbWVyZ2VUYWJsZUNlbGxzJyBdXHJcbiAgICAgIH0sXHJcbiAgICAgIGxhbmd1YWdlOiAnZW4nXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcclxuICAgIHRoaXMuZGlyZWN0aW9uYWxpdHkuY2hhbmdlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5jdXJyZW50RGlyZWN0aW9uID0gdmFsdWU7XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuZGF0YS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMucGFnZUluZm8gPSBkYXRhWydwYWdlSW5mbyddO1xyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5wYWdlSW5mby5wYWdlU2l6ZSA/PyAxMDtcclxuICAgICAgdGhpcy5maWx0ZXJSZXF1ZXN0PSBuZXcgRmlsdGVyUmVxdWVzdCh0aGlzLnBhZ2VTaXplKTtcclxuICAgICAgZGF0YVsncGFnZUluZm8nXS5sYXp5TG9hZERhdGEgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRyaWxsRG93blBhZ2VJbmZvID0gZGF0YVsnZHJpbGxEb3duUGFnZUluZm8nXTtcclxuICAgICAgdGhpcy5kcmlsbERvd25Db2x1bW5zID0gZGF0YVsnZHJpbGxEb3duQ29sdW1ucyddO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IFsuLi50aGlzLmRyaWxsRG93bkNvbHVtbnNdO1xyXG4gICAgICB0aGlzLmhpZGVEcmlsbERvd25CdXR0b24gPSBkYXRhWydoaWRlRHJpbGxEb3duQnV0dG9uJ10gPz8gZmFsc2U7XHJcbiAgICAgIHRoaXMuanVuaW9yUGFnZUluZm8gPSBkYXRhWydqdW5pb3JQYWdlSW5mbyddO1xyXG4gICAgICB0aGlzLmp1bmlvckNvbHVtbnMgPSBkYXRhWydqdW5pb3JDb2x1bW5zJ107XHJcbiAgICAgIHRoaXMuY29sdW1uc0RlZmluaXRpb24gPSBkYXRhWydjb2x1bW5zRGVmaW5pdGlvbiddLmZpbHRlcihjID0+ICh0aGlzLmRyaWxsRG93blBhZ2VJbmZvICYmIHRoaXMuZHJpbGxEb3duQ29sdW1ucyB8fCAoIU5PTl9SRVBPUlRfQ09MVU1OUy5pbmNsdWRlcyhjLnR5cGUpKSkpO1xyXG4gICAgICB0aGlzLmZpZWxkcyA9IGRhdGFbJ2ZpZWxkcyddO1xyXG4gICAgICBpZiAoZGF0YVsnZW5yaWNoRHJpbGxEb3duUmVwb3J0UmVxdWVzdCddKSB7XHJcbiAgICAgICAgdGhpcy5lbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0ID0gZGF0YVsnZW5yaWNoRHJpbGxEb3duUmVwb3J0UmVxdWVzdCddKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkYXRhWydlbnJpY2hKdW5pb3JSZXBvcnRSZXF1ZXN0J10pIHtcclxuICAgICAgICB0aGlzLmVucmljaEp1bmlvclJlcG9ydFJlcXVlc3QgPSBkYXRhWydlbnJpY2hKdW5pb3JSZXBvcnRSZXF1ZXN0J10odGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChkYXRhWydlbnJpY2hIeXBlckxpbmtSZXBvcnRSZXF1ZXN0J10pIHtcclxuICAgICAgICB0aGlzLmVucmljaEh5cGVyTGlua1JlcG9ydFJlcXVlc3QgPSBkYXRhWydlbnJpY2hIeXBlckxpbmtSZXBvcnRSZXF1ZXN0J10odGhpcy5pbmplY3Rvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5pc0NvbXBhcmlzb25SZXBvcnQgPSBwYXJhbXMuZ2V0KCdjb21wYXJpc29uUmVwb3J0JykgPT09ICd0cnVlJztcclxuICAgICAgaWYgKCF0aGlzLmlzQ29tcGFyaXNvblJlcG9ydCkgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgY29tcGFyaXNvblN0ciA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2NvbXBhcmlzb25SZXBvcnRQYWdlSW5mbycpO1xyXG4gICAgICBpZiAoIWNvbXBhcmlzb25TdHIpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IGNvbXBhcmlzb25EYXRhID0gSlNPTi5wYXJzZShjb21wYXJpc29uU3RyKTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplQ29tcGFyaXNvblJlcG9ydChjb21wYXJpc29uRGF0YSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbXBhcmlzb25SZXBvcnQoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLmxhenlMb2FkRGF0YSA9IGRhdGEubGF6eUxvYWREYXRhID8/IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVMZXZlbCA9IGRhdGEuYWN0aXZlTGV2ZWwgPz8gMjtcclxuICAgIHRoaXMuaXNFZGl0YWJsZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5kcmlsbERvd25QYWdlSW5mbyA9IGRhdGEuZHJpbGxEb3duUGFnZUluZm87XHJcbiAgICB0aGlzLmRyaWxsRG93bkNvbHVtbnMgPSBkYXRhLmRyaWxsRG93bkNvbHVtbnM7XHJcblxyXG4gICAgY29uc3QgcmVwb3J0UmVxdWVzdCA9IGRhdGEucmVwb3J0UmVxdWVzdDtcclxuXHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmJ1aWxkUmVwb3J0UmVxdWVzdChcclxuICAgICAgdGhpcy5kcmlsbERvd25Db2x1bW5zLFxyXG4gICAgICBgJHt0aGlzLmRyaWxsRG93blBhZ2VJbmZvLmxhYmVsc1NlY3Rpb259LiR7dGhpcy5kcmlsbERvd25QYWdlSW5mby5pZH1gLFxyXG4gICAgICByZXBvcnRSZXF1ZXN0LFxyXG4gICAgICAnJyxcclxuICAgICAgdGhpcy5kcmlsbERvd25QYWdlSW5mbyxcclxuICAgICAgJ0xBTkRTQ0FQRSdcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zZXR1cEZvcm0oZGF0YS5mb3JtKTtcclxuICAgIHRoaXMucmVtb3ZlQ2hlY2tib3hGaWVsZHMoKTtcclxuICAgIHRoaXMuc2V0dXBGaWx0ZXJzKGRhdGEucmVwb3J0UmVxdWVzdCwgZGF0YS5pdGVtKTtcclxuICAgIHRoaXMuc2V0dXBKdW5pb3JSZXBvcnRSZXF1ZXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRm9ybShmb3JtRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcG9ydEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZGlyZWN0b3JhdGU6IFtbXV0sXHJcbiAgICAgIGZyb21EYXRlOiBbJyddLFxyXG4gICAgICB0b0RhdGU6IFsnJ10sXHJcbiAgICAgIHNlY3Rvcjoge30sXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoZm9ybURhdGEpIHtcclxuICAgICAgdGhpcy5yZXBvcnRGb3JtLnBhdGNoVmFsdWUoZm9ybURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVDaGVja2JveEZpZWxkcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5maWVsZHMuZmlsdGVyKGZpZWxkID0+IGZpZWxkLnR5cGUgIT09ICdjaGVja2JveCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEZpbHRlcnMocmVwb3J0UmVxdWVzdDogYW55LCBpdGVtOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsdGVyUmVxdWVzdC5maWx0ZXJzID0gW107XHJcblxyXG4gICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcihyZXBvcnRSZXF1ZXN0LCB7XHJcbiAgICAgIGtleTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgIGZpZWxkTmFtZTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgIHZhbHVlOiB0aGlzLmFjdGl2ZUxldmVsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZE9yVXBkYXRlRmlsdGVyKHJlcG9ydFJlcXVlc3QsIHtcclxuICAgICAgaWQ6ICdpU2VjVmFsdWUnLFxyXG4gICAgICBrZXk6ICdpU2VjVmFsdWUnLFxyXG4gICAgICBmaWVsZE5hbWU6ICdpU2VjVmFsdWUnLFxyXG4gICAgICB2YWx1ZTogaXRlbT8uaXNlY192YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcihyZXBvcnRSZXF1ZXN0LCB7XHJcbiAgICAgIGlkOiAncGVyaW9kJyxcclxuICAgICAga2V5OiAncGVyaW9kJyxcclxuICAgICAgZmllbGROYW1lOiAncGVyaW9kJyxcclxuICAgICAgdmFsdWU6IGl0ZW0/LnBlcmlvZFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcihyZXBvcnRSZXF1ZXN0LCB7XHJcbiAgICAgIGlkOiAneWVhcicsXHJcbiAgICAgIGtleTogJ3llYXInLFxyXG4gICAgICBmaWVsZE5hbWU6ICd5ZWFyJyxcclxuICAgICAgdmFsdWU6IGl0ZW0/LnllYXJcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0ID0gcmVwb3J0UmVxdWVzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBKdW5pb3JSZXBvcnRSZXF1ZXN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5qdW5pb3JSZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QoXHJcbiAgICAgIHRoaXMuanVuaW9yQ29sdW1ucyxcclxuICAgICAgYCR7dGhpcy5qdW5pb3JQYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke3RoaXMuanVuaW9yUGFnZUluZm8uaWR9YCxcclxuICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsXHJcbiAgICAgICcnLFxyXG4gICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLFxyXG4gICAgICAnTEFORFNDQVBFJ1xyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmp1bmlvclJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdC5wYWdlU2l6ZSA9IDUwMDtcclxuICB9XHJcblxyXG4gIGlzTWF0Y2hIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlSW5mby5wYWdlSGVpZ2h0ID09PSAnbWF0Y2gnO1xyXG4gIH1cclxuXHJcblxyXG4gIGRvQWN0aW9uKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLnJlbG9hZERhdGEgPSAhdGhpcy5yZWxvYWREYXRhO1xyXG4gICAgICBjb25zdCBmaWx0ZXJSZXF1ZXN0OiBGaWx0ZXJSZXF1ZXN0ID0gbmV3IEZpbHRlclJlcXVlc3QodGhpcy5wYWdlU2l6ZSk7XHJcbiAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycyA9IFtdO1xyXG4gICAgICB0aGlzLmFkZE9yVXBkYXRlRmlsdGVyKGZpbHRlclJlcXVlc3QsIHtcclxuICAgICAgICBrZXk6ICdpU2VjTGV2ZWwnLFxyXG4gICAgICAgIGZpZWxkTmFtZTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuYWN0aXZlTGV2ZWxcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBwYXJhbXNTdHJpbmc6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIHRoaXMuZmllbGRzLmZpbHRlcih4ID0+IHgudHlwZSAhPT0gJ3NwYWNlcicpLmZvckVhY2goZiA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0UGFyYW1WYWx1ZShmKSAhPSBudWxsICYmIHRoaXMuZ2V0UGFyYW1WYWx1ZShmKS50b1N0cmluZygpLnRyaW0oKSAhPT0gJycpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ211bHRpLXNlbGVjdCcgfHwgZi50eXBlID09PSAnbG9va3VwJykge1xyXG4gICAgICAgICAgICAvLyBkbyBub3QgZmlsdGVyIGlmIHRoaXMgZmllbGQgYXMgY2FzY2FkaW5nIGZvciBhbm90aGVyIG9uZSBhbmQgdGhlIG90aGVyIG9uZSBnb3Qgc2VsZWN0ZWQgdmFsdWVzXHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkRmllbGRJZHggPSB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZmllbGQgPT4gZmllbGQuY2FzY2FkZWRCeSA9PT0gZi5wcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZEZpZWxkSWR4ID4gLTEgJiYgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldCh0aGlzLmZpZWxkc1tjaGlsZEZpZWxkSWR4XS5wcm9wZXJ0eSk/LnZhbHVlPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGlkejogbnVtYmVyW10gPSBbXTtcclxuICAgICAgICAgICAgY29uc3QgcGFyYW06IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0uZ2V0KGYucHJvcGVydHkpPy52YWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlKVxyXG4gICAgICAgICAgICAgICYmIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0uZ2V0KGYucHJvcGVydHkpPy52YWx1ZS5mb3JFYWNoKChhOiB7XHJcbiAgICAgICAgICAgICAgICBjaGFubmVsSWQ6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGVuZ2xpc2hOYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICBpZDogbnVtYmVyO1xyXG4gICAgICAgICAgICAgIH0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChmLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgICAgICAgICBpZHoucHVzaChhW2YuZmxhdHRlbkJ5U3ViQXR0cmlidXRlXSk7XHJcbiAgICAgICAgICAgICAgICAgIHBhcmFtLnB1c2goYVtmLmZsYXR0ZW5CeVN1YkF0dHJpYnV0ZV0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkcy5maW5kKHMgPT4gcy5wcm9wZXJ0eSA9PT0gJ3Rlcm1pbmFsSWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICBpZHoucHVzaChhLmNoYW5uZWxJZCk7XHJcbiAgICAgICAgICAgICAgICAgIHBhcmFtLnB1c2goYS5lbmdsaXNoTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBpZHoucHVzaChhLmlkKTtcclxuICAgICAgICAgICAgICAgICAgcGFyYW0ucHVzaChhLmVuZ2xpc2hOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIGZpbHRlclJlcXVlc3QuZmlsdGVycz8ucHVzaChuZXcgRmlsdGVyKHtcclxuICAgICAgICAgICAgICAgIGlkOiBmLnByb3BlcnR5LCBmaWVsZE5hbWU6IGYucHJvcGVydHksIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmLmxhYmVsKSxcclxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGU6ICdGSUxFRF9GSUxURVInLCBvcGVyYXRvcjogZi5maWx0ZXJPcGVyYXRvcixcclxuICAgICAgICAgICAgICAgIHZhbHVlT2JqZWN0OiBpZHpcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgICAgcGFyYW1zU3RyaW5nLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZi5sYWJlbCkgKyAnIDogJyArIHBhcmFtLmpvaW4oJywnKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUgJiYgZi5mbGF0dGVuQnlTdWJBdHRyaWJ1dGUpIHtcclxuICAgICAgICAgICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnM/LnB1c2gobmV3IEZpbHRlcih7XHJcbiAgICAgICAgICAgICAgICBpZDogZi5wcm9wZXJ0eSwgZmllbGROYW1lOiBmLnByb3BlcnR5LCBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZi5sYWJlbCksXHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJywgb3BlcmF0b3I6IGYuZmlsdGVyT3BlcmF0b3IsXHJcbiAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdDogdGhpcy5nZXRQYXJhbVZhbHVlKGYpW2YuZmxhdHRlbkJ5U3ViQXR0cmlidXRlXVxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlICE9PSBudWxsICYmXHJcbiAgICAgICAgICAgICAgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyUmVxdWVzdC5maWx0ZXJzPy5wdXNoKG5ldyBGaWx0ZXIoe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGYucHJvcGVydHksIGZpZWxkTmFtZTogZi5wcm9wZXJ0eSwgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGYubGFiZWwpLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZTogJ0ZJTEVEX0ZJTFRFUicsIG9wZXJhdG9yOiBmLmZpbHRlck9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVPYmplY3Q6IHRoaXMuZ2V0UGFyYW1WYWx1ZShmKVxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJhbXNTdHJpbmcucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChmLmxhYmVsKSArICcgOiAnICsgdGhpcy5nZXRQYXJhbVZhbHVlTGFiZWwoZikpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH19KVxyXG4gICAgICBjb25zdCByZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QodGhpcy5jb2x1bW5zRGVmaW5pdGlvbiwgdGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgJy4nICsgdGhpcy5wYWdlSW5mby5pZCxcclxuICAgICAgICBmaWx0ZXJSZXF1ZXN0LCB0eXBlLCB0aGlzLnBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgIHJlcG9ydFJlcXVlc3Quc2VhcmNoU3RyID0gcGFyYW1zU3RyaW5nLmpvaW4oJyAsICcpO1xyXG4gICAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSByZXBvcnRSZXF1ZXN0O1xyXG4gICAgICAvLyB0aGlzLmFjdGl2ZUxldmVsID0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYmFja2VuZFNlcnZpY2UudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UoJ0lOVkFMSURfUkVQT1JUX0ZPUk0nLCB0cnVlLCAnZXJyb3InKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhcmFtVmFsdWUoZjogRmllbGRJbmZvKSB7XHJcbiAgICBpZiAoZi50eXBlID09PSAnZGF0ZScgJiYgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUpIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdERhdGUodGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUsICd5eXl5LU1NLWRkJywgJ2VuX1VTJylcclxuICAgIH1lbHNlIGlmIChmLnR5cGUgPT09ICdjaGVja2JveCcpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWU7XHJcbiAgICB9ZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmJhY2tlbmRTZXJ2aWNlLnBhcmVudEZvcm0uZ2V0KGYucHJvcGVydHkpPy52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyYW1WYWx1ZUxhYmVsKGY6IEZpZWxkSW5mbykge1xyXG4gICAgaWYgKGYudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLmdldChmLnByb3BlcnR5KT8udmFsdWUgPyB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgneWVzJykgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnbm8nKTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYmFja2VuZFNlcnZpY2UucGFyZW50Rm9ybS5nZXQoZi5wcm9wZXJ0eSk/LnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VGl0bGUoKSB7XHJcbiAgICBjb25zdCBwYWdlSW5mb01hcCA9IHtcclxuICAgICAgMTogdGhpcy5wYWdlSW5mbyxcclxuICAgICAgMjogdGhpcy5kcmlsbERvd25QYWdlSW5mbyxcclxuICAgICAgMzogdGhpcy5qdW5pb3JQYWdlSW5mb1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50SW5mbyA9IHBhZ2VJbmZvTWFwW3RoaXMuYWN0aXZlTGV2ZWxdIHx8IHRoaXMucGFnZUluZm87XHJcbiAgICByZXR1cm4gYCR7Y3VycmVudEluZm8ubGFiZWxzU2VjdGlvbn0uJHtjdXJyZW50SW5mby5pZH1gO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRm9ybSgkZXZlbnQ6IEZvcm1Hcm91cCkge1xyXG4gICAgdGhpcy5yZXBvcnRGb3JtID0gJGV2ZW50O1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtID0gJGV2ZW50O1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5yZWFkeVRvU2VhcmNoID0gdGhpcy5iYWNrZW5kU2VydmljZS5wYXJlbnRGb3JtLnZhbGlkO1xyXG4gICAgICB9XHJcblxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzVmFsaWRGb3JtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1NlYXJjaCA7XHJcblxyXG4gIH1cclxuXHJcblxyXG5cclxuICBlbWl0VXNlckFjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgICRldmVudC5wYWdlSW5mbyA9IHRoaXMucGFnZUluZm87XHJcbiAgICB0aGlzLmRvQURyaWxsRG93bkFjdGlvbigkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZW1pdEh5cGVyTGlua0FjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLnNob3VsZFByb2Nlc3NFdmVudEl0ZW0oJGV2ZW50Lml0ZW0pKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVwb3J0UmVxdWVzdCA9IGNsb25lRGVlcCh0aGlzLnJlcG9ydFJlcXVlc3QpO1xyXG4gICAgICBjb25zdCByZXBvcnRSZXF1ZXN0MSA9IHRoaXMuYmFja2VuZFNlcnZpY2UuYnVpbGRSZXBvcnRSZXF1ZXN0KFxyXG4gICAgICAgIHRoaXMuanVuaW9yQ29sdW1ucyxcclxuICAgICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyB0aGlzLmp1bmlvclBhZ2VJbmZvLmlkLFxyXG4gICAgICAgIHsgLi4udGhpcy5kaWFsb2dSZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QgfSxcclxuICAgICAgICAnJyxcclxuICAgICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLFxyXG4gICAgICAgICdMQU5EU0NBUEUnXHJcbiAgICAgICk7XHJcbiAgICAgIHJlcG9ydFJlcXVlc3QxLmZpbHRlclJlcXVlc3QucGFnZUluZGV4ID0gMFxyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlcG9ydERldGFpbHNEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBwYWdlSW5mbzogdGhpcy5qdW5pb3JQYWdlSW5mbyxcclxuICAgICAgICAgIHJlcXVlc3Q6IHJlcG9ydFJlcXVlc3QxLFxyXG4gICAgICAgICAgY29sdW1uczogdGhpcy5qdW5pb3JDb2x1bW5zLFxyXG4gICAgICAgICAgaXRlbSA6JGV2ZW50Lml0ZW1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGhlaWdodDogJzUwdncnLFxyXG4gICAgICAgIG1heFdpZHRoOiAnMTIwdncnLFxyXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5jdXJyZW50RGlyZWN0aW9uLFxyXG4gICAgICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGlhbG9nUmVmLmFmdGVyT3BlbmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRvSHlwZXJMaW5rQWN0aW9uKCRldmVudCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGVtaXRKdW5pb3JBY3Rpb24oJGV2ZW50OiBUYWJsZVBhZ2VVc2VyQWN0aW9uKSB7XHJcbiAgICBjb25zb2xlLmxvZygnJGV2ZW50IGNhbGwganVuaW9yJywgJGV2ZW50KTtcclxuICAgIGNvbnN0IGp1bmlvckFjdGlvbiA9IEpVTklPUl9ET1dOX0FDVElPTjtcclxuICAgIGp1bmlvckFjdGlvbi5wYWdlSW5mbyA9IHRoaXMuZHJpbGxEb3duUGFnZUluZm87XHJcbiAgICB0aGlzLmRvSnVuaW9yQWN0aW9uKCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBkcmlsbERvd24oKSB7XHJcbiAgICBjb25zdCBkcmlsbGRvd25hY3Rpb24gPSBEUklMTF9ET1dOX0FDVElPTjtcclxuICAgIGRyaWxsZG93bmFjdGlvbi5wYWdlSW5mbyA9IHRoaXMuZHJpbGxEb3duUGFnZUluZm87XHJcbiAgICB0aGlzLmRvQURyaWxsRG93bkFjdGlvbihkcmlsbGRvd25hY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb0p1bmlvckFjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgIHRoaXMuanVuaW9yQ29sdW1ucyA9IHRoaXMub3JpZ2luYWxDb2x1bW5zXHJcbiAgICBpZiAodGhpcy5qdW5pb3JDb2x1bW5zICYmIHRoaXMuanVuaW9yUGFnZUluZm8pIHtcclxuICAgICAgaWYgKHRoaXMuZW5yaWNoSnVuaW9yUmVwb3J0UmVxdWVzdCkge1xyXG5cclxuICAgICAgICB0aGlzLmlzRWRpdGFibGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmp1bmlvclJlcG9ydFJlcXVlc3QgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmJ1aWxkUmVwb3J0UmVxdWVzdCh0aGlzLmp1bmlvckNvbHVtbnMsXHJcbiAgICAgICAgICB0aGlzLmp1bmlvclBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyB0aGlzLmp1bmlvclBhZ2VJbmZvLmlkLFxyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsICcnLCB0aGlzLmp1bmlvclBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgICAgdGhpcy5lbnJpY2hKdW5pb3JSZXBvcnRSZXF1ZXN0KCRldmVudCwgdGhpcy5qdW5pb3JSZXBvcnRSZXF1ZXN0KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFjdGl2ZUxldmVsID0gdGhpcy5hY3RpdmVMZXZlbCArMTtcclxuICAgICAgdGhpcy5hZGRPclVwZGF0ZUZpbHRlcih0aGlzLnJlcG9ydFJlcXVlc3QuZmlsdGVyUmVxdWVzdCwge1xyXG4gICAgICAgIGtleTogJ2lTZWNMZXZlbCcsXHJcbiAgICAgICAgZmllbGROYW1lOiAnaVNlY0xldmVsJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5hY3RpdmVMZXZlbFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBkb0FEcmlsbERvd25BY3Rpb24oJGV2ZW50OiBUYWJsZVBhZ2VVc2VyQWN0aW9uKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuZHJpbGxEb3duQ29sdW1ucyAmJiB0aGlzLmRyaWxsRG93blBhZ2VJbmZvKSB7XHJcbiAgICAgIHRoaXMuZHJpbGxEb3duUmVxdWVzdFN0YWNrLnB1c2goY2xvbmVEZWVwKHRoaXMucmVwb3J0UmVxdWVzdCkpO1xyXG4gICAgICBpZiAodGhpcy5lbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0KSB7XHJcbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jaGlsZFJlcG9ydFJlcXVlc3QgPSB0aGlzLmJhY2tlbmRTZXJ2aWNlLmJ1aWxkUmVwb3J0UmVxdWVzdCh0aGlzLmRyaWxsRG93bkNvbHVtbnMsXHJcbiAgICAgICAgICB0aGlzLmRyaWxsRG93blBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLicgKyB0aGlzLmRyaWxsRG93blBhZ2VJbmZvLmlkLFxyXG4gICAgICAgICAgdGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsICcnLCB0aGlzLmRyaWxsRG93blBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgICAgdGhpcy5lbnJpY2hEcmlsbERvd25SZXBvcnRSZXF1ZXN0KCRldmVudCwgdGhpcy5jaGlsZFJlcG9ydFJlcXVlc3QpO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNoaWxkUmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gNTAwXHJcbiAgICAgIHRoaXMuYWN0aXZlTGV2ZWwgPSB0aGlzLmFjdGl2ZUxldmVsICsxO1xyXG4gICAgICB0aGlzLmFkZE9yVXBkYXRlRmlsdGVyKHRoaXMucmVwb3J0UmVxdWVzdC5maWx0ZXJSZXF1ZXN0LCB7XHJcbiAgICAgICAga2V5OiAnaVNlY0xldmVsJyxcclxuICAgICAgICBmaWVsZE5hbWU6ICdpU2VjTGV2ZWwnLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmFjdGl2ZUxldmVsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy5pc0NvbXBhcmlzb25SZXBvcnQpe1xyXG4gICAgICAgIHRoaXMuYWRkT3JVcGRhdGVGaWx0ZXIodGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsIHtcclxuICAgICAgICAgIGlkOiAnaVNlY1ZhbHVlJyxcclxuICAgICAgICAgIGtleTogJ2lTZWNWYWx1ZScsXHJcbiAgICAgICAgICBmaWVsZE5hbWU6ICdpU2VjVmFsdWUnLFxyXG4gICAgICAgICAgdmFsdWU6ICRldmVudC5pdGVtLmlzZWNfdmFsdWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuYWN0aXZlTGV2ZWwgPT09IDQpIHtcclxuICAgICAgICB0aGlzLmRyaWxsRG93bkNvbHVtbnMgPSB0aGlzLmRyaWxsRG93bkNvbHVtbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBlICE9PSAnYnV0dG9uJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWxvYWREYXRhID0gdHJ1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRPclVwZGF0ZUZpbHRlcihcclxuICAgIGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QsXHJcbiAgICBvcHRpb25zOiB7XHJcbiAgICAgIGlkPzogc3RyaW5nO1xyXG4gICAgICBrZXk6IHN0cmluZztcclxuICAgICAgZmllbGROYW1lOiBzdHJpbmc7XHJcbiAgICAgIHZhbHVlOiBhbnk7XHJcbiAgICB9XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGlkLCBrZXksIGZpZWxkTmFtZSwgdmFsdWUgfSA9IG9wdGlvbnM7XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdGaWx0ZXJJbmRleCA9IGZpbHRlclJlcXVlc3QuZmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcjogRmlsdGVyKSA9PlxyXG4gICAgICBpZCA/IGZpbHRlci5pZCA9PT0gaWQgOiBmaWx0ZXIua2V5ID09PSBrZXlcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgbmV3RmlsdGVyID0gbmV3IEZpbHRlcih7XHJcbiAgICAgIC4uLihpZCAmJiB7IGlkIH0pLFxyXG4gICAgICBrZXksXHJcbiAgICAgIGZpZWxkTmFtZSxcclxuICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICBmaWx0ZXJUeXBlOiAnRklMRURfRklMVEVSJyxcclxuICAgICAgb3BlcmF0b3I6ICdFUVVBTFMnLFxyXG4gICAgICB2YWx1ZU9iamVjdDogdmFsdWVcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0ZpbHRlckluZGV4ICE9PSAtMSkge1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnNbZXhpc3RpbmdGaWx0ZXJJbmRleF0gPSBuZXdGaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LmZpbHRlcnMucHVzaChuZXdGaWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb0h5cGVyTGlua0FjdGlvbigkZXZlbnQ6IFRhYmxlUGFnZVVzZXJBY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLmVucmljaEh5cGVyTGlua1JlcG9ydFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5qdW5pb3JSZXBvcnRSZXF1ZXN0ID0gdGhpcy5iYWNrZW5kU2VydmljZS5idWlsZFJlcG9ydFJlcXVlc3QodGhpcy5qdW5pb3JDb2x1bW5zLFxyXG4gICAgICAgIHRoaXMuanVuaW9yUGFnZUluZm8ubGFiZWxzU2VjdGlvbiArICcuJyArIHRoaXMuanVuaW9yUGFnZUluZm8uaWQsXHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsICcnLCB0aGlzLmp1bmlvclBhZ2VJbmZvLCAnTEFORFNDQVBFJyk7XHJcbiAgICAgIHRoaXMuZW5yaWNoSHlwZXJMaW5rUmVwb3J0UmVxdWVzdCgkZXZlbnQsIHRoaXMuanVuaW9yUmVwb3J0UmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHRyYWN0UmVwb3J0KHJlcG9ydFR5cGU6IGFueSkge1xyXG4gICAgdGhpcy5yZXBvcnRSZXF1ZXN0LnJlcG9ydFR5cGUgPSByZXBvcnRUeXBlO1xyXG4gICAgdGhpcy5iYWNrZW5kU2VydmljZS5kb3dubG9hZFJlcG9ydCh0aGlzLnJlcG9ydFJlcXVlc3QsIHRoaXMuZHJpbGxEb3duUGFnZUluZm8uYXBpVXJpICk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ29VcCgpIHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMucmVwb3J0Rm9ybS5jb250cm9scykuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnJlcG9ydEZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgICAgY29udHJvbD8uY2xlYXJWYWxpZGF0b3JzKCk7XHJcbiAgICAgIGNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pc0VkaXRhYmxlID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aXZlTGV2ZWwgPSB0aGlzLmFjdGl2ZUxldmVsIC0gMTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUxldmVsID4gMSApIHtcclxuICAgICAgdGhpcy5pc0VkaXRhYmxlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRvQWN0aW9uKHRoaXMueCk7XHJcbiAgICB0aGlzLnJlcG9ydFJlcXVlc3QgPSB0aGlzLmRyaWxsRG93blJlcXVlc3RTdGFjay5wb3AoKTtcclxuICAgIHRoaXMuYWRkT3JVcGRhdGVGaWx0ZXIodGhpcy5yZXBvcnRSZXF1ZXN0LmZpbHRlclJlcXVlc3QsIHtcclxuICAgICAga2V5OiAnaVNlY0xldmVsJyxcclxuICAgICAgZmllbGROYW1lOiAnaVNlY0xldmVsJyxcclxuICAgICAgdmFsdWU6IHRoaXMuYWN0aXZlTGV2ZWxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWxvYWREYXRhID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZUxldmVsICE9PSA0KSB7XHJcbiAgICAgIHRoaXMuZHJpbGxEb3duQ29sdW1ucyA9IFsuLi50aGlzLm9yaWdpbmFsQ29sdW1uc107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgZHJpbGxEb3duRW5hYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmRyaWxsRG93blBhZ2VJbmZvICYmICF0aGlzLmhpZGVEcmlsbERvd25CdXR0b24gJiYgIXRoaXMuZ2V0SXNFbXB0eUxpc3QoKTtcclxuICB9XHJcblxyXG4gIGRyaWxsRG93bkxhYmVsKCkge1xyXG4gICAgcmV0dXJuIGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uZHJpbGxEb3duTGFiZWxgIDtcclxuICB9XHJcbiAgZ2V0SXNFbXB0eUxpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kU2VydmljZS5pc0VtcHR5SXRlbXM7XHJcbiAgfVxyXG4gIGNsZWFyKCkge1xyXG4gICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy8nLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2N1cnJlbnRVcmxdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzRm9ybUVtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLnJlcG9ydEZvcm0gfHwgIXRoaXMucmVwb3J0Rm9ybS52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnJlcG9ydEZvcm0udmFsdWUpLmV2ZXJ5KHZhbHVlID0+IHtcclxuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMDtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3VsZFByb2Nlc3NFdmVudEl0ZW0oaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBncm91cEJ5UHJvcCA9IHRoaXMucGFnZUluZm8/Lmdyb3VwQnlQcm9wZXJ0eTtcclxuICAgIGNvbnN0IGdyb3VwQnlWYWx1ZXMgPSB0aGlzLnBhZ2VJbmZvPy5ncm91cEJ5VmFsdWU7XHJcblxyXG4gICAgaWYgKCFncm91cEJ5UHJvcCB8fCAhZ3JvdXBCeVZhbHVlcyB8fCAhaXRlbVtncm91cEJ5UHJvcF0pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdmFsdWUgPSBpdGVtW2dyb3VwQnlQcm9wXS50b1N0cmluZygpO1xyXG5cclxuICAgIHJldHVybiAhZ3JvdXBCeVZhbHVlcy5zb21lKHYgPT4gdmFsdWUuaW5jbHVkZXModikgJiYgdmFsdWUubGVuZ3RoID49IHYubGVuZ3RoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwYWdlLWNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jZW50ZXItc3RhcnQgbWItMTBweCBmdWxsLXdpZHRoXCI+XHJcbiAgICA8YXBwLXRpdGxlLWJhciBbcGFnZVRpdGxlXT1cImdldFRpdGxlKClcIiBbbmV3QWN0aW9uXT1cImZhbHNlXCI+PC9hcHAtdGl0bGUtYmFyPlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwicGFnZUluZm8/Lmhhc0hpbnRcIlxyXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyAnLmhpbnQnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImhlbHAtaWNvblwiXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj5cclxuICAgICAgaGVscF9vdXRsaW5lXHJcbiAgICA8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YXBwLWJhc2UtZm9ybS1jYW52YXNcclxuICAgIFtwYWdlSW5mb109XCJwYWdlSW5mb1wiXHJcbiAgICBbZmllbGRzXT1cImZpZWxkc1wiXHJcbiAgICBbZWRpdGFibGVdPVwiaXNFZGl0YWJsZVwiXHJcbiAgICBbZXJyb3JzXT1cImVycm9yc1wiXHJcbiAgICBbaXRlbV09XCJyZXBvcnRGb3JtPy52YWx1ZSB8fCB7fVwiXHJcbiAgICAoZm9ybVVwZGF0ZWQpPVwidXBkYXRlRm9ybSgkZXZlbnQpXCI+XHJcbiAgPC9hcHAtYmFzZS1mb3JtLWNhbnZhcz5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNlbnRlci1zdGFydFwiPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVMZXZlbCA9PT0gMVwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwiZG9BY3Rpb24oeClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc1ZhbGlkRm9ybSgpXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgaWQ9XCJhY3Rpdml0eS1nZW5lcmF0ZS1idG5cIj5cclxuICAgICAgICAgIHt7ICdSRVBPUlRTLmdlbmVyYXRlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbZGlzYWJsZWRdPVwiZ2V0SXNFbXB0eUxpc3QoKVwiXHJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImJ0bi1ub25lLWJhY2tncm91bmQtcHJpbWFyeSBhY3Rpb24tYnV0dG9uXCIgaWQ9XCJhY3Rpdml0eS1leHRyYWN0LXRyaWdnZXJcIj5cclxuICAgICAgICAgIHt7ICdleHRyYWN0JyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZXhwYW5kX21vcmUgYWN0aW9uQnV0dG9uX19leHBhbmRcIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cImNsZWFyKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRm9ybUVtcHR5KCkgfHwgYWN0aXZlTGV2ZWwgPiAxXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIGlkPVwiYWN0aXZpdHktY2xlYXItYnRuXCI+XHJcbiAgICAgICAgICB7eyAnUkVQT1JUUy5jbGVhcicgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGV2ZWwgPT09IDEgJiYgZHJpbGxEb3duRW5hYmxlZCgpXCIgY29sb3I9XCJ3YXJuXCIgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHJpbGxEb3duKClcIiBjbGFzcz1cImFjdGlvbi1idXR0b25cIiBpZD1cImFjdGl2aXR5LWRyaWxsZG93bi1idG5cIj5cclxuICAgICAgICAgIHt7IGRyaWxsRG93bkxhYmVsKCkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlTGV2ZWwgPiAxICYmICEoaXNDb21wYXJpc29uUmVwb3J0ICYmIGFjdGl2ZUxldmVsID09IDIpXCIgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICAgIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwiZ29VcCgpXCIgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgaWQ9XCJhY3Rpdml0eS11cC1idG5cIj5cclxuICAgICAgICAgIHt7ICdSRVBPUlRTLnVwJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTQ5XCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gQmFzZSB0YWJsZXMgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZUxldmVsID09PSAxXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IG1haW4tZm9ybS1jYW52YXMgbXQtM3ZoXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gZmxleC0xMDBcIj5cclxuICAgICAgICA8YXBwLWJhc2UtdGFibGUgW3BhZ2VJbmZvXT1cInBhZ2VJbmZvXCIgW2NvbHVtbnNdPVwiY29sdW1uc0RlZmluaXRpb25cIiBbZW5mb3JjZVJlZnJlc2hdPVwicmVsb2FkRGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGFyZW50XCIgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyQWN0aW9uKT1cImVtaXRVc2VyQWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHlwZXJMaW5rQWN0aW9uKT1cImVtaXRIeXBlckxpbmtBY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWJhc2UtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVMZXZlbCA9PT0gMlwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGZsZXgtMTAwXCI+XHJcbiAgICAgICAgPGFwcC1iYXNlLXRhYmxlIFtwYWdlSW5mb109XCJkcmlsbERvd25QYWdlSW5mb1wiIFtjb2x1bW5zXT1cImRyaWxsRG93bkNvbHVtbnNcIiBpZD1cImNoaWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyQWN0aW9uKT1cImVtaXRVc2VyQWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHlwZXJMaW5rQWN0aW9uKT1cImVtaXRIeXBlckxpbmtBY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWJhc2UtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVMZXZlbCA9PT0gM1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYWluLWZvcm0tY2FudmFzIG10LTN2aFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGZsZXgtMTAwXCI+XHJcbiAgICAgICAgPGFwcC1iYXNlLXRhYmxlIFtwYWdlSW5mb109XCJkcmlsbERvd25QYWdlSW5mb1wiIFtjb2x1bW5zXT1cImRyaWxsRG93bkNvbHVtbnNcIiBpZD1cImp1bmlvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXBvcnRSZXF1ZXN0XT1cInJlcG9ydFJlcXVlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodXNlckFjdGlvbik9XCJlbWl0VXNlckFjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGh5cGVyTGlua0FjdGlvbik9XCJlbWl0SHlwZXJMaW5rQWN0aW9uKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1iYXNlLXRhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlTGV2ZWwgPT09IDRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbWFpbi1mb3JtLWNhbnZhcyBtdC0zdmhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBmbGV4LTEwMFwiPlxyXG4gICAgICAgIDxhcHAtYmFzZS10YWJsZSBbcGFnZUluZm9dPVwiZHJpbGxEb3duUGFnZUluZm9cIiBbY29sdW1uc109XCJkcmlsbERvd25Db2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlcG9ydFJlcXVlc3RdPVwicmVwb3J0UmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyQWN0aW9uKT1cImVtaXRVc2VyQWN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoaHlwZXJMaW5rQWN0aW9uKT1cImVtaXRIeXBlckxpbmtBY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWJhc2UtdGFibGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L2Rpdj5cclxuXHJcbjwhLS0gTWVudSAtLT5cclxuPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHR5cGUgb2YgdHlwZXNcIiAoY2xpY2spPVwiZXh0cmFjdFJlcG9ydCh0eXBlKVwiIFthdHRyLmlkXT1cIidhY3Rpdml0eS1leHRyYWN0LWl0ZW0tJyArIHR5cGVcIj5cclxuICAgIHt7IHR5cGUgfX1cclxuICA8L2J1dHRvbj5cclxuPC9tYXQtbWVudT5cclxuIl19