tiny-markdown-editor 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tiny-mde.js +5 -5
- package/dist/tiny-mde.min.js +1 -1
- package/dist/tiny-mde.tiny.js +1 -1
- package/lib/TinyMDE.js +4 -4
- package/package.json +1 -1
package/dist/tiny-mde.js
CHANGED
|
@@ -2427,8 +2427,8 @@
|
|
|
2427
2427
|
if (!startNode) return null;
|
|
2428
2428
|
let offset = getAnchor ? selection.anchorOffset : selection.focusOffset;
|
|
2429
2429
|
if (startNode == this.e) {
|
|
2430
|
-
if (offset
|
|
2431
|
-
row:
|
|
2430
|
+
if (offset < this.lines.length) return {
|
|
2431
|
+
row: offset,
|
|
2432
2432
|
col: 0
|
|
2433
2433
|
};
|
|
2434
2434
|
return {
|
|
@@ -2632,7 +2632,7 @@
|
|
|
2632
2632
|
for (var _len = arguments.length, newChildren = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
2633
2633
|
newChildren[_key - 1] = arguments[_key];
|
|
2634
2634
|
}
|
|
2635
|
-
newChildren.forEach(newChild => nextSibling ? parent.insertBefore(
|
|
2635
|
+
newChildren.forEach(newChild => nextSibling ? parent.insertBefore(newChild, nextSibling) : parent.appendChild(newChild));
|
|
2636
2636
|
};
|
|
2637
2637
|
originalChildren.forEach(child => {
|
|
2638
2638
|
if (child.nodeType !== Node.ELEMENT_NODE || child.tagName !== "DIV") {
|
|
@@ -2982,7 +2982,7 @@
|
|
|
2982
2982
|
|
|
2983
2983
|
// Check if there's an ancestor of class 'TMInlineFormatted' or 'TMBlankLine'
|
|
2984
2984
|
while (ancestor && ancestor != this.e) {
|
|
2985
|
-
if (ancestor.className && (ancestor.className.includes("TMInlineFormatted") || ancestor.className.includes("TMBlankLine"))) return true;
|
|
2985
|
+
if (ancestor.className && typeof ancestor.className.includes == "function" && (ancestor.className.includes("TMInlineFormatted") || ancestor.className.includes("TMBlankLine"))) return true;
|
|
2986
2986
|
ancestor = ancestor.parentNode;
|
|
2987
2987
|
}
|
|
2988
2988
|
return false;
|
|
@@ -3083,4 +3083,4 @@
|
|
|
3083
3083
|
|
|
3084
3084
|
}));
|
|
3085
3085
|
|
|
3086
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbInNyYy9zdmcvc3ZnLmpzIiwic3JjL1RpbnlNREVDb21tYW5kQmFyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzIiwic3JjL2dyYW1tYXIuanMiLCJzcmMvVGlueU1ERS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdmcgPSB7XG4gIGJsb2NrcXVvdGU6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxyZWN0IHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiB4PVwiM1wiIHk9XCI0XCIgcnk9XCIxXCIvPjxyZWN0IHJ5PVwiMVwiIHk9XCI0XCIgeD1cIjEwXCIgaGVpZ2h0PVwiNVwiIHdpZHRoPVwiNVwiLz48cGF0aCBkPVwiTTggNi45OTl2M2MwIDEtMSAzLTEgM3MtLjMzMSAxLTEuMzMxIDFoLTFjLTEgMC0uNjY5LTEtLjY2OS0xczEtMiAxLTN2LTN6bTcgMHYzYzAgMS0xIDMtMSAzcy0uMzMxIDEtMS4zMzEgMWgtMWMtMSAwLS42NjktMS0uNjY5LTFzMS0yIDEtM3YtM3pcIi8+PC9zdmc+YCxcbiAgYm9sZDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDZjNCAwIDUtMiA1LTQgMC0xLjMyMi0uNDM0LTIuNjM2LTEuODg1LTMuMzgxQzEzLjc3MiA3Ljg4NSAxNCA2Ljk0NSAxNCA2YzAtMi0xLTQtNS00em0xIDJoNGMxLjY2OCAwIDIuMzIuMzkzIDIuNi42NzIuMjguMjc5LjQuNjYyLjQgMS4zMjhzLS4xMiAxLjA1Ny0uNCAxLjMzOGMtLjI3NS4yNzQtMS4wMTQuNjQ2LTIuNi42NjJINXptNSA2YzEuNjY2LjAwNSAyLjMxOC4zODggMi41OTYuNjY2LjI3Ny4yNzguNDA0LjY2Ny40MDQgMS4zMzRzLS4xMjcgMS4wNi0uNDA0IDEuMzM4Yy0uMjc4LjI3OC0uOTMuNjYtMi41OTYuNjYybC00Ljk5Mi4wMDRMNSAxMHpcIi8+PC9zdmc+YCxcbiAgY2xlYXJfZm9ybWF0dGluZzogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMS4wMyAxYTEgMSAwIDAwLS43NC4zbC05IDlhMSAxIDAgMDAwIDEuNGw0IDRBMSAxIDAgMDA2IDE2aDJhMSAxIDAgMDAuNy0uM2w4LThhMSAxIDAgMDAwLTEuNGwtNS01YTEgMSAwIDAwLS42Ny0uM3pNOC43IDUuN2wzLjU4IDMuNkw3LjYgMTRINi40bC0zLTMgNS4zLTUuM3pcIi8+PHJlY3Qgcnk9XCIuOFwiIHJ4PVwiLjhcIiB5PVwiMTRcIiB4PVwiMTZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIyXCIvPjxyZWN0IHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiB4PVwiMTNcIiB5PVwiMTRcIiByeD1cIi44XCIgcnk9XCIuOFwiLz48cmVjdCByeT1cIi44XCIgcng9XCIuOFwiIHk9XCIxNFwiIHg9XCIxMFwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjJcIi8+PC9zdmc+YCxcbiAgY29kZTogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMy41IDIuOTk0YS41LjUgMCAwMC0uNS41LjUuNSAwIDAwMCAuMDM0VjQuNTNhNS45OTMgNS45OTMgMCAwMC03LjQ1MS0uNDQ1QTYgNiAwIDEwMTIuNDUgMTMuOWE1Ljk5IDUuOTkgMCAwMDEuMzQ2LTEuMzM0LjUuNSAwIDAwLjA5Ni0uMTAxLjUuNSAwIDAwLS4xMi0uNjk4LjUuNSAwIDAwLS42OTcuMTJsLS4wMDQtLjAwNWE1IDUgMCAwMS0xLjE5NyAxLjIgNSA1IDAgMTExLjIxNS02Ljk2NS41LjUgMCAwMC42OTcuMTIuNS41IDAgMDAuMjExLS40NFY0Ljc0NUgxNFYzLjQ5M2EuNS41IDAgMDAtLjUtLjV6XCIvPjwvc3ZnPmAsXG4gIGgxOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTMgMnMwLTEgMS0xaDFjMSAwIDEgMSAxIDF2Nmg2VjJzMC0xIDEtMWgxYzEgMCAxIDEgMSAxdjE0czAgMS0xIDFoLTFjLTEgMC0xLTEtMS0xdi02SDZ2NnMwIDEtMSAxSDRjLTEgMC0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBoMjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJzMC0xIDEtMSAxIDEgMSAxdjZjMS0xIDItMSA0LTEgMyAwIDQgMiA0IDR2NXMwIDEtMSAxLTEtMS0xLTF2LTVjMC0xLjA5NC0xLTItMi0yLTIgMC0zIDAtNCAydjVzMCAxLTEgMS0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBocjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxOFwiIHN0eWxlPVwiZm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO21hcmtlcjpub25lXCIvPjwvc3ZnPmAsXG4gIGltYWdlOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTEgMnYxNGgxNlYySDF6bTIgMmgxMnY3bC0zLTMtNCA0LTItMi0zIDNWNHpcIi8+PGNpcmNsZSByPVwiMS41XCIgY3k9XCI2LjVcIiBjeD1cIjUuNVwiLz48L3N2Zz5gLFxuICBpdGFsaWM6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxwYXRoIGQ9XCJNOSAyYTEgMSAwIDAwMCAyTDcgMTRhMSAxIDAgMTAwIDJoMmExIDEgMCAwMDAtMmwyLTEwYTEgMSAwIDEwMC0yelwiLz48L3N2Zz5gLFxuICBsaW5rOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTkuMDcgNS4xOGEzLjkgMy45IDAgMDAtMS41Mi40M0M2LjMxIDYuMjIgNS4zIDcuMjkgNC4zIDguMjljLTEgMS0yLjA3IDIuMDItMi42OCAzLjI2LS4zMS42Mi0uNSAxLjMzLS40MSAyLjA3LjA5Ljc1LjQ4IDEuNDcgMS4xIDIuMDkuNjEuNjEgMS4zMyAxIDIuMDggMS4xLjc0LjA5IDEuNDUtLjEgMi4wNy0uNDIgMS4yNC0uNjEgMi4yNi0xLjY4IDMuMjYtMi42OC40Ni0uNDcuOTQtLjk0IDEuMzktMS40NGwtLjQzLjI2Yy0uNjguMzQtMS40OS41Ni0yLjM2LjQ2LS4yLS4wMy0uNC0uMDgtLjYtLjE0LS43OS43Ni0xLjU1IDEuNDUtMi4xNiAxLjc2LS4zOC4xOS0uNjcuMjQtLjkyLjIxLS4yNi0uMDMtLjU0LS4xNC0uOTItLjUzLS4zOS0uMzgtLjUtLjY2LS41My0uOTEtLjAzLS4yNi4wMi0uNTUuMjEtLjkzLjM5LS43NiAxLjMyLTEuNzQgMi4zMi0yLjc0IDEtMSAxLjk4LTEuOTMgMi43NC0yLjMyLjM4LS4xOS42Ny0uMjQuOTMtLjIxLjI1LjAzLjUzLjE0LjkxLjUzLjM5LjM4LjUuNjYuNTMuOTJ2LjA2bDEuMTItMS4wNi40NC0uNDdjLS4xOC0uMy0uNC0uNi0uNjctLjg3LS42Mi0uNjEtMS4zNC0xLTIuMDktMS4xYTMuMDggMy4wOCAwIDAwLS41NS0uMDF6XCIvPjxwYXRoIGQ9XCJNMTMuMDcuODZhMy45IDMuOSAwIDAwLTEuNTIuNDNjLTEuMjQuNjItMi4yNiAxLjY5LTMuMjYgMi42OS0uNDYuNDctLjk0Ljk0LTEuMzkgMS40My4xNS0uMDguMjgtLjE4LjQzLS4yNWE0LjQgNC40IDAgMDEyLjM2LS40NmMuMi4wMi40LjA3LjYuMTQuNzktLjc3IDEuNTUtMS40NiAyLjE2LTEuNzYuMzgtLjE5LjY3LS4yNS45My0uMjEuMjUuMDMuNTMuMTQuOTEuNTIuMzkuMzguNS42Ni41My45Mi4wMy4yNi0uMDIuNTUtLjIxLjkzLS4zOS43Ni0xLjMyIDEuNzQtMi4zMiAyLjc0LTEgMS0xLjk4IDEuOTMtMi43NCAyLjMxLS4zOC4yLS42Ny4yNS0uOTMuMjItLjI1LS4wNC0uNTMtLjE1LS45MS0uNTMtLjM5LS4zOC0uNS0uNjYtLjUzLS45MlY5Yy0uMzYuMzMtLjczLjY3LTEuMTIgMS4wNmwtLjQzLjQ2Yy4xNy4zLjQuNi42Ni44Ny42Mi42MiAxLjM0IDEgMi4wOCAxLjEuNzUuMSAxLjQ2LS4xIDIuMDgtLjQxIDEuMjQtLjYyIDIuMjYtMS42OSAzLjI2LTIuNjlzMi4wNy0yLjAyIDIuNjgtMy4yNmMuMzEtLjYyLjUtMS4zMi40MS0yLjA3YTMuNjMgMy42MyAwIDAwLTEuMS0yLjA4Yy0uNjEtLjYyLTEuMzMtMS0yLjA3LTEuMWEzLjA4IDMuMDggMCAwMC0uNTYtLjAyelwiLz48L3N2Zz5gLFxuICBvbDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xLjUgN2EuNS41IDAgMTAwIDFoMWEuNS41IDAgMDEuNS41YzAgLjE2NC0uMDguMzEtLjE0LjM1NWwtMS42NTUgMS4yNUEuNDkyLjQ5MiAwIDAwMSAxMC41YS41LjUgMCAwMC41LjVoMmEuNS41IDAgMDAwLTFIM2wuMzk4LS4yOTlBMS41IDEuNSAwIDAwMi41IDd6XCIvPjxwYXRoIGQ9XCJNMS41IDEyYy0uNjY3IDAtLjY2NyAxIDAgMWgxLjI1Yy4zMzMgMCAuMzMzLjUgMCAuNUgyLjVjLS42NjcgMC0uNjY3IDEgMCAxaC4yNWMuMzMzIDAgLjMzMy41IDAgLjVIMS41Yy0uNjY3IDAtLjY2NyAxIDAgMWgxYy4zOTggMCAuNzgtLjEzMSAxLjA2LS4zNjUuMjgyLS4yMzUuNDQtLjU1NC40NC0uODg1YTEuMTIxIDEuMTIxIDAgMDAtLjMwMy0uNzVjLjE5MS0uMjA0LjMtLjQ3LjMwMy0uNzUgMC0uMzMyLS4xNTgtLjY1MS0uNDQtLjg4NS0uMy0uMjQxLS42NzUtLjM3LTEuMDYtLjM2NXpcIi8+PHJlY3QgeT1cIjEzXCIgeD1cIjZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxMlwiIHJ5PVwiMVwiLz48cmVjdCByeT1cIjFcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMlwiIHg9XCI2XCIgeT1cIjhcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxwYXRoIGQ9XCJNMS41IDJhLjUuNSAwIDEwMCAxSDJ2MmgtLjVhLjUuNSAwIDEwMCAxaDJhLjUuNSAwIDEwMC0xSDNWMi41YzAtLjI3Ny0uMjIzLS41LS41LS41elwiLz48L3N2Zz5gLFxuICBzdHJpa2V0aHJvdWdoOiBgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj48cGF0aCBkPVwiTTEwIDJDNiAyIDQgNCA0IDZjMCAuMzM4LjA4LjY3Mi4xOTMgMWgyLjM0QzYuMTEzIDYuNjI5IDYgNi4yOTUgNiA2YzAtLjMzNC4xMTctLjcyNS42OTEtMS4xNTRDNy4yNjUgNC40MTYgOC4zMzEgNCAxMCA0aDNhMSAxIDAgMDAwLTJ6bTEuNDc3IDljLjQxMy4zNjguNTIzLjcwNi41MjMgMSAwIC4zMzQtLjEyNy43MTItLjcwMSAxLjE0My0uNTc1LjQzLTEuNjMyLjg1LTMuMjk5Ljg1N2wtMS4wMDYuMDA3VjE0SDVhMSAxIDAgMDAwIDJoM2M0IDAgNi0yIDYtNCAwLS4zMzgtLjA4MS0uNjcyLS4xOTUtMXpcIi8+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiB4PVwiMVwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjE2XCIvPjwvc3ZnPmAsXG4gIHVsOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48Y2lyY2xlIGN4PVwiMlwiIGN5PVwiOVwiIHI9XCIyXCIvPjxjaXJjbGUgY3k9XCI0XCIgY3g9XCIyXCIgcj1cIjJcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxjaXJjbGUgY3g9XCIyXCIgY3k9XCIxNFwiIHI9XCIyXCIvPjxyZWN0IHJ5PVwiMVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIyXCIgeD1cIjZcIiB5PVwiOFwiLz48cmVjdCB5PVwiMTNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjwvc3ZnPmBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN2ZzsiLCJpbXBvcnQgc3ZnIGZyb20gJy4vc3ZnL3N2Zyc7XG5cbmNvbnN0IGlzTWFjTGlrZSA9IC8oTWFjfGlQaG9uZXxpUG9kfGlQYWQpL2kudGVzdCh0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiID8gbmF2aWdhdG9yLnBsYXRmb3JtIDogXCJcIik7XG5cbmNvbnN0IERlZmF1bHRDb21tYW5kcyA9IHtcbiAgJ2JvbGQnOiB7XG4gICAgbmFtZTogJ2JvbGQnLFxuICAgIGFjdGlvbjogJ2JvbGQnLFxuICAgIGlubmVySFRNTDogc3ZnLmJvbGQsXG4gICAgdGl0bGU6ICdCb2xkJyxcbiAgICBob3RrZXk6ICdNb2QtQicsXG4gIH0sXG4gICdpdGFsaWMnOiB7XG4gICAgbmFtZTogJ2l0YWxpYycsXG4gICAgYWN0aW9uOiAnaXRhbGljJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5pdGFsaWMsXG4gICAgdGl0bGU6ICdJdGFsaWMnLFxuICAgIGhvdGtleTogJ01vZC1JJyxcbiAgfSxcbiAgJ3N0cmlrZXRocm91Z2gnOiB7XG4gICAgbmFtZTogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGFjdGlvbjogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGlubmVySFRNTDogc3ZnLnN0cmlrZXRocm91Z2gsXG4gICAgdGl0bGU6ICdTdHJpa2V0aHJvdWdoJyxcbiAgICBob3RrZXk6ICdNb2QyLVNoaWZ0LTUnLFxuICB9LFxuICAnY29kZSc6IHtcbiAgICBuYW1lOiAnY29kZScsXG4gICAgYWN0aW9uOiAnY29kZScsXG4gICAgaW5uZXJIVE1MOiBzdmcuY29kZSxcbiAgICB0aXRsZTogJ0Zvcm1hdCBhcyBjb2RlJyxcbiAgfSxcbiAgJ2gxJzoge1xuICAgIG5hbWU6ICdoMScsXG4gICAgYWN0aW9uOiAnaDEnLFxuICAgIGlubmVySFRNTDogc3ZnLmgxLFxuICAgIHRpdGxlOiAnTGV2ZWwgMSBoZWFkaW5nJyxcbiAgICBob3RrZXk6ICdNb2QtU2hpZnQtMScsXG4gIH0sXG4gICdoMic6IHtcbiAgICBuYW1lOiAnaDInLFxuICAgIGFjdGlvbjogJ2gyJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5oMixcbiAgICB0aXRsZTogJ0xldmVsIDIgaGVhZGluZycsXG4gICAgaG90a2V5OiAnTW9kLVNoaWZ0LTInLFxuICB9LFxuICAndWwnOiB7XG4gICAgbmFtZTogJ3VsJyxcbiAgICBhY3Rpb246ICd1bCcsXG4gICAgaW5uZXJIVE1MOiBzdmcudWwsXG4gICAgdGl0bGU6ICdCdWxsZXRlZCBsaXN0JyxcbiAgfSxcbiAgJ29sJzoge1xuICAgIG5hbWU6ICdvbCcsXG4gICAgYWN0aW9uOiAnb2wnLFxuICAgIGlubmVySFRNTDogc3ZnLm9sLFxuICAgIHRpdGxlOiAnTnVtYmVyZWQgbGlzdCcsXG4gIH0sXG4gICdibG9ja3F1b3RlJzoge1xuICAgIG5hbWU6ICdibG9ja3F1b3RlJyxcbiAgICBhY3Rpb246ICdibG9ja3F1b3RlJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5ibG9ja3F1b3RlLFxuICAgIHRpdGxlOiAnUXVvdGUnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtUScsXG4gIH0sXG4gICdpbnNlcnRMaW5rJzoge1xuICAgIG5hbWU6ICdpbnNlcnRMaW5rJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJ1snLCAnXSgpJyl9LFxuICAgIGVuYWJsZWQ6IChlZGl0b3IsIGZvY3VzLCBhbmNob3IpID0+IGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpID8gZmFsc2UgOiBudWxsLFxuICAgIGlubmVySFRNTDogc3ZnLmxpbmssXG4gICAgdGl0bGU6ICdJbnNlcnQgbGluaycsXG4gICAgaG90a2V5OiAnTW9kLUsnLFxuICB9LFxuICAnaW5zZXJ0SW1hZ2UnOiB7XG4gICAgbmFtZTogJ2luc2VydEltYWdlJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJyFbJywgJ10oKScpfSxcbiAgICBlbmFibGVkOiAoZWRpdG9yLCBmb2N1cywgYW5jaG9yKSA9PiBlZGl0b3IuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKSA/IGZhbHNlIDogbnVsbCxcbiAgICBpbm5lckhUTUw6IHN2Zy5pbWFnZSxcbiAgICB0aXRsZTogJ0luc2VydCBpbWFnZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1JJyxcbiAgfSxcbiAgJ2hyJzoge1xuICAgIG5hbWU6ICdocicsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiBlZGl0b3IucGFzdGUoJ1xcbioqKlxcbicpLFxuICAgIGVuYWJsZWQ6ICgpID0+IGZhbHNlLFxuICAgIGlubmVySFRNTDogc3ZnLmhyLFxuICAgIHRpdGxlOiAnSW5zZXJ0IGhvcml6b250YWwgbGluZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1MJ1xuICB9XG59XG5cblxuY2xhc3MgQ29tbWFuZEJhciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgdGhpcy5lID0gbnVsbDtcbiAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMuYnV0dG9ucyA9IHt9O1xuICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICB0aGlzLmhvdGtleXMgPSBbXTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmJvZHk7IFxuICAgIH1cbiAgICB0aGlzLmNyZWF0ZUNvbW1hbmRCYXJFbGVtZW50KGVsZW1lbnQsIHByb3BzLmNvbW1hbmRzIHx8IFsnYm9sZCcsICdpdGFsaWMnLCAnc3RyaWtldGhyb3VnaCcsICd8JywgJ2NvZGUnLCAnfCcsICdoMScsICdoMicsICd8JywgJ3VsJywgJ29sJywgJ3wnLCAnYmxvY2txdW90ZScsICdocicsICd8JywgJ2luc2VydExpbmsnLCAnaW5zZXJ0SW1hZ2UnXSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUtleWRvd24oZSkpO1xuICAgIGlmIChwcm9wcy5lZGl0b3IpIHRoaXMuc2V0RWRpdG9yKHByb3BzLmVkaXRvcik7XG4gIH1cblxuICBjcmVhdGVDb21tYW5kQmFyRWxlbWVudChwYXJlbnRFbGVtZW50LCBjb21tYW5kcykge1xuICAgIHRoaXMuZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQmFyJztcblxuICAgIGZvciAobGV0IGNvbW1hbmQgb2YgY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kID09ICd8Jykge1xuICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gJ1RNQ29tbWFuZERpdmlkZXInO1xuICAgICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNvbW1hbmROYW1lO1xuICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIC8vIFJlZmVyZW5jZSB0byBkZWZhdWx0IGNvbW1hbmRcblxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZF0pIHtcbiAgICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZDtcbiAgICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0gRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXTtcblxuICAgICAgICAgICAgXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29tbWFuZCA9PSBcIm9iamVjdFwiICYmIGNvbW1hbmQubmFtZSkge1xuICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZC5uYW1lO1xuICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0ge307IFxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKSBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBjb21tYW5kKTtcbiAgICAgICAgXG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0aXRsZSA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLnRpdGxlIHx8IGNvbW1hbmROYW1lO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5ob3RrZXkpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uaG90a2V5LnNwbGl0KCctJyk7XG4gICAgICAgICAgLy8gY29uc3RydWN0IG1vZGlmaWVyc1xuICAgICAgICAgIGxldCBtb2RpZmllcnMgPSBbXTtcbiAgICAgICAgICBsZXQgbW9kaWZpZXJleHBsYW5hdGlvbiA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5c1tpXSkge1xuICAgICAgICAgICAgICBjYXNlICdDdHJsJzogbW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdDbWQnOiBtb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnQWx0JzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnT3B0aW9uJzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMpScpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnV2luJzogbW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfiip4gV2luJyk7IGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgJ1NoaWZ0JzogIG1vZGlmaWVycy5wdXNoKCdzaGlmdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KHpycpOyBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlICdNb2QnOiAvLyBNb2QgaXMgYSBjb252ZW5pZW5jZSBtZWNoYW5pc206IEN0cmwgb24gV2luZG93cywgQ21kIG9uIE1hY1xuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIHttb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpO30gXG4gICAgICAgICAgICAgICAgZWxzZSB7bW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7fSBcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgICAgICAgIGNhc2UgJ01vZDInOiBcbiAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaCgnYWx0S2V5Jyk7IFxuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgn4oylJyk7XG4gICAgICAgICAgICAgICAgZWxzZSBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBNb2QyIGlzIGEgY29udmVuaWVuY2UgbWVjaGFuaXNtOiBBbHQgb24gV2luZG93cywgT3B0aW9uIG9uIE1hY1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goa2V5c1trZXlzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICBsZXQgaG90a2V5ID0ge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBtb2RpZmllcnM6IG1vZGlmaWVycyxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNvbW1hbmROYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gVE9ETyBSaWdodCBub3cgdGhpcyBpcyB3b3JraW5nIG9ubHkgZm9yIGxldHRlcnMgYW5kIG51bWJlcnNcbiAgICAgICAgICBpZiAoa2V5c1trZXlzLmxlbmd0aCAtIDFdLm1hdGNoKC9eWzAtOV0kLykpIHtcbiAgICAgICAgICAgIGhvdGtleS5jb2RlID0gYERpZ2l0JHtrZXlzW2tleXMubGVuZ3RoIC0gMV19YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG90a2V5LmtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmhvdGtleXMucHVzaChob3RrZXkpO1xuICAgICAgICAgIHRpdGxlID0gdGl0bGUuY29uY2F0KGAgKCR7bW9kaWZpZXJleHBsYW5hdGlvbi5qb2luKCcrJyl9KWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmRCdXR0b24gVE1Db21tYW5kQnV0dG9uX0Rpc2FibGVkJztcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS50aXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmlubmVySFRNTCA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLmlubmVySFRNTDtcblxuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUNsaWNrKGNvbW1hbmROYW1lLCBlKSk7XG4gICAgICAgIHRoaXMuZS5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soY29tbWFuZE5hbWUsIGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVkaXRvcikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZE5hbWVdID09PSBmYWxzZSkgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCB0cnVlKTtcbiAgICAgIGVsc2UgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCBmYWxzZSk7ICBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVkaXRvcihlZGl0b3IpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uJywgKGUpID0+IHRoaXMuaGFuZGxlU2VsZWN0aW9uKGUpKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdGlvbihldmVudCkge1xuICAgIGlmIChldmVudC5jb21tYW5kU3RhdGUpIHtcbiAgICAgIGZvciAobGV0IGNvbW1hbmQgaW4gdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKSB0aGlzLnN0YXRlW2NvbW1hbmRdID0gdGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKHRoaXMuZWRpdG9yLCBldmVudC5mb2N1cywgZXZlbnQuYW5jaG9yKTtcbiAgICAgICAgICBlbHNlIHRoaXMuc3RhdGVbY29tbWFuZF0gPSBldmVudC5mb2N1cyA/IGZhbHNlIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0YXRlW2NvbW1hbmRdID0gZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZF0gPT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZF0uY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fQWN0aXZlJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlW2NvbW1hbmRdID09PSBmYWxzZSkge1xuICAgICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kXS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9JbmFjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmRdLmNsYXNzTmFtZSA9ICAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9EaXNhYmxlZCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgb3V0ZXI6IGZvciAobGV0IGhvdGtleSBvZiB0aGlzLmhvdGtleXMpIHtcbiAgICAgIGlmICgoaG90a2V5LmtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PSBob3RrZXkua2V5KSB8fCAoaG90a2V5LmNvZGUgJiYgZXZlbnQuY29kZSA9PSBob3RrZXkuY29kZSkpIHtcbiAgICAgICAgLy8gS2V5IG1hdGNoZXMgaG90a2V5LiBMb29rIGZvciBhbnkgcmVxdWlyZWQgbW9kaWZpZXIgdGhhdCB3YXNuJ3QgcHJlc3NlZFxuICAgICAgICBmb3IgKGxldCBtb2RpZmllciBvZiBob3RrZXkubW9kaWZpZXJzKSB7XG4gICAgICAgICAgaWYgKCFldmVudFttb2RpZmllcl0pIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5dGhpbmcgbWF0Y2hlcy5cbiAgICAgICAgdGhpcy5oYW5kbGVDbGljayhob3RrZXkuY29tbWFuZCwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1hbmRCYXI7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IHRoaXMgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3Rcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBJU19IVE1MRERBID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhbGw6IGRvY3VtZW50QWxsLFxuICBJU19IVE1MRERBOiBJU19IVE1MRERBXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkb2N1bWVudEFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1hbGwnKTtcblxudmFyIGRvY3VtZW50QWxsID0gJGRvY3VtZW50QWxsLmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKFdlYWtNYXApKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgJGRvY3VtZW50QWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWFsbCcpO1xuXG52YXIgZG9jdW1lbnRBbGwgPSAkZG9jdW1lbnRBbGwuYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpIHx8IGl0ID09PSBkb2N1bWVudEFsbDtcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9PSA0Mjtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pIDogZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zMy4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMy4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc3RvcmUuZ2V0ID0gc3RvcmUuZ2V0O1xuICBzdG9yZS5oYXMgPSBzdG9yZS5oYXM7XG4gIHN0b3JlLnNldCA9IHN0b3JlLnNldDtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoc3RvcmUuaGFzKGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgc3RvcmUuc2V0KGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuZ2V0KGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmhhcyhpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICBpZiAoZGVzY3JpcHRvci5nZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3IuZ2V0LCBuYW1lLCB7IGdldHRlcjogdHJ1ZSB9KTtcbiAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLnNldCwgbmFtZSwgeyBzZXR0ZXI6IHRydWUgfSk7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5oYXNJbmRpY2VzKSByZXN1bHQgKz0gJ2QnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC51bmljb2RlU2V0cykgcmVzdWx0ICs9ICd2JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgcmVnRXhwRmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcuJywgJ2QnKSAtPiAvLi9kIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciBSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbnZhciBGT1JDRUQgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBJTkRJQ0VTX1NVUFBPUlQgPSB0cnVlO1xuICB0cnkge1xuICAgIFJlZ0V4cCgnLicsICdkJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgSU5ESUNFU19TVVBQT1JUID0gZmFsc2U7XG4gIH1cblxuICB2YXIgTyA9IHt9O1xuICAvLyBtb2Rlcm4gVjggYnVnXG4gIHZhciBjYWxscyA9ICcnO1xuICB2YXIgZXhwZWN0ZWQgPSBJTkRJQ0VTX1NVUFBPUlQgPyAnZGdpbXN5JyA6ICdnaW1zeSc7XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChrZXksIGNocikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxscyArPSBjaHI7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IH0pO1xuICB9O1xuXG4gIHZhciBwYWlycyA9IHtcbiAgICBkb3RBbGw6ICdzJyxcbiAgICBnbG9iYWw6ICdnJyxcbiAgICBpZ25vcmVDYXNlOiAnaScsXG4gICAgbXVsdGlsaW5lOiAnbScsXG4gICAgc3RpY2t5OiAneSdcbiAgfTtcblxuICBpZiAoSU5ESUNFU19TVVBQT1JUKSBwYWlycy5oYXNJbmRpY2VzID0gJ2QnO1xuXG4gIGZvciAodmFyIGtleSBpbiBwYWlycykgYWRkR2V0dGVyKGtleSwgcGFpcnNba2V5XSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHBQcm90b3R5cGUsICdmbGFncycpLmdldC5jYWxsKE8pO1xuXG4gIHJldHVybiByZXN1bHQgIT09IGV4cGVjdGVkIHx8IGNhbGxzICE9PSBleHBlY3RlZDtcbn0pO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5pZiAoRk9SQ0VEKSBkZWZpbmVCdWlsdEluQWNjZXNzb3IoUmVnRXhwUHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZWdFeHBGbGFnc1xufSk7XG4iLCIvLyBjb25zdCByZXBsYWNlbWVudHMgPSB7XG4vLyAgIEFTQ0lJUHVuY3R1YXRpb246ICchXCIjJCUmXFwnKCkqKyxcXFxcLS4vOjs8PT4/QFxcXFxbXFxcXF1eX2B7fH1+Jyxcbi8vICAgVHJpZ2dlckNoYXJzOiAnYF9cXCpcXFtcXF1cXChcXCknLFxuLy8gICBTY2hlbWU6IGBbQS1aYS16XVtBLVphLXowLTlcXCtcXC5cXC1dezEsMzF9YCxcbi8vICAgRW1haWw6IGBbYS16QS1aMC05LiEjJCUmJyorLz0/Xl9cXGB7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcXFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSpgLCAvLyBGcm9tIENvbW1vbk1hcmsgc3BlY1xuXG4vLyB9XG5jb25zdCByZXBsYWNlbWVudHMgPSB7XG4gIEFTQ0lJUHVuY3R1YXRpb246IC9bIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1eX2B7fH1+XFxcXF0vLCAgXG4gIE5vdFRyaWdnZXJDaGFyOiAvW15gXypbXFxdKCk8PiF+XS8sXG4gIFNjaGVtZTogL1tBLVphLXpdW0EtWmEtejAtOSsuLV17MSwzMX0vLFxuICBFbWFpbDogL1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqLywgLy8gRnJvbSBDb21tb25NYXJrIHNwZWNcbiAgSFRNTE9wZW5UYWc6IC88SFRNTFRhZ05hbWUoPzpIVE1MQXR0cmlidXRlKSpcXHMqXFwvPz4vLFxuICBIVE1MQ2xvc2VUYWc6IC88XFwvSFRNTFRhZ05hbWVcXHMqPi8sXG4gIEhUTUxUYWdOYW1lOiAvW0EtWmEtel1bQS1aYS16MC05LV0qLywgXG4gIEhUTUxDb21tZW50OiAvPCEtLSg/OltePi1dfCg/OltePi1dKD86W14tXXwtW14tXSkqW14tXSkpLS0+LyxcbiAgSFRNTFBJOiAvPFxcPyg/OnwufCg/OlteP118XFw/W14+XSkqKVxcPz4vLFxuICBIVE1MRGVjbGFyYXRpb246IC88IVtBLVpdK1xcc1tePl0qPi8sXG4gIEhUTUxDREFUQTogLzwhXFxbQ0RBVEFcXFsuKj9cXF1cXF0+LyxcbiAgSFRNTEF0dHJpYnV0ZTogL1xccytbQS1aYS16XzpdW0EtWmEtejAtOV8uOi1dKig/OkhUTUxBdHRWYWx1ZSk/LyxcbiAgSFRNTEF0dFZhbHVlOiAvXFxzKj1cXHMqKD86KD86J1teJ10qJyl8KD86XCJbXlwiXSpcIil8KD86W15cXHNcIic9PD5gXSspKS8sXG4gIEtub3duVGFnOiAvYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGgxfGgyfGgzfGg0fGg1fGg2fGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VjdGlvbnxzb3VyY2V8c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bC9cbn1cblxuLy8gRnJvbSBDb21tb25NYXJrLmpzLiBcbmNvbnN0IHB1bmN0dWF0aW9uTGVhZGluZyA9IG5ldyBSZWdFeHAoL14oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pLyk7XG5cbmNvbnN0IHB1bmN0dWF0aW9uVHJhaWxpbmcgPSBuZXcgUmVnRXhwKC8oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pJC8pO1xuXG4vLyBleHBvcnQgY29uc3QgaW5saW5lVHJpZ2dlckNoYXJzID0gbmV3IFJlZ0V4cChgWyR7cmVwbGFjZW1lbnRzLlRyaWdnZXJDaGFyc31dYCk7XG5cbi8qKlxuICogVGhpcyBpcyBDb21tb25NYXJrJ3MgYmxvY2sgZ3JhbW1hciwgYnV0IHdlJ3JlIGlnbm9yaW5nIG5lc3RlZCBibG9ja3MgaGVyZS4gIFxuICovIFxuY29uc3QgbGluZUdyYW1tYXIgPSB7IFxuICBUTUgxOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9I1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDFcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMVwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1IMjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgyXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUgzOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IM1wiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgzXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg0OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDRcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INFwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INVwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg1XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg2OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg2XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUJsb2NrcXVvdGU6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30+WyBdPykoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQmxvY2txdW90ZVwiPiQxPC9zcGFuPiQkMidcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja09wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+YGBgYCopXFxzKikoW15gXSo/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZUJhY2t0aWNrXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VUaWxkZU9wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopXFxzKikoLio/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPmBgYGAqKSkoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VCYWNrdGlja1wiPiQxPC9zcGFuPiQzJ1xuICB9LFxuICBUTUNvZGVGZW5jZVRpbGRlQ2xvc2U6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopKShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+JDMnXG4gIH0sXG4gIFRNQmxhbmtMaW5lOiB7IFxuICAgIHJlZ2V4cDogL14oWyBcXHRdKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICckMCdcbiAgfSxcbiAgVE1TZXRleHRIMU1hcmtlcjogeyBcbiAgICByZWdleHA6IC9eIHswLDN9PStcXHMqJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNU2V0ZXh0SDFNYXJrZXJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNU2V0ZXh0SDJNYXJrZXI6IHsgXG4gICAgcmVnZXhwOiAvXiB7MCwzfS0rXFxzKiQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVNldGV4dEgxTWFya2VyXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTUhSOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KFxcKlsgXFx0XSpcXCpbIFxcdF0qXFwqWyBcXHQqXSopfCgtWyBcXHRdKi1bIFxcdF0qLVsgXFx0LV0qKXwoX1sgXFx0XSpfWyBcXHRdKl9bIFxcdF9dKikpJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSFJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNVUw6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31bKyotXSB7MSw0fSkoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNVUxcIj4kMTwvc3Bhbj4kJDInXG4gIH0sXG4gIFRNT0w6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXGR7MSw5fVsuKV0gezEsNH0pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTU9MXCI+JDE8L3NwYW4+JCQyJ1xuICB9LFxuICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSBwcmV2ZW50aW5nIHN1Ymxpc3RzIChhbmQgYW55IGNvbnRlbnQgd2l0aGluIGxpc3QgaXRlbXMsIHJlYWxseSkgZnJvbSB3b3JraW5nXG4gIFRNSW5kZW50ZWRDb2RlOiB7IFxuICAgIHJlZ2V4cDogL14oIHs0fXxcXHQpKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUluZGVudGVkQ29kZVwiPiQxPC9zcGFuPiQyJ1xuICB9LFxuICBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uOiB7XG4gICAgLy8gVE9ETzogTGluayBkZXN0aW5hdGlvbiBjYW4ndCBpbmNsdWRlIHVuYmFsYW5jZWQgcGFyYW50aGVzZXMsIGJ1dCB3ZSBqdXN0IGlnbm9yZSB0aGF0IGhlcmUgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXFtcXHMqKShbXlxcc1xcXV0oPzpbXlxcXV18XFxcXFxcXSkqPykoXFxzKlxcXTpcXHMqKSgoPzpbXlxcczw+XSspfCg/OjwoPzpbXjw+XFxcXF18XFxcXC4pKj4pKT8oXFxzKikoKD86XFwoKD86W14oKVxcXFxdfFxcXFwuKSpcXCkpfCg/OlwiKD86W15cIlxcXFxdfFxcXFwuKSpcIil8KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKSk/KFxccyopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNTGlua1JlZmVyZW5jZURlZmluaXRpb25cIj4kMTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX0RlZmluaXRpb25cIj4kMjwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvblwiPiQzPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1MaW5rRGVzdGluYXRpb25cIj4kNDwvc3Bhbj4kNTxzcGFuIGNsYXNzPVwiVE1MaW5rVGl0bGVcIj4kNjwvc3Bhbj4kNycsXG4gICAgbGFiZWxQbGFjZWhvbGRlcjogMiwgLy8gdGhpcyBkZWZpbmVzIHdoaWNoIHBsYWNlaG9sZGVyIGluIHRoZSBhYm92ZSByZWdleCBpcyB0aGUgbGluayBcImxhYmVsXCJcbiAgfSxcbn07XG5cbi8qKlxuICogSFRNTCBibG9ja3MgaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBvcGVuZXIgYW5kIGNsb3Nlci4gVGhpcyBhcnJheSBkZWZpbmVzIGFsbCB0aGUgY2FzZXNcbiAqL1xudmFyIGh0bWxCbG9ja0dyYW1tYXIgPSBbXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCg/OnNjcmlwdHxwcmV8c3R5bGUpKD86XFxzfD58JCkvaSwgZW5kOiAvKD86PFxcL3NjcmlwdD58PFxcL3ByZT58PFxcL3N0eWxlPikvaSwgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhLS0vLCBlbmQ6IC8tLT4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PFxcPy8sIGVuZDogL1xcPz4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFbQS1aXS8sIGVuZDogLz4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFcXFtDREFUQVxcWy8sIGVuZDogL1xcXVxcXT4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86PHw8XFwvKSg/Oktub3duVGFnKSg/Olxcc3w+fFxcLz58JCkvaSwgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86SFRNTE9wZW5UYWd8SFRNTENsb3NlVGFnKVxccyokLywgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogZmFsc2V9LFxuXTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdDpcbiAqIFRvcCBsZXZlbCBlbnRyaWVzIGFyZSBydWxlcywgZWFjaCBjb25zaXN0aW5nIG9mIGEgcmVndWxhciBleHByZXNzaW9ucyAoaW4gc3RyaW5nIGZvcm1hdCkgYXMgd2VsbCBhcyBhIHJlcGxhY2VtZW50LlxuICogSW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIHJlcGxhY2VtZW50cyBmcm9tIHRoZSBvYmplY3QgJ3JlcGxhY2VtZW50cycgd2lsbCBiZSBwcm9jZXNzZWQgYmVmb3JlIGNvbXBpbGluZyBpbnRvIHRoZSBwcm9wZXJ0eSByZWdleHAuXG4gKi9cbnZhciBpbmxpbmVHcmFtbWFyID0ge1xuICBlc2NhcGUgOiB7XG4gICAgcmVnZXhwOiAvXlxcXFwoQVNDSUlQdW5jdHVhdGlvbikvLFxuICAgIHJlcGxhY2VtZW50IDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUVzY2FwZVwiPlxcXFw8L3NwYW4+JDEnXG4gIH0sXG4gIGNvZGUgOiB7XG4gICAgcmVnZXhwOiAvXihgKykoKD86W15gXSl8KD86W15gXS4qP1teYF0pKShcXDEpLyxcbiAgICByZXBsYWNlbWVudCA6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDE8L3NwYW4+PGNvZGUgY2xhc3M9XCJUTUNvZGVcIj4kMjwvY29kZT48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDM8L3NwYW4+JyBcbiAgfSxcbiAgYXV0b2xpbmsgOiB7XG4gICAgcmVnZXhwOiAvXjwoKD86U2NoZW1lOlteXFxzPD5dKil8KD86RW1haWwpKT4vLFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQXV0b2xpbmtcIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1BdXRvbGlua1wiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUF1dG9saW5rXCI+Jmd0Ozwvc3Bhbj4nXG4gIH0sXG4gIGh0bWwgOiB7XG4gICAgcmVnZXhwOiAvXigoPzpIVE1MT3BlblRhZyl8KD86SFRNTENsb3NlVGFnKXwoPzpIVE1MQ29tbWVudCl8KD86SFRNTFBJKXwoPzpIVE1MRGVjbGFyYXRpb24pfCg/OkhUTUxDREFUQSkpLyxcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1IVE1MXCI+JDE8L3NwYW4+JyxcbiAgfSxcbiAgbGlua09wZW4gOiB7XG4gICAgcmVnZXhwOiAvXlxcWy8sXG4gICAgcmVwbGFjZW1lbnQ6ICcnXG4gIH0sXG4gIGltYWdlT3BlbiA6IHtcbiAgICByZWdleHA6IC9eIVxcWy8sXG4gICAgcmVwbGFjZW1lbnQgOiAnJ1xuICB9LFxuICBsaW5rTGFiZWwgOiB7XG4gICAgcmVnZXhwOiAvXihcXFtcXHMqKShbXlxcXV0qPykoXFxzKlxcXSkvLFxuICAgIHJlcGxhY2VtZW50OiAnJyxcbiAgICBsYWJlbFBsYWNlaG9sZGVyOiAyXG4gIH0sXG4gIGRlZmF1bHQgOiB7XG4gICAgcmVnZXhwOiAvXigufCg/Ok5vdFRyaWdnZXJDaGFyKykpLyxcbiAgICByZXBsYWNlbWVudDogJyQxJ1xuICB9XG59O1xuXG4vLyBQcm9jZXNzIHJlcGxhY2VtZW50cyBpbiByZWdleHBzXG5jb25zdCByZXBsYWNlbWVudFJlZ2V4cCA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzKS5qb2luKCd8JykpO1xuXG4vLyBJbmxpbmVcbmNvbnN0IGlubGluZVJ1bGVzID1bLi4uT2JqZWN0LmtleXMoaW5saW5lR3JhbW1hcildO1xuZm9yIChsZXQgcnVsZSBvZiBpbmxpbmVSdWxlcykge1xuICBsZXQgcmUgPSBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cC5zb3VyY2U7XG4gIC8vIFJlcGxhY2Ugd2hpbGUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHJlcGxhY2UuIFRoaXMgbWVhbnMgaXQgYWxzbyB3b3JrcyBvdmVyIG11bHRpcGxlIGxldmVscyAocmVwbGFjZW1lbnRzIGNvbnRhaW5pbmcgcmVwbGFjZW1lbnRzKVxuICB3aGlsZSAocmUubWF0Y2gocmVwbGFjZW1lbnRSZWdleHApKSB7XG4gICAgcmUgPSByZS5yZXBsYWNlKHJlcGxhY2VtZW50UmVnZXhwLCAoc3RyaW5nKSA9PiB7IHJldHVybiByZXBsYWNlbWVudHNbc3RyaW5nXS5zb3VyY2U7IH0pO1xuICB9XG4gIGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwID0gbmV3IFJlZ0V4cChyZSwgaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuZmxhZ3MpO1xufVxuXG4vLyBIVE1MIEJsb2NrIChvbmx5IG9wZW5pbmcgcnVsZSBpcyBwcm9jZXNzZWQgY3VycmVudGx5KVxuZm9yIChsZXQgcnVsZSBvZiBodG1sQmxvY2tHcmFtbWFyKSB7XG4gIGxldCByZSA9IHJ1bGUuc3RhcnQuc291cmNlO1xuICAvLyBSZXBsYWNlIHdoaWxlIHRoZXJlIGlzIHNvbWV0aGluZyB0byByZXBsYWNlLiBUaGlzIG1lYW5zIGl0IGFsc28gd29ya3Mgb3ZlciBtdWx0aXBsZSBsZXZlbHMgKHJlcGxhY2VtZW50cyBjb250YWluaW5nIHJlcGxhY2VtZW50cylcbiAgd2hpbGUgKHJlLm1hdGNoKHJlcGxhY2VtZW50UmVnZXhwKSkge1xuICAgIHJlID0gcmUucmVwbGFjZShyZXBsYWNlbWVudFJlZ2V4cCwgKHN0cmluZykgPT4geyByZXR1cm4gcmVwbGFjZW1lbnRzW3N0cmluZ10uc291cmNlOyB9KTtcbiAgfVxuICBydWxlLnN0YXJ0ID0gbmV3IFJlZ0V4cChyZSwgcnVsZS5zdGFydC5mbGFncyk7XG59XG5cbi8qKlxuICogRXNjYXBlcyBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycyAoPCwgPiwgYW5kICYpIGluIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSByYXcgc3RyaW5nIHRvIGJlIGVzY2FwZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdHJpbmcsIHJlYWR5IHRvIGJlIHVzZWQgaW4gSFRNTFxuICovXG5mdW5jdGlvbiBodG1sZXNjYXBlKHN0cmluZykge1xuICByZXR1cm4gKHN0cmluZyA/IHN0cmluZyA6ICcnKVxuICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59XG4vKipcbiAqIENvbnRhaW5zIHRoZSBjb21tYW5kcyB0aGF0IGNhbiBiZSBzZW50IHRvIHRoZSBlZGl0b3IuIENvbnRhaW5zIG9iamVjdHMgd2l0aCBhIG5hbWUgcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLlxuICogRWFjaCBvZiB0aGUgb2JqZWN0cyBjb250YWlucyB0aGUgZm9sbG93aW5nIGtleXM6XG4gKiBcbiAqICAgLSB0eXBlOiBDYW4gYmUgZWl0aGVyIGlubGluZSAoZm9yIGlubGluZSBmb3JtYXR0aW5nKSBvciBsaW5lIChmb3IgYmxvY2sgLyBsaW5lIGZvcm1hdHRpbmcpLlxuICogICAtIGNsYXNzTmFtZTogVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29tbWFuZCBpcyBhY3RpdmUgYXQgYSBnaXZlbiBwb3NpdGlvbi4gXG4gKiAgICAgRm9yIGxpbmUgZm9ybWF0dGluZywgdGhpcyBsb29rcyBhdCB0aGUgY2xhc3Mgb2YgdGhlIGxpbmUgZWxlbWVudC4gRm9yIGlubGluZSBlbGVtZW50cywgdHJpZXMgdG8gZmluZCBhbiBlbmNsb3NpbmcgZWxlbWVudCB3aXRoIHRoYXQgY2xhc3MuXG4gKiAgIC0gc2V0IC8gdW5zZXQ6IENvbnRhaW4gaW5zdHJ1Y3Rpb25zIGhvdyB0byBzZXQgYW5kIHVuc2V0IHRoZSBjb21tYW5kLiBGb3IgbGluZSB0eXBlIGNvbW1hbmRzLCBib3RoIGNvbnNpc3Qgb2YgYSBwYXR0ZXJuIGFuZCByZXBsYWNlbWVudCB0aGF0IFxuICogICAgIHdpbGwgYmUgYXBwbGllZCB0byBlYWNoIGxpbmUgKHVzaW5nIFN0cmluZy5yZXBsYWNlKS4gRm9yIGlubGluZSB0eXBlIGNvbW1hbmRzLCB0aGUgc2V0IG9iamVjdCBjb250YWlucyBhIHByZSBhbmQgcG9zdCBzdHJpbmcgd2hpY2ggd2lsbFxuICogICAgIGJlIGluc2VydGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbi4gVGhlIHVuc2V0IG9iamVjdCBjb250YWlucyBhIHByZVBhdHRlcm4gYW5kIGEgcG9zdFBhdHRlcm4uIEJvdGggc2hvdWxkIGJlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIFxuICogICAgIHRoZXkgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3J0aW9uIG9mIHRoZSBsaW5lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbiAodXNpbmcgU3RyaW5nLnJlcGxhY2UsIHdpdGggYW4gZW1wdHkgcmVwbGFjZW1lbnQgc3RyaW5nKS5cbiAqL1xuY29uc3QgY29tbWFuZHMgPSB7XG4gIC8vIFJlcGxhY2VtZW50cyBmb3IgdW5zZXQgZm9yIGlubGluZSBjb21tYW5kcyBhcmUgJycgYnkgZGVmYXVsdFxuICBib2xkOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNU3Ryb25nJywgXG4gICAgc2V0OiB7cHJlOiAnKionLCBwb3N0OiAnKionfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOiAvKD86XFwqXFwqfF9fKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCpcXCp8X18pL31cbiAgfSwgXG4gIGl0YWxpYzoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUVtJywgXG4gICAgc2V0OiB7cHJlOiAnKicsIHBvc3Q6ICcqJ30sIFxuICAgIHVuc2V0OiB7cHJlUGF0dGVybjogLyg/OlxcKnxfKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCp8XykvfVxuICB9LFxuICBjb2RlOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNQ29kZScsIFxuICAgIHNldDoge3ByZTogJ2AnLCBwb3N0OiAnYCd9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46IC9gKyQvLCBwb3N0UGF0dGVybjogL15gKy99IC8vIEZJWE1FIHRoaXMgZG9lc24ndCBlbnN1cmUgYmFsYW5jZWQgYmFja3RpY2tzIHJpZ2h0IG5vd1xuICB9LCBcbiAgc3RyaWtldGhyb3VnaDoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVN0cmlrZXRocm91Z2gnLCBcbiAgICBzZXQ6IHtwcmU6ICd+ficsIHBvc3Q6ICd+fid9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46L35+JC8sIHBvc3RQYXR0ZXJuOiAvXn5+LyB9XG4gIH0sXG4gIGgxOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgxJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9I1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDI6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDInLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGgzOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgzJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg0OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg0JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjI1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDU6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDUnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg2OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg2JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIHVsOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVVMJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICctICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9WysqLV0gezEsNH0pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgb2w6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNT0wnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQjLiAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfVxcZHsxLDl9Wy4pXSB7MSw0fSkoLiopJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LCBcbiAgYmxvY2txdW90ZToge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1CbG9ja3F1b3RlJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICc+ICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9PlsgXT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbn07XG5cbmV4cG9ydCB7IGxpbmVHcmFtbWFyLCBpbmxpbmVHcmFtbWFyLCBwdW5jdHVhdGlvbkxlYWRpbmcsIHB1bmN0dWF0aW9uVHJhaWxpbmcsIGh0bWxlc2NhcGUsIGh0bWxCbG9ja0dyYW1tYXIsIGNvbW1hbmRzIH07IiwiaW1wb3J0IHtcbiAgaW5saW5lR3JhbW1hcixcbiAgbGluZUdyYW1tYXIsXG4gIHB1bmN0dWF0aW9uTGVhZGluZyxcbiAgcHVuY3R1YXRpb25UcmFpbGluZyxcbiAgaHRtbGVzY2FwZSxcbiAgaHRtbEJsb2NrR3JhbW1hcixcbiAgY29tbWFuZHMsXG59IGZyb20gXCIuL2dyYW1tYXJcIjtcblxuY2xhc3MgRWRpdG9yIHtcbiAgY29uc3RydWN0b3IocHJvcHMgPSB7fSkge1xuICAgIHRoaXMuZSA9IG51bGw7XG4gICAgdGhpcy50ZXh0YXJlYSA9IG51bGw7XG4gICAgdGhpcy5saW5lcyA9IFtdO1xuICAgIHRoaXMubGluZUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5saW5lVHlwZXMgPSBbXTtcbiAgICB0aGlzLmxpbmVDYXB0dXJlcyA9IFtdO1xuICAgIHRoaXMubGluZVJlcGxhY2VtZW50cyA9IFtdO1xuICAgIHRoaXMubGlua0xhYmVscyA9IFtdO1xuICAgIHRoaXMubGluZURpcnR5ID0gW107XG4gICAgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gbnVsbDtcblxuICAgIHRoaXMubGlzdGVuZXJzID0ge1xuICAgICAgY2hhbmdlOiBbXSxcbiAgICAgIHNlbGVjdGlvbjogW10sXG4gICAgfTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICB0aGlzLnRleHRhcmVhID0gcHJvcHMudGV4dGFyZWE7XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgaWYgKCF0aGlzLnRleHRhcmVhLnRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudGV4dGFyZWEpO1xuICAgICAgfVxuICAgICAgaWYgKCFlbGVtZW50KSBlbGVtZW50ID0gdGhpcy50ZXh0YXJlYTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PSBcIlRFWFRBUkVBXCIpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEgPSBlbGVtZW50O1xuICAgICAgZWxlbWVudCA9IHRoaXMudGV4dGFyZWEucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgdGhpcy50ZXh0YXJlYS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpO1xuICAgIC8vIFRPRE8gUGxhY2Vob2xkZXIgZm9yIGVtcHR5IGNvbnRlbnRcbiAgICB0aGlzLnNldENvbnRlbnQoXG4gICAgICBwcm9wcy5jb250ZW50IHx8XG4gICAgICAgICh0aGlzLnRleHRhcmVhXG4gICAgICAgICAgPyB0aGlzLnRleHRhcmVhLnZhbHVlXG4gICAgICAgICAgOiBcIiMgSGVsbG8gVGlueU1ERSFcXG5FZGl0ICoqaGVyZSoqXCIpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlZGl0b3IgZWxlbWVudCBpbnNpZGUgdGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBET00gdHJlZVxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQgb2YgdGhlIERPTSB0cmVlXG4gICAqL1xuICBjcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgICB0aGlzLmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSBcIlRpbnlNREVcIjtcbiAgICB0aGlzLmUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGltcG9ydGFudCBmb3IgZm9ybWF0dGluZyBwdXJwb3NlcywgYnV0IGFsc28gc2luY2Ugb3RoZXJ3aXNlIHRoZSBicm93c2VyIHJlcGxhY2VzIHN1YnNlcXVlbnQgc3BhY2VzIHdpdGggICZuYnNwOyAmbmJzcDtcbiAgICAvLyBUaGF0IGJyZWFrcyBhIGxvdCBvZiBzdHVmZiwgc28gd2UgZG8gdGhpcyBoZXJlIGFuZCBub3QgaW4gQ1NT4oCUdGhlcmVmb3JlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBwdXQgdGhpcyBpbiB0aGUgQ1NTIGZpbGVcbiAgICB0aGlzLmUuc3R5bGUud2hpdGVTcGFjZSA9IFwicHJlLXdyYXBcIjtcbiAgICAvLyBBdm9pZCBmb3JtYXR0aW5nIChCIC8gSSAvIFUpIHBvcHBpbmcgdXAgb24gaU9TXG4gICAgdGhpcy5lLnN0eWxlLndlYmtpdFVzZXJNb2RpZnkgPSBcInJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHlcIjtcbiAgICBpZiAoXG4gICAgICB0aGlzLnRleHRhcmVhICYmXG4gICAgICB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGUgPT0gZWxlbWVudCAmJlxuICAgICAgdGhpcy50ZXh0YXJlYS5uZXh0U2libGluZ1xuICAgICkge1xuICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5lLCB0aGlzLnRleHRhcmVhLm5leHRTaWJsaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICAgIH1cblxuICAgIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgKGUpID0+IHRoaXMuaGFuZGxlSW5wdXRFdmVudChlKSk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCAoZSkgPT4gdGhpcy5oYW5kbGVJbnB1dEV2ZW50KGUpKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIChlKSA9PlxuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VFdmVudChlKVxuICAgICk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJwYXN0ZVwiLCAoZSkgPT4gdGhpcy5oYW5kbGVQYXN0ZShlKSk7XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSB0aGlzLmUuY2hpbGROb2RlczsgLy8gdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZWRpdG9yIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBuZXcgTWFya2Rvd24gY29udGVudFxuICAgKi9cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgLy8gRGVsZXRlIGFueSBleGlzdGluZyBjb250ZW50XG4gICAgd2hpbGUgKHRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGxldCBsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQobGUpO1xuICAgICAgdGhpcy5saW5lRGlydHkucHVzaCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5saW5lVHlwZXMgPSBuZXcgQXJyYXkodGhpcy5saW5lcy5sZW5ndGgpO1xuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVkaXRvciBjb250ZW50IGFzIGEgTWFya2Rvd24gc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZWRpdG9yIGNvbnRlbnQgYXMgYSBtYXJrZG93biBzdHJpbmdcbiAgICovXG4gIGdldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBtYWluIG1ldGhvZCB0byB1cGRhdGUgdGhlIGZvcm1hdHRpbmcgKGZyb20gdGhpcy5saW5lcyB0byBIVE1MIG91dHB1dClcbiAgICovXG4gIHVwZGF0ZUZvcm1hdHRpbmcoKSB7XG4gICAgLy8gRmlyc3QsIHBhcnNlIGxpbmUgdHlwZXMuIFRoaXMgd2lsbCB1cGRhdGUgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZVJlcGxhY2VtZW50cywgYW5kIHRoaXMubGluZUNhcHR1cmVzXG4gICAgLy8gV2UgZG9uJ3QgYXBwbHkgdGhlIGZvcm1hdHRpbmcgeWV0XG4gICAgdGhpcy51cGRhdGVMaW5lVHlwZXMoKTtcbiAgICAvLyBDb2xsZWN0IGFueSB2YWxpZCBsaW5rIGxhYmVscyBmcm9tIGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25z4oCUd2UgbmVlZCB0aGF0IGZvciBmb3JtYXR0aW5nIHRvIGRldGVybWluZSB3aGF0J3MgYSB2YWxpZCBsaW5rXG4gICAgdGhpcy51cGRhdGVMaW5rTGFiZWxzKCk7XG4gICAgLy8gTm93LCBhcHBseSB0aGUgZm9ybWF0dGluZ1xuICAgIHRoaXMuYXBwbHlMaW5lVHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoaXMubGlua0xhYmVsczogRm9yIGV2ZXJ5IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24gKGxpbmUgdHlwZSBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uKSwgd2UgY29sbGVjdCB0aGUgbGFiZWxcbiAgICovXG4gIHVwZGF0ZUxpbmtMYWJlbHMoKSB7XG4gICAgdGhpcy5saW5rTGFiZWxzID0gW107XG4gICAgZm9yIChsZXQgbCA9IDA7IGwgPCB0aGlzLmxpbmVzLmxlbmd0aDsgbCsrKSB7XG4gICAgICBpZiAodGhpcy5saW5lVHlwZXNbbF0gPT0gXCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5saW5rTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5saW5lQ2FwdHVyZXNbbF1bXG4gICAgICAgICAgICBsaW5lR3JhbW1hci5UTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uLmxhYmVsUGxhY2Vob2xkZXJcbiAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBmcm9tIGEgUmVnRXhwIGNhcHR1cmUuIFRoZSByZXBsYWNlbWVudCBzdHJpbmcgY2FuIGNvbnRhaW4gcmVndWxhciBkb2xsYXIgcGxhY2Vob2xkZXJzIChlLmcuLCAkMSksXG4gICAqIHdoaWNoIGFyZSBpbnRlcnByZXRlZCBsaWtlIGluIFN0cmluZy5yZXBsYWNlKCksIGJ1dCBhbHNvIGRvdWJsZSBkb2xsYXIgcGxhY2Vob2xkZXJzICgkJDEpLiBJbiB0aGUgY2FzZSBvZiBkb3VibGUgZG9sbGFyIHBsYWNlaG9sZGVycyxcbiAgICogTWFya2Rvd24gaW5saW5lIGdyYW1tYXIgaXMgYXBwbGllZCBvbiB0aGUgY29udGVudCBvZiB0aGUgY2FwdHVyZWQgc3ViZ3JvdXAsIGkuZS4sICQkMSBwcm9jZXNzZXMgaW5saW5lIE1hcmtkb3duIGdyYW1tYXIgaW4gdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAqIGZpcnN0IGNhcHR1cmVkIHN1Ymdyb3VwLCBhbmQgcmVwbGFjZXMgYCQkMWAgd2l0aCB0aGUgcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVwbGFjZW1lbnQgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgaW5jbHVkaW5nIHBsYWNlaG9sZGVycy5cbiAgICogQHBhcmFtICBjYXB0dXJlIFRoZSByZXN1bHQgb2YgYSBSZWdFeHAuZXhlYygpIGNhbGxcbiAgICogQHJldHVybnMgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgd2l0aCBwbGFjZWhvbGRlcnMgcmVwbGFjZWQgZnJvbSB0aGUgY2FwdHVyZSByZXN1bHQuXG4gICAqL1xuICByZXBsYWNlKHJlcGxhY2VtZW50LCBjYXB0dXJlKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VtZW50LnJlcGxhY2UoLyhcXCR7MSwyfSkoWzAtOV0pL2csIChzdHIsIHAxLCBwMikgPT4ge1xuICAgICAgaWYgKHAxID09IFwiJFwiKSByZXR1cm4gaHRtbGVzY2FwZShjYXB0dXJlW3AyXSk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJUTUlubGluZUZvcm1hdHRlZFwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKFxuICAgICAgICAgIGNhcHR1cmVbcDJdXG4gICAgICAgICl9PC9zcGFuPmA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgbGluZSB0eXBlcyAoZnJvbSB0aGlzLmxpbmVUeXBlcyBhcyB3ZWxsIGFzIHRoZSBjYXB0dXJlIHJlc3VsdCBpbiB0aGlzLmxpbmVSZXBsYWNlbWVudHMgYW5kIHRoaXMubGluZUNhcHR1cmVzKVxuICAgKiBhbmQgcHJvY2Vzc2VzIGlubGluZSBmb3JtYXR0aW5nIGZvciBhbGwgbGluZXMuXG4gICAqL1xuICBhcHBseUxpbmVUeXBlcygpIHtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSkge1xuICAgICAgICBsZXQgY29udGVudEhUTUwgPSB0aGlzLnJlcGxhY2UoXG4gICAgICAgICAgdGhpcy5saW5lUmVwbGFjZW1lbnRzW2xpbmVOdW1dLFxuICAgICAgICAgIHRoaXMubGluZUNhcHR1cmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMubGluZUhUTUxbbGluZU51bV0gPSAoY29udGVudEhUTUwgPT0gJycgPyAnPGJyIC8+JyA6IGNvbnRlbnRIVE1MKTsgLy8gUHJldmVudCBlbXB0eSBlbGVtZW50cyB3aGljaCBjYW4ndCBiZSBzZWxlY3RlZCBldGMuXG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmNsYXNzTmFtZSA9IHRoaXMubGluZVR5cGVzW2xpbmVOdW1dO1xuICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tsaW5lTnVtXS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uaW5uZXJIVE1MID1cbiAgICAgICAgICBjb250ZW50SFRNTCA9PSBcIlwiID8gXCI8YnIgLz5cIiA6IGNvbnRlbnRIVE1MOyAvLyBQcmV2ZW50IGVtcHR5IGVsZW1lbnRzIHdoaWNoIGNhbid0IGJlIHNlbGVjdGVkIGV0Yy5cbiAgICAgIH1cbiAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmRhdGFzZXQubGluZU51bSA9IGxpbmVOdW07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgbGluZSB0eXBlcyBmb3IgYWxsIGxpbmVzIGJhc2VkIG9uIHRoZSBsaW5lIC8gYmxvY2sgZ3JhbW1hci4gQ2FwdHVyZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHJlc3BlY3RpdmUgbGluZVxuICAgKiBncmFtbWFyIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZUNhcHR1cmVzLCBhbmQgdGhpcy5saW5lUmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgdXBkYXRlTGluZVR5cGVzKCkge1xuICAgIGxldCBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgbGV0IGNvZGVCbG9ja1NlcUxlbmd0aCA9IDA7XG4gICAgbGV0IGh0bWxCbG9jayA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgbGluZU51bSA9IDA7IGxpbmVOdW0gPCB0aGlzLmxpbmVzLmxlbmd0aDsgbGluZU51bSsrKSB7XG4gICAgICBsZXQgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgbGV0IGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgbGV0IGxpbmVSZXBsYWNlbWVudCA9IFwiJCQwXCI7IC8vIERlZmF1bHQgcmVwbGFjZW1lbnQgZm9yIHBhcmFncmFwaDogSW5saW5lIGZvcm1hdCB0aGUgZW50aXJlIGxpbmVcblxuICAgICAgLy8gQ2hlY2sgb25nb2luZyBjb2RlIGJsb2Nrc1xuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlQmFja3RpY2tPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZUJhY2t0aWNrJykpIHtcbiAgICAgIGlmIChjb2RlQmxvY2tUeXBlID09IFwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW5cIikge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIGJhY2t0aWNrLWZlbmNlZCBjb2RlIGJsb2NrLCBjaGVjayBpZiB0aGUgY3VycmVudCBsaW5lIGNsb3NlcyBpdFxuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZWdleHAuZXhlYyhcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjYXB0dXJlICYmIGNhcHR1cmUuZ3JvdXBzW1wic2VxXCJdLmxlbmd0aCA+PSBjb2RlQmxvY2tTZXFMZW5ndGgpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9IFwiVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgICBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNRmVuY2VkQ29kZUJhY2t0aWNrXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gJzxzcGFuIGNsYXNzPVwiVE1GZW5jZWRDb2RlXCI+JDA8YnIgLz48L3NwYW4+JztcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZVRpbGRlJykpIHtcbiAgICAgIGVsc2UgaWYgKGNvZGVCbG9ja1R5cGUgPT0gXCJUTUNvZGVGZW5jZVRpbGRlT3BlblwiKSB7XG4gICAgICAgIC8vIFdlJ3JlIGluIGEgdGlsZGUtZmVuY2VkIGNvZGUgYmxvY2tcbiAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTUNvZGVGZW5jZVRpbGRlQ2xvc2UucmVnZXhwLmV4ZWMoXG4gICAgICAgICAgdGhpcy5saW5lc1tsaW5lTnVtXVxuICAgICAgICApO1xuICAgICAgICBpZiAoY2FwdHVyZSAmJiBjYXB0dXJlLmdyb3Vwc1tcInNlcVwiXS5sZW5ndGggPj0gY29kZUJsb2NrU2VxTGVuZ3RoKSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNQ29kZUZlbmNlVGlsZGVDbG9zZVwiO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlVGlsZGVDbG9zZS5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgY29kZUJsb2NrVHlwZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmVUeXBlID0gXCJUTUZlbmNlZENvZGVUaWxkZVwiO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9ICc8c3BhbiBjbGFzcz1cIlRNRmVuY2VkQ29kZVwiPiQwPGJyIC8+PC9zcGFuPic7XG4gICAgICAgICAgbGluZUNhcHR1cmUgPSBbdGhpcy5saW5lc1tsaW5lTnVtXV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgSFRNTCBibG9jayB0eXBlc1xuICAgICAgaWYgKGxpbmVUeXBlID09IFwiVE1QYXJhXCIgJiYgaHRtbEJsb2NrID09PSBmYWxzZSkge1xuICAgICAgICBmb3IgKGxldCBodG1sQmxvY2tUeXBlIG9mIGh0bWxCbG9ja0dyYW1tYXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lTnVtXS5tYXRjaChodG1sQmxvY2tUeXBlLnN0YXJ0KSkge1xuICAgICAgICAgICAgLy8gTWF0Y2hpbmcgc3RhcnQgY29uZGl0aW9uLiBDaGVjayBpZiB0aGlzIHRhZyBjYW4gc3RhcnQgaGVyZSAobm90IGFsbCBzdGFydCBjb25kaXRpb25zIGFsbG93IGJyZWFraW5nIGEgcGFyYWdyYXBoKS5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaHRtbEJsb2NrVHlwZS5wYXJhSW50ZXJydXB0IHx8XG4gICAgICAgICAgICAgIGxpbmVOdW0gPT0gMCB8fFxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNUGFyYVwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1VTFwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1PTFwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1CbG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGh0bWxCbG9jayA9IGh0bWxCbG9ja1R5cGU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaHRtbEJsb2NrICE9PSBmYWxzZSkge1xuICAgICAgICBsaW5lVHlwZSA9IFwiVE1IVE1MQmxvY2tcIjtcbiAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gJzxzcGFuIGNsYXNzPVwiVE1IVE1MQ29udGVudFwiPiQwPGJyIC8+PC9zcGFuPic7IC8vIE5vIGZvcm1hdHRpbmcgaW4gVE1IVE1MQmxvY2tcbiAgICAgICAgbGluZUNhcHR1cmUgPSBbdGhpcy5saW5lc1tsaW5lTnVtXV07IC8vIFRoaXMgc2hvdWxkIGFscmVhZHkgYmUgc2V0IGJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgSFRNTCBibG9jayBzaG91bGQgYmUgY2xvc2VkXG4gICAgICAgIGlmIChodG1sQmxvY2suZW5kKSB7XG4gICAgICAgICAgLy8gU3BlY2lmaWMgZW5kIGNvbmRpdGlvblxuICAgICAgICAgIGlmICh0aGlzLmxpbmVzW2xpbmVOdW1dLm1hdGNoKGh0bWxCbG9jay5lbmQpKSB7XG4gICAgICAgICAgICBodG1sQmxvY2sgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTm8gc3BlY2lmaWMgZW5kIGNvbmRpdGlvbiwgZW5kcyB3aXRoIGJsYW5rIGxpbmVcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsaW5lTnVtID09IHRoaXMubGluZXMubGVuZ3RoIC0gMSB8fFxuICAgICAgICAgICAgdGhpcy5saW5lc1tsaW5lTnVtICsgMV0ubWF0Y2gobGluZUdyYW1tYXIuVE1CbGFua0xpbmUucmVnZXhwKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaHRtbEJsb2NrID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGFsbCByZWdleHBzIGlmIHdlIGhhdmVuJ3QgYXBwbGllZCBvbmUgb2YgdGhlIGNvZGUgYmxvY2sgdHlwZXNcbiAgICAgIGlmIChsaW5lVHlwZSA9PSBcIlRNUGFyYVwiKSB7XG4gICAgICAgIGZvciAobGV0IHR5cGUgaW4gbGluZUdyYW1tYXIpIHtcbiAgICAgICAgICBpZiAobGluZUdyYW1tYXJbdHlwZV0ucmVnZXhwKSB7XG4gICAgICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyW3R5cGVdLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICAgICAgbGluZVR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hclt0eXBlXS5yZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgbGluZUNhcHR1cmUgPSBjYXB0dXJlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UndmUgb3BlbmVkIGEgY29kZSBibG9jaywgcmVtZW1iZXIgdGhhdFxuICAgICAgaWYgKFxuICAgICAgICBsaW5lVHlwZSA9PSBcIlRNQ29kZUZlbmNlQmFja3RpY2tPcGVuXCIgfHxcbiAgICAgICAgbGluZVR5cGUgPT0gXCJUTUNvZGVGZW5jZVRpbGRlT3BlblwiXG4gICAgICApIHtcbiAgICAgICAgY29kZUJsb2NrVHlwZSA9IGxpbmVUeXBlO1xuICAgICAgICBjb2RlQmxvY2tTZXFMZW5ndGggPSBsaW5lQ2FwdHVyZS5ncm91cHNbXCJzZXFcIl0ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGFuZCBpbmRlbnRlZCBjb2RlIGNhbid0IGludGVycnVwdCBhIHBhcmFncmFwaFxuICAgICAgaWYgKFxuICAgICAgICAobGluZVR5cGUgPT0gXCJUTUluZGVudGVkQ29kZVwiIHx8XG4gICAgICAgICAgbGluZVR5cGUgPT0gXCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCIpICYmXG4gICAgICAgIGxpbmVOdW0gPiAwICYmXG4gICAgICAgICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gXCJUTVBhcmFcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNVUxcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNT0xcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNQmxvY2txdW90ZVwiKVxuICAgICAgKSB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBUTVBhcmFcbiAgICAgICAgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkJDBcIjtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IEgyIG1hcmtlcnMgdGhhdCBjYW4gYWxzbyBiZSBpbnRlcnByZXRlZCBhcyBhbiBlbXB0eSBsaXN0IGl0ZW0gc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIHN1Y2ggKGFzIHBlciBDb21tb25NYXJrIHNwZWMpXG4gICAgICBpZiAobGluZVR5cGUgPT0gXCJUTVNldGV4dEgyTWFya2VyXCIpIHtcbiAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTVVMLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgIGxpbmVUeXBlID0gXCJUTVVMXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1VTC5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IGhlYWRpbmdzIGFyZSBvbmx5IHZhbGlkIGlmIHByZWNlZGVkIGJ5IGEgcGFyYWdyYXBoIChhbmQgaWYgc28sIHRoZXkgY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgpXG4gICAgICBpZiAobGluZVR5cGUgPT0gXCJUTVNldGV4dEgxTWFya2VyXCIgfHwgbGluZVR5cGUgPT0gXCJUTVNldGV4dEgyTWFya2VyXCIpIHtcbiAgICAgICAgaWYgKGxpbmVOdW0gPT0gMCB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gIT0gXCJUTVBhcmFcIikge1xuICAgICAgICAgIC8vIFNldGV4dCBtYXJrZXIgaXMgaW52YWxpZC4gSG93ZXZlciwgYSBIMiBtYXJrZXIgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCBIUiwgc28gbGV0J3MgY2hlY2sgdGhhdFxuICAgICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXIuVE1IUi5yZWdleHAuZXhlYyh0aGlzLmxpbmVzW2xpbmVOdW1dKTtcbiAgICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgICAgLy8gVmFsaWQgSFJcbiAgICAgICAgICAgIGxpbmVUeXBlID0gXCJUTUhSXCI7XG4gICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTUhSLnJlcGxhY2VtZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3QgdmFsaWQgSFIsIGZvcm1hdCBhcyBUTVBhcmFcbiAgICAgICAgICAgIGxpbmVUeXBlID0gXCJUTVBhcmFcIjtcbiAgICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkJDBcIjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVmFsaWQgc2V0ZXh0IG1hcmtlci4gQ2hhbmdlIHR5cGVzIG9mIHByZWNlZGluZyBwYXJhIGxpbmVzXG4gICAgICAgICAgbGV0IGhlYWRpbmdMaW5lID0gbGluZU51bSAtIDE7XG4gICAgICAgICAgY29uc3QgaGVhZGluZ0xpbmVUeXBlID1cbiAgICAgICAgICAgIGxpbmVUeXBlID09IFwiVE1TZXRleHRIMU1hcmtlclwiID8gXCJUTVNldGV4dEgxXCIgOiBcIlRNU2V0ZXh0SDJcIjtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVUeXBlXSAhPSBoZWFkaW5nTGluZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVdID0gaGVhZGluZ0xpbmVUeXBlO1xuICAgICAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtoZWFkaW5nTGluZVR5cGVdID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGluZVJlcGxhY2VtZW50c1toZWFkaW5nTGluZV0gPSBcIiQkMFwiO1xuICAgICAgICAgICAgdGhpcy5saW5lQ2FwdHVyZXNbaGVhZGluZ0xpbmVdID0gW3RoaXMubGluZXNbaGVhZGluZ0xpbmVdXTtcblxuICAgICAgICAgICAgaGVhZGluZ0xpbmUtLTtcbiAgICAgICAgICB9IHdoaWxlIChoZWFkaW5nTGluZSA+PSAwICYmIHRoaXMubGluZVR5cGVzW2hlYWRpbmdMaW5lXSA9PSBcIlRNUGFyYVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gTGFzdGx5LCBzYXZlIHRoZSBsaW5lIHN0eWxlIHRvIGJlIGFwcGxpZWQgbGF0ZXJcbiAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSAhPSBsaW5lVHlwZSkge1xuICAgICAgICB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSA9IGxpbmVUeXBlO1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmxpbmVSZXBsYWNlbWVudHNbbGluZU51bV0gPSBsaW5lUmVwbGFjZW1lbnQ7XG4gICAgICB0aGlzLmxpbmVDYXB0dXJlc1tsaW5lTnVtXSA9IGxpbmVDYXB0dXJlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBsaW5lIGNvbnRlbnRzIGZyb20gdGhlIEhUTUwsIHRoZW4gcmUtYXBwbGllcyBmb3JtYXR0aW5nLlxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzQW5kRm9ybWF0dGluZygpIHtcbiAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBwYXJzZSBhIGxpbmsgb3IgaW1hZ2UgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBvcGVuaW5nIFsgb3IgIVsgaGFzIGFscmVhZHkgYmVlbiBtYXRjaGVkLlxuICAgKiBSZXR1cm5zIGZhbHNlIGlmIHRoaXMgaXMgbm90IGEgdmFsaWQgbGluaywgaW1hZ2UuIFNlZSBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxTdHJpbmcgVGhlIG9yaWdpbmFsIHN0cmluZywgc3RhcnRpbmcgYXQgdGhlIG9wZW5pbmcgbWFya2VyIChbIG9yICFbKVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW1hZ2UgV2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBpbWFnZSAob3BlbmVyID09ICFbKVxuICAgKiBAcmV0dXJucyBmYWxzZSBpZiBub3QgYSB2YWxpZCBsaW5rIC8gaW1hZ2UuXG4gICAqIE90aGVyd2lzZSByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHR3byBwcm9wZXJ0aWVzOiBvdXRwdXQgaXMgdGhlIHN0cmluZyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcHJvY2Vzc2VkIG91dHB1dCxcbiAgICogY2hhckNvdW50IGlzIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hhcmFjdGVycyAoZnJvbSBvcmlnaW5hbFN0cmluZykgY29uc3VtZWQuXG4gICAqL1xuICBwYXJzZUxpbmtPckltYWdlKG9yaWdpbmFsU3RyaW5nLCBpc0ltYWdlKSB7XG4gICAgLy8gU2tpcCB0aGUgb3BlbmluZyBicmFja2V0XG4gICAgbGV0IHRleHRPZmZzZXQgPSBpc0ltYWdlID8gMiA6IDE7XG4gICAgbGV0IG9wZW5lciA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cigwLCB0ZXh0T2Zmc2V0KTtcbiAgICBsZXQgdHlwZSA9IGlzSW1hZ2UgPyBcIlRNSW1hZ2VcIiA6IFwiVE1MaW5rXCI7XG4gICAgbGV0IGN1cnJlbnRPZmZzZXQgPSB0ZXh0T2Zmc2V0O1xuXG4gICAgbGV0IGJyYWNrZXRMZXZlbCA9IDE7XG4gICAgbGV0IGxpbmtUZXh0ID0gZmFsc2U7XG4gICAgbGV0IGxpbmtSZWYgPSBmYWxzZTtcbiAgICBsZXQgbGlua0xhYmVsID0gW107XG4gICAgbGV0IGxpbmtEZXRhaWxzID0gW107IC8vIElmIG1hdGNoZWQsIHRoaXMgd2lsbCBiZSBhbiBhcnJheTogW3doaXRlc3BhY2UgKyBsaW5rIGRlc3RpbmF0aW9uIGRlbGltaXRlciwgbGluayBkZXN0aW5hdGlvbiwgbGluayBkZXN0aW5hdGlvbiBkZWxpbWl0ZXIsIHdoaXRlc3BhY2UsIGxpbmsgdGl0bGUgZGVsaW1pdGVyLCBsaW5rIHRpdGxlLCBsaW5rIHRpdGxlIGRlbGltaXRlciArIHdoaXRlc3BhY2VdLiBBbGwgY2FuIGJlIGVtcHR5IHN0cmluZ3MuXG5cbiAgICB0ZXh0T3V0ZXI6IHdoaWxlIChcbiAgICAgIGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiZcbiAgICAgIGxpbmtUZXh0ID09PSBmYWxzZSAvKiBlbXB0eSBzdHJpbmcgaXMgb2theSAqL1xuICAgICkge1xuICAgICAgbGV0IHN0cmluZyA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgLy8gQ2FwdHVyZSBhbnkgZXNjYXBlcyBhbmQgY29kZSBibG9ja3MgYXQgY3VycmVudCBwb3NpdGlvbiwgdGhleSBiaW5kIG1vcmUgc3Ryb25nbHkgdGhhbiBsaW5rc1xuICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBhY3R1YWxseSBwcm9jZXNzIHRoZW0gaGVyZSwgdGhhdCdsbCBiZSBkb25lIGxhdGVyIGluIGNhc2UgdGhlIGxpbmsgLyBpbWFnZSBpcyB2YWxpZCwgYnV0IHdlIG5lZWQgdG8gc2tpcCBvdmVyIHRoZW0uXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFtcImVzY2FwZVwiLCBcImNvZGVcIiwgXCJhdXRvbGlua1wiLCBcImh0bWxcIl0pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGltYWdlLiBJdCdzIG9rYXkgZm9yIGFuIGltYWdlIHRvIGJlIGluY2x1ZGVkIGluIGEgbGluayBvciBpbWFnZVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmltYWdlT3Blbi5yZWdleHApKSB7XG4gICAgICAgIC8vIE9wZW5pbmcgaW1hZ2UuIEl0J3Mgb2theSBpZiB0aGlzIGlzIGEgbWF0Y2hpbmcgcGFpciBvZiBicmFja2V0c1xuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgY3VycmVudE9mZnNldCArPSAyO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBsaW5rIChub3QgYW4gaW1hZ2UgYmVjYXVzZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCBhbmQgc2tpcHBlZCBvdmVyIGFib3ZlKVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCkpIHtcbiAgICAgICAgLy8gT3BlbmluZyBicmFja2V0LiBUd28gdGhpbmdzIHRvIGRvOlxuICAgICAgICAvLyAxKSBpdCdzIG9rYXkgaWYgdGhpcyBwYXJ0IG9mIGEgcGFpciBvZiBicmFja2V0cy5cbiAgICAgICAgLy8gMikgSWYgd2UgYXJlIGN1cnJlbnRseSB0cnlpbmcgdG8gcGFyc2UgYSBsaW5rLCB0aGlzIG5lc3RlZCBicmFja2V0IG11c24ndCBzdGFydCBhIHZhbGlkIGxpbmsgKG5vIG5lc3RlZCBsaW5rcyBhbGxvd2VkKVxuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgLy8gaWYgKGJyYWNrZXRMZXZlbCA+PSAyKSByZXR1cm4gZmFsc2U7IC8vIE5lc3RlZCB1bmVzY2FwZWQgYnJhY2tldHMsIHRoaXMgZG9lc24ndCBxdWFsaWZ5IGFzIGEgbGluayAvIGltYWdlXG4gICAgICAgIGlmICghaXNJbWFnZSkge1xuICAgICAgICAgIGlmICh0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkIGxpbmsgaW5zaWRlIHRoaXMgcG9zc2libGUgbGluaywgd2hpY2ggbWFrZXMgdGhpcyBsaW5rIGludmFsaWQgKGlubmVyIGxpbmtzIGJlYXQgb3V0ZXIgb25lcylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudE9mZnNldCArPSAxO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBjbG9zaW5nIGJyYWNrZXRcbiAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXF0vKSkge1xuICAgICAgICBicmFja2V0TGV2ZWwtLTtcbiAgICAgICAgaWYgKGJyYWNrZXRMZXZlbCA9PSAwKSB7XG4gICAgICAgICAgLy8gRm91bmQgbWF0Y2hpbmcgYnJhY2tldCBhbmQgaGF2ZW4ndCBmb3VuZCBhbnl0aGluZyBkaXNxdWFsaWZ5aW5nIHRoaXMgYXMgbGluayAvIGltYWdlLlxuICAgICAgICAgIGxpbmtUZXh0ID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgdGV4dE9mZnNldCxcbiAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgLSB0ZXh0T2Zmc2V0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgdGV4dE91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE5vdGhpbmcgbWF0Y2hlcywgcHJvY2VlZCB0byBuZXh0IGNoYXJcbiAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICB9XG5cbiAgICAvLyBEaWQgd2UgZmluZCBhIGxpbmsgdGV4dCAoaS5lLiwgZmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldD8pXG4gICAgaWYgKGxpbmtUZXh0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOyAvLyBOb3BlXG5cbiAgICAvLyBTbyBmYXIsIHNvIGdvb2QuIFdlJ3ZlIGdvdCBhIHZhbGlkIGxpbmsgdGV4dC4gTGV0J3Mgc2VlIHdoYXQgdHlwZSBvZiBsaW5rIHRoaXMgaXNcbiAgICBsZXQgbmV4dENoYXIgPVxuICAgICAgY3VycmVudE9mZnNldCA8IG9yaWdpbmFsU3RyaW5nLmxlbmd0aFxuICAgICAgICA/IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0LCAxKVxuICAgICAgICA6IFwiXCI7XG5cbiAgICAvLyBSRUZFUkVOQ0UgTElOS1NcbiAgICBpZiAobmV4dENoYXIgPT0gXCJbXCIpIHtcbiAgICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCk7XG4gICAgICBsZXQgY2FwID0gaW5saW5lR3JhbW1hci5saW5rTGFiZWwucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgLy8gVmFsaWQgbGluayBsYWJlbFxuICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIGxpbmtMYWJlbC5wdXNoKGNhcFsxXSwgY2FwWzJdLCBjYXBbM10pO1xuICAgICAgICBpZiAoY2FwW2lubGluZUdyYW1tYXIubGlua0xhYmVsLmxhYmVsUGxhY2Vob2xkZXJdKSB7XG4gICAgICAgICAgLy8gRnVsbCByZWZlcmVuY2UgbGlua1xuICAgICAgICAgIGxpbmtSZWYgPSBjYXBbaW5saW5lR3JhbW1hci5saW5rTGFiZWwubGFiZWxQbGFjZWhvbGRlcl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ29sbGFwc2VkIHJlZmVyZW5jZSBsaW5rXG4gICAgICAgICAgbGlua1JlZiA9IGxpbmtUZXh0LnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm90IGEgdmFsaWQgbGluayBsYWJlbFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0Q2hhciAhPSBcIihcIikge1xuICAgICAgLy8gU2hvcnRjdXQgcmVmIGxpbmtcbiAgICAgIGxpbmtSZWYgPSBsaW5rVGV4dC50cmltKCk7XG5cbiAgICAgIC8vIElOTElORSBMSU5LU1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBuZXh0Q2hhciA9PSAnKCdcblxuICAgICAgLy8gUG90ZW50aWFsIGlubGluZSBsaW5rXG4gICAgICBjdXJyZW50T2Zmc2V0Kys7XG5cbiAgICAgIGxldCBwYXJlbnRoZXNpc0xldmVsID0gMTtcbiAgICAgIGlubGluZU91dGVyOiB3aGlsZSAoXG4gICAgICAgIGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiZcbiAgICAgICAgcGFyZW50aGVzaXNMZXZlbCA+IDBcbiAgICAgICkge1xuICAgICAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKGN1cnJlbnRPZmZzZXQpO1xuXG4gICAgICAgIC8vIFByb2Nlc3Mgd2hpdGVzcGFjZVxuICAgICAgICBsZXQgY2FwID0gL15cXHMrLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBPcGVuaW5nIHdoaXRlc3BhY2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gT3BlbiBkZXN0aW5hdGlvbiwgYnV0IG5vdCBhIGRlc3RpbmF0aW9uIHlldDsgZGVzaW5hdGlvbiBvcGVuZWQgd2l0aCA8XG4gICAgICAgICAgICBjYXNlIDI6IC8vIE9wZW4gZGVzdGluYXRpb24gd2l0aCBjb250ZW50IGluIGl0LiBXaGl0ZXNwYWNlIG9ubHkgYWxsb3dlZCBpZiBvcGVuZWQgYnkgYW5nbGUgYnJhY2tldCwgb3RoZXJ3aXNlIHRoaXMgY2xvc2VzIHRoZSBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbMF0ubWF0Y2goLzwvKSkge1xuICAgICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgIT0gMSkgcmV0dXJuIGZhbHNlOyAvLyBVbmJhbGFuY2VkIHBhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gRW1wdHkgZW5kIGRlbGltaXRlciBmb3IgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7IC8vIFdoaXRlc3BhY2UgaW4gYmV0d2VlbiBkZXN0aW5hdGlvbiBhbmQgdGl0bGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gV2hpdGVzcGFjZSBiZXR3ZWVuIGRlc3RpbmF0aW9uIGFuZCB0aXRsZVxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAobm8gb3BlbmVyIGZvciB0aXRsZSB5ZXQsIGJ1dCBtb3JlIHdoaXRlc3BhY2UgdG8gY2FwdHVyZSlcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gV2hpdGVzcGFjZSBhdCBiZWdpbm5pbmcgb2YgdGl0bGUsIHB1c2ggZW1wdHkgdGl0bGUgYW5kIGNvbnRpbnVlXG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBXaGl0ZXNwYWNlIGluIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzZdID0gbGlua0RldGFpbHNbNl0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBXaGl0ZXNwYWNlIGFmdGVyIGNsb3NpbmcgZGVsaW1pdGVyXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIGJhY2tzbGFzaCBlc2NhcGVzXG4gICAgICAgIGNhcCA9IGlubGluZUdyYW1tYXIuZXNjYXBlLnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIGFuZ2xlIGJyYWNrZXQgYXMgZGVpbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoIDwgMiAmJiBzdHJpbmcubWF0Y2goL148LykpIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDApIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgbGlua0RldGFpbHNbMF0gPSBsaW5rRGV0YWlsc1swXS5jb25jYXQoXCI8XCIpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgY2xvc2luZyBhbmdsZSBicmFja2V0IGFzIGRlbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAyKSAmJlxuICAgICAgICAgIHN0cmluZy5tYXRjaCgvXj4vKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDEpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIEVtcHR5IGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiPlwiKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzICBub24tcGFyZW50aGVzaXMgZGVsaW1pdGVyIGZvciB0aXRsZS5cbiAgICAgICAgY2FwID0gL15bXCInXS8uZXhlYyhzdHJpbmcpO1xuICAgICAgICAvLyBGb3IgdGhpcyB0byBiZSBhIHZhbGlkIG9wZW5lciwgd2UgaGF2ZSB0byBlaXRoZXIgaGF2ZSBubyBkZXN0aW5hdGlvbiwgb25seSB3aGl0ZXNwYWNlIHNvIGZhcixcbiAgICAgICAgLy8gb3IgYSBkZXN0aW5hdGlvbiB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2UuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjYXAgJiZcbiAgICAgICAgICAobGlua0RldGFpbHMubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICAgIGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8XG4gICAgICAgICAgICBsaW5rRGV0YWlscy5sZW5ndGggPT0gNClcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDQpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciB0aGlzIHRvIGJlIGEgdmFsaWQgY2xvc2VyLCB3ZSBoYXZlIHRvIGhhdmUgYW4gb3BlbmVyIGFuZCBzb21lIG9yIG5vIHRpdGxlLCBhbmQgdGhpcyBoYXMgdG8gbWF0Y2ggdGhlIG9wZW5lclxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FwICYmXG4gICAgICAgICAgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSAmJlxuICAgICAgICAgIGxpbmtEZXRhaWxzWzRdID09IGNhcFswXVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDUpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIEVtcHR5IGxpbmsgdGl0bGVcbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyIGNhc2VzIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMiwgMywgNykgd2lsbCBiZSBoYW5kbGVkIHdpdGggdGhlIFwiZGVmYXVsdFwiIGNhc2UgYmVsb3cuXG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCgvKSkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIHRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFkZCBlbXB0eSBvcGVuaW5nIGRlbGltaXRlciBhbmQgcHJvY2VlZCB0byBuZXh0IGNhc2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gVGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAyOiAvLyBQYXJ0IG9mIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KFwiKFwiKTtcbiAgICAgICAgICAgICAgaWYgKCFsaW5rRGV0YWlsc1swXS5tYXRjaCgvPCQvKSkgcGFyZW50aGVzaXNMZXZlbCsrO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCIoXCIpO1xuICAgICAgICAgICAgICBicmVhazsgLy8gb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gb3BlbnMgdGhlIGxpbmsgdGl0bGUsIGFkZCBlbXB0eSB0aXRsZSBjb250ZW50IGFuZCBwcm9jZWVkIHRvIG5leHQgY2FzZVxuICAgICAgICAgICAgY2FzZSA2OiAvLyBQYXJ0IG9mIHRoZSBsaW5rIHRpdGxlLiBVbi1lc2NhcGVkIHBhcmVudGhlc2lzIG9ubHkgYWxsb3dlZCBpbiBcIiBvciAnIGRlbGltaXRlZCB0aXRsZVxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbNF0gPT0gXCIoXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoXCIoXCIpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBjbG9zaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCkvKSkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPD0gMikge1xuICAgICAgICAgICAgLy8gV2UgYXJlIGluc2lkZSB0aGUgbGluayBkZXN0aW5hdGlvbi4gUGFyZW50aGVzZXMgaGF2ZSB0byBiZSBtYXRjaGVkIGlmIG5vdCBpbiBhbmdsZSBicmFja2V0c1xuICAgICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDIpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG5cbiAgICAgICAgICAgIGlmICghbGlua0RldGFpbHNbMF0ubWF0Y2goLzwkLykpIHBhcmVudGhlc2lzTGV2ZWwtLTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KFwiKVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIHRpdGxlLlxuICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzWzRdID09IFwiKFwiKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgY2xvc2VzIHRoZSBsaW5rIHRpdGxlXG4gICAgICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIilcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBKdXN0IHJlZ3VsYXIgb2wnIGNvbnRlbnRcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1KSBsaW5rRGV0YWlscy5wdXNoKFwiKVwiKTtcbiAgICAgICAgICAgICAgZWxzZSBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChcIilcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudGhlc2lzTGV2ZWwtLTsgLy8gVGhpcyBzaG91bGQgZGVjcmVhc2UgaXQgZnJvbSAxIHRvIDAuLi5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFyZW50aGVzaXNMZXZlbCA9PSAwKSB7XG4gICAgICAgICAgICAvLyBObyBpbnZhbGlkIGNvbmRpdGlvbiwgbGV0J3MgbWFrZSBzdXJlIHRoZSBsaW5rRGV0YWlscyBhcnJheSBpcyBjb21wbGV0ZVxuICAgICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDcpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQW55IG9sZCBjaGFyYWN0ZXJcbiAgICAgICAgY2FwID0gL14uLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IFwiSW5maW5pdGUgbG9vcFwiOyAvLyB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgc2luY2UgdGhlIGxhc3QgdGVzdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXJcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnRoZXNpc0xldmVsID4gMCkgcmV0dXJuIGZhbHNlOyAvLyBQYXJlbnRoZXMoZXMpIG5vdCBjbG9zZWRcbiAgICB9XG5cbiAgICBpZiAobGlua1JlZiAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIFJlZiBsaW5rOyBjaGVjayB0aGF0IGxpbmtSZWYgaXMgdmFsaWRcbiAgICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgbGFiZWwgb2YgdGhpcy5saW5rTGFiZWxzKSB7XG4gICAgICAgIGlmIChsYWJlbCA9PSBsaW5rUmVmKSB7XG4gICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgbGFiZWwgPSB2YWxpZFxuICAgICAgICA/IFwiVE1MaW5rTGFiZWwgVE1MaW5rTGFiZWxfVmFsaWRcIlxuICAgICAgICA6IFwiVE1MaW5rTGFiZWwgVE1MaW5rTGFiZWxfSW52YWxpZFwiO1xuICAgICAgbGV0IG91dHB1dCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7b3BlbmVyfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX0gJHtcbiAgICAgICAgbGlua0xhYmVsLmxlbmd0aCA8IDMgfHwgIWxpbmtMYWJlbFsxXSA/IGxhYmVsIDogXCJcIlxuICAgICAgfVwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKFxuICAgICAgICBsaW5rVGV4dFxuICAgICAgKX08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj5dPC9zcGFuPmA7XG5cbiAgICAgIGlmIChsaW5rTGFiZWwubGVuZ3RoID49IDMpIHtcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmNvbmNhdChcbiAgICAgICAgICBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke2xpbmtMYWJlbFswXX08L3NwYW4+YCxcbiAgICAgICAgICBgPHNwYW4gY2xhc3M9XCIke2xhYmVsfVwiPiR7bGlua0xhYmVsWzFdfTwvc3Bhbj5gLFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0xhYmVsWzJdfTwvc3Bhbj5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgICAgY2hhckNvdW50OiBjdXJyZW50T2Zmc2V0LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzKSB7XG4gICAgICAvLyBJbmxpbmUgbGlua1xuXG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDcpIHtcbiAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0OiBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke29wZW5lcn08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMoXG4gICAgICAgICAgbGlua1RleHRcbiAgICAgICAgKX08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj5dKCR7XG4gICAgICAgICAgbGlua0RldGFpbHNbMF1cbiAgICAgICAgfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX1EZXN0aW5hdGlvblwiPiR7XG4gICAgICAgICAgbGlua0RldGFpbHNbMV1cbiAgICAgICAgfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0RldGFpbHNbMl19JHtcbiAgICAgICAgICBsaW5rRGV0YWlsc1szXVxuICAgICAgICB9JHtsaW5rRGV0YWlsc1s0XX08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9VGl0bGVcIj4ke1xuICAgICAgICAgIGxpbmtEZXRhaWxzWzVdXG4gICAgICAgIH08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke2xpbmtEZXRhaWxzWzZdfSk8L3NwYW4+YCxcbiAgICAgICAgY2hhckNvdW50OiBjdXJyZW50T2Zmc2V0LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIG1hcmtkb3duIHN0cmluZyBhcyBIVE1MLCB1c2luZyBNYXJrZG93biBpbmxpbmUgZm9ybWF0dGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsU3RyaW5nIFRoZSBpbnB1dCAobWFya2Rvd24gaW5saW5lIGZvcm1hdHRlZCkgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBIVE1MIGZvcm1hdHRlZCBvdXRwdXRcbiAgICovXG4gIHByb2Nlc3NJbmxpbmVTdHlsZXMob3JpZ2luYWxTdHJpbmcpIHtcbiAgICBsZXQgcHJvY2Vzc2VkID0gXCJcIjtcbiAgICBsZXQgc3RhY2sgPSBbXTsgLy8gU3RhY2sgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBvZiB0aGUgZm9ybWF0OiB7ZGVsaW1pdGVyLCBkZWxpbVN0cmluZywgY291bnQsIG91dHB1dH1cbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmc7XG5cbiAgICBvdXRlcjogd2hpbGUgKHN0cmluZykge1xuICAgICAgLy8gUHJvY2VzcyBzaW1wbGUgcnVsZXMgKG5vbi1kZWxpbWl0ZXIpXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFtcImVzY2FwZVwiLCBcImNvZGVcIiwgXCJhdXRvbGlua1wiLCBcImh0bWxcIl0pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgcHJvY2Vzc2VkICs9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVwbGFjZW1lbnRcbiAgICAgICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCQoWzEtOV0pL2csIChzdHIsIHAxKSA9PiBwcm9jZXNzSW5saW5lU3R5bGVzKGNhcFtwMV0pKSAvLyB0b2RvIHJlY3Vyc2l2ZSBjYWxsaW5nXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwkKFsxLTldKS9nLCAoc3RyLCBwMSkgPT4gaHRtbGVzY2FwZShjYXBbcDFdKSk7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGxpbmtzIC8gaW1hZ2VzXG4gICAgICBsZXQgcG90ZW50aWFsTGluayA9IHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCk7XG4gICAgICBsZXQgcG90ZW50aWFsSW1hZ2UgPSBzdHJpbmcubWF0Y2goaW5saW5lR3JhbW1hci5pbWFnZU9wZW4ucmVnZXhwKTtcbiAgICAgIGlmIChwb3RlbnRpYWxJbWFnZSB8fCBwb3RlbnRpYWxMaW5rKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBwb3RlbnRpYWxJbWFnZSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtyZXN1bHQub3V0cHV0fWA7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihyZXN1bHQuY2hhckNvdW50KTtcbiAgICAgICAgICBvZmZzZXQgKz0gcmVzdWx0LmNoYXJDb3VudDtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgZW0gLyBzdHJvbmcgZGVsaW1pdGVyc1xuICAgICAgbGV0IGNhcCA9IC8oXlxcKispfCheXyspLy5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBkZWxpbUNvdW50ID0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsaW1TdHJpbmcgPSBjYXBbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSBjYXBbMF1bMF07IC8vIFRoaXMgc2hvdWxkIGJlICogb3IgX1xuXG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG5cbiAgICAgICAgLy8gV2UgaGF2ZSBhIGRlbGltaXRlciBydW4uIExldCdzIGNoZWNrIGlmIGl0IGNhbiBvcGVuIG9yIGNsb3NlIGFuIGVtcGhhc2lzLlxuXG4gICAgICAgIGNvbnN0IHByZWNlZGluZyA9IG9mZnNldCA+IDAgPyBvcmlnaW5hbFN0cmluZy5zdWJzdHIoMCwgb2Zmc2V0KSA6IFwiIFwiOyAvLyBiZWdpbm5pbmcgYW5kIGVuZCBvZiBsaW5lIGNvdW50IGFzIHdoaXRlc3BhY2VcbiAgICAgICAgY29uc3QgZm9sbG93aW5nID1cbiAgICAgICAgICBvZmZzZXQgKyBjYXBbMF0ubGVuZ3RoIDwgb3JpZ2luYWxTdHJpbmcubGVuZ3RoID8gc3RyaW5nIDogXCIgXCI7XG5cbiAgICAgICAgY29uc3QgcHVuY3R1YXRpb25Gb2xsb3dzID0gZm9sbG93aW5nLm1hdGNoKHB1bmN0dWF0aW9uTGVhZGluZyk7XG4gICAgICAgIGNvbnN0IHB1bmN0dWF0aW9uUHJlY2VkZXMgPSBwcmVjZWRpbmcubWF0Y2gocHVuY3R1YXRpb25UcmFpbGluZyk7XG4gICAgICAgIGNvbnN0IHdoaXRlc3BhY2VGb2xsb3dzID0gZm9sbG93aW5nLm1hdGNoKC9eXFxzLyk7XG4gICAgICAgIGNvbnN0IHdoaXRlc3BhY2VQcmVjZWRlcyA9IHByZWNlZGluZy5tYXRjaCgvXFxzJC8pO1xuXG4gICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgcnVsZXMgZm9yIHJpZ2h0LWZsYW5raW5nIGFuZCBsZWZ0LWZsYW5raW5nIGRlbGltaXRlciBydW5zIGFzIHBlciBDb21tb25NYXJrIHNwZWNcbiAgICAgICAgbGV0IGNhbk9wZW4gPVxuICAgICAgICAgICF3aGl0ZXNwYWNlRm9sbG93cyAmJlxuICAgICAgICAgICghcHVuY3R1YXRpb25Gb2xsb3dzIHx8XG4gICAgICAgICAgICAhIXdoaXRlc3BhY2VQcmVjZWRlcyB8fFxuICAgICAgICAgICAgISFwdW5jdHVhdGlvblByZWNlZGVzKTtcbiAgICAgICAgbGV0IGNhbkNsb3NlID1cbiAgICAgICAgICAhd2hpdGVzcGFjZVByZWNlZGVzICYmXG4gICAgICAgICAgKCFwdW5jdHVhdGlvblByZWNlZGVzIHx8ICEhd2hpdGVzcGFjZUZvbGxvd3MgfHwgISFwdW5jdHVhdGlvbkZvbGxvd3MpO1xuXG4gICAgICAgIC8vIFVuZGVyc2NvcmVzIGhhdmUgbW9yZSBkZXRhaWxlZCBydWxlcyB0aGFuIGp1c3QgYmVpbmcgcGFydCBvZiBsZWZ0LSBvciByaWdodC1mbGFua2luZyBydW46XG4gICAgICAgIGlmIChjdXJyZW50RGVsaW1pdGVyID09IFwiX1wiICYmIGNhbk9wZW4gJiYgY2FuQ2xvc2UpIHtcbiAgICAgICAgICBjYW5PcGVuID0gcHVuY3R1YXRpb25QcmVjZWRlcztcbiAgICAgICAgICBjYW5DbG9zZSA9IHB1bmN0dWF0aW9uRm9sbG93cztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBkZWxpbWl0ZXIgY2FuIGNsb3NlLCBjaGVjayB0aGUgc3RhY2sgaWYgdGhlcmUncyBzb21ldGhpbmcgaXQgY2FuIGNsb3NlXG4gICAgICAgIGlmIChjYW5DbG9zZSkge1xuICAgICAgICAgIGxldCBzdGFja1BvaW50ZXIgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIG9wZW5pbmcgZGVsaW1pdGVyLCBtb3ZlIGRvd24gdGhyb3VnaCB0aGUgc3RhY2tcbiAgICAgICAgICB3aGlsZSAoZGVsaW1Db3VudCAmJiBzdGFja1BvaW50ZXIgPj0gMCkge1xuICAgICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uZGVsaW1pdGVyID09IGN1cnJlbnREZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBtYXRjaGluZyBkZWxpbWl0ZXIsIGxldCdzIGNvbnN0cnVjdCB0aGUgZm9ybWF0dGVkIHN0cmluZ1xuXG4gICAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGVudHJ5LmNvdW50XG4gICAgICAgICAgICAgICAgKX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgZm9ybWF0IHRoZSBzdHJpbmdcbiAgICAgICAgICAgICAgaWYgKGRlbGltQ291bnQgPj0gMiAmJiBzdGFja1tzdGFja1BvaW50ZXJdLmNvdW50ID49IDIpIHtcbiAgICAgICAgICAgICAgICAvLyBTdHJvbmdcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgPHNwYW4gY2xhc3M9XCJUTU1hcmtcIj4ke2N1cnJlbnREZWxpbWl0ZXJ9JHtjdXJyZW50RGVsaW1pdGVyfTwvc3Bhbj48c3Ryb25nIGNsYXNzPVwiVE1TdHJvbmdcIj4ke3Byb2Nlc3NlZH08L3N0cm9uZz48c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn0ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgZGVsaW1Db3VudCAtPSAyO1xuICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgLT0gMjtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFbVxuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+PGVtIGNsYXNzPVwiVE1FbVwiPiR7cHJvY2Vzc2VkfTwvZW0+PHNwYW4gY2xhc3M9XCJUTU1hcmtcIj4ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgZGVsaW1Db3VudCAtPSAxO1xuICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgLT0gMTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIElmIHRoYXQgc3RhY2sgbGV2ZWwgaXMgZW1wdHkgbm93LCBwb3AgaXRcbiAgICAgICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgPT0gMCkge1xuICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGAke2VudHJ5Lm91dHB1dH0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUaGlzIHN0YWNrIGxldmVsJ3MgZGVsaW1pdGVyIHR5cGUgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBkZWxpbWl0ZXIgdHlwZVxuICAgICAgICAgICAgICAvLyBHbyBkb3duIG9uZSBsZXZlbCBpbiB0aGUgc3RhY2tcbiAgICAgICAgICAgICAgc3RhY2tQb2ludGVyLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKGRlbGltQ291bnQgJiYgY2FuT3Blbikge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiBjdXJyZW50RGVsaW1pdGVyLFxuICAgICAgICAgICAgZGVsaW1TdHJpbmc6IGRlbGltU3RyaW5nLFxuICAgICAgICAgICAgY291bnQ6IGRlbGltQ291bnQsXG4gICAgICAgICAgICBvdXRwdXQ6IHByb2Nlc3NlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBcIlwiOyAvLyBDdXJyZW50IGZvcm1hdHRlZCBvdXRwdXQgaGFzIGJlZW4gcHVzaGVkIG9uIHRoZSBzdGFjayBhbmQgd2lsbCBiZSBwcmVwZW5kZWQgd2hlbiB0aGUgc3RhY2sgZ2V0cyBwb3BwZWRcbiAgICAgICAgICBkZWxpbUNvdW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFueSBkZWxpbWl0ZXJzIHRoYXQgYXJlIGxlZnQgKGNsb3NpbmcgdW5tYXRjaGVkKSBhcmUgYXBwZW5kZWQgdG8gdGhlIG91dHB1dC5cbiAgICAgICAgaWYgKGRlbGltQ291bnQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtkZWxpbVN0cmluZy5zdWJzdHIoMCwgZGVsaW1Db3VudCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIHN0cmlrZXRocm91Z2ggZGVsaW1pdGVyXG4gICAgICBjYXAgPSAvXn5+Ly5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBjb25zdW1lZCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RhY2tQb2ludGVyID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgb3BlbmluZyBkZWxpbWl0ZXIsIG1vdmUgZG93biB0aHJvdWdoIHRoZSBzdGFja1xuICAgICAgICB3aGlsZSAoIWNvbnN1bWVkICYmIHN0YWNrUG9pbnRlciA+PSAwKSB7XG4gICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uZGVsaW1pdGVyID09IFwiflwiKSB7XG4gICAgICAgICAgICAvLyBXZSBmb3VuZCBhIG1hdGNoaW5nIGRlbGltaXRlciwgbGV0J3MgY29uc3RydWN0IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXG5cbiAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgd2hpbGUgKHN0YWNrUG9pbnRlciA8IHN0YWNrLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgZW50cnkuY291bnRcbiAgICAgICAgICAgICAgKX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUaGVuLCBmb3JtYXQgdGhlIHN0cmluZ1xuICAgICAgICAgICAgcHJvY2Vzc2VkID0gYDxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+fn48L3NwYW4+PGRlbCBjbGFzcz1cIlRNU3RyaWtldGhyb3VnaFwiPiR7cHJvY2Vzc2VkfTwvZGVsPjxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+fn48L3NwYW4+YDtcbiAgICAgICAgICAgIGxldCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICBjb25zdW1lZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoaXMgc3RhY2sgbGV2ZWwncyBkZWxpbWl0ZXIgdHlwZSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IGRlbGltaXRlciB0eXBlXG4gICAgICAgICAgICAvLyBHbyBkb3duIG9uZSBsZXZlbCBpbiB0aGUgc3RhY2tcbiAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKCFjb25zdW1lZCkge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiBcIn5cIixcbiAgICAgICAgICAgIGRlbGltU3RyaW5nOiBcIn5+XCIsXG4gICAgICAgICAgICBjb3VudDogMixcbiAgICAgICAgICAgIG91dHB1dDogcHJvY2Vzc2VkLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb2Nlc3NlZCA9IFwiXCI7IC8vIEN1cnJlbnQgZm9ybWF0dGVkIG91dHB1dCBoYXMgYmVlbiBwdXNoZWQgb24gdGhlIHN0YWNrIGFuZCB3aWxsIGJlIHByZXBlbmRlZCB3aGVuIHRoZSBzdGFjayBnZXRzIHBvcHBlZFxuICAgICAgICB9XG5cbiAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzICdkZWZhdWx0JyBydWxlXG4gICAgICBjYXAgPSBpbmxpbmVHcmFtbWFyLmRlZmF1bHQucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcbiAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIHByb2Nlc3NlZCArPSBpbmxpbmVHcmFtbWFyLmRlZmF1bHQucmVwbGFjZW1lbnQucmVwbGFjZShcbiAgICAgICAgICAvXFwkKFsxLTldKS9nLFxuICAgICAgICAgIChzdHIsIHAxKSA9PiBodG1sZXNjYXBlKGNhcFtwMV0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuICAgICAgdGhyb3cgXCJJbmZpbml0ZSBsb29wIVwiO1xuICAgIH1cblxuICAgIC8vIEVtcHR5IHRoZSBzdGFjaywgYW55IG9wZW5pbmcgZGVsaW1pdGVycyBhcmUgdW51c2VkXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgY29uc3QgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgIHByb2Nlc3NlZCA9IGAke2VudHJ5Lm91dHB1dH0ke2VudHJ5LmRlbGltU3RyaW5nLnN1YnN0cihcbiAgICAgICAgMCxcbiAgICAgICAgZW50cnkuY291bnRcbiAgICAgICl9JHtwcm9jZXNzZWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgbGluZSBkaXJ0eSBmbGFnIChyZXNldHMgaXQgdG8gYW4gYXJyYXkgb2YgZmFsc2UpXG4gICAqL1xuICBjbGVhckRpcnR5RmxhZygpIHtcbiAgICB0aGlzLmxpbmVEaXJ0eSA9IG5ldyBBcnJheSh0aGlzLmxpbmVzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVEaXJ0eS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5saW5lRGlydHlbaV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY2xhc3MgcHJvcGVydGllcyAobGluZXMsIGxpbmVFbGVtZW50cykgZnJvbSB0aGUgRE9NLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGNvbnRlbnRzIGNoYW5nZWRcbiAgICovXG4gIHVwZGF0ZUxpbmVDb250ZW50cygpIHtcbiAgICAvLyB0aGlzLmxpbmVEaXJ0eSA9IFtdO1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgY2hhbmdlZCBhbnl0aGluZyBhYm91dCB0aGUgbnVtYmVyIG9mIGxpbmVzIChpbnNlcnRlZCBvciBkZWxldGVkIGEgcGFyYWdyYXBoKVxuICAgIC8vIDwgMCBtZWFucyBsaW5lKHMpIHJlbW92ZWQ7ID4gMCBtZWFucyBsaW5lKHMpIGFkZGVkXG4gICAgbGV0IGxpbmVEZWx0YSA9IHRoaXMuZS5jaGlsZEVsZW1lbnRDb3VudCAtIHRoaXMubGluZXMubGVuZ3RoO1xuICAgIGlmIChsaW5lRGVsdGEpIHtcbiAgICAgIC8vIHl1cC4gTGV0J3MgdHJ5IGhvdyBtdWNoIHdlIGNhbiBzYWx2YWdlIChmaW5kIG91dCB3aGljaCBsaW5lcyBmcm9tIGJlZ2lubmluZyBhbmQgZW5kIHdlcmUgdW5jaGFuZ2VkKVxuICAgICAgLy8gRmluZCBsaW5lcyBmcm9tIHRoZSBiZWdpbm5pbmcgdGhhdCBoYXZlbid0IGNoYW5nZWQuLi5cbiAgICAgIGxldCBmaXJzdENoYW5nZWRMaW5lID0gMDtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgZmlyc3RDaGFuZ2VkTGluZSA8PSB0aGlzLmxpbmVzLmxlbmd0aCAmJlxuICAgICAgICBmaXJzdENoYW5nZWRMaW5lIDw9IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tmaXJzdENoYW5nZWRMaW5lXSAmJiAvLyBDaGVjayB0aGF0IHRoZSBsaW5lIGVsZW1lbnQgaGFzbid0IGJlZW4gZGVsZXRlZFxuICAgICAgICB0aGlzLmxpbmVzW2ZpcnN0Q2hhbmdlZExpbmVdID09XG4gICAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbZmlyc3RDaGFuZ2VkTGluZV0udGV4dENvbnRlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdENoYW5nZWRMaW5lKys7XG4gICAgICB9XG5cbiAgICAgIC8vIEVuZCBhbHNvIGZyb20gdGhlIGVuZFxuICAgICAgbGV0IGxhc3RDaGFuZ2VkTGluZSA9IC0xO1xuICAgICAgd2hpbGUgKFxuICAgICAgICAtbGFzdENoYW5nZWRMaW5lIDwgdGhpcy5saW5lcy5sZW5ndGggJiZcbiAgICAgICAgLWxhc3RDaGFuZ2VkTGluZSA8IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICB0aGlzLmxpbmVzW3RoaXMubGluZXMubGVuZ3RoICsgbGFzdENoYW5nZWRMaW5lXSA9PVxuICAgICAgICAgIHRoaXMubGluZUVsZW1lbnRzW3RoaXMubGluZUVsZW1lbnRzLmxlbmd0aCArIGxhc3RDaGFuZ2VkTGluZV1cbiAgICAgICAgICAgIC50ZXh0Q29udGVudFxuICAgICAgKSB7XG4gICAgICAgIGxhc3RDaGFuZ2VkTGluZS0tO1xuICAgICAgfVxuXG4gICAgICBsZXQgbGluZXNUb0RlbGV0ZSA9XG4gICAgICAgIHRoaXMubGluZXMubGVuZ3RoICsgbGFzdENoYW5nZWRMaW5lICsgMSAtIGZpcnN0Q2hhbmdlZExpbmU7XG4gICAgICBpZiAobGluZXNUb0RlbGV0ZSA8IC1saW5lRGVsdGEpIGxpbmVzVG9EZWxldGUgPSAtbGluZURlbHRhO1xuICAgICAgaWYgKGxpbmVzVG9EZWxldGUgPCAwKSBsaW5lc1RvRGVsZXRlID0gMDtcblxuICAgICAgbGV0IGxpbmVzVG9BZGQgPSBbXTtcbiAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgbGluZXNUb0RlbGV0ZSArIGxpbmVEZWx0YTsgbCsrKSB7XG4gICAgICAgIGxpbmVzVG9BZGQucHVzaCh0aGlzLmxpbmVFbGVtZW50c1tmaXJzdENoYW5nZWRMaW5lICsgbF0udGV4dENvbnRlbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcGxpY2VMaW5lcyhmaXJzdENoYW5nZWRMaW5lLCBsaW5lc1RvRGVsZXRlLCBsaW5lc1RvQWRkLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGxpbmVzIGFkZGVkIG9yIHJlbW92ZWRcbiAgICAgIGZvciAobGV0IGxpbmUgPSAwOyBsaW5lIDwgdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoOyBsaW5lKyspIHtcbiAgICAgICAgbGV0IGUgPSB0aGlzLmxpbmVFbGVtZW50c1tsaW5lXTtcbiAgICAgICAgbGV0IGN0ID0gZS50ZXh0Q29udGVudDtcbiAgICAgICAgaWYgKHRoaXMubGluZXNbbGluZV0gIT09IGN0KSB7XG4gICAgICAgICAgLy8gTGluZSBjaGFuZ2VkLCB1cGRhdGUgaXRcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gY3Q7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBhIG5ldyBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBzZWwgVGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAqL1xuICBwcm9jZXNzTmV3UGFyYWdyYXBoKHNlbCkge1xuICAgIGlmICghc2VsKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgbGluZXMgZnJvbSBjb250ZW50XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcblxuICAgIGxldCBjb250aW51YWJsZVR5cGUgPSBmYWxzZTtcbiAgICAvLyBMZXQncyBzZWUgaWYgd2UgbmVlZCB0byBjb250aW51ZSBhIGxpc3RcblxuICAgIGxldCBjaGVja0xpbmUgPSBzZWwuY29sID4gMCA/IHNlbC5yb3cgOiBzZWwucm93IC0gMTtcbiAgICBzd2l0Y2ggKHRoaXMubGluZVR5cGVzW2NoZWNrTGluZV0pIHtcbiAgICAgIGNhc2UgXCJUTVVMXCI6XG4gICAgICAgIGNvbnRpbnVhYmxlVHlwZSA9IFwiVE1VTFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJUTU9MXCI6XG4gICAgICAgIGNvbnRpbnVhYmxlVHlwZSA9IFwiVE1PTFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJUTUluZGVudGVkQ29kZVwiOlxuICAgICAgICBjb250aW51YWJsZVR5cGUgPSBcIlRNSW5kZW50ZWRDb2RlXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBsaW5lcyA9IHRoaXMubGluZXNbc2VsLnJvd11cbiAgICAgIC5yZXBsYWNlKC9cXG5cXG4kLywgXCJcXG5cIilcbiAgICAgIC5zcGxpdCgvKD86XFxyXFxufFxcbnxcXHIpLyk7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBObyBuZXcgbGluZVxuICAgICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3BsaWNlTGluZXMoc2VsLnJvdywgMSwgbGluZXMsIHRydWUpO1xuICAgIHNlbC5yb3crKztcbiAgICBzZWwuY29sID0gMDtcblxuICAgIGlmIChjb250aW51YWJsZVR5cGUpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBwcmV2aW91cyBsaW5lIHdhcyBub24tZW1wdHlcbiAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXJbY29udGludWFibGVUeXBlXS5yZWdleHAuZXhlYyhcbiAgICAgICAgdGhpcy5saW5lc1tzZWwucm93IC0gMV1cbiAgICAgICk7XG4gICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAvLyBDb252ZW50aW9uOiBjYXB0dXJlWzFdIGlzIHRoZSBsaW5lIHR5cGUgbWFya2VyLCBjYXB0dXJlWzJdIGlzIHRoZSBjb250ZW50XG4gICAgICAgIGlmIChjYXB0dXJlWzJdKSB7XG4gICAgICAgICAgLy8gUHJldmlvdXMgbGluZSBoYXMgY29udGVudCwgY29udGludWUgdGhlIGNvbnRpbnVhYmxlIHR5cGVcblxuICAgICAgICAgIC8vIEhhY2sgZm9yIE9MOiBpbmNyZW1lbnQgbnVtYmVyXG4gICAgICAgICAgaWYgKGNvbnRpbnVhYmxlVHlwZSA9PSBcIlRNT0xcIikge1xuICAgICAgICAgICAgY2FwdHVyZVsxXSA9IGNhcHR1cmVbMV0ucmVwbGFjZSgvXFxkezEsOX0vLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChyZXN1bHRbMF0pICsgMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3ddID0gYCR7Y2FwdHVyZVsxXX0ke3RoaXMubGluZXNbc2VsLnJvd119YDtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtzZWwucm93XSA9IHRydWU7XG4gICAgICAgICAgc2VsLmNvbCA9IGNhcHR1cmVbMV0ubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFByZXZpb3VzIGxpbmUgaGFzIG5vIGNvbnRlbnQsIHJlbW92ZSB0aGUgY29udGludWFibGUgdHlwZSBmcm9tIHRoZSBwcmV2aW91cyByb3dcbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3cgLSAxXSA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbc2VsLnJvdyAtIDFdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBQcm9jZXNzZXMgYSBcImRlbGV0ZVwiIGlucHV0IGFjdGlvbi5cbiAgLy8gICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBzZWxlY3Rpb25cbiAgLy8gICogQHBhcmFtIHtib29sZWFufSBmb3J3YXJkIElmIHRydWUsIHBlcmZvcm1zIGEgZm9yd2FyZCBkZWxldGUsIG90aGVyd2lzZSBwZXJmb3JtcyBhIGJhY2t3YXJkIGRlbGV0ZVxuICAvLyAgKi9cbiAgLy8gcHJvY2Vzc0RlbGV0ZShmb2N1cywgZm9yd2FyZCkge1xuICAvLyAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgLy8gICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gIC8vICAgLy8gRG8gd2UgaGF2ZSBhIG5vbi1lbXB0eSBzZWxlY3Rpb24/XG4gIC8vICAgaWYgKGZvY3VzLmNvbCAhPSBhbmNob3IuY29sIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSB7XG4gIC8vICAgICAvLyBub24tZW1wdHkuIGRpcmVjdGlvbiBkb2Vzbid0IG1hdHRlci5cbiAgLy8gICAgIHRoaXMucGFzdGUoJycsIGFuY2hvciwgZm9jdXMpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBpZiAoZm9yd2FyZCkge1xuICAvLyAgICAgICBpZiAoZm9jdXMuY29sIDwgdGhpcy5saW5lc1tmb2N1cy5yb3ddLmxlbmd0aCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93LCBjb2w6IGZvY3VzLmNvbCArIDF9LCBmb2N1cyk7XG4gIC8vICAgICAgIGVsc2UgaWYgKGZvY3VzLmNvbCA8IHRoaXMubGluZXMubGVuZ3RoKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3cgKyAxLCBjb2w6IDB9LCBmb2N1cyk7XG4gIC8vICAgICAgIC8vIE90aGVyd2lzZSwgd2UncmUgYXQgdGhlIHZlcnkgZW5kIGFuZCBjYW4ndCBkZWxldGUgZm9yd2FyZFxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgaWYgKGZvY3VzLmNvbCA+IDApIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdywgY29sOiBmb2N1cy5jb2wgLSAxfSwgZm9jdXMpO1xuICAvLyAgICAgICBlbHNlIGlmIChmb2N1cy5yb3cgPiAwKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3cgLSAxLCBjb2w6IHRoaXMubGluZXNbZm9jdXMucm93IC0gMV0ubGVuZ3RoIC0gMX0sIGZvY3VzKTtcbiAgLy8gICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSdyZSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgYW5kIGNhbid0IGRlbGV0ZSBiYWNrd2FyZHNcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBzZWxlY3Rpb24gY291bnRlZCBieSByb3cgYW5kIGNvbHVtbiBvZiB0aGUgZWRpdG9yIE1hcmtkb3duIGNvbnRlbnQgKGFzIG9wcG9zZWQgdG8gdGhlIHBvc2l0aW9uIGluIHRoZSBET00pLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGdldEFuY2hvciBpZiBzZXQgdG8gdHJ1ZSwgZ2V0cyB0aGUgc2VsZWN0aW9uIGFuY2hvciAoc3RhcnQgcG9pbnQgb2YgdGhlIHNlbGVjdGlvbiksIG90aGVyd2lzZSBnZXRzIHRoZSBmb2N1cyAoZW5kIHBvaW50KS5cbiAgICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3Rpb24sIHdpdGggcHJvcGVydGllcyBjb2wgYW5kIHJvdy5cbiAgICovXG4gIGdldFNlbGVjdGlvbihnZXRBbmNob3IgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBsZXQgc3RhcnROb2RlID0gZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck5vZGUgOiBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuICAgIGlmICghc3RhcnROb2RlKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgb2Zmc2V0ID0gZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICBpZiAoc3RhcnROb2RlID09IHRoaXMuZSkge1xuICAgICAgaWYgKG9mZnNldCA9PSAwKSByZXR1cm4geyByb3c6IDAsIGNvbDogMCB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm93OiBvZmZzZXQgLSAxLFxuICAgICAgICBjb2w6IHRoaXMubGluZXNbb2Zmc2V0IC0gMV0ubGVuZ3RoLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgY29sID0gdGhpcy5jb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KTtcbiAgICBpZiAoY29sID09PSBudWxsKSByZXR1cm4gbnVsbDsgLy8gV2UgYXJlIG91dHNpZGUgb2YgdGhlIGVkaXRvclxuXG4gICAgLy8gRmluZCB0aGUgcm93IG5vZGVcbiAgICBsZXQgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICB3aGlsZSAobm9kZS5wYXJlbnRFbGVtZW50ICE9IHRoaXMuZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICBsZXQgcm93ID0gMDtcbiAgICAvLyBDaGVjayBpZiB3ZSBjYW4gcmVhZCBhIGxpbmUgbnVtYmVyIGZyb20gdGhlIGRhdGEtbGluZS1udW0gYXR0cmlidXRlLlxuICAgIC8vIFRoZSBsYXN0IGNvbmRpdGlvbiBpcyBhIHNlY3VyaXR5IG1lYXN1cmUgc2luY2UgaW5zZXJ0aW5nIGEgbmV3IHBhcmFncmFwaCBjb3BpZXMgdGhlIHByZXZpb3VzIHJvd3MnIGxpbmUgbnVtYmVyXG4gICAgaWYgKFxuICAgICAgbm9kZS5kYXRhc2V0ICYmXG4gICAgICBub2RlLmRhdGFzZXQubGluZU51bSAmJlxuICAgICAgKCFub2RlLnByZXZpb3VzU2libGluZyB8fFxuICAgICAgICBub2RlLnByZXZpb3VzU2libGluZy5kYXRhc2V0LmxpbmVOdW0gIT0gbm9kZS5kYXRhc2V0LmxpbmVOdW0pXG4gICAgKSB7XG4gICAgICByb3cgPSBwYXJzZUludChub2RlLmRhdGFzZXQubGluZU51bSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChub2RlLnByZXZpb3VzU2libGluZykge1xuICAgICAgICByb3crKztcbiAgICAgICAgbm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyByb3c6IHJvdywgY29sOiBjb2wsIG5vZGU6IHN0YXJ0Tm9kZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGEgY29sdW1uIHdpdGhpbiBhbiBlZGl0b3IgbGluZSBmcm9tIGEgbm9kZSBhbmQgb2Zmc2V0IHdpdGhpbiB0aGF0IG5vZGUuXG4gICAqIEBwYXJhbSB7Tm9kZX0gc3RhcnROb2RlIFRoZSBub2RlXG4gICAqIEBwYXJhbSB7aW50fSBvZmZzZXQgVEhlIHNlbGVjdGlvblxuICAgKiBAcmV0dXJucyB7aW50fSB0aGUgY29sdW1uLCBvciBudWxsIGlmIHRoZSBub2RlIGlzIG5vdCBpbnNpZGUgdGhlIGVkaXRvclxuICAgKi9cbiAgY29tcHV0ZUNvbHVtbihzdGFydE5vZGUsIG9mZnNldCkge1xuICAgIGxldCBub2RlID0gc3RhcnROb2RlO1xuICAgIGxldCBjb2w7XG4gICAgLy8gRmlyc3QsIG1ha2Ugc3VyZSB3ZSdyZSBhY3R1YWxseSBpbiB0aGUgZWRpdG9yLlxuICAgIHdoaWxlIChub2RlICYmIG5vZGUucGFyZW50Tm9kZSAhPSB0aGlzLmUpIHtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICAgIGlmIChub2RlID09IG51bGwpIHJldHVybiBudWxsO1xuXG4gICAgLy8gVGhlcmUgYXJlIHR3byB3YXlzIHRoYXQgb2Zmc2V0IGNhbiBiZSBkZWZpbmVkOlxuICAgIC8vIC0gRWl0aGVyLCB0aGUgbm9kZSBpcyBhIHRleHQgbm9kZSwgaW4gd2hpY2ggY2FzZSBpdCBpcyB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgdGV4dFxuICAgIC8vIC0gT3IsIHRoZSBub2RlIGlzIGFuIGVsZW1lbnQgd2l0aCBjaGlsZCBub3RlcywgaW4gd2hpY2ggY2FzZSB0aGUgb2Zmc2V0IHJlZmVycyB0byB0aGVcbiAgICAvLyAgIGNoaWxkIG5vZGUgYWZ0ZXIgd2hpY2ggdGhlIHNlbGVjdGlvbiBpcyBsb2NhdGVkXG4gICAgaWYgKHN0YXJ0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgfHwgb2Zmc2V0ID09PSAwKSB7XG4gICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHRoZSBub2RlIGlzIG5vbi10ZXh0IG5vZGUgYnV0IHRoZSBvZmZzZXQgaXMgMCxcbiAgICAgIC8vIFRoZSBzZWxlY3Rpb24gaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGF0IGVsZW1lbnQgc28gd2VcbiAgICAgIC8vIGNhbiBzaW1wbHkgdXNlIHRoZSBzYW1lIGFwcHJvYWNoIGFzIGlmIGl0IHdlcmUgYXQgdGhlIGJlZ2lubmluZ1xuICAgICAgLy8gb2YgYSB0ZXh0IG5vZGUuXG4gICAgICBjb2wgPSBvZmZzZXQ7XG4gICAgICBub2RlID0gc3RhcnROb2RlO1xuICAgIH0gZWxzZSBpZiAob2Zmc2V0ID4gMCkge1xuICAgICAgbm9kZSA9IHN0YXJ0Tm9kZS5jaGlsZE5vZGVzW29mZnNldCAtIDFdO1xuICAgICAgY29sID0gbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgfVxuICAgIHdoaWxlIChub2RlLnBhcmVudE5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAobm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICBjb2wgKz0gbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIERPTSBub2RlIGFuZCBvZmZzZXQgd2l0aGluIHRoYXQgbm9kZSBmcm9tIGEgcG9zaXRpb24gZXhwcmVzc2VkIGFzIHJvdyBhbmQgY29sdW1uLlxuICAgKiBAcGFyYW0ge2ludH0gcm93IFJvdyAobGluZSBudW1iZXIpXG4gICAqIEBwYXJhbSB7aW50fSBjb2wgQ29sdW1uXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHR3byBwcm9wZXJ0aWVzOiBub2RlIGFuZCBvZmZzZXQuIG9mZnNldCBtYXkgYmUgbnVsbDtcbiAgICovXG4gIGNvbXB1dGVOb2RlQW5kT2Zmc2V0KHJvdywgY29sLCBiaW5kUmlnaHQgPSBmYWxzZSkge1xuICAgIGlmIChyb3cgPj0gdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBTZWxlY3Rpb24gcGFzdCB0aGUgZW5kIG9mIHRleHQsIHNldCBzZWxlY3Rpb24gdG8gZW5kIG9mIHRleHRcbiAgICAgIHJvdyA9IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICBjb2wgPSB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoY29sID4gdGhpcy5saW5lc1tyb3ddLmxlbmd0aCkge1xuICAgICAgY29sID0gdGhpcy5saW5lc1tyb3ddLmxlbmd0aDtcbiAgICB9XG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IHRoaXMubGluZUVsZW1lbnRzW3Jvd107XG4gICAgbGV0IG5vZGUgPSBwYXJlbnROb2RlLmZpcnN0Q2hpbGQ7XG5cbiAgICBsZXQgY2hpbGRyZW5Db21wbGV0ZSA9IGZhbHNlO1xuICAgIC8vIGRlZmF1bHQgcmV0dXJuIHZhbHVlXG4gICAgbGV0IHJ2ID0ge1xuICAgICAgbm9kZTogcGFyZW50Tm9kZS5maXJzdENoaWxkID8gcGFyZW50Tm9kZS5maXJzdENoaWxkIDogcGFyZW50Tm9kZSxcbiAgICAgIG9mZnNldDogMCxcbiAgICB9O1xuXG4gICAgd2hpbGUgKG5vZGUgIT0gcGFyZW50Tm9kZSkge1xuICAgICAgaWYgKCFjaGlsZHJlbkNvbXBsZXRlICYmIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIGlmIChub2RlLm5vZGVWYWx1ZS5sZW5ndGggPj0gY29sKSB7XG4gICAgICAgICAgaWYgKGJpbmRSaWdodCAmJiBub2RlLm5vZGVWYWx1ZS5sZW5ndGggPT0gY29sKSB7XG4gICAgICAgICAgICAvLyBTZWxlY3Rpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGlzIHRleHQgbm9kZSwgYnV0IHdlIGFyZSBiaW5kaW5nIHJpZ2h0IChwcmVmZXIgYW4gb2Zmc2V0IG9mIDAgaW4gdGhlIG5leHQgdGV4dCBub2RlKVxuICAgICAgICAgICAgLy8gUmVtZW1iZXIgcmV0dXJuIHZhbHVlIGluIGNhc2Ugd2UgZG9uJ3QgZmluZCBhbm90aGVyIHRleHQgbm9kZVxuICAgICAgICAgICAgcnYgPSB7IG5vZGU6IG5vZGUsIG9mZnNldDogY29sIH07XG4gICAgICAgICAgICBjb2wgPSAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyBub2RlOiBub2RlLCBvZmZzZXQ6IGNvbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2wgLT0gbm9kZS5ub2RlVmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIWNoaWxkcmVuQ29tcGxldGUgJiYgbm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICB9IGVsc2UgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgY2hpbGRyZW5Db21wbGV0ZSA9IGZhbHNlO1xuICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkcmVuQ29tcGxldGUgPSB0cnVlO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVpdGhlciwgdGhlIHBvc2l0aW9uIHdhcyBpbnZhbGlkIGFuZCB3ZSBqdXN0IHJldHVybiB0aGUgZGVmYXVsdCByZXR1cm4gdmFsdWVcbiAgICAvLyBPciB3ZSBhcmUgYmluZGluZyByaWdodCBhbmQgdGhlIHNlbGVjdGlvbiBpcyBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lXG4gICAgcmV0dXJuIHJ2O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbGVjdGlvbiBiYXNlZCBvbiByb3dzIGFuZCBjb2x1bW5zIHdpdGhpbiB0aGUgZWRpdG9yIE1hcmtkb3duIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBPYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3Rpb24sIG5lZWRzIHRvIGhhdmUgcHJvcGVydGllcyByb3cgYW5kIGNvbC5cbiAgICogQHBhcmFtIGFuY2hvciBBbmNob3Igb2YgdGhlIHNlbGVjdGlvbi4gSWYgbm90IGdpdmVuLCBhc3N1bWVzIHRoZSBjdXJyZW50IGFuY2hvci5cbiAgICovXG4gIHNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yID0gbnVsbCkge1xuICAgIGlmICghZm9jdXMpIHJldHVybjtcblxuICAgIGxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cbiAgICBsZXQgeyBub2RlOiBmb2N1c05vZGUsIG9mZnNldDogZm9jdXNPZmZzZXQgfSA9IHRoaXMuY29tcHV0ZU5vZGVBbmRPZmZzZXQoXG4gICAgICBmb2N1cy5yb3csXG4gICAgICBmb2N1cy5jb2wsXG4gICAgICBhbmNob3IgJiYgYW5jaG9yLnJvdyA9PSBmb2N1cy5yb3cgJiYgYW5jaG9yLmNvbCA+IGZvY3VzLmNvbFxuICAgICk7IC8vIEJpbmQgc2VsZWN0aW9uIHJpZ2h0IGlmIGFuY2hvciBpcyBpbiB0aGUgc2FtZSByb3cgYW5kIGJlaGluZCB0aGUgZm9jdXNcbiAgICBsZXQgYW5jaG9yTm9kZSA9IG51bGwsXG4gICAgICBhbmNob3JPZmZzZXQgPSBudWxsO1xuICAgIGlmIChhbmNob3IgJiYgKGFuY2hvci5yb3cgIT0gZm9jdXMucm93IHx8IGFuY2hvci5jb2wgIT0gZm9jdXMuY29sKSkge1xuICAgICAgbGV0IHsgbm9kZSwgb2Zmc2V0IH0gPSB0aGlzLmNvbXB1dGVOb2RlQW5kT2Zmc2V0KFxuICAgICAgICBhbmNob3Iucm93LFxuICAgICAgICBhbmNob3IuY29sLFxuICAgICAgICBmb2N1cy5yb3cgPT0gYW5jaG9yLnJvdyAmJiBmb2N1cy5jb2wgPiBhbmNob3IuY29sXG4gICAgICApO1xuICAgICAgYW5jaG9yTm9kZSA9IG5vZGU7XG4gICAgICBhbmNob3JPZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGFuY2hvck5vZGUpIHJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgZWxzZSByYW5nZS5zZXRTdGFydChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgICByYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG5cbiAgICBsZXQgd2luZG93U2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIHdpbmRvd1NlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICB3aW5kb3dTZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIGlucHV0IGV2ZW50c1xuICAgKi9cbiAgaGFuZGxlSW5wdXRFdmVudChldmVudCkge1xuICAgIC8vIEZvciBjb21wb3NpdGlvbiBpbnB1dCwgd2UgYXJlIG9ubHkgdXBkYXRpbmcgdGhlIHRleHQgYWZ0ZXIgd2UgaGF2ZSByZWNlaXZlZFxuICAgIC8vIGEgY29tcG9zaXRpb25lbmQgZXZlbnQsIHNvIHdlIHJldHVybiB1cG9uIGluc2VydENvbXBvc2l0aW9uVGV4dC5cbiAgICAvLyBPdGhlcndpc2UsIHRoZSBET00gY2hhbmdlcyBicmVhayB0aGUgdGV4dCBpbnB1dC5cbiAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09IFwiaW5zZXJ0Q29tcG9zaXRpb25UZXh0XCIpIHJldHVybjtcblxuICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoXG4gICAgICAoZXZlbnQuaW5wdXRUeXBlID09IFwiaW5zZXJ0UGFyYWdyYXBoXCIgfHxcbiAgICAgICAgZXZlbnQuaW5wdXRUeXBlID09IFwiaW5zZXJ0TGluZUJyZWFrXCIpICYmXG4gICAgICBmb2N1c1xuICAgICkge1xuICAgICAgdGhpcy5jbGVhckRpcnR5RmxhZygpO1xuICAgICAgdGhpcy5wcm9jZXNzTmV3UGFyYWdyYXBoKGZvY3VzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLmUuZmlyc3RDaGlsZCkge1xuICAgICAgICB0aGlzLmUuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJUTUJsYW5rTGluZVwiPjxicj48L2Rpdj4nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maXhOb2RlSGllcmFyY2h5KCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmcoKTtcbiAgICB9XG4gICAgaWYgKGZvY3VzKSB7XG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cyk7XG4gICAgfVxuXG4gICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRml4ZXMgdGhlIG5vZGUgaGllcmFyY2h5IOKAkyBtYWtlcyBzdXJlIHRoYXQgZWFjaCBsaW5lIGlzIGluIGEgZGl2LCBhbmQgdGhlcmUgYXJlIG5vIG5lc3RlZCBkaXZzXG4gICAqL1xuICBmaXhOb2RlSGllcmFyY2h5KCkge1xuICAgIGNvbnN0IG9yaWdpbmFsQ2hpbGRyZW4gPSBBcnJheS5mcm9tKHRoaXMuZS5jaGlsZE5vZGVzKTtcblxuICAgIGNvbnN0IHJlcGxhY2VDaGlsZCA9IChjaGlsZCwgLi4ubmV3Q2hpbGRyZW4pID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGNoaWxkLnBhcmVudEVsZW1lbnQ7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IGNoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgIG5ld0NoaWxkcmVuLmZvckVhY2goKG5ld0NoaWxkKSA9PlxuICAgICAgICBuZXh0U2libGluZ1xuICAgICAgICAgID8gcGFyZW50Lmluc2VydEJlZm9yZShuZXh0U2libGluZywgbmV3Q2hpbGQpXG4gICAgICAgICAgOiBwYXJlbnQuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpXG4gICAgICApO1xuICAgIH07XG5cbiAgICBvcmlnaW5hbENoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBpZiAoY2hpbGQubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8IGNoaWxkLnRhZ05hbWUgIT09IFwiRElWXCIpIHtcbiAgICAgICAgLy8gRm91bmQgYSBjaGlsZCBub2RlIHRoYXQncyBlaXRoZXIgbm90IGFuIGVsZW1lbnQgb3Igbm90IGEgZGl2LiBXcmFwIGl0IGluIGEgZGl2LlxuICAgICAgICBjb25zdCBkaXZXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgcmVwbGFjZUNoaWxkKGNoaWxkLCBkaXZXcmFwcGVyKTtcbiAgICAgICAgZGl2V3JhcHBlci5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkLmNoaWxkTm9kZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgLy8gRW1wdHkgZGl2IGNoaWxkIG5vZGUsIGluY2x1ZGUgYXQgbGVhc3QgYSA8YnIgLz5cbiAgICAgICAgY2hpbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdyYW5kQ2hpbGRyZW4gPSBBcnJheS5mcm9tKGNoaWxkLmNoaWxkTm9kZXMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZ3JhbmRDaGlsZHJlbi5zb21lKFxuICAgICAgICAgICAgKGdyYW5kQ2hpbGQpID0+XG4gICAgICAgICAgICAgIGdyYW5kQ2hpbGQubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmXG4gICAgICAgICAgICAgIGdyYW5kQ2hpbGQudGFnTmFtZSA9PT0gXCJESVZcIlxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2VDaGlsZChjaGlsZCwgZ3JhbmRDaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBcInNlbGVjdGlvbmNoYW5nZVwiIGV2ZW50cy5cbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50KCkge1xuICAgIHRoaXMuZmlyZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIFwic3BsaWNlXCIgbmV3IGxpbmVzIGludG8gdGhlIGFycmF5cyB0aGlzLmxpbmVzLCB0aGlzLmxpbmVEaXJ0eSwgdGhpcy5saW5lVHlwZXMsIGFuZCB0aGUgRE9NIGVsZW1lbnRzXG4gICAqIHVuZGVybmVhdGggdGhlIGVkaXRvciBlbGVtZW50LlxuICAgKiBUaGlzIG1ldGhvZCBpcyBlc3NlbnRpYWxseSBBcnJheS5zcGxpY2UsIG9ubHkgdGhhdCB0aGUgdGhpcmQgcGFyYW1ldGVyIHRha2VzIGFuIHVuLXNwcmVhZCBhcnJheSAoYW5kIHRoZSBmb3J0aCBwYXJhbWV0ZXIpXG4gICAqIGRldGVybWluZXMgd2hldGhlciB0aGUgRE9NIHNob3VsZCBhbHNvIGJlIGFkanVzdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge2ludH0gc3RhcnRMaW5lIFBvc2l0aW9uIGF0IHdoaWNoIHRvIHN0YXJ0IGNoYW5naW5nIHRoZSBhcnJheSBvZiBsaW5lc1xuICAgKiBAcGFyYW0ge2ludH0gbGluZXNUb0RlbGV0ZSBOdW1iZXIgb2YgbGluZXMgdG8gZGVsZXRlXG4gICAqIEBwYXJhbSB7YXJyYXl9IGxpbmVzVG9JbnNlcnQgQXJyYXkgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGxpbmVzIHRvIGJlIGluc2VydGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYWRqdXN0TGluZUVsZW1lbnRzIElmIHRydWUsIHRoZW4gPGRpdj4gZWxlbWVudHMgYXJlIGFsc28gaW5zZXJ0ZWQgaW4gdGhlIERPTSBhdCB0aGUgcmVzcGVjdGl2ZSBwb3NpdGlvblxuICAgKi9cbiAgc3BsaWNlTGluZXMoXG4gICAgc3RhcnRMaW5lLFxuICAgIGxpbmVzVG9EZWxldGUgPSAwLFxuICAgIGxpbmVzVG9JbnNlcnQgPSBbXSxcbiAgICBhZGp1c3RMaW5lRWxlbWVudHMgPSB0cnVlXG4gICkge1xuICAgIGlmIChhZGp1c3RMaW5lRWxlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNUb0RlbGV0ZTsgaSsrKSB7XG4gICAgICAgIHRoaXMuZS5yZW1vdmVDaGlsZCh0aGlzLmUuY2hpbGROb2Rlc1tzdGFydExpbmVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW5zZXJ0ZWRCbGFuayA9IFtdO1xuICAgIGxldCBpbnNlcnRlZERpcnR5ID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzVG9JbnNlcnQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluc2VydGVkQmxhbmsucHVzaChcIlwiKTtcbiAgICAgIGluc2VydGVkRGlydHkucHVzaCh0cnVlKTtcbiAgICAgIGlmIChhZGp1c3RMaW5lRWxlbWVudHMpIHtcbiAgICAgICAgaWYgKHRoaXMuZS5jaGlsZE5vZGVzW3N0YXJ0TGluZV0pXG4gICAgICAgICAgdGhpcy5lLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksXG4gICAgICAgICAgICB0aGlzLmUuY2hpbGROb2Rlc1tzdGFydExpbmVdXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSB0aGlzLmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5saW5lcy5zcGxpY2Uoc3RhcnRMaW5lLCBsaW5lc1RvRGVsZXRlLCAuLi5saW5lc1RvSW5zZXJ0KTtcbiAgICB0aGlzLmxpbmVUeXBlcy5zcGxpY2Uoc3RhcnRMaW5lLCBsaW5lc1RvRGVsZXRlLCAuLi5pbnNlcnRlZEJsYW5rKTtcbiAgICB0aGlzLmxpbmVEaXJ0eS5zcGxpY2Uoc3RhcnRMaW5lLCBsaW5lc1RvRGVsZXRlLCAuLi5pbnNlcnRlZERpcnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciB0aGUgXCJwYXN0ZVwiIGV2ZW50XG4gICAqL1xuICBoYW5kbGVQYXN0ZShldmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBnZXQgdGV4dCByZXByZXNlbnRhdGlvbiBvZiBjbGlwYm9hcmRcbiAgICBsZXQgdGV4dCA9IChldmVudC5vcmlnaW5hbEV2ZW50IHx8IGV2ZW50KS5jbGlwYm9hcmREYXRhLmdldERhdGEoXG4gICAgICBcInRleHQvcGxhaW5cIlxuICAgICk7XG5cbiAgICAvLyBpbnNlcnQgdGV4dCBtYW51YWxseVxuICAgIHRoaXMucGFzdGUodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogUGFzdGVzIHRoZSB0ZXh0IGF0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiAob3IgYXQgdGhlIGVuZCwgaWYgbm8gY3VycmVudCBzZWxlY3Rpb24pXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gICAqL1xuICBwYXN0ZSh0ZXh0LCBhbmNob3IgPSBudWxsLCBmb2N1cyA9IG51bGwpIHtcbiAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgaWYgKCFmb2N1cykgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgbGV0IGJlZ2lubmluZywgZW5kO1xuICAgIGlmICghZm9jdXMpIHtcbiAgICAgIGZvY3VzID0ge1xuICAgICAgICByb3c6IHRoaXMubGluZXMubGVuZ3RoIC0gMSxcbiAgICAgICAgY29sOiB0aGlzLmxpbmVzW3RoaXMubGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoLFxuICAgICAgfTsgLy8gSW5zZXJ0IGF0IGVuZFxuICAgIH1cbiAgICBpZiAoIWFuY2hvcikge1xuICAgICAgYW5jaG9yID0gZm9jdXM7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGFuY2hvci5yb3cgPCBmb2N1cy5yb3cgfHxcbiAgICAgIChhbmNob3Iucm93ID09IGZvY3VzLnJvdyAmJiBhbmNob3IuY29sIDw9IGZvY3VzLmNvbClcbiAgICApIHtcbiAgICAgIGJlZ2lubmluZyA9IGFuY2hvcjtcbiAgICAgIGVuZCA9IGZvY3VzO1xuICAgIH0gZWxzZSB7XG4gICAgICBiZWdpbm5pbmcgPSBmb2N1cztcbiAgICAgIGVuZCA9IGFuY2hvcjtcbiAgICB9XG4gICAgbGV0IGluc2VydGVkTGluZXMgPSB0ZXh0LnNwbGl0KC8oPzpcXHJcXG58XFxyfFxcbikvKTtcbiAgICBsZXQgbGluZUJlZm9yZSA9IHRoaXMubGluZXNbYmVnaW5uaW5nLnJvd10uc3Vic3RyKDAsIGJlZ2lubmluZy5jb2wpO1xuICAgIGxldCBsaW5lRW5kID0gdGhpcy5saW5lc1tlbmQucm93XS5zdWJzdHIoZW5kLmNvbCk7XG4gICAgaW5zZXJ0ZWRMaW5lc1swXSA9IGxpbmVCZWZvcmUuY29uY2F0KGluc2VydGVkTGluZXNbMF0pO1xuICAgIGxldCBlbmRDb2xQb3MgPSBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoO1xuICAgIGluc2VydGVkTGluZXNbaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxXSA9XG4gICAgICBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0uY29uY2F0KGxpbmVFbmQpO1xuICAgIHRoaXMuc3BsaWNlTGluZXMoYmVnaW5uaW5nLnJvdywgMSArIGVuZC5yb3cgLSBiZWdpbm5pbmcucm93LCBpbnNlcnRlZExpbmVzKTtcbiAgICBmb2N1cy5yb3cgPSBiZWdpbm5pbmcucm93ICsgaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxO1xuICAgIGZvY3VzLmNvbCA9IGVuZENvbFBvcztcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cyk7XG4gICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIChsb3dlc3QgaW4gdGhlIERPTSB0cmVlKSBjb21tb24gYW5jZXN0b3Igb2YgdHdvIERPTSBub2Rlcy5cbiAgICogQHBhcmFtIHtOb2RlfSBub2RlMSB0aGUgZmlyc3Qgbm9kZVxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUyIHRoZSBzZWNvbmQgbm9kZVxuICAgKiBAcmV0dXJucyB7Tm9kZX0gVGhlIGNvbW1lbiBhbmNlc3RvciBub2RlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIGNvbW1vbiBhbmNlc3RvclxuICAgKi9cbiAgY29tcHV0ZUNvbW1vbkFuY2VzdG9yKG5vZGUxLCBub2RlMikge1xuICAgIGlmICghbm9kZTEgfHwgIW5vZGUyKSByZXR1cm4gbnVsbDtcbiAgICBpZiAobm9kZTEgPT0gbm9kZTIpIHJldHVybiBub2RlMTtcbiAgICBjb25zdCBhbmNlc3RyeSA9IChub2RlKSA9PiB7XG4gICAgICBsZXQgYW5jZXN0cnkgPSBbXTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIGFuY2VzdHJ5LnVuc2hpZnQobm9kZSk7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYW5jZXN0cnk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFuY2VzdHJ5MSA9IGFuY2VzdHJ5KG5vZGUxKTtcbiAgICBjb25zdCBhbmNlc3RyeTIgPSBhbmNlc3RyeShub2RlMik7XG5cbiAgICBpZiAoYW5jZXN0cnkxWzBdICE9IGFuY2VzdHJ5MlswXSkgcmV0dXJuIG51bGw7XG4gICAgbGV0IGk7XG4gICAgZm9yIChpID0gMDsgYW5jZXN0cnkxW2ldID09IGFuY2VzdHJ5MltpXTsgaSsrKTtcbiAgICByZXR1cm4gYW5jZXN0cnkxW2kgLSAxXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgKGxvd2VzdCBpbiB0aGUgRE9NIHRyZWUpIGVuY2xvc2luZyBET00gbm9kZSB3aXRoIGEgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBUaGUgZm9jdXMgc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge29iamVjdH0gYW5jaG9yIFRoZSBhbmNob3Igc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lIHRvIGZpbmRcbiAgICogQHJldHVybnMge05vZGV9IFRoZSBlbmNsb3NpbmcgRE9NIG5vZGUgd2l0aCB0aGUgcmVzcGVjdGl2ZSBjbGFzcyAoaW5zaWRlIHRoZSBlZGl0b3IpLCBpZiB0aGVyZSBpcyBvbmU7IG51bGwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoZm9jdXMsIGFuY2hvciwgY2xhc3NOYW1lKSB7XG4gICAgbGV0IG5vZGUgPSBudWxsO1xuICAgIGlmICghZm9jdXMpIHJldHVybiBudWxsO1xuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBub2RlID0gZm9jdXMubm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm4gbnVsbDtcbiAgICAgIG5vZGUgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3Rvcihmb2N1cy5ub2RlLCBhbmNob3Iubm9kZSk7XG4gICAgfVxuICAgIGlmICghbm9kZSkgcmV0dXJuIG51bGw7XG4gICAgd2hpbGUgKG5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAobm9kZS5jbGFzc05hbWUgJiYgbm9kZS5jbGFzc05hbWUuaW5jbHVkZXMoY2xhc3NOYW1lKSkgcmV0dXJuIG5vZGU7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICAvLyBBc2NlbmRlZCBhbGwgdGhlIHdheSB0byB0aGUgZWRpdG9yIGVsZW1lbnRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSAodHJ1ZSAvIGZhbHNlKSBvZiBhbGwgY29tbWFuZHMuXG4gICAqIEBwYXJhbSBmb2N1cyBGb2N1cyBvZiB0aGUgc2VsZWN0aW9uLiBJZiBub3QgZ2l2ZW4sIGFzc3VtZXMgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAqIEBwYXJhbSBhbmNob3IgQW5jaG9yIG9mIHRoZSBzZWxlY3Rpb24uIElmIG5vdCBnaXZlbiwgYXNzdW1lcyB0aGUgY3VycmVudCBhbmNob3IuXG4gICAqL1xuICBnZXRDb21tYW5kU3RhdGUoZm9jdXMgPSBudWxsLCBhbmNob3IgPSBudWxsKSB7XG4gICAgbGV0IGNvbW1hbmRTdGF0ZSA9IHt9O1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbW1hbmRTdGF0ZTtcbiAgICB9XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzO1xuXG4gICAgbGV0IHN0YXJ0LCBlbmQ7XG4gICAgaWYgKFxuICAgICAgYW5jaG9yLnJvdyA8IGZvY3VzLnJvdyB8fFxuICAgICAgKGFuY2hvci5yb3cgPT0gZm9jdXMucm93ICYmIGFuY2hvci5jb2wgPCBmb2N1cy5jb2wpXG4gICAgKSB7XG4gICAgICBzdGFydCA9IGFuY2hvcjtcbiAgICAgIGVuZCA9IGZvY3VzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydCA9IGZvY3VzO1xuICAgICAgZW5kID0gYW5jaG9yO1xuICAgIH1cbiAgICBpZiAoZW5kLnJvdyA+IHN0YXJ0LnJvdyAmJiBlbmQuY29sID09IDApIHtcbiAgICAgIGVuZC5yb3ctLTtcbiAgICAgIGVuZC5jb2wgPSB0aGlzLmxpbmVzW2VuZC5yb3ddLmxlbmd0aDsgLy8gU2VsZWN0aW9uIHRvIGJlZ2lubmluZyBvZiBuZXh0IGxpbmUgaXMgc2FpZCB0byBlbmQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdCBsaW5lXG4gICAgfVxuXG4gICAgZm9yIChsZXQgY21kIGluIGNvbW1hbmRzKSB7XG4gICAgICBpZiAoY29tbWFuZHNbY21kXS50eXBlID09IFwiaW5saW5lXCIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFmb2N1cyB8fFxuICAgICAgICAgIGZvY3VzLnJvdyAhPSBhbmNob3Iucm93IHx8XG4gICAgICAgICAgIXRoaXMuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGNvbW1hbmQgc3RhdGUgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHJlc3BlY3RpdmUgZW5jbG9zaW5nIG1hcmt1cCBub2RlIChlLmcuLCB0aGUgc2VsZWN0aW9uIGlzIGVuY2xvc2VkIGluIGEgPGI+Li48L2I+KSAuLi5cbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9XG4gICAgICAgICAgICAhIXRoaXMuY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoXG4gICAgICAgICAgICAgIGZvY3VzLFxuICAgICAgICAgICAgICBhbmNob3IsXG4gICAgICAgICAgICAgIGNvbW1hbmRzW2NtZF0uY2xhc3NOYW1lXG4gICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAvLyAuLi4gb3IgaWYgaXQncyBhbiBlbXB0eSBzdHJpbmcgcHJlY2VkZWQgYnkgYW5kIGZvbGxvd2VkIGJ5IGZvcm1hdHRpbmcgbWFya2VycywgZS5nLiAqKnwqKiB3aGVyZSB8IGlzIHRoZSBjdXJzb3JcbiAgICAgICAgICAgIChmb2N1cy5jb2wgPT0gYW5jaG9yLmNvbCAmJlxuICAgICAgICAgICAgICAhIXRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgICAgICAgIC5zdWJzdHIoMCwgZm9jdXMuY29sKVxuICAgICAgICAgICAgICAgIC5tYXRjaChjb21tYW5kc1tjbWRdLnVuc2V0LnByZVBhdHRlcm4pICYmXG4gICAgICAgICAgICAgICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgICAgICAgLnN1YnN0cihmb2N1cy5jb2wpXG4gICAgICAgICAgICAgICAgLm1hdGNoKGNvbW1hbmRzW2NtZF0udW5zZXQucG9zdFBhdHRlcm4pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNvbW1hbmRzW2NtZF0udHlwZSA9PSBcImxpbmVcIikge1xuICAgICAgICBpZiAoIWZvY3VzKSB7XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMubGluZVR5cGVzW3N0YXJ0LnJvd10gPT0gY29tbWFuZHNbY21kXS5jbGFzc05hbWU7XG5cbiAgICAgICAgICBmb3IgKGxldCBsaW5lID0gc3RhcnQucm93OyBsaW5lIDw9IGVuZC5yb3c7IGxpbmUrKykge1xuICAgICAgICAgICAgaWYgKCh0aGlzLmxpbmVUeXBlc1tsaW5lXSA9PSBjb21tYW5kc1tjbWRdLmNsYXNzTmFtZSkgIT0gc3RhdGUpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBudWxsO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjb21tYW5kIHN0YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhdGVcbiAgICovXG4gIHNldENvbW1hbmRTdGF0ZShjb21tYW5kLCBzdGF0ZSkge1xuICAgIGlmIChjb21tYW5kc1tjb21tYW5kXS50eXBlID09IFwiaW5saW5lXCIpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghYW5jaG9yKSByZXR1cm47XG4gICAgICBpZiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpKSByZXR1cm47XG4gICAgICBsZXQgbWFya3VwTm9kZSA9IHRoaXMuY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoXG4gICAgICAgIGZvY3VzLFxuICAgICAgICBhbmNob3IsXG4gICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZVxuICAgICAgKTtcbiAgICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcblxuICAgICAgLy8gRmlyc3QgY2FzZTogVGhlcmUncyBhbiBlbmNsb3NpbmcgbWFya3VwIG5vZGUsIHJlbW92ZSB0aGUgbWFya2VycyBhcm91bmQgdGhhdCBtYXJrdXAgbm9kZVxuICAgICAgaWYgKG1hcmt1cE5vZGUpIHtcbiAgICAgICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG4gICAgICAgIGNvbnN0IHN0YXJ0Q29sID0gdGhpcy5jb21wdXRlQ29sdW1uKG1hcmt1cE5vZGUsIDApO1xuICAgICAgICBjb25zdCBsZW4gPSBtYXJrdXBOb2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoMCwgc3RhcnRDb2wpXG4gICAgICAgICAgLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0udW5zZXQucHJlUGF0dGVybiwgXCJcIik7XG4gICAgICAgIGNvbnN0IG1pZCA9IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoc3RhcnRDb2wsIGxlbik7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cihzdGFydENvbCArIGxlbilcbiAgICAgICAgICAucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wb3N0UGF0dGVybiwgXCJcIik7XG4gICAgICAgIHRoaXMubGluZXNbZm9jdXMucm93XSA9IGxlZnQuY29uY2F0KG1pZCwgcmlnaHQpO1xuICAgICAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBsZW47XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG5cbiAgICAgICAgLy8gU2Vjb25kIGNhc2U6IEVtcHR5IHNlbGVjdGlvbiB3aXRoIHN1cnJvdW5kaW5nIGZvcm1hdHRpbmcgbWFya2VycywgcmVtb3ZlIHRob3NlXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBmb2N1cy5jb2wgPT0gYW5jaG9yLmNvbCAmJlxuICAgICAgICAhIXRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoMCwgZm9jdXMuY29sKVxuICAgICAgICAgIC5tYXRjaChjb21tYW5kc1tjb21tYW5kXS51bnNldC5wcmVQYXR0ZXJuKSAmJlxuICAgICAgICAhIXRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoZm9jdXMuY29sKVxuICAgICAgICAgIC5tYXRjaChjb21tYW5kc1tjb21tYW5kXS51bnNldC5wb3N0UGF0dGVybilcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtmb2N1cy5yb3ddID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoMCwgZm9jdXMuY29sKVxuICAgICAgICAgIC5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4sIFwiXCIpO1xuICAgICAgICBjb25zdCByaWdodCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoZm9jdXMuY29sKVxuICAgICAgICAgIC5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBvc3RQYXR0ZXJuLCBcIlwiKTtcbiAgICAgICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQocmlnaHQpO1xuICAgICAgICBmb2N1cy5jb2wgPSBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG5cbiAgICAgICAgLy8gTm90IGN1cnJlbnRseSBmb3JtYXR0ZWQsIGluc2VydCBmb3JtYXR0aW5nIG1hcmtlcnNcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRyaW0gYW55IHNwYWNlcyBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgbGV0IHsgc3RhcnRDb2wsIGVuZENvbCB9ID1cbiAgICAgICAgICBmb2N1cy5jb2wgPCBhbmNob3IuY29sXG4gICAgICAgICAgICA/IHsgc3RhcnRDb2w6IGZvY3VzLmNvbCwgZW5kQ29sOiBhbmNob3IuY29sIH1cbiAgICAgICAgICAgIDogeyBzdGFydENvbDogYW5jaG9yLmNvbCwgZW5kQ29sOiBmb2N1cy5jb2wgfTtcblxuICAgICAgICBsZXQgbWF0Y2ggPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKHN0YXJ0Q29sLCBlbmRDb2wgLSBzdGFydENvbClcbiAgICAgICAgICAubWF0Y2goL14oPzxsZWFkaW5nPlxccyopLipcXFMoPzx0cmFpbGluZz5cXHMqKSQvKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgc3RhcnRDb2wgKz0gbWF0Y2guZ3JvdXBzLmxlYWRpbmcubGVuZ3RoO1xuICAgICAgICAgIGVuZENvbCAtPSBtYXRjaC5ncm91cHMudHJhaWxpbmcubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9jdXMuY29sID0gc3RhcnRDb2w7XG4gICAgICAgIGFuY2hvci5jb2wgPSBlbmRDb2w7XG5cbiAgICAgICAgLy8gSnVzdCBpbnNlcnQgbWFya3VwIGJlZm9yZSBhbmQgYWZ0ZXIgYW5kIGhvcGUgZm9yIHRoZSBiZXN0LlxuICAgICAgICB0aGlzLndyYXBTZWxlY3Rpb24oXG4gICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0uc2V0LnByZSxcbiAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS5zZXQucG9zdCxcbiAgICAgICAgICBmb2N1cyxcbiAgICAgICAgICBhbmNob3JcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gICAgICAgIC8vIFRPRE8gY2xlYW4gdGhpcyB1cCBzbyB0aGF0IG1hcmt1cCByZW1haW5zIHByb3Blcmx5IG5lc3RlZFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29tbWFuZHNbY29tbWFuZF0udHlwZSA9PSBcImxpbmVcIikge1xuICAgICAgbGV0IGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgbGV0IGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzO1xuICAgICAgaWYgKCFmb2N1cykgcmV0dXJuO1xuICAgICAgdGhpcy5jbGVhckRpcnR5RmxhZygpO1xuICAgICAgbGV0IHN0YXJ0ID0gYW5jaG9yLnJvdyA+IGZvY3VzLnJvdyA/IGZvY3VzIDogYW5jaG9yO1xuICAgICAgbGV0IGVuZCA9IGFuY2hvci5yb3cgPiBmb2N1cy5yb3cgPyBhbmNob3IgOiBmb2N1cztcbiAgICAgIGlmIChlbmQucm93ID4gc3RhcnQucm93ICYmIGVuZC5jb2wgPT0gMCkge1xuICAgICAgICBlbmQucm93LS07XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGxpbmUgPSBzdGFydC5yb3c7IGxpbmUgPD0gZW5kLnJvdzsgbGluZSsrKSB7XG4gICAgICAgIGlmIChzdGF0ZSAmJiB0aGlzLmxpbmVUeXBlc1tsaW5lXSAhPSBjb21tYW5kc1tjb21tYW5kXS5jbGFzc05hbWUpIHtcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gdGhpcy5saW5lc1tsaW5lXS5yZXBsYWNlKFxuICAgICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0uc2V0LnBhdHRlcm4sXG4gICAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS5zZXQucmVwbGFjZW1lbnQucmVwbGFjZShcbiAgICAgICAgICAgICAgXCIkI1wiLFxuICAgICAgICAgICAgICBsaW5lIC0gc3RhcnQucm93ICsgMVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3RhdGUgJiYgdGhpcy5saW5lVHlwZXNbbGluZV0gPT0gY29tbWFuZHNbY29tbWFuZF0uY2xhc3NOYW1lKSB7XG4gICAgICAgICAgdGhpcy5saW5lc1tsaW5lXSA9IHRoaXMubGluZXNbbGluZV0ucmVwbGFjZShcbiAgICAgICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBhdHRlcm4sXG4gICAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS51bnNldC5yZXBsYWNlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKFxuICAgICAgICB7IHJvdzogZW5kLnJvdywgY29sOiB0aGlzLmxpbmVzW2VuZC5yb3ddLmxlbmd0aCB9LFxuICAgICAgICB7IHJvdzogc3RhcnQucm93LCBjb2w6IDAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGlubGluZSBmb3JtYXR0aW5nIGlzIGFsbG93ZWQgYXQgdGhlIGN1cnJlbnQgZm9jdXNcbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBjdXJyZW50IGZvY3VzXG4gICAqL1xuICBpc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKCkge1xuICAgIC8vIFRPRE8gUmVtb3ZlIHBhcmFtZXRlcnMgZnJvbSBhbGwgY2FsbHNcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwgfHwgIXNlbC5mb2N1c05vZGUgfHwgIXNlbC5hbmNob3JOb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBpZiB3ZSBjYW4gZmluZCBhIGNvbW1vbiBhbmNlc3RvciB3aXRoIHRoZSBjbGFzcyBgVE1JbmxpbmVGb3JtYXR0ZWRgXG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IEVtcHR5IHNlbGVjdGlvbiByaWdodCBiZWZvcmUgYFRNSW5saW5lRm9ybWF0dGVkYFxuICAgIGlmIChcbiAgICAgIHNlbC5pc0NvbGxhcHNlZCAmJlxuICAgICAgc2VsLmZvY3VzTm9kZS5ub2RlVHlwZSA9PSAzICYmXG4gICAgICBzZWwuZm9jdXNPZmZzZXQgPT0gc2VsLmZvY3VzTm9kZS5ub2RlVmFsdWUubGVuZ3RoXG4gICAgKSB7XG4gICAgICBsZXQgbm9kZTtcbiAgICAgIGZvciAoXG4gICAgICAgIG5vZGUgPSBzZWwuZm9jdXNOb2RlO1xuICAgICAgICBub2RlICYmIG5vZGUubmV4dFNpYmxpbmcgPT0gbnVsbDtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZVxuICAgICAgKTtcbiAgICAgIGlmIChcbiAgICAgICAgbm9kZSAmJlxuICAgICAgICBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZSAmJlxuICAgICAgICBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZS5pbmNsdWRlcyhcIlRNSW5saW5lRm9ybWF0dGVkXCIpXG4gICAgICApXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIExvb2sgZm9yIGEgY29tbW9uIGFuY2VzdG9yXG4gICAgbGV0IGFuY2VzdG9yID0gdGhpcy5jb21wdXRlQ29tbW9uQW5jZXN0b3Ioc2VsLmZvY3VzTm9kZSwgc2VsLmFuY2hvck5vZGUpO1xuICAgIGlmICghYW5jZXN0b3IpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYW4gYW5jZXN0b3Igb2YgY2xhc3MgJ1RNSW5saW5lRm9ybWF0dGVkJyBvciAnVE1CbGFua0xpbmUnXG4gICAgd2hpbGUgKGFuY2VzdG9yICYmIGFuY2VzdG9yICE9IHRoaXMuZSkge1xuICAgICAgaWYgKFxuICAgICAgICBhbmNlc3Rvci5jbGFzc05hbWUgJiZcbiAgICAgICAgKGFuY2VzdG9yLmNsYXNzTmFtZS5pbmNsdWRlcyhcIlRNSW5saW5lRm9ybWF0dGVkXCIpIHx8XG4gICAgICAgICAgYW5jZXN0b3IuY2xhc3NOYW1lLmluY2x1ZGVzKFwiVE1CbGFua0xpbmVcIikpXG4gICAgICApXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcyB0aGUgY3VycmVudCBzZWxlY3Rpb24gaW4gdGhlIHN0cmluZ3MgcHJlIGFuZCBwb3N0LiBJZiB0aGUgc2VsZWN0aW9uIGlzIG5vdCBvbiBvbmUgbGluZSwgcmV0dXJucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZSBUaGUgc3RyaW5nIHRvIGluc2VydCBiZWZvcmUgdGhlIHNlbGVjdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBvc3QgVGhlIHN0cmluZyB0byBpbnNlcnQgYWZ0ZXIgdGhlIHNlbGVjdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBjdXJyZW50IHNlbGVjdGlvbiBmb2N1cy4gSWYgbnVsbCwgc2VsZWN0aW9uIHdpbGwgYmUgY29tcHV0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhbmNob3IgVGhlIGN1cnJlbnQgc2VsZWN0aW9uIGZvY3VzLiBJZiBudWxsLCBzZWxlY3Rpb24gd2lsbCBiZSBjb21wdXRlZC5cbiAgICovXG4gIHdyYXBTZWxlY3Rpb24ocHJlLCBwb3N0LCBmb2N1cyA9IG51bGwsIGFuY2hvciA9IG51bGwpIHtcbiAgICBpZiAoIWZvY3VzKSBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgaWYgKCFmb2N1cyB8fCAhYW5jaG9yIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm47XG4gICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG5cbiAgICBjb25zdCBzdGFydENvbCA9IGZvY3VzLmNvbCA8IGFuY2hvci5jb2wgPyBmb2N1cy5jb2wgOiBhbmNob3IuY29sO1xuICAgIGNvbnN0IGVuZENvbCA9IGZvY3VzLmNvbCA8IGFuY2hvci5jb2wgPyBhbmNob3IuY29sIDogZm9jdXMuY29sO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIHN0YXJ0Q29sKS5jb25jYXQocHJlKTtcbiAgICBjb25zdCBtaWQgPVxuICAgICAgZW5kQ29sID09IHN0YXJ0Q29sXG4gICAgICAgID8gXCJcIlxuICAgICAgICA6IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoc3RhcnRDb2wsIGVuZENvbCAtIHN0YXJ0Q29sKTtcbiAgICBjb25zdCByaWdodCA9IHBvc3QuY29uY2F0KHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoZW5kQ29sKSk7XG4gICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQobWlkLCByaWdodCk7XG4gICAgYW5jaG9yLmNvbCA9IGxlZnQubGVuZ3RoO1xuICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBtaWQubGVuZ3RoO1xuXG4gICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvcik7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY29tbWFuZCBzdGF0ZSBmb3IgYSBjb21tYW5kICh0cnVlIDwtPiBmYWxzZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmQgVGhlIGVkaXRvciBjb21tYW5kXG4gICAqL1xuICB0b2dnbGVDb21tYW5kU3RhdGUoY29tbWFuZCkge1xuICAgIGlmICghdGhpcy5sYXN0Q29tbWFuZFN0YXRlKSB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSB0aGlzLmdldENvbW1hbmRTdGF0ZSgpO1xuICAgIHRoaXMuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmQsICF0aGlzLmxhc3RDb21tYW5kU3RhdGVbY29tbWFuZF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgY2hhbmdlIGV2ZW50LiBVcGRhdGVzIHRoZSBsaW5rZWQgdGV4dGFyZWEgYW5kIG5vdGlmaWVzIGFueSBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICBmaXJlQ2hhbmdlKCkge1xuICAgIGlmICghdGhpcy50ZXh0YXJlYSAmJiAhdGhpcy5saXN0ZW5lcnMuY2hhbmdlLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKTtcbiAgICBpZiAodGhpcy50ZXh0YXJlYSkgdGhpcy50ZXh0YXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMuY2hhbmdlKSB7XG4gICAgICBsaXN0ZW5lcih7XG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIGxpbmVzRGlydHk6IHRoaXMubGluZXNEaXJ0eSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyBhIFwic2VsZWN0aW9uIGNoYW5nZWRcIiBldmVudC5cbiAgICovXG4gIGZpcmVTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbiAmJiB0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICBsZXQgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICBsZXQgY29tbWFuZFN0YXRlID0gdGhpcy5nZXRDb21tYW5kU3RhdGUoZm9jdXMsIGFuY2hvcik7XG4gICAgICBpZiAodGhpcy5sYXN0Q29tbWFuZFN0YXRlKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5sYXN0Q29tbWFuZFN0YXRlLCBjb21tYW5kU3RhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY29tbWFuZFN0YXRlKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbikge1xuICAgICAgICBsaXN0ZW5lcih7XG4gICAgICAgICAgZm9jdXM6IGZvY3VzLFxuICAgICAgICAgIGFuY2hvcjogYW5jaG9yLFxuICAgICAgICAgIGNvbW1hbmRTdGF0ZTogdGhpcy5sYXN0Q29tbWFuZFN0YXRlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBldmVudCBsaXN0ZW5lci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVGhlIHR5cGUgb2YgZXZlbnQgdG8gbGlzdGVuIHRvLiBDYW4gYmUgJ2NoYW5nZScgb3IgJ3NlbGVjdGlvbidcbiAgICogQHBhcmFtIHsqfSBsaXN0ZW5lciBGdW5jdGlvbiBvZiB0aGUgdHlwZSAoZXZlbnQpID0+IHt9IHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBvY2N1cnMuXG4gICAqL1xuICBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGUubWF0Y2goL14oPzpjaGFuZ2V8aW5wdXQpJC9pKSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuY2hhbmdlLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cbiAgICBpZiAodHlwZS5tYXRjaCgvXig/OnNlbGVjdGlvbnxzZWxlY3Rpb25jaGFuZ2UpJC9pKSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFZGl0b3I7XG4iXSwibmFtZXMiOlsic3ZnIiwiYmxvY2txdW90ZSIsImJvbGQiLCJjbGVhcl9mb3JtYXR0aW5nIiwiY29kZSIsImgxIiwiaDIiLCJociIsImltYWdlIiwiaXRhbGljIiwibGluayIsIm9sIiwic3RyaWtldGhyb3VnaCIsInVsIiwiaXNNYWNMaWtlIiwidGVzdCIsIm5hdmlnYXRvciIsInBsYXRmb3JtIiwiRGVmYXVsdENvbW1hbmRzIiwibmFtZSIsImFjdGlvbiIsImlubmVySFRNTCIsInRpdGxlIiwiaG90a2V5IiwiZWRpdG9yIiwiaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZCIsIndyYXBTZWxlY3Rpb24iLCJlbmFibGVkIiwiZm9jdXMiLCJhbmNob3IiLCJwYXN0ZSIsIkNvbW1hbmRCYXIiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiZSIsImNvbW1hbmRzIiwiYnV0dG9ucyIsInN0YXRlIiwiaG90a2V5cyIsImVsZW1lbnQiLCJ0YWdOYW1lIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImJvZHkiLCJjcmVhdGVDb21tYW5kQmFyRWxlbWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVLZXlkb3duIiwic2V0RWRpdG9yIiwicGFyZW50RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb21tYW5kIiwiZWwiLCJhcHBlbmRDaGlsZCIsImNvbW1hbmROYW1lIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5cyIsInNwbGl0IiwibW9kaWZpZXJzIiwibW9kaWZpZXJleHBsYW5hdGlvbiIsImkiLCJsZW5ndGgiLCJwdXNoIiwibWF0Y2giLCJrZXkiLCJ0b0xvd2VyQ2FzZSIsImNvbmNhdCIsImpvaW4iLCJoYW5kbGVDbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzZXRDb21tYW5kU3RhdGUiLCJoYW5kbGVTZWxlY3Rpb24iLCJjb21tYW5kU3RhdGUiLCJ1bmRlZmluZWQiLCJvdXRlciIsIm1vZGlmaWVyIiwiY2hlY2siLCJpdCIsIk1hdGgiLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwid2luZG93Iiwic2VsZiIsImdsb2JhbCIsInRoaXMiLCJGdW5jdGlvbiIsImV4ZWMiLCJlcnJvciIsImZhaWxzIiwicmVxdWlyZSIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiYmluZCIsImhhc093blByb3BlcnR5IiwiTkFUSVZFX0JJTkQiLCJGdW5jdGlvblByb3RvdHlwZSIsInByb3RvdHlwZSIsImNhbGwiLCJ1bmN1cnJ5VGhpc1dpdGhCaW5kIiwiZm4iLCJhcHBseSIsImFyZ3VtZW50cyIsImRvY3VtZW50QWxsIiwiYWxsIiwiSVNfSFRNTEREQSIsIiRkb2N1bWVudEFsbCIsImFyZ3VtZW50IiwiaXNOdWxsT3JVbmRlZmluZWQiLCIkVHlwZUVycm9yIiwiVHlwZUVycm9yIiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsIiRPYmplY3QiLCJ1bmN1cnJ5VGhpcyIsInRvT2JqZWN0IiwiaGFzT3duIiwiREVTQ1JJUFRPUlMiLCJnZXREZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRVhJU1RTIiwiUFJPUEVSIiwic29tZXRoaW5nIiwiQ09ORklHVVJBQkxFIiwiY29uZmlndXJhYmxlIiwidmFsdWUiLCJ3cml0YWJsZSIsImRlZmluZUdsb2JhbFByb3BlcnR5IiwiU0hBUkVEIiwic3RvcmUiLCJpc0NhbGxhYmxlIiwiZnVuY3Rpb25Ub1N0cmluZyIsInRvU3RyaW5nIiwiaW5zcGVjdFNvdXJjZSIsIldlYWtNYXAiLCJTdHJpbmciLCJpc09iamVjdCIsImEiLCIkU3RyaW5nIiwiYUZ1bmN0aW9uIiwibmFtZXNwYWNlIiwibWV0aG9kIiwiaXNQcm90b3R5cGVPZiIsInVzZXJBZ2VudCIsInByb2Nlc3MiLCJEZW5vIiwidmVyc2lvbnMiLCJ2ZXJzaW9uIiwidjgiLCJWOF9WRVJTSU9OIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9sIiwiU3ltYm9sIiwic2hhbSIsIk5BVElWRV9TWU1CT0wiLCJpdGVyYXRvciIsImdldEJ1aWx0SW4iLCJVU0VfU1lNQk9MX0FTX1VJRCIsIiRTeW1ib2wiLCJ0cnlUb1N0cmluZyIsImFDYWxsYWJsZSIsIlYiLCJQIiwiZnVuYyIsImlucHV0IiwicHJlZiIsInZhbCIsInZhbHVlT2YiLCJtb2RlIiwiY29weXJpZ2h0IiwibGljZW5zZSIsInNvdXJjZSIsImlkIiwicG9zdGZpeCIsInJhbmRvbSIsInNoYXJlZCIsInVpZCIsIldlbGxLbm93blN5bWJvbHNTdG9yZSIsImNyZWF0ZVdlbGxLbm93blN5bWJvbCIsIndpdGhvdXRTZXR0ZXIiLCJpc1N5bWJvbCIsImdldE1ldGhvZCIsIm9yZGluYXJ5VG9QcmltaXRpdmUiLCJ3ZWxsS25vd25TeW1ib2wiLCJUT19QUklNSVRJVkUiLCJleG90aWNUb1ByaW0iLCJyZXN1bHQiLCJ0b1ByaW1pdGl2ZSIsIklFOF9ET01fREVGSU5FIiwiVjhfUFJPVE9UWVBFX0RFRklORV9CVUciLCJhbk9iamVjdCIsInRvUHJvcGVydHlLZXkiLCIkZGVmaW5lUHJvcGVydHkiLCIkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRU5VTUVSQUJMRSIsIldSSVRBQkxFIiwiZXhwb3J0cyIsIk8iLCJBdHRyaWJ1dGVzIiwiY3VycmVudCIsImVudW1lcmFibGUiLCJiaXRtYXAiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsIm9iamVjdCIsImYiLCJOQVRJVkVfV0VBS19NQVAiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJzaGFyZWRLZXkiLCJPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCIsInNldCIsImhhcyIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwidHlwZSIsIm1ldGFkYXRhIiwiZmFjYWRlIiwiU1RBVEUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsImdldEludGVybmFsU3RhdGUiLCJzdHJpbmdTbGljZSIsInNsaWNlIiwicmVwbGFjZSIsIkNPTkZJR1VSQUJMRV9MRU5HVEgiLCJURU1QTEFURSIsIm1ha2VCdWlsdEluIiwib3B0aW9ucyIsImdldHRlciIsInNldHRlciIsImFyaXR5IiwidGFyZ2V0IiwiZGVzY3JpcHRvciIsInRoYXQiLCJoYXNJbmRpY2VzIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsImRvdEFsbCIsInVuaWNvZGUiLCJ1bmljb2RlU2V0cyIsInN0aWNreSIsImRlZmluZUJ1aWx0SW5BY2Nlc3NvciIsInJlZ0V4cEZsYWdzIiwiUmVnRXhwIiwiUmVnRXhwUHJvdG90eXBlIiwiRk9SQ0VEIiwiSU5ESUNFU19TVVBQT1JUIiwiY2FsbHMiLCJleHBlY3RlZCIsImFkZEdldHRlciIsImNociIsInBhaXJzIiwicmVwbGFjZW1lbnRzIiwiQVNDSUlQdW5jdHVhdGlvbiIsIk5vdFRyaWdnZXJDaGFyIiwiU2NoZW1lIiwiRW1haWwiLCJIVE1MT3BlblRhZyIsIkhUTUxDbG9zZVRhZyIsIkhUTUxUYWdOYW1lIiwiSFRNTENvbW1lbnQiLCJIVE1MUEkiLCJIVE1MRGVjbGFyYXRpb24iLCJIVE1MQ0RBVEEiLCJIVE1MQXR0cmlidXRlIiwiSFRNTEF0dFZhbHVlIiwiS25vd25UYWciLCJwdW5jdHVhdGlvbkxlYWRpbmciLCJwdW5jdHVhdGlvblRyYWlsaW5nIiwibGluZUdyYW1tYXIiLCJUTUgxIiwicmVnZXhwIiwicmVwbGFjZW1lbnQiLCJUTUgyIiwiVE1IMyIsIlRNSDQiLCJUTUg1IiwiVE1INiIsIlRNQmxvY2txdW90ZSIsIlRNQ29kZUZlbmNlQmFja3RpY2tPcGVuIiwiVE1Db2RlRmVuY2VUaWxkZU9wZW4iLCJUTUNvZGVGZW5jZUJhY2t0aWNrQ2xvc2UiLCJUTUNvZGVGZW5jZVRpbGRlQ2xvc2UiLCJUTUJsYW5rTGluZSIsIlRNU2V0ZXh0SDFNYXJrZXIiLCJUTVNldGV4dEgyTWFya2VyIiwiVE1IUiIsIlRNVUwiLCJUTU9MIiwiVE1JbmRlbnRlZENvZGUiLCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uIiwibGFiZWxQbGFjZWhvbGRlciIsImh0bWxCbG9ja0dyYW1tYXIiLCJzdGFydCIsImVuZCIsInBhcmFJbnRlcnJ1cHQiLCJpbmxpbmVHcmFtbWFyIiwiZXNjYXBlIiwiYXV0b2xpbmsiLCJodG1sIiwibGlua09wZW4iLCJpbWFnZU9wZW4iLCJsaW5rTGFiZWwiLCJkZWZhdWx0IiwicmVwbGFjZW1lbnRSZWdleHAiLCJpbmxpbmVSdWxlcyIsInJ1bGUiLCJyZSIsInN0cmluZyIsImZsYWdzIiwiaHRtbGVzY2FwZSIsInByZSIsInBvc3QiLCJ1bnNldCIsInByZVBhdHRlcm4iLCJwb3N0UGF0dGVybiIsInBhdHRlcm4iLCJoMyIsImg0IiwiaDUiLCJoNiIsIkVkaXRvciIsInRleHRhcmVhIiwibGluZXMiLCJsaW5lRWxlbWVudHMiLCJsaW5lVHlwZXMiLCJsaW5lQ2FwdHVyZXMiLCJsaW5lUmVwbGFjZW1lbnRzIiwibGlua0xhYmVscyIsImxpbmVEaXJ0eSIsImxhc3RDb21tYW5kU3RhdGUiLCJsaXN0ZW5lcnMiLCJjaGFuZ2UiLCJzZWxlY3Rpb24iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInBhcmVudE5vZGUiLCJzdHlsZSIsImRpc3BsYXkiLCJjcmVhdGVFZGl0b3JFbGVtZW50Iiwic2V0Q29udGVudCIsImNvbnRlbnQiLCJjb250ZW50RWRpdGFibGUiLCJ3aGl0ZVNwYWNlIiwid2Via2l0VXNlck1vZGlmeSIsIm5leHRTaWJsaW5nIiwiaW5zZXJ0QmVmb3JlIiwiaGFuZGxlSW5wdXRFdmVudCIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50IiwiaGFuZGxlUGFzdGUiLCJjaGlsZE5vZGVzIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwibGluZU51bSIsImxlIiwiQXJyYXkiLCJ1cGRhdGVGb3JtYXR0aW5nIiwiZmlyZUNoYW5nZSIsImdldENvbnRlbnQiLCJ1cGRhdGVMaW5lVHlwZXMiLCJ1cGRhdGVMaW5rTGFiZWxzIiwiYXBwbHlMaW5lVHlwZXMiLCJsIiwiY2FwdHVyZSIsInN0ciIsInAxIiwicDIiLCJwcm9jZXNzSW5saW5lU3R5bGVzIiwiY29udGVudEhUTUwiLCJyZW1vdmVBdHRyaWJ1dGUiLCJkYXRhc2V0IiwiY29kZUJsb2NrVHlwZSIsImNvZGVCbG9ja1NlcUxlbmd0aCIsImh0bWxCbG9jayIsImxpbmVUeXBlIiwibGluZUNhcHR1cmUiLCJsaW5lUmVwbGFjZW1lbnQiLCJncm91cHMiLCJodG1sQmxvY2tUeXBlIiwiaGVhZGluZ0xpbmUiLCJoZWFkaW5nTGluZVR5cGUiLCJ1cGRhdGVMaW5lQ29udGVudHNBbmRGb3JtYXR0aW5nIiwiY2xlYXJEaXJ0eUZsYWciLCJ1cGRhdGVMaW5lQ29udGVudHMiLCJwYXJzZUxpbmtPckltYWdlIiwib3JpZ2luYWxTdHJpbmciLCJpc0ltYWdlIiwidGV4dE9mZnNldCIsIm9wZW5lciIsInN1YnN0ciIsImN1cnJlbnRPZmZzZXQiLCJicmFja2V0TGV2ZWwiLCJsaW5rVGV4dCIsImxpbmtSZWYiLCJsaW5rRGV0YWlscyIsInRleHRPdXRlciIsImNhcCIsIm5leHRDaGFyIiwidHJpbSIsInBhcmVudGhlc2lzTGV2ZWwiLCJpbmxpbmVPdXRlciIsInZhbGlkIiwibGFiZWwiLCJvdXRwdXQiLCJjaGFyQ291bnQiLCJwcm9jZXNzZWQiLCJzdGFjayIsIm9mZnNldCIsInBvdGVudGlhbExpbmsiLCJwb3RlbnRpYWxJbWFnZSIsImRlbGltQ291bnQiLCJkZWxpbVN0cmluZyIsImN1cnJlbnREZWxpbWl0ZXIiLCJwcmVjZWRpbmciLCJmb2xsb3dpbmciLCJwdW5jdHVhdGlvbkZvbGxvd3MiLCJwdW5jdHVhdGlvblByZWNlZGVzIiwid2hpdGVzcGFjZUZvbGxvd3MiLCJ3aGl0ZXNwYWNlUHJlY2VkZXMiLCJjYW5PcGVuIiwiY2FuQ2xvc2UiLCJzdGFja1BvaW50ZXIiLCJkZWxpbWl0ZXIiLCJlbnRyeSIsInBvcCIsImNvdW50IiwiY29uc3VtZWQiLCJsaW5lRGVsdGEiLCJjaGlsZEVsZW1lbnRDb3VudCIsImZpcnN0Q2hhbmdlZExpbmUiLCJ0ZXh0Q29udGVudCIsImxhc3RDaGFuZ2VkTGluZSIsImxpbmVzVG9EZWxldGUiLCJsaW5lc1RvQWRkIiwic3BsaWNlTGluZXMiLCJsaW5lIiwiY3QiLCJwcm9jZXNzTmV3UGFyYWdyYXBoIiwic2VsIiwiY29udGludWFibGVUeXBlIiwiY2hlY2tMaW5lIiwiY29sIiwicm93IiwicGFyc2VJbnQiLCJnZXRTZWxlY3Rpb24iLCJnZXRBbmNob3IiLCJzdGFydE5vZGUiLCJhbmNob3JOb2RlIiwiZm9jdXNOb2RlIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJjb21wdXRlQ29sdW1uIiwibm9kZSIsInByZXZpb3VzU2libGluZyIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsImNvbXB1dGVOb2RlQW5kT2Zmc2V0IiwiYmluZFJpZ2h0IiwiY2hpbGRyZW5Db21wbGV0ZSIsInJ2Iiwibm9kZVZhbHVlIiwic2V0U2VsZWN0aW9uIiwicmFuZ2UiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0Iiwic2V0RW5kIiwid2luZG93U2VsZWN0aW9uIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJpbnB1dFR5cGUiLCJmaXhOb2RlSGllcmFyY2h5Iiwib3JpZ2luYWxDaGlsZHJlbiIsImZyb20iLCJyZXBsYWNlQ2hpbGQiLCJjaGlsZCIsInBhcmVudCIsIl9sZW4iLCJuZXdDaGlsZHJlbiIsIl9rZXkiLCJmb3JFYWNoIiwibmV3Q2hpbGQiLCJFTEVNRU5UX05PREUiLCJkaXZXcmFwcGVyIiwiZ3JhbmRDaGlsZHJlbiIsInNvbWUiLCJncmFuZENoaWxkIiwiZmlyZVNlbGVjdGlvbiIsInN0YXJ0TGluZSIsImxpbmVzVG9JbnNlcnQiLCJhZGp1c3RMaW5lRWxlbWVudHMiLCJpbnNlcnRlZEJsYW5rIiwiaW5zZXJ0ZWREaXJ0eSIsInNwbGljZSIsInRleHQiLCJvcmlnaW5hbEV2ZW50IiwiY2xpcGJvYXJkRGF0YSIsImdldERhdGEiLCJiZWdpbm5pbmciLCJpbnNlcnRlZExpbmVzIiwibGluZUJlZm9yZSIsImxpbmVFbmQiLCJlbmRDb2xQb3MiLCJjb21wdXRlQ29tbW9uQW5jZXN0b3IiLCJub2RlMSIsIm5vZGUyIiwiYW5jZXN0cnkiLCJ1bnNoaWZ0IiwiYW5jZXN0cnkxIiwiYW5jZXN0cnkyIiwiY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUiLCJpbmNsdWRlcyIsImdldENvbW1hbmRTdGF0ZSIsImNtZCIsIm1hcmt1cE5vZGUiLCJzdGFydENvbCIsImxlbiIsImxlZnQiLCJtaWQiLCJyaWdodCIsImVuZENvbCIsImxlYWRpbmciLCJ0cmFpbGluZyIsImlzQ29sbGFwc2VkIiwiYW5jZXN0b3IiLCJ0b2dnbGVDb21tYW5kU3RhdGUiLCJsaXN0ZW5lciIsImxpbmVzRGlydHkiXSwibWFwcGluZ3MiOiI7Ozs7OztFQUFBLE1BQU1BLEdBQUcsR0FBRztFQUNWQyxFQUFBQSxVQUFVLEVBQUcsQ0FBMFIseVJBQUEsQ0FBQTtFQUN2U0MsRUFBQUEsSUFBSSxFQUFHLENBQXlZLHdZQUFBLENBQUE7RUFDaFpDLEVBQUFBLGdCQUFnQixFQUFHLENBQTBYLHlYQUFBLENBQUE7RUFDN1lDLEVBQUFBLElBQUksRUFBRyxDQUE4VSw2VUFBQSxDQUFBO0VBQ3JWQyxFQUFBQSxFQUFFLEVBQUcsQ0FBK0osOEpBQUEsQ0FBQTtFQUNwS0MsRUFBQUEsRUFBRSxFQUFHLENBQWlLLGdLQUFBLENBQUE7RUFDdEtDLEVBQUFBLEVBQUUsRUFBRyxDQUFnSSwrSEFBQSxDQUFBO0VBQ3JJQyxFQUFBQSxLQUFLLEVBQUcsQ0FBOEgsNkhBQUEsQ0FBQTtFQUN0SUMsRUFBQUEsTUFBTSxFQUFHLENBQWdILCtHQUFBLENBQUE7RUFDekhDLEVBQUFBLElBQUksRUFBRyxDQUEwdUMseXVDQUFBLENBQUE7RUFDanZDQyxFQUFBQSxFQUFFLEVBQUcsQ0FBb3RCLG10QkFBQSxDQUFBO0VBQ3p0QkMsRUFBQUEsYUFB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
|
|
3086
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbInNyYy9zdmcvc3ZnLmpzIiwic3JjL1RpbnlNREVDb21tYW5kQmFyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzIiwic3JjL2dyYW1tYXIuanMiLCJzcmMvVGlueU1ERS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdmcgPSB7XG4gIGJsb2NrcXVvdGU6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxyZWN0IHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiB4PVwiM1wiIHk9XCI0XCIgcnk9XCIxXCIvPjxyZWN0IHJ5PVwiMVwiIHk9XCI0XCIgeD1cIjEwXCIgaGVpZ2h0PVwiNVwiIHdpZHRoPVwiNVwiLz48cGF0aCBkPVwiTTggNi45OTl2M2MwIDEtMSAzLTEgM3MtLjMzMSAxLTEuMzMxIDFoLTFjLTEgMC0uNjY5LTEtLjY2OS0xczEtMiAxLTN2LTN6bTcgMHYzYzAgMS0xIDMtMSAzcy0uMzMxIDEtMS4zMzEgMWgtMWMtMSAwLS42NjktMS0uNjY5LTFzMS0yIDEtM3YtM3pcIi8+PC9zdmc+YCxcbiAgYm9sZDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDZjNCAwIDUtMiA1LTQgMC0xLjMyMi0uNDM0LTIuNjM2LTEuODg1LTMuMzgxQzEzLjc3MiA3Ljg4NSAxNCA2Ljk0NSAxNCA2YzAtMi0xLTQtNS00em0xIDJoNGMxLjY2OCAwIDIuMzIuMzkzIDIuNi42NzIuMjguMjc5LjQuNjYyLjQgMS4zMjhzLS4xMiAxLjA1Ny0uNCAxLjMzOGMtLjI3NS4yNzQtMS4wMTQuNjQ2LTIuNi42NjJINXptNSA2YzEuNjY2LjAwNSAyLjMxOC4zODggMi41OTYuNjY2LjI3Ny4yNzguNDA0LjY2Ny40MDQgMS4zMzRzLS4xMjcgMS4wNi0uNDA0IDEuMzM4Yy0uMjc4LjI3OC0uOTMuNjYtMi41OTYuNjYybC00Ljk5Mi4wMDRMNSAxMHpcIi8+PC9zdmc+YCxcbiAgY2xlYXJfZm9ybWF0dGluZzogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMS4wMyAxYTEgMSAwIDAwLS43NC4zbC05IDlhMSAxIDAgMDAwIDEuNGw0IDRBMSAxIDAgMDA2IDE2aDJhMSAxIDAgMDAuNy0uM2w4LThhMSAxIDAgMDAwLTEuNGwtNS01YTEgMSAwIDAwLS42Ny0uM3pNOC43IDUuN2wzLjU4IDMuNkw3LjYgMTRINi40bC0zLTMgNS4zLTUuM3pcIi8+PHJlY3Qgcnk9XCIuOFwiIHJ4PVwiLjhcIiB5PVwiMTRcIiB4PVwiMTZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIyXCIvPjxyZWN0IHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiB4PVwiMTNcIiB5PVwiMTRcIiByeD1cIi44XCIgcnk9XCIuOFwiLz48cmVjdCByeT1cIi44XCIgcng9XCIuOFwiIHk9XCIxNFwiIHg9XCIxMFwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjJcIi8+PC9zdmc+YCxcbiAgY29kZTogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMy41IDIuOTk0YS41LjUgMCAwMC0uNS41LjUuNSAwIDAwMCAuMDM0VjQuNTNhNS45OTMgNS45OTMgMCAwMC03LjQ1MS0uNDQ1QTYgNiAwIDEwMTIuNDUgMTMuOWE1Ljk5IDUuOTkgMCAwMDEuMzQ2LTEuMzM0LjUuNSAwIDAwLjA5Ni0uMTAxLjUuNSAwIDAwLS4xMi0uNjk4LjUuNSAwIDAwLS42OTcuMTJsLS4wMDQtLjAwNWE1IDUgMCAwMS0xLjE5NyAxLjIgNSA1IDAgMTExLjIxNS02Ljk2NS41LjUgMCAwMC42OTcuMTIuNS41IDAgMDAuMjExLS40NFY0Ljc0NUgxNFYzLjQ5M2EuNS41IDAgMDAtLjUtLjV6XCIvPjwvc3ZnPmAsXG4gIGgxOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTMgMnMwLTEgMS0xaDFjMSAwIDEgMSAxIDF2Nmg2VjJzMC0xIDEtMWgxYzEgMCAxIDEgMSAxdjE0czAgMS0xIDFoLTFjLTEgMC0xLTEtMS0xdi02SDZ2NnMwIDEtMSAxSDRjLTEgMC0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBoMjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJzMC0xIDEtMSAxIDEgMSAxdjZjMS0xIDItMSA0LTEgMyAwIDQgMiA0IDR2NXMwIDEtMSAxLTEtMS0xLTF2LTVjMC0xLjA5NC0xLTItMi0yLTIgMC0zIDAtNCAydjVzMCAxLTEgMS0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBocjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxOFwiIHN0eWxlPVwiZm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO21hcmtlcjpub25lXCIvPjwvc3ZnPmAsXG4gIGltYWdlOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTEgMnYxNGgxNlYySDF6bTIgMmgxMnY3bC0zLTMtNCA0LTItMi0zIDNWNHpcIi8+PGNpcmNsZSByPVwiMS41XCIgY3k9XCI2LjVcIiBjeD1cIjUuNVwiLz48L3N2Zz5gLFxuICBpdGFsaWM6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxwYXRoIGQ9XCJNOSAyYTEgMSAwIDAwMCAyTDcgMTRhMSAxIDAgMTAwIDJoMmExIDEgMCAwMDAtMmwyLTEwYTEgMSAwIDEwMC0yelwiLz48L3N2Zz5gLFxuICBsaW5rOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTkuMDcgNS4xOGEzLjkgMy45IDAgMDAtMS41Mi40M0M2LjMxIDYuMjIgNS4zIDcuMjkgNC4zIDguMjljLTEgMS0yLjA3IDIuMDItMi42OCAzLjI2LS4zMS42Mi0uNSAxLjMzLS40MSAyLjA3LjA5Ljc1LjQ4IDEuNDcgMS4xIDIuMDkuNjEuNjEgMS4zMyAxIDIuMDggMS4xLjc0LjA5IDEuNDUtLjEgMi4wNy0uNDIgMS4yNC0uNjEgMi4yNi0xLjY4IDMuMjYtMi42OC40Ni0uNDcuOTQtLjk0IDEuMzktMS40NGwtLjQzLjI2Yy0uNjguMzQtMS40OS41Ni0yLjM2LjQ2LS4yLS4wMy0uNC0uMDgtLjYtLjE0LS43OS43Ni0xLjU1IDEuNDUtMi4xNiAxLjc2LS4zOC4xOS0uNjcuMjQtLjkyLjIxLS4yNi0uMDMtLjU0LS4xNC0uOTItLjUzLS4zOS0uMzgtLjUtLjY2LS41My0uOTEtLjAzLS4yNi4wMi0uNTUuMjEtLjkzLjM5LS43NiAxLjMyLTEuNzQgMi4zMi0yLjc0IDEtMSAxLjk4LTEuOTMgMi43NC0yLjMyLjM4LS4xOS42Ny0uMjQuOTMtLjIxLjI1LjAzLjUzLjE0LjkxLjUzLjM5LjM4LjUuNjYuNTMuOTJ2LjA2bDEuMTItMS4wNi40NC0uNDdjLS4xOC0uMy0uNC0uNi0uNjctLjg3LS42Mi0uNjEtMS4zNC0xLTIuMDktMS4xYTMuMDggMy4wOCAwIDAwLS41NS0uMDF6XCIvPjxwYXRoIGQ9XCJNMTMuMDcuODZhMy45IDMuOSAwIDAwLTEuNTIuNDNjLTEuMjQuNjItMi4yNiAxLjY5LTMuMjYgMi42OS0uNDYuNDctLjk0Ljk0LTEuMzkgMS40My4xNS0uMDguMjgtLjE4LjQzLS4yNWE0LjQgNC40IDAgMDEyLjM2LS40NmMuMi4wMi40LjA3LjYuMTQuNzktLjc3IDEuNTUtMS40NiAyLjE2LTEuNzYuMzgtLjE5LjY3LS4yNS45My0uMjEuMjUuMDMuNTMuMTQuOTEuNTIuMzkuMzguNS42Ni41My45Mi4wMy4yNi0uMDIuNTUtLjIxLjkzLS4zOS43Ni0xLjMyIDEuNzQtMi4zMiAyLjc0LTEgMS0xLjk4IDEuOTMtMi43NCAyLjMxLS4zOC4yLS42Ny4yNS0uOTMuMjItLjI1LS4wNC0uNTMtLjE1LS45MS0uNTMtLjM5LS4zOC0uNS0uNjYtLjUzLS45MlY5Yy0uMzYuMzMtLjczLjY3LTEuMTIgMS4wNmwtLjQzLjQ2Yy4xNy4zLjQuNi42Ni44Ny42Mi42MiAxLjM0IDEgMi4wOCAxLjEuNzUuMSAxLjQ2LS4xIDIuMDgtLjQxIDEuMjQtLjYyIDIuMjYtMS42OSAzLjI2LTIuNjlzMi4wNy0yLjAyIDIuNjgtMy4yNmMuMzEtLjYyLjUtMS4zMi40MS0yLjA3YTMuNjMgMy42MyAwIDAwLTEuMS0yLjA4Yy0uNjEtLjYyLTEuMzMtMS0yLjA3LTEuMWEzLjA4IDMuMDggMCAwMC0uNTYtLjAyelwiLz48L3N2Zz5gLFxuICBvbDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xLjUgN2EuNS41IDAgMTAwIDFoMWEuNS41IDAgMDEuNS41YzAgLjE2NC0uMDguMzEtLjE0LjM1NWwtMS42NTUgMS4yNUEuNDkyLjQ5MiAwIDAwMSAxMC41YS41LjUgMCAwMC41LjVoMmEuNS41IDAgMDAwLTFIM2wuMzk4LS4yOTlBMS41IDEuNSAwIDAwMi41IDd6XCIvPjxwYXRoIGQ9XCJNMS41IDEyYy0uNjY3IDAtLjY2NyAxIDAgMWgxLjI1Yy4zMzMgMCAuMzMzLjUgMCAuNUgyLjVjLS42NjcgMC0uNjY3IDEgMCAxaC4yNWMuMzMzIDAgLjMzMy41IDAgLjVIMS41Yy0uNjY3IDAtLjY2NyAxIDAgMWgxYy4zOTggMCAuNzgtLjEzMSAxLjA2LS4zNjUuMjgyLS4yMzUuNDQtLjU1NC40NC0uODg1YTEuMTIxIDEuMTIxIDAgMDAtLjMwMy0uNzVjLjE5MS0uMjA0LjMtLjQ3LjMwMy0uNzUgMC0uMzMyLS4xNTgtLjY1MS0uNDQtLjg4NS0uMy0uMjQxLS42NzUtLjM3LTEuMDYtLjM2NXpcIi8+PHJlY3QgeT1cIjEzXCIgeD1cIjZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxMlwiIHJ5PVwiMVwiLz48cmVjdCByeT1cIjFcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMlwiIHg9XCI2XCIgeT1cIjhcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxwYXRoIGQ9XCJNMS41IDJhLjUuNSAwIDEwMCAxSDJ2MmgtLjVhLjUuNSAwIDEwMCAxaDJhLjUuNSAwIDEwMC0xSDNWMi41YzAtLjI3Ny0uMjIzLS41LS41LS41elwiLz48L3N2Zz5gLFxuICBzdHJpa2V0aHJvdWdoOiBgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj48cGF0aCBkPVwiTTEwIDJDNiAyIDQgNCA0IDZjMCAuMzM4LjA4LjY3Mi4xOTMgMWgyLjM0QzYuMTEzIDYuNjI5IDYgNi4yOTUgNiA2YzAtLjMzNC4xMTctLjcyNS42OTEtMS4xNTRDNy4yNjUgNC40MTYgOC4zMzEgNCAxMCA0aDNhMSAxIDAgMDAwLTJ6bTEuNDc3IDljLjQxMy4zNjguNTIzLjcwNi41MjMgMSAwIC4zMzQtLjEyNy43MTItLjcwMSAxLjE0My0uNTc1LjQzLTEuNjMyLjg1LTMuMjk5Ljg1N2wtMS4wMDYuMDA3VjE0SDVhMSAxIDAgMDAwIDJoM2M0IDAgNi0yIDYtNCAwLS4zMzgtLjA4MS0uNjcyLS4xOTUtMXpcIi8+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiB4PVwiMVwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjE2XCIvPjwvc3ZnPmAsXG4gIHVsOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48Y2lyY2xlIGN4PVwiMlwiIGN5PVwiOVwiIHI9XCIyXCIvPjxjaXJjbGUgY3k9XCI0XCIgY3g9XCIyXCIgcj1cIjJcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxjaXJjbGUgY3g9XCIyXCIgY3k9XCIxNFwiIHI9XCIyXCIvPjxyZWN0IHJ5PVwiMVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIyXCIgeD1cIjZcIiB5PVwiOFwiLz48cmVjdCB5PVwiMTNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjwvc3ZnPmBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN2ZzsiLCJpbXBvcnQgc3ZnIGZyb20gJy4vc3ZnL3N2Zyc7XG5cbmNvbnN0IGlzTWFjTGlrZSA9IC8oTWFjfGlQaG9uZXxpUG9kfGlQYWQpL2kudGVzdCh0eXBlb2YgbmF2aWdhdG9yICE9PSBcInVuZGVmaW5lZFwiID8gbmF2aWdhdG9yLnBsYXRmb3JtIDogXCJcIik7XG5cbmNvbnN0IERlZmF1bHRDb21tYW5kcyA9IHtcbiAgJ2JvbGQnOiB7XG4gICAgbmFtZTogJ2JvbGQnLFxuICAgIGFjdGlvbjogJ2JvbGQnLFxuICAgIGlubmVySFRNTDogc3ZnLmJvbGQsXG4gICAgdGl0bGU6ICdCb2xkJyxcbiAgICBob3RrZXk6ICdNb2QtQicsXG4gIH0sXG4gICdpdGFsaWMnOiB7XG4gICAgbmFtZTogJ2l0YWxpYycsXG4gICAgYWN0aW9uOiAnaXRhbGljJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5pdGFsaWMsXG4gICAgdGl0bGU6ICdJdGFsaWMnLFxuICAgIGhvdGtleTogJ01vZC1JJyxcbiAgfSxcbiAgJ3N0cmlrZXRocm91Z2gnOiB7XG4gICAgbmFtZTogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGFjdGlvbjogJ3N0cmlrZXRocm91Z2gnLFxuICAgIGlubmVySFRNTDogc3ZnLnN0cmlrZXRocm91Z2gsXG4gICAgdGl0bGU6ICdTdHJpa2V0aHJvdWdoJyxcbiAgICBob3RrZXk6ICdNb2QyLVNoaWZ0LTUnLFxuICB9LFxuICAnY29kZSc6IHtcbiAgICBuYW1lOiAnY29kZScsXG4gICAgYWN0aW9uOiAnY29kZScsXG4gICAgaW5uZXJIVE1MOiBzdmcuY29kZSxcbiAgICB0aXRsZTogJ0Zvcm1hdCBhcyBjb2RlJyxcbiAgfSxcbiAgJ2gxJzoge1xuICAgIG5hbWU6ICdoMScsXG4gICAgYWN0aW9uOiAnaDEnLFxuICAgIGlubmVySFRNTDogc3ZnLmgxLFxuICAgIHRpdGxlOiAnTGV2ZWwgMSBoZWFkaW5nJyxcbiAgICBob3RrZXk6ICdNb2QtU2hpZnQtMScsXG4gIH0sXG4gICdoMic6IHtcbiAgICBuYW1lOiAnaDInLFxuICAgIGFjdGlvbjogJ2gyJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5oMixcbiAgICB0aXRsZTogJ0xldmVsIDIgaGVhZGluZycsXG4gICAgaG90a2V5OiAnTW9kLVNoaWZ0LTInLFxuICB9LFxuICAndWwnOiB7XG4gICAgbmFtZTogJ3VsJyxcbiAgICBhY3Rpb246ICd1bCcsXG4gICAgaW5uZXJIVE1MOiBzdmcudWwsXG4gICAgdGl0bGU6ICdCdWxsZXRlZCBsaXN0JyxcbiAgfSxcbiAgJ29sJzoge1xuICAgIG5hbWU6ICdvbCcsXG4gICAgYWN0aW9uOiAnb2wnLFxuICAgIGlubmVySFRNTDogc3ZnLm9sLFxuICAgIHRpdGxlOiAnTnVtYmVyZWQgbGlzdCcsXG4gIH0sXG4gICdibG9ja3F1b3RlJzoge1xuICAgIG5hbWU6ICdibG9ja3F1b3RlJyxcbiAgICBhY3Rpb246ICdibG9ja3F1b3RlJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5ibG9ja3F1b3RlLFxuICAgIHRpdGxlOiAnUXVvdGUnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtUScsXG4gIH0sXG4gICdpbnNlcnRMaW5rJzoge1xuICAgIG5hbWU6ICdpbnNlcnRMaW5rJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJ1snLCAnXSgpJyl9LFxuICAgIGVuYWJsZWQ6IChlZGl0b3IsIGZvY3VzLCBhbmNob3IpID0+IGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpID8gZmFsc2UgOiBudWxsLFxuICAgIGlubmVySFRNTDogc3ZnLmxpbmssXG4gICAgdGl0bGU6ICdJbnNlcnQgbGluaycsXG4gICAgaG90a2V5OiAnTW9kLUsnLFxuICB9LFxuICAnaW5zZXJ0SW1hZ2UnOiB7XG4gICAgbmFtZTogJ2luc2VydEltYWdlJyxcbiAgICBhY3Rpb246IChlZGl0b3IpID0+IHtpZiAoZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSkgZWRpdG9yLndyYXBTZWxlY3Rpb24oJyFbJywgJ10oKScpfSxcbiAgICBlbmFibGVkOiAoZWRpdG9yLCBmb2N1cywgYW5jaG9yKSA9PiBlZGl0b3IuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKSA/IGZhbHNlIDogbnVsbCxcbiAgICBpbm5lckhUTUw6IHN2Zy5pbWFnZSxcbiAgICB0aXRsZTogJ0luc2VydCBpbWFnZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1JJyxcbiAgfSxcbiAgJ2hyJzoge1xuICAgIG5hbWU6ICdocicsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiBlZGl0b3IucGFzdGUoJ1xcbioqKlxcbicpLFxuICAgIGVuYWJsZWQ6ICgpID0+IGZhbHNlLFxuICAgIGlubmVySFRNTDogc3ZnLmhyLFxuICAgIHRpdGxlOiAnSW5zZXJ0IGhvcml6b250YWwgbGluZScsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC1MJ1xuICB9XG59XG5cblxuY2xhc3MgQ29tbWFuZEJhciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgdGhpcy5lID0gbnVsbDtcbiAgICB0aGlzLmVkaXRvciA9IG51bGw7XG4gICAgdGhpcy5jb21tYW5kcyA9IFtdO1xuICAgIHRoaXMuYnV0dG9ucyA9IHt9O1xuICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICB0aGlzLmhvdGtleXMgPSBbXTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmJvZHk7IFxuICAgIH1cbiAgICB0aGlzLmNyZWF0ZUNvbW1hbmRCYXJFbGVtZW50KGVsZW1lbnQsIHByb3BzLmNvbW1hbmRzIHx8IFsnYm9sZCcsICdpdGFsaWMnLCAnc3RyaWtldGhyb3VnaCcsICd8JywgJ2NvZGUnLCAnfCcsICdoMScsICdoMicsICd8JywgJ3VsJywgJ29sJywgJ3wnLCAnYmxvY2txdW90ZScsICdocicsICd8JywgJ2luc2VydExpbmsnLCAnaW5zZXJ0SW1hZ2UnXSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUtleWRvd24oZSkpO1xuICAgIGlmIChwcm9wcy5lZGl0b3IpIHRoaXMuc2V0RWRpdG9yKHByb3BzLmVkaXRvcik7XG4gIH1cblxuICBjcmVhdGVDb21tYW5kQmFyRWxlbWVudChwYXJlbnRFbGVtZW50LCBjb21tYW5kcykge1xuICAgIHRoaXMuZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQmFyJztcblxuICAgIGZvciAobGV0IGNvbW1hbmQgb2YgY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kID09ICd8Jykge1xuICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gJ1RNQ29tbWFuZERpdmlkZXInO1xuICAgICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGNvbW1hbmROYW1lO1xuICAgICAgICBpZiAodHlwZW9mIGNvbW1hbmQgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIC8vIFJlZmVyZW5jZSB0byBkZWZhdWx0IGNvbW1hbmRcblxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZF0pIHtcbiAgICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZDtcbiAgICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0gRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXTtcblxuICAgICAgICAgICAgXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29tbWFuZCA9PSBcIm9iamVjdFwiICYmIGNvbW1hbmQubmFtZSkge1xuICAgICAgICAgIGNvbW1hbmROYW1lID0gY29tbWFuZC5uYW1lO1xuICAgICAgICAgIHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdID0ge307IFxuICAgICAgICAgIGlmIChEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKSBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBEZWZhdWx0Q29tbWFuZHNbY29tbWFuZE5hbWVdKTtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLCBjb21tYW5kKTtcbiAgICAgICAgXG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0aXRsZSA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLnRpdGxlIHx8IGNvbW1hbmROYW1lO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5ob3RrZXkpIHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uaG90a2V5LnNwbGl0KCctJyk7XG4gICAgICAgICAgLy8gY29uc3RydWN0IG1vZGlmaWVyc1xuICAgICAgICAgIGxldCBtb2RpZmllcnMgPSBbXTtcbiAgICAgICAgICBsZXQgbW9kaWZpZXJleHBsYW5hdGlvbiA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHN3aXRjaCAoa2V5c1tpXSkge1xuICAgICAgICAgICAgICBjYXNlICdDdHJsJzogbW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7IGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdDbWQnOiBtb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnQWx0JzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnT3B0aW9uJzogbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMpScpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnV2luJzogbW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfiip4gV2luJyk7IGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgJ1NoaWZ0JzogIG1vZGlmaWVycy5wdXNoKCdzaGlmdEtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KHpycpOyBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlICdNb2QnOiAvLyBNb2QgaXMgYSBjb252ZW5pZW5jZSBtZWNoYW5pc206IEN0cmwgb24gV2luZG93cywgQ21kIG9uIE1hY1xuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIHttb2RpZmllcnMucHVzaCgnbWV0YUtleScpOyBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMmCcpO30gXG4gICAgICAgICAgICAgICAgZWxzZSB7bW9kaWZpZXJzLnB1c2goJ2N0cmxLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdDdHJsJyk7fSBcbiAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgICAgICAgIGNhc2UgJ01vZDInOiBcbiAgICAgICAgICAgICAgICBtb2RpZmllcnMucHVzaCgnYWx0S2V5Jyk7IFxuICAgICAgICAgICAgICAgIGlmIChpc01hY0xpa2UpIG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgn4oylJyk7XG4gICAgICAgICAgICAgICAgZWxzZSBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ0FsdCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBNb2QyIGlzIGEgY29udmVuaWVuY2UgbWVjaGFuaXNtOiBBbHQgb24gV2luZG93cywgT3B0aW9uIG9uIE1hY1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goa2V5c1trZXlzLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICBsZXQgaG90a2V5ID0ge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBtb2RpZmllcnM6IG1vZGlmaWVycyxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNvbW1hbmROYW1lLFxuICAgICAgICAgIH07XG4gICAgICAgICAgLy8gVE9ETyBSaWdodCBub3cgdGhpcyBpcyB3b3JraW5nIG9ubHkgZm9yIGxldHRlcnMgYW5kIG51bWJlcnNcbiAgICAgICAgICBpZiAoa2V5c1trZXlzLmxlbmd0aCAtIDFdLm1hdGNoKC9eWzAtOV0kLykpIHtcbiAgICAgICAgICAgIGhvdGtleS5jb2RlID0gYERpZ2l0JHtrZXlzW2tleXMubGVuZ3RoIC0gMV19YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaG90a2V5LmtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmhvdGtleXMucHVzaChob3RrZXkpO1xuICAgICAgICAgIHRpdGxlID0gdGl0bGUuY29uY2F0KGAgKCR7bW9kaWZpZXJleHBsYW5hdGlvbi5qb2luKCcrJyl9KWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmRCdXR0b24gVE1Db21tYW5kQnV0dG9uX0Rpc2FibGVkJztcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS50aXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmlubmVySFRNTCA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLmlubmVySFRNTDtcblxuICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB0aGlzLmhhbmRsZUNsaWNrKGNvbW1hbmROYW1lLCBlKSk7XG4gICAgICAgIHRoaXMuZS5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvbnNbY29tbWFuZE5hbWVdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICB9XG5cbiAgaGFuZGxlQ2xpY2soY29tbWFuZE5hbWUsIGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmVkaXRvcikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZE5hbWVdID09PSBmYWxzZSkgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCB0cnVlKTtcbiAgICAgIGVsc2UgdGhpcy5lZGl0b3Iuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmROYW1lLCBmYWxzZSk7ICBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5hY3Rpb24odGhpcy5lZGl0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHNldEVkaXRvcihlZGl0b3IpIHtcbiAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0aW9uJywgKGUpID0+IHRoaXMuaGFuZGxlU2VsZWN0aW9uKGUpKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdGlvbihldmVudCkge1xuICAgIGlmIChldmVudC5jb21tYW5kU3RhdGUpIHtcbiAgICAgIGZvciAobGV0IGNvbW1hbmQgaW4gdGhpcy5jb21tYW5kcykge1xuICAgICAgICBpZiAoZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKSB0aGlzLnN0YXRlW2NvbW1hbmRdID0gdGhpcy5jb21tYW5kc1tjb21tYW5kXS5lbmFibGVkKHRoaXMuZWRpdG9yLCBldmVudC5mb2N1cywgZXZlbnQuYW5jaG9yKTtcbiAgICAgICAgICBlbHNlIHRoaXMuc3RhdGVbY29tbWFuZF0gPSBldmVudC5mb2N1cyA/IGZhbHNlIDogbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnN0YXRlW2NvbW1hbmRdID0gZXZlbnQuY29tbWFuZFN0YXRlW2NvbW1hbmRdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbY29tbWFuZF0gPT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZF0uY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fQWN0aXZlJztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlW2NvbW1hbmRdID09PSBmYWxzZSkge1xuICAgICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kXS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9JbmFjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmRdLmNsYXNzTmFtZSA9ICAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9EaXNhYmxlZCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlkb3duKGV2ZW50KSB7XG4gICAgb3V0ZXI6IGZvciAobGV0IGhvdGtleSBvZiB0aGlzLmhvdGtleXMpIHtcbiAgICAgIGlmICgoaG90a2V5LmtleSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PSBob3RrZXkua2V5KSB8fCAoaG90a2V5LmNvZGUgJiYgZXZlbnQuY29kZSA9PSBob3RrZXkuY29kZSkpIHtcbiAgICAgICAgLy8gS2V5IG1hdGNoZXMgaG90a2V5LiBMb29rIGZvciBhbnkgcmVxdWlyZWQgbW9kaWZpZXIgdGhhdCB3YXNuJ3QgcHJlc3NlZFxuICAgICAgICBmb3IgKGxldCBtb2RpZmllciBvZiBob3RrZXkubW9kaWZpZXJzKSB7XG4gICAgICAgICAgaWYgKCFldmVudFttb2RpZmllcl0pIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5dGhpbmcgbWF0Y2hlcy5cbiAgICAgICAgdGhpcy5oYW5kbGVDbGljayhob3RrZXkuY29tbWFuZCwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1hbmRCYXI7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IHRoaXMgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3Rcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBJU19IVE1MRERBID0gdHlwZW9mIGRvY3VtZW50QWxsID09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50QWxsICE9PSB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhbGw6IGRvY3VtZW50QWxsLFxuICBJU19IVE1MRERBOiBJU19IVE1MRERBXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkb2N1bWVudEFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1hbGwnKTtcblxudmFyIGRvY3VtZW50QWxsID0gJGRvY3VtZW50QWxsLmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyB3ZSBjYW4ndCB1c2UganVzdCBgaXQgPT0gbnVsbGAgc2luY2Ugb2YgYGRvY3VtZW50LmFsbGAgc3BlY2lhbCBjYXNlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90LWFlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSBudWxsIHx8IGl0ID09PSB1bmRlZmluZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpc051bGxPclVuZGVmaW5lZChpdCkpIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gJE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKFdlYWtNYXApKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgJGRvY3VtZW50QWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWFsbCcpO1xuXG52YXIgZG9jdW1lbnRBbGwgPSAkZG9jdW1lbnRBbGwuYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICRkb2N1bWVudEFsbC5JU19IVE1MRERBID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpIHx8IGl0ID09PSBkb2N1bWVudEFsbDtcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogaXNDYWxsYWJsZShpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmtzIHRvIElFOCBmb3IgaXRzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBWOCB+IENocm9tZSAzNi1cbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMzMzRcbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9LCAncHJvdG90eXBlJywge1xuICAgIHZhbHVlOiA0MixcbiAgICB3cml0YWJsZTogZmFsc2VcbiAgfSkucHJvdG90eXBlICE9PSA0Mjtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pIDogZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoe30uaXNQcm90b3R5cGVPZik7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBuYXZpZ2F0b3IgIT0gJ3VuZGVmaW5lZCcgJiYgU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpIHx8ICcnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDYWxsYWJsZShhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBpc051bGxPclVuZGVmaW5lZChmdW5jKSA/IHVuZGVmaW5lZCA6IGFDYWxsYWJsZShmdW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4zMy4wJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE0LTIwMjMgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknLFxuICBsaWNlbnNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zMy4wL0xJQ0VOU0UnLFxuICBzb3VyY2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcydcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sWydmb3InXSB8fCBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIGhhc093bihTeW1ib2wsIG5hbWUpXG4gICAgICA/IFN5bWJvbFtuYW1lXVxuICAgICAgOiBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1ZycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG52YXIgJGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIEVOVU1FUkFCTEUgPSAnZW51bWVyYWJsZSc7XG52YXIgQ09ORklHVVJBQkxFID0gJ2NvbmZpZ3VyYWJsZSc7XG52YXIgV1JJVEFCTEUgPSAnd3JpdGFibGUnO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID8gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAodHlwZW9mIE8gPT09ICdmdW5jdGlvbicgJiYgUCA9PT0gJ3Byb3RvdHlwZScgJiYgJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzICYmIFdSSVRBQkxFIGluIEF0dHJpYnV0ZXMgJiYgIUF0dHJpYnV0ZXNbV1JJVEFCTEVdKSB7XG4gICAgdmFyIGN1cnJlbnQgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICAgIGlmIChjdXJyZW50ICYmIGN1cnJlbnRbV1JJVEFCTEVdKSB7XG4gICAgICBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgICAgIEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogQ09ORklHVVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0NPTkZJR1VSQUJMRV0gOiBjdXJyZW50W0NPTkZJR1VSQUJMRV0sXG4gICAgICAgIGVudW1lcmFibGU6IEVOVU1FUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbRU5VTUVSQUJMRV0gOiBjdXJyZW50W0VOVU1FUkFCTEVdLFxuICAgICAgICB3cml0YWJsZTogZmFsc2VcbiAgICAgIH07XG4gICAgfVxuICB9IHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG59IDogJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gREVTQ1JJUFRPUlMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVAgfHwgc2hhcmVkLnN0YXRlKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc3RvcmUuZ2V0ID0gc3RvcmUuZ2V0O1xuICBzdG9yZS5oYXMgPSBzdG9yZS5oYXM7XG4gIHN0b3JlLnNldCA9IHN0b3JlLnNldDtcbiAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoc3RvcmUuaGFzKGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgc3RvcmUuc2V0KGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuZ2V0KGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmhhcyhpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXNPd24oaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICBpZiAoZGVzY3JpcHRvci5nZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3IuZ2V0LCBuYW1lLCB7IGdldHRlcjogdHJ1ZSB9KTtcbiAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLnNldCwgbmFtZSwgeyBzZXR0ZXI6IHRydWUgfSk7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5oYXNJbmRpY2VzKSByZXN1bHQgKz0gJ2QnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC51bmljb2RlU2V0cykgcmVzdWx0ICs9ICd2JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgcmVnRXhwRmxhZ3MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gYmFiZWwtbWluaWZ5IGFuZCBDbG9zdXJlIENvbXBpbGVyIHRyYW5zcGlsZXMgUmVnRXhwKCcuJywgJ2QnKSAtPiAvLi9kIGFuZCBpdCBjYXVzZXMgU3ludGF4RXJyb3JcbnZhciBSZWdFeHAgPSBnbG9iYWwuUmVnRXhwO1xudmFyIFJlZ0V4cFByb3RvdHlwZSA9IFJlZ0V4cC5wcm90b3R5cGU7XG5cbnZhciBGT1JDRUQgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBJTkRJQ0VTX1NVUFBPUlQgPSB0cnVlO1xuICB0cnkge1xuICAgIFJlZ0V4cCgnLicsICdkJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgSU5ESUNFU19TVVBQT1JUID0gZmFsc2U7XG4gIH1cblxuICB2YXIgTyA9IHt9O1xuICAvLyBtb2Rlcm4gVjggYnVnXG4gIHZhciBjYWxscyA9ICcnO1xuICB2YXIgZXhwZWN0ZWQgPSBJTkRJQ0VTX1NVUFBPUlQgPyAnZGdpbXN5JyA6ICdnaW1zeSc7XG5cbiAgdmFyIGFkZEdldHRlciA9IGZ1bmN0aW9uIChrZXksIGNocikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBrZXksIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxscyArPSBjaHI7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IH0pO1xuICB9O1xuXG4gIHZhciBwYWlycyA9IHtcbiAgICBkb3RBbGw6ICdzJyxcbiAgICBnbG9iYWw6ICdnJyxcbiAgICBpZ25vcmVDYXNlOiAnaScsXG4gICAgbXVsdGlsaW5lOiAnbScsXG4gICAgc3RpY2t5OiAneSdcbiAgfTtcblxuICBpZiAoSU5ESUNFU19TVVBQT1JUKSBwYWlycy5oYXNJbmRpY2VzID0gJ2QnO1xuXG4gIGZvciAodmFyIGtleSBpbiBwYWlycykgYWRkR2V0dGVyKGtleSwgcGFpcnNba2V5XSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHBQcm90b3R5cGUsICdmbGFncycpLmdldC5jYWxsKE8pO1xuXG4gIHJldHVybiByZXN1bHQgIT09IGV4cGVjdGVkIHx8IGNhbGxzICE9PSBleHBlY3RlZDtcbn0pO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS5mbGFnc2AgZ2V0dGVyXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5pZiAoRk9SQ0VEKSBkZWZpbmVCdWlsdEluQWNjZXNzb3IoUmVnRXhwUHJvdG90eXBlLCAnZmxhZ3MnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiByZWdFeHBGbGFnc1xufSk7XG4iLCIvLyBjb25zdCByZXBsYWNlbWVudHMgPSB7XG4vLyAgIEFTQ0lJUHVuY3R1YXRpb246ICchXCIjJCUmXFwnKCkqKyxcXFxcLS4vOjs8PT4/QFxcXFxbXFxcXF1eX2B7fH1+Jyxcbi8vICAgVHJpZ2dlckNoYXJzOiAnYF9cXCpcXFtcXF1cXChcXCknLFxuLy8gICBTY2hlbWU6IGBbQS1aYS16XVtBLVphLXowLTlcXCtcXC5cXC1dezEsMzF9YCxcbi8vICAgRW1haWw6IGBbYS16QS1aMC05LiEjJCUmJyorLz0/Xl9cXGB7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcXFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSpgLCAvLyBGcm9tIENvbW1vbk1hcmsgc3BlY1xuXG4vLyB9XG5jb25zdCByZXBsYWNlbWVudHMgPSB7XG4gIEFTQ0lJUHVuY3R1YXRpb246IC9bIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1eX2B7fH1+XFxcXF0vLCAgXG4gIE5vdFRyaWdnZXJDaGFyOiAvW15gXypbXFxdKCk8PiF+XS8sXG4gIFNjaGVtZTogL1tBLVphLXpdW0EtWmEtejAtOSsuLV17MSwzMX0vLFxuICBFbWFpbDogL1thLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqLywgLy8gRnJvbSBDb21tb25NYXJrIHNwZWNcbiAgSFRNTE9wZW5UYWc6IC88SFRNTFRhZ05hbWUoPzpIVE1MQXR0cmlidXRlKSpcXHMqXFwvPz4vLFxuICBIVE1MQ2xvc2VUYWc6IC88XFwvSFRNTFRhZ05hbWVcXHMqPi8sXG4gIEhUTUxUYWdOYW1lOiAvW0EtWmEtel1bQS1aYS16MC05LV0qLywgXG4gIEhUTUxDb21tZW50OiAvPCEtLSg/OltePi1dfCg/OltePi1dKD86W14tXXwtW14tXSkqW14tXSkpLS0+LyxcbiAgSFRNTFBJOiAvPFxcPyg/OnwufCg/OlteP118XFw/W14+XSkqKVxcPz4vLFxuICBIVE1MRGVjbGFyYXRpb246IC88IVtBLVpdK1xcc1tePl0qPi8sXG4gIEhUTUxDREFUQTogLzwhXFxbQ0RBVEFcXFsuKj9cXF1cXF0+LyxcbiAgSFRNTEF0dHJpYnV0ZTogL1xccytbQS1aYS16XzpdW0EtWmEtejAtOV8uOi1dKig/OkhUTUxBdHRWYWx1ZSk/LyxcbiAgSFRNTEF0dFZhbHVlOiAvXFxzKj1cXHMqKD86KD86J1teJ10qJyl8KD86XCJbXlwiXSpcIil8KD86W15cXHNcIic9PD5gXSspKS8sXG4gIEtub3duVGFnOiAvYWRkcmVzc3xhcnRpY2xlfGFzaWRlfGJhc2V8YmFzZWZvbnR8YmxvY2txdW90ZXxib2R5fGNhcHRpb258Y2VudGVyfGNvbHxjb2xncm91cHxkZHxkZXRhaWxzfGRpYWxvZ3xkaXJ8ZGl2fGRsfGR0fGZpZWxkc2V0fGZpZ2NhcHRpb258ZmlndXJlfGZvb3Rlcnxmb3JtfGZyYW1lfGZyYW1lc2V0fGgxfGgyfGgzfGg0fGg1fGg2fGhlYWR8aGVhZGVyfGhyfGh0bWx8aWZyYW1lfGxlZ2VuZHxsaXxsaW5rfG1haW58bWVudXxtZW51aXRlbXxuYXZ8bm9mcmFtZXN8b2x8b3B0Z3JvdXB8b3B0aW9ufHB8cGFyYW18c2VjdGlvbnxzb3VyY2V8c3VtbWFyeXx0YWJsZXx0Ym9keXx0ZHx0Zm9vdHx0aHx0aGVhZHx0aXRsZXx0cnx0cmFja3x1bC9cbn1cblxuLy8gRnJvbSBDb21tb25NYXJrLmpzLiBcbmNvbnN0IHB1bmN0dWF0aW9uTGVhZGluZyA9IG5ldyBSZWdFeHAoL14oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pLyk7XG5cbmNvbnN0IHB1bmN0dWF0aW9uVHJhaWxpbmcgPSBuZXcgUmVnRXhwKC8oPzpbIVwiIyQlJicoKSorLFxcLS4vOjs8PT4/QFtcXF1cXFxcXl9ge3x9flxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTBBRjBcXHUwREY0XFx1MEU0RlxcdTBFNUFcXHUwRTVCXFx1MEYwNC1cXHUwRjEyXFx1MEYxNFxcdTBGM0EtXFx1MEYzRFxcdTBGODVcXHUwRkQwLVxcdTBGRDRcXHUwRkQ5XFx1MEZEQVxcdTEwNEEtXFx1MTA0RlxcdTEwRkJcXHUxMzYwLVxcdTEzNjhcXHUxNDAwXFx1MTY2RFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNDJcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOVxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REYzQy1cXHVERjNFXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql0pJC8pO1xuXG4vLyBleHBvcnQgY29uc3QgaW5saW5lVHJpZ2dlckNoYXJzID0gbmV3IFJlZ0V4cChgWyR7cmVwbGFjZW1lbnRzLlRyaWdnZXJDaGFyc31dYCk7XG5cbi8qKlxuICogVGhpcyBpcyBDb21tb25NYXJrJ3MgYmxvY2sgZ3JhbW1hciwgYnV0IHdlJ3JlIGlnbm9yaW5nIG5lc3RlZCBibG9ja3MgaGVyZS4gIFxuICovIFxuY29uc3QgbGluZUdyYW1tYXIgPSB7IFxuICBUTUgxOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9I1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDFcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMVwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1IMjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgyXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUgzOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IM1wiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgzXCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg0OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDRcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INFwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INVwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg1XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUg2OiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9IyMjIyMjXFxzKSguKj8pKCg/OlxccysjK1xccyopPykkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INlwiPiQxPC9zcGFuPiQkMjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg2XCI+JDM8L3NwYW4+J1xuICB9LFxuICBUTUJsb2NrcXVvdGU6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30+WyBdPykoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQmxvY2txdW90ZVwiPiQxPC9zcGFuPiQkMidcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja09wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+YGBgYCopXFxzKikoW15gXSo/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZUJhY2t0aWNrXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VUaWxkZU9wZW46IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopXFxzKikoLio/KShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUluZm9TdHJpbmdcIj4kMzwvc3Bhbj4kNCdcbiAgfSxcbiAgVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPmBgYGAqKSkoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VCYWNrdGlja1wiPiQxPC9zcGFuPiQzJ1xuICB9LFxuICBUTUNvZGVGZW5jZVRpbGRlQ2xvc2U6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30oPzxzZXE+fn5+fiopKShcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUNvZGVGZW5jZVRpbGRlXCI+JDE8L3NwYW4+JDMnXG4gIH0sXG4gIFRNQmxhbmtMaW5lOiB7IFxuICAgIHJlZ2V4cDogL14oWyBcXHRdKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICckMCdcbiAgfSxcbiAgVE1TZXRleHRIMU1hcmtlcjogeyBcbiAgICByZWdleHA6IC9eIHswLDN9PStcXHMqJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNU2V0ZXh0SDFNYXJrZXJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNU2V0ZXh0SDJNYXJrZXI6IHsgXG4gICAgcmVnZXhwOiAvXiB7MCwzfS0rXFxzKiQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVNldGV4dEgxTWFya2VyXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTUhSOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KFxcKlsgXFx0XSpcXCpbIFxcdF0qXFwqWyBcXHQqXSopfCgtWyBcXHRdKi1bIFxcdF0qLVsgXFx0LV0qKXwoX1sgXFx0XSpfWyBcXHRdKl9bIFxcdF9dKikpJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSFJcIj4kMDwvc3Bhbj4nXG4gIH0sXG4gIFRNVUw6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31bKyotXSB7MSw0fSkoLiopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNVUxcIj4kMTwvc3Bhbj4kJDInXG4gIH0sXG4gIFRNT0w6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXGR7MSw5fVsuKV0gezEsNH0pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTU9MXCI+JDE8L3NwYW4+JCQyJ1xuICB9LFxuICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRseSBwcmV2ZW50aW5nIHN1Ymxpc3RzIChhbmQgYW55IGNvbnRlbnQgd2l0aGluIGxpc3QgaXRlbXMsIHJlYWxseSkgZnJvbSB3b3JraW5nXG4gIFRNSW5kZW50ZWRDb2RlOiB7IFxuICAgIHJlZ2V4cDogL14oIHs0fXxcXHQpKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUluZGVudGVkQ29kZVwiPiQxPC9zcGFuPiQyJ1xuICB9LFxuICBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uOiB7XG4gICAgLy8gVE9ETzogTGluayBkZXN0aW5hdGlvbiBjYW4ndCBpbmNsdWRlIHVuYmFsYW5jZWQgcGFyYW50aGVzZXMsIGJ1dCB3ZSBqdXN0IGlnbm9yZSB0aGF0IGhlcmUgXG4gICAgcmVnZXhwOiAvXiggezAsM31cXFtcXHMqKShbXlxcc1xcXV0oPzpbXlxcXV18XFxcXFxcXSkqPykoXFxzKlxcXTpcXHMqKSgoPzpbXlxcczw+XSspfCg/OjwoPzpbXjw+XFxcXF18XFxcXC4pKj4pKT8oXFxzKikoKD86XFwoKD86W14oKVxcXFxdfFxcXFwuKSpcXCkpfCg/OlwiKD86W15cIlxcXFxdfFxcXFwuKSpcIil8KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKSk/KFxccyopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNTGlua1JlZmVyZW5jZURlZmluaXRpb25cIj4kMTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX0RlZmluaXRpb25cIj4kMjwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvblwiPiQzPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1MaW5rRGVzdGluYXRpb25cIj4kNDwvc3Bhbj4kNTxzcGFuIGNsYXNzPVwiVE1MaW5rVGl0bGVcIj4kNjwvc3Bhbj4kNycsXG4gICAgbGFiZWxQbGFjZWhvbGRlcjogMiwgLy8gdGhpcyBkZWZpbmVzIHdoaWNoIHBsYWNlaG9sZGVyIGluIHRoZSBhYm92ZSByZWdleCBpcyB0aGUgbGluayBcImxhYmVsXCJcbiAgfSxcbn07XG5cbi8qKlxuICogSFRNTCBibG9ja3MgaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBvcGVuZXIgYW5kIGNsb3Nlci4gVGhpcyBhcnJheSBkZWZpbmVzIGFsbCB0aGUgY2FzZXNcbiAqL1xudmFyIGh0bWxCbG9ja0dyYW1tYXIgPSBbXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCg/OnNjcmlwdHxwcmV8c3R5bGUpKD86XFxzfD58JCkvaSwgZW5kOiAvKD86PFxcL3NjcmlwdD58PFxcL3ByZT58PFxcL3N0eWxlPikvaSwgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhLS0vLCBlbmQ6IC8tLT4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PFxcPy8sIGVuZDogL1xcPz4vLCBwYXJhSW50ZXJydXB0OiB0cnVlIH0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFbQS1aXS8sIGVuZDogLz4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9PCFcXFtDREFUQVxcWy8sIGVuZDogL1xcXVxcXT4vLCBwYXJhSW50ZXJydXB0IDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86PHw8XFwvKSg/Oktub3duVGFnKSg/Olxcc3w+fFxcLz58JCkvaSwgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogdHJ1ZX0sXG4gIHsgc3RhcnQ6IC9eIHswLDN9KD86SFRNTE9wZW5UYWd8SFRNTENsb3NlVGFnKVxccyokLywgZW5kOiBmYWxzZSwgcGFyYUludGVycnVwdDogZmFsc2V9LFxuXTtcblxuLyoqXG4gKiBTdHJ1Y3R1cmUgb2YgdGhlIG9iamVjdDpcbiAqIFRvcCBsZXZlbCBlbnRyaWVzIGFyZSBydWxlcywgZWFjaCBjb25zaXN0aW5nIG9mIGEgcmVndWxhciBleHByZXNzaW9ucyAoaW4gc3RyaW5nIGZvcm1hdCkgYXMgd2VsbCBhcyBhIHJlcGxhY2VtZW50LlxuICogSW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMsIHJlcGxhY2VtZW50cyBmcm9tIHRoZSBvYmplY3QgJ3JlcGxhY2VtZW50cycgd2lsbCBiZSBwcm9jZXNzZWQgYmVmb3JlIGNvbXBpbGluZyBpbnRvIHRoZSBwcm9wZXJ0eSByZWdleHAuXG4gKi9cbnZhciBpbmxpbmVHcmFtbWFyID0ge1xuICBlc2NhcGUgOiB7XG4gICAgcmVnZXhwOiAvXlxcXFwoQVNDSUlQdW5jdHVhdGlvbikvLFxuICAgIHJlcGxhY2VtZW50IDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUVzY2FwZVwiPlxcXFw8L3NwYW4+JDEnXG4gIH0sXG4gIGNvZGUgOiB7XG4gICAgcmVnZXhwOiAvXihgKykoKD86W15gXSl8KD86W15gXS4qP1teYF0pKShcXDEpLyxcbiAgICByZXBsYWNlbWVudCA6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDE8L3NwYW4+PGNvZGUgY2xhc3M9XCJUTUNvZGVcIj4kMjwvY29kZT48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlXCI+JDM8L3NwYW4+JyBcbiAgfSxcbiAgYXV0b2xpbmsgOiB7XG4gICAgcmVnZXhwOiAvXjwoKD86U2NoZW1lOlteXFxzPD5dKil8KD86RW1haWwpKT4vLFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQXV0b2xpbmtcIj4mbHQ7PC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1BdXRvbGlua1wiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUF1dG9saW5rXCI+Jmd0Ozwvc3Bhbj4nXG4gIH0sXG4gIGh0bWwgOiB7XG4gICAgcmVnZXhwOiAvXigoPzpIVE1MT3BlblRhZyl8KD86SFRNTENsb3NlVGFnKXwoPzpIVE1MQ29tbWVudCl8KD86SFRNTFBJKXwoPzpIVE1MRGVjbGFyYXRpb24pfCg/OkhUTUxDREFUQSkpLyxcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1IVE1MXCI+JDE8L3NwYW4+JyxcbiAgfSxcbiAgbGlua09wZW4gOiB7XG4gICAgcmVnZXhwOiAvXlxcWy8sXG4gICAgcmVwbGFjZW1lbnQ6ICcnXG4gIH0sXG4gIGltYWdlT3BlbiA6IHtcbiAgICByZWdleHA6IC9eIVxcWy8sXG4gICAgcmVwbGFjZW1lbnQgOiAnJ1xuICB9LFxuICBsaW5rTGFiZWwgOiB7XG4gICAgcmVnZXhwOiAvXihcXFtcXHMqKShbXlxcXV0qPykoXFxzKlxcXSkvLFxuICAgIHJlcGxhY2VtZW50OiAnJyxcbiAgICBsYWJlbFBsYWNlaG9sZGVyOiAyXG4gIH0sXG4gIGRlZmF1bHQgOiB7XG4gICAgcmVnZXhwOiAvXigufCg/Ok5vdFRyaWdnZXJDaGFyKykpLyxcbiAgICByZXBsYWNlbWVudDogJyQxJ1xuICB9XG59O1xuXG4vLyBQcm9jZXNzIHJlcGxhY2VtZW50cyBpbiByZWdleHBzXG5jb25zdCByZXBsYWNlbWVudFJlZ2V4cCA9IG5ldyBSZWdFeHAoT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzKS5qb2luKCd8JykpO1xuXG4vLyBJbmxpbmVcbmNvbnN0IGlubGluZVJ1bGVzID1bLi4uT2JqZWN0LmtleXMoaW5saW5lR3JhbW1hcildO1xuZm9yIChsZXQgcnVsZSBvZiBpbmxpbmVSdWxlcykge1xuICBsZXQgcmUgPSBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cC5zb3VyY2U7XG4gIC8vIFJlcGxhY2Ugd2hpbGUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHJlcGxhY2UuIFRoaXMgbWVhbnMgaXQgYWxzbyB3b3JrcyBvdmVyIG11bHRpcGxlIGxldmVscyAocmVwbGFjZW1lbnRzIGNvbnRhaW5pbmcgcmVwbGFjZW1lbnRzKVxuICB3aGlsZSAocmUubWF0Y2gocmVwbGFjZW1lbnRSZWdleHApKSB7XG4gICAgcmUgPSByZS5yZXBsYWNlKHJlcGxhY2VtZW50UmVnZXhwLCAoc3RyaW5nKSA9PiB7IHJldHVybiByZXBsYWNlbWVudHNbc3RyaW5nXS5zb3VyY2U7IH0pO1xuICB9XG4gIGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwID0gbmV3IFJlZ0V4cChyZSwgaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuZmxhZ3MpO1xufVxuXG4vLyBIVE1MIEJsb2NrIChvbmx5IG9wZW5pbmcgcnVsZSBpcyBwcm9jZXNzZWQgY3VycmVudGx5KVxuZm9yIChsZXQgcnVsZSBvZiBodG1sQmxvY2tHcmFtbWFyKSB7XG4gIGxldCByZSA9IHJ1bGUuc3RhcnQuc291cmNlO1xuICAvLyBSZXBsYWNlIHdoaWxlIHRoZXJlIGlzIHNvbWV0aGluZyB0byByZXBsYWNlLiBUaGlzIG1lYW5zIGl0IGFsc28gd29ya3Mgb3ZlciBtdWx0aXBsZSBsZXZlbHMgKHJlcGxhY2VtZW50cyBjb250YWluaW5nIHJlcGxhY2VtZW50cylcbiAgd2hpbGUgKHJlLm1hdGNoKHJlcGxhY2VtZW50UmVnZXhwKSkge1xuICAgIHJlID0gcmUucmVwbGFjZShyZXBsYWNlbWVudFJlZ2V4cCwgKHN0cmluZykgPT4geyByZXR1cm4gcmVwbGFjZW1lbnRzW3N0cmluZ10uc291cmNlOyB9KTtcbiAgfVxuICBydWxlLnN0YXJ0ID0gbmV3IFJlZ0V4cChyZSwgcnVsZS5zdGFydC5mbGFncyk7XG59XG5cbi8qKlxuICogRXNjYXBlcyBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycyAoPCwgPiwgYW5kICYpIGluIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSByYXcgc3RyaW5nIHRvIGJlIGVzY2FwZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzdHJpbmcsIHJlYWR5IHRvIGJlIHVzZWQgaW4gSFRNTFxuICovXG5mdW5jdGlvbiBodG1sZXNjYXBlKHN0cmluZykge1xuICByZXR1cm4gKHN0cmluZyA/IHN0cmluZyA6ICcnKVxuICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKVxuICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59XG4vKipcbiAqIENvbnRhaW5zIHRoZSBjb21tYW5kcyB0aGF0IGNhbiBiZSBzZW50IHRvIHRoZSBlZGl0b3IuIENvbnRhaW5zIG9iamVjdHMgd2l0aCBhIG5hbWUgcmVwcmVzZW50aW5nIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLlxuICogRWFjaCBvZiB0aGUgb2JqZWN0cyBjb250YWlucyB0aGUgZm9sbG93aW5nIGtleXM6XG4gKiBcbiAqICAgLSB0eXBlOiBDYW4gYmUgZWl0aGVyIGlubGluZSAoZm9yIGlubGluZSBmb3JtYXR0aW5nKSBvciBsaW5lIChmb3IgYmxvY2sgLyBsaW5lIGZvcm1hdHRpbmcpLlxuICogICAtIGNsYXNzTmFtZTogVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29tbWFuZCBpcyBhY3RpdmUgYXQgYSBnaXZlbiBwb3NpdGlvbi4gXG4gKiAgICAgRm9yIGxpbmUgZm9ybWF0dGluZywgdGhpcyBsb29rcyBhdCB0aGUgY2xhc3Mgb2YgdGhlIGxpbmUgZWxlbWVudC4gRm9yIGlubGluZSBlbGVtZW50cywgdHJpZXMgdG8gZmluZCBhbiBlbmNsb3NpbmcgZWxlbWVudCB3aXRoIHRoYXQgY2xhc3MuXG4gKiAgIC0gc2V0IC8gdW5zZXQ6IENvbnRhaW4gaW5zdHJ1Y3Rpb25zIGhvdyB0byBzZXQgYW5kIHVuc2V0IHRoZSBjb21tYW5kLiBGb3IgbGluZSB0eXBlIGNvbW1hbmRzLCBib3RoIGNvbnNpc3Qgb2YgYSBwYXR0ZXJuIGFuZCByZXBsYWNlbWVudCB0aGF0IFxuICogICAgIHdpbGwgYmUgYXBwbGllZCB0byBlYWNoIGxpbmUgKHVzaW5nIFN0cmluZy5yZXBsYWNlKS4gRm9yIGlubGluZSB0eXBlIGNvbW1hbmRzLCB0aGUgc2V0IG9iamVjdCBjb250YWlucyBhIHByZSBhbmQgcG9zdCBzdHJpbmcgd2hpY2ggd2lsbFxuICogICAgIGJlIGluc2VydGVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbi4gVGhlIHVuc2V0IG9iamVjdCBjb250YWlucyBhIHByZVBhdHRlcm4gYW5kIGEgcG9zdFBhdHRlcm4uIEJvdGggc2hvdWxkIGJlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIFxuICogICAgIHRoZXkgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBwb3J0aW9uIG9mIHRoZSBsaW5lIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlbGVjdGlvbiAodXNpbmcgU3RyaW5nLnJlcGxhY2UsIHdpdGggYW4gZW1wdHkgcmVwbGFjZW1lbnQgc3RyaW5nKS5cbiAqL1xuY29uc3QgY29tbWFuZHMgPSB7XG4gIC8vIFJlcGxhY2VtZW50cyBmb3IgdW5zZXQgZm9yIGlubGluZSBjb21tYW5kcyBhcmUgJycgYnkgZGVmYXVsdFxuICBib2xkOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNU3Ryb25nJywgXG4gICAgc2V0OiB7cHJlOiAnKionLCBwb3N0OiAnKionfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOiAvKD86XFwqXFwqfF9fKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCpcXCp8X18pL31cbiAgfSwgXG4gIGl0YWxpYzoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUVtJywgXG4gICAgc2V0OiB7cHJlOiAnKicsIHBvc3Q6ICcqJ30sIFxuICAgIHVuc2V0OiB7cHJlUGF0dGVybjogLyg/OlxcKnxfKSQvLCBwb3N0UGF0dGVybjogL14oPzpcXCp8XykvfVxuICB9LFxuICBjb2RlOiB7XG4gICAgdHlwZTogJ2lubGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNQ29kZScsIFxuICAgIHNldDoge3ByZTogJ2AnLCBwb3N0OiAnYCd9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46IC9gKyQvLCBwb3N0UGF0dGVybjogL15gKy99IC8vIEZJWE1FIHRoaXMgZG9lc24ndCBlbnN1cmUgYmFsYW5jZWQgYmFja3RpY2tzIHJpZ2h0IG5vd1xuICB9LCBcbiAgc3RyaWtldGhyb3VnaDoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVN0cmlrZXRocm91Z2gnLCBcbiAgICBzZXQ6IHtwcmU6ICd+ficsIHBvc3Q6ICd+fid9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46L35+JC8sIHBvc3RQYXR0ZXJuOiAvXn5+LyB9XG4gIH0sXG4gIGgxOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgxJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9I1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDI6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDInLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGgzOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgzJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg0OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg0JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjI1xccyspKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgaDU6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNSDUnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyMjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg2OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg2JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjIyMgJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30jIyMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIHVsOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVVMJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICctICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9WysqLV0gezEsNH0pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbiAgb2w6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNT0wnLCBcbiAgICBzZXQ6IHtwYXR0ZXJuOiAvXiggezAsM30oPzooPzojK3xbMC05XXsxLDl9WykuXXxbPlxcLSorXSlcXHMrKT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQjLiAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfVxcZHsxLDl9Wy4pXSB7MSw0fSkoLiopJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LCBcbiAgYmxvY2txdW90ZToge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1CbG9ja3F1b3RlJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICc+ICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9PlsgXT8pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSxcbn07XG5cbmV4cG9ydCB7IGxpbmVHcmFtbWFyLCBpbmxpbmVHcmFtbWFyLCBwdW5jdHVhdGlvbkxlYWRpbmcsIHB1bmN0dWF0aW9uVHJhaWxpbmcsIGh0bWxlc2NhcGUsIGh0bWxCbG9ja0dyYW1tYXIsIGNvbW1hbmRzIH07IiwiaW1wb3J0IHtcbiAgaW5saW5lR3JhbW1hcixcbiAgbGluZUdyYW1tYXIsXG4gIHB1bmN0dWF0aW9uTGVhZGluZyxcbiAgcHVuY3R1YXRpb25UcmFpbGluZyxcbiAgaHRtbGVzY2FwZSxcbiAgaHRtbEJsb2NrR3JhbW1hcixcbiAgY29tbWFuZHMsXG59IGZyb20gXCIuL2dyYW1tYXJcIjtcblxuY2xhc3MgRWRpdG9yIHtcbiAgY29uc3RydWN0b3IocHJvcHMgPSB7fSkge1xuICAgIHRoaXMuZSA9IG51bGw7XG4gICAgdGhpcy50ZXh0YXJlYSA9IG51bGw7XG4gICAgdGhpcy5saW5lcyA9IFtdO1xuICAgIHRoaXMubGluZUVsZW1lbnRzID0gW107XG4gICAgdGhpcy5saW5lVHlwZXMgPSBbXTtcbiAgICB0aGlzLmxpbmVDYXB0dXJlcyA9IFtdO1xuICAgIHRoaXMubGluZVJlcGxhY2VtZW50cyA9IFtdO1xuICAgIHRoaXMubGlua0xhYmVscyA9IFtdO1xuICAgIHRoaXMubGluZURpcnR5ID0gW107XG4gICAgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gbnVsbDtcblxuICAgIHRoaXMubGlzdGVuZXJzID0ge1xuICAgICAgY2hhbmdlOiBbXSxcbiAgICAgIHNlbGVjdGlvbjogW10sXG4gICAgfTtcblxuICAgIGxldCBlbGVtZW50ID0gcHJvcHMuZWxlbWVudDtcbiAgICB0aGlzLnRleHRhcmVhID0gcHJvcHMudGV4dGFyZWE7XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgaWYgKCF0aGlzLnRleHRhcmVhLnRhZ05hbWUpIHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMudGV4dGFyZWEpO1xuICAgICAgfVxuICAgICAgaWYgKCFlbGVtZW50KSBlbGVtZW50ID0gdGhpcy50ZXh0YXJlYTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudCAmJiAhZWxlbWVudC50YWdOYW1lKSB7XG4gICAgICBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuZWxlbWVudCk7XG4gICAgfVxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYm9keVwiKVswXTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PSBcIlRFWFRBUkVBXCIpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEgPSBlbGVtZW50O1xuICAgICAgZWxlbWVudCA9IHRoaXMudGV4dGFyZWEucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXh0YXJlYSkge1xuICAgICAgdGhpcy50ZXh0YXJlYS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpO1xuICAgIC8vIFRPRE8gUGxhY2Vob2xkZXIgZm9yIGVtcHR5IGNvbnRlbnRcbiAgICB0aGlzLnNldENvbnRlbnQoXG4gICAgICBwcm9wcy5jb250ZW50IHx8XG4gICAgICAgICh0aGlzLnRleHRhcmVhXG4gICAgICAgICAgPyB0aGlzLnRleHRhcmVhLnZhbHVlXG4gICAgICAgICAgOiBcIiMgSGVsbG8gVGlueU1ERSFcXG5FZGl0ICoqaGVyZSoqXCIpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBlZGl0b3IgZWxlbWVudCBpbnNpZGUgdGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBET00gdHJlZVxuICAgKiBAcGFyYW0gZWxlbWVudCBUaGUgdGFyZ2V0IGVsZW1lbnQgb2YgdGhlIERPTSB0cmVlXG4gICAqL1xuICBjcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpIHtcbiAgICB0aGlzLmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgIHRoaXMuZS5jbGFzc05hbWUgPSBcIlRpbnlNREVcIjtcbiAgICB0aGlzLmUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGltcG9ydGFudCBmb3IgZm9ybWF0dGluZyBwdXJwb3NlcywgYnV0IGFsc28gc2luY2Ugb3RoZXJ3aXNlIHRoZSBicm93c2VyIHJlcGxhY2VzIHN1YnNlcXVlbnQgc3BhY2VzIHdpdGggICZuYnNwOyAmbmJzcDtcbiAgICAvLyBUaGF0IGJyZWFrcyBhIGxvdCBvZiBzdHVmZiwgc28gd2UgZG8gdGhpcyBoZXJlIGFuZCBub3QgaW4gQ1NT4oCUdGhlcmVmb3JlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBwdXQgdGhpcyBpbiB0aGUgQ1NTIGZpbGVcbiAgICB0aGlzLmUuc3R5bGUud2hpdGVTcGFjZSA9IFwicHJlLXdyYXBcIjtcbiAgICAvLyBBdm9pZCBmb3JtYXR0aW5nIChCIC8gSSAvIFUpIHBvcHBpbmcgdXAgb24gaU9TXG4gICAgdGhpcy5lLnN0eWxlLndlYmtpdFVzZXJNb2RpZnkgPSBcInJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHlcIjtcbiAgICBpZiAoXG4gICAgICB0aGlzLnRleHRhcmVhICYmXG4gICAgICB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGUgPT0gZWxlbWVudCAmJlxuICAgICAgdGhpcy50ZXh0YXJlYS5uZXh0U2libGluZ1xuICAgICkge1xuICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5lLCB0aGlzLnRleHRhcmVhLm5leHRTaWJsaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmUpO1xuICAgIH1cblxuICAgIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgKGUpID0+IHRoaXMuaGFuZGxlSW5wdXRFdmVudChlKSk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLCAoZSkgPT4gdGhpcy5oYW5kbGVJbnB1dEV2ZW50KGUpKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsIChlKSA9PlxuICAgICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VFdmVudChlKVxuICAgICk7XG4gICAgdGhpcy5lLmFkZEV2ZW50TGlzdGVuZXIoXCJwYXN0ZVwiLCAoZSkgPT4gdGhpcy5oYW5kbGVQYXN0ZShlKSk7XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSB0aGlzLmUuY2hpbGROb2RlczsgLy8gdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZWRpdG9yIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBuZXcgTWFya2Rvd24gY29udGVudFxuICAgKi9cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgLy8gRGVsZXRlIGFueSBleGlzdGluZyBjb250ZW50XG4gICAgd2hpbGUgKHRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGxldCBsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQobGUpO1xuICAgICAgdGhpcy5saW5lRGlydHkucHVzaCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5saW5lVHlwZXMgPSBuZXcgQXJyYXkodGhpcy5saW5lcy5sZW5ndGgpO1xuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVkaXRvciBjb250ZW50IGFzIGEgTWFya2Rvd24gc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZWRpdG9yIGNvbnRlbnQgYXMgYSBtYXJrZG93biBzdHJpbmdcbiAgICovXG4gIGdldENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubGluZXMuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBtYWluIG1ldGhvZCB0byB1cGRhdGUgdGhlIGZvcm1hdHRpbmcgKGZyb20gdGhpcy5saW5lcyB0byBIVE1MIG91dHB1dClcbiAgICovXG4gIHVwZGF0ZUZvcm1hdHRpbmcoKSB7XG4gICAgLy8gRmlyc3QsIHBhcnNlIGxpbmUgdHlwZXMuIFRoaXMgd2lsbCB1cGRhdGUgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZVJlcGxhY2VtZW50cywgYW5kIHRoaXMubGluZUNhcHR1cmVzXG4gICAgLy8gV2UgZG9uJ3QgYXBwbHkgdGhlIGZvcm1hdHRpbmcgeWV0XG4gICAgdGhpcy51cGRhdGVMaW5lVHlwZXMoKTtcbiAgICAvLyBDb2xsZWN0IGFueSB2YWxpZCBsaW5rIGxhYmVscyBmcm9tIGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb25z4oCUd2UgbmVlZCB0aGF0IGZvciBmb3JtYXR0aW5nIHRvIGRldGVybWluZSB3aGF0J3MgYSB2YWxpZCBsaW5rXG4gICAgdGhpcy51cGRhdGVMaW5rTGFiZWxzKCk7XG4gICAgLy8gTm93LCBhcHBseSB0aGUgZm9ybWF0dGluZ1xuICAgIHRoaXMuYXBwbHlMaW5lVHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoaXMubGlua0xhYmVsczogRm9yIGV2ZXJ5IGxpbmsgcmVmZXJlbmNlIGRlZmluaXRpb24gKGxpbmUgdHlwZSBUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uKSwgd2UgY29sbGVjdCB0aGUgbGFiZWxcbiAgICovXG4gIHVwZGF0ZUxpbmtMYWJlbHMoKSB7XG4gICAgdGhpcy5saW5rTGFiZWxzID0gW107XG4gICAgZm9yIChsZXQgbCA9IDA7IGwgPCB0aGlzLmxpbmVzLmxlbmd0aDsgbCsrKSB7XG4gICAgICBpZiAodGhpcy5saW5lVHlwZXNbbF0gPT0gXCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCIpIHtcbiAgICAgICAgdGhpcy5saW5rTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5saW5lQ2FwdHVyZXNbbF1bXG4gICAgICAgICAgICBsaW5lR3JhbW1hci5UTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uLmxhYmVsUGxhY2Vob2xkZXJcbiAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBmcm9tIGEgUmVnRXhwIGNhcHR1cmUuIFRoZSByZXBsYWNlbWVudCBzdHJpbmcgY2FuIGNvbnRhaW4gcmVndWxhciBkb2xsYXIgcGxhY2Vob2xkZXJzIChlLmcuLCAkMSksXG4gICAqIHdoaWNoIGFyZSBpbnRlcnByZXRlZCBsaWtlIGluIFN0cmluZy5yZXBsYWNlKCksIGJ1dCBhbHNvIGRvdWJsZSBkb2xsYXIgcGxhY2Vob2xkZXJzICgkJDEpLiBJbiB0aGUgY2FzZSBvZiBkb3VibGUgZG9sbGFyIHBsYWNlaG9sZGVycyxcbiAgICogTWFya2Rvd24gaW5saW5lIGdyYW1tYXIgaXMgYXBwbGllZCBvbiB0aGUgY29udGVudCBvZiB0aGUgY2FwdHVyZWQgc3ViZ3JvdXAsIGkuZS4sICQkMSBwcm9jZXNzZXMgaW5saW5lIE1hcmtkb3duIGdyYW1tYXIgaW4gdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAqIGZpcnN0IGNhcHR1cmVkIHN1Ymdyb3VwLCBhbmQgcmVwbGFjZXMgYCQkMWAgd2l0aCB0aGUgcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVwbGFjZW1lbnQgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgaW5jbHVkaW5nIHBsYWNlaG9sZGVycy5cbiAgICogQHBhcmFtICBjYXB0dXJlIFRoZSByZXN1bHQgb2YgYSBSZWdFeHAuZXhlYygpIGNhbGxcbiAgICogQHJldHVybnMgVGhlIHJlcGxhY2VtZW50IHN0cmluZywgd2l0aCBwbGFjZWhvbGRlcnMgcmVwbGFjZWQgZnJvbSB0aGUgY2FwdHVyZSByZXN1bHQuXG4gICAqL1xuICByZXBsYWNlKHJlcGxhY2VtZW50LCBjYXB0dXJlKSB7XG4gICAgcmV0dXJuIHJlcGxhY2VtZW50LnJlcGxhY2UoLyhcXCR7MSwyfSkoWzAtOV0pL2csIChzdHIsIHAxLCBwMikgPT4ge1xuICAgICAgaWYgKHAxID09IFwiJFwiKSByZXR1cm4gaHRtbGVzY2FwZShjYXB0dXJlW3AyXSk7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3M9XCJUTUlubGluZUZvcm1hdHRlZFwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKFxuICAgICAgICAgIGNhcHR1cmVbcDJdXG4gICAgICAgICl9PC9zcGFuPmA7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyB0aGUgbGluZSB0eXBlcyAoZnJvbSB0aGlzLmxpbmVUeXBlcyBhcyB3ZWxsIGFzIHRoZSBjYXB0dXJlIHJlc3VsdCBpbiB0aGlzLmxpbmVSZXBsYWNlbWVudHMgYW5kIHRoaXMubGluZUNhcHR1cmVzKVxuICAgKiBhbmQgcHJvY2Vzc2VzIGlubGluZSBmb3JtYXR0aW5nIGZvciBhbGwgbGluZXMuXG4gICAqL1xuICBhcHBseUxpbmVUeXBlcygpIHtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSkge1xuICAgICAgICBsZXQgY29udGVudEhUTUwgPSB0aGlzLnJlcGxhY2UoXG4gICAgICAgICAgdGhpcy5saW5lUmVwbGFjZW1lbnRzW2xpbmVOdW1dLFxuICAgICAgICAgIHRoaXMubGluZUNhcHR1cmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIC8vIHRoaXMubGluZUhUTUxbbGluZU51bV0gPSAoY29udGVudEhUTUwgPT0gJycgPyAnPGJyIC8+JyA6IGNvbnRlbnRIVE1MKTsgLy8gUHJldmVudCBlbXB0eSBlbGVtZW50cyB3aGljaCBjYW4ndCBiZSBzZWxlY3RlZCBldGMuXG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmNsYXNzTmFtZSA9IHRoaXMubGluZVR5cGVzW2xpbmVOdW1dO1xuICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tsaW5lTnVtXS5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uaW5uZXJIVE1MID1cbiAgICAgICAgICBjb250ZW50SFRNTCA9PSBcIlwiID8gXCI8YnIgLz5cIiA6IGNvbnRlbnRIVE1MOyAvLyBQcmV2ZW50IGVtcHR5IGVsZW1lbnRzIHdoaWNoIGNhbid0IGJlIHNlbGVjdGVkIGV0Yy5cbiAgICAgIH1cbiAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLmRhdGFzZXQubGluZU51bSA9IGxpbmVOdW07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgbGluZSB0eXBlcyBmb3IgYWxsIGxpbmVzIGJhc2VkIG9uIHRoZSBsaW5lIC8gYmxvY2sgZ3JhbW1hci4gQ2FwdHVyZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHJlc3BlY3RpdmUgbGluZVxuICAgKiBncmFtbWFyIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZUNhcHR1cmVzLCBhbmQgdGhpcy5saW5lUmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgdXBkYXRlTGluZVR5cGVzKCkge1xuICAgIGxldCBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgbGV0IGNvZGVCbG9ja1NlcUxlbmd0aCA9IDA7XG4gICAgbGV0IGh0bWxCbG9jayA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgbGluZU51bSA9IDA7IGxpbmVOdW0gPCB0aGlzLmxpbmVzLmxlbmd0aDsgbGluZU51bSsrKSB7XG4gICAgICBsZXQgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgbGV0IGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgbGV0IGxpbmVSZXBsYWNlbWVudCA9IFwiJCQwXCI7IC8vIERlZmF1bHQgcmVwbGFjZW1lbnQgZm9yIHBhcmFncmFwaDogSW5saW5lIGZvcm1hdCB0aGUgZW50aXJlIGxpbmVcblxuICAgICAgLy8gQ2hlY2sgb25nb2luZyBjb2RlIGJsb2Nrc1xuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlQmFja3RpY2tPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZUJhY2t0aWNrJykpIHtcbiAgICAgIGlmIChjb2RlQmxvY2tUeXBlID09IFwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW5cIikge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIGJhY2t0aWNrLWZlbmNlZCBjb2RlIGJsb2NrLCBjaGVjayBpZiB0aGUgY3VycmVudCBsaW5lIGNsb3NlcyBpdFxuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZWdleHAuZXhlYyhcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVOdW1dXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjYXB0dXJlICYmIGNhcHR1cmUuZ3JvdXBzW1wic2VxXCJdLmxlbmd0aCA+PSBjb2RlQmxvY2tTZXFMZW5ndGgpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9IFwiVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgICBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNRmVuY2VkQ29kZUJhY2t0aWNrXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gJzxzcGFuIGNsYXNzPVwiVE1GZW5jZWRDb2RlXCI+JDA8YnIgLz48L3NwYW4+JztcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZVRpbGRlJykpIHtcbiAgICAgIGVsc2UgaWYgKGNvZGVCbG9ja1R5cGUgPT0gXCJUTUNvZGVGZW5jZVRpbGRlT3BlblwiKSB7XG4gICAgICAgIC8vIFdlJ3JlIGluIGEgdGlsZGUtZmVuY2VkIGNvZGUgYmxvY2tcbiAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTUNvZGVGZW5jZVRpbGRlQ2xvc2UucmVnZXhwLmV4ZWMoXG4gICAgICAgICAgdGhpcy5saW5lc1tsaW5lTnVtXVxuICAgICAgICApO1xuICAgICAgICBpZiAoY2FwdHVyZSAmJiBjYXB0dXJlLmdyb3Vwc1tcInNlcVwiXS5sZW5ndGggPj0gY29kZUJsb2NrU2VxTGVuZ3RoKSB7XG4gICAgICAgICAgbGluZVR5cGUgPSBcIlRNQ29kZUZlbmNlVGlsZGVDbG9zZVwiO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlVGlsZGVDbG9zZS5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgY29kZUJsb2NrVHlwZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmVUeXBlID0gXCJUTUZlbmNlZENvZGVUaWxkZVwiO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9ICc8c3BhbiBjbGFzcz1cIlRNRmVuY2VkQ29kZVwiPiQwPGJyIC8+PC9zcGFuPic7XG4gICAgICAgICAgbGluZUNhcHR1cmUgPSBbdGhpcy5saW5lc1tsaW5lTnVtXV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgSFRNTCBibG9jayB0eXBlc1xuICAgICAgaWYgKGxpbmVUeXBlID09IFwiVE1QYXJhXCIgJiYgaHRtbEJsb2NrID09PSBmYWxzZSkge1xuICAgICAgICBmb3IgKGxldCBodG1sQmxvY2tUeXBlIG9mIGh0bWxCbG9ja0dyYW1tYXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lTnVtXS5tYXRjaChodG1sQmxvY2tUeXBlLnN0YXJ0KSkge1xuICAgICAgICAgICAgLy8gTWF0Y2hpbmcgc3RhcnQgY29uZGl0aW9uLiBDaGVjayBpZiB0aGlzIHRhZyBjYW4gc3RhcnQgaGVyZSAobm90IGFsbCBzdGFydCBjb25kaXRpb25zIGFsbG93IGJyZWFraW5nIGEgcGFyYWdyYXBoKS5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgaHRtbEJsb2NrVHlwZS5wYXJhSW50ZXJydXB0IHx8XG4gICAgICAgICAgICAgIGxpbmVOdW0gPT0gMCB8fFxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNUGFyYVwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1VTFwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1PTFwiIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdID09IFwiVE1CbG9ja3F1b3RlXCJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGh0bWxCbG9jayA9IGh0bWxCbG9ja1R5cGU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaHRtbEJsb2NrICE9PSBmYWxzZSkge1xuICAgICAgICBsaW5lVHlwZSA9IFwiVE1IVE1MQmxvY2tcIjtcbiAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gJzxzcGFuIGNsYXNzPVwiVE1IVE1MQ29udGVudFwiPiQwPGJyIC8+PC9zcGFuPic7IC8vIE5vIGZvcm1hdHRpbmcgaW4gVE1IVE1MQmxvY2tcbiAgICAgICAgbGluZUNhcHR1cmUgPSBbdGhpcy5saW5lc1tsaW5lTnVtXV07IC8vIFRoaXMgc2hvdWxkIGFscmVhZHkgYmUgc2V0IGJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgSFRNTCBibG9jayBzaG91bGQgYmUgY2xvc2VkXG4gICAgICAgIGlmIChodG1sQmxvY2suZW5kKSB7XG4gICAgICAgICAgLy8gU3BlY2lmaWMgZW5kIGNvbmRpdGlvblxuICAgICAgICAgIGlmICh0aGlzLmxpbmVzW2xpbmVOdW1dLm1hdGNoKGh0bWxCbG9jay5lbmQpKSB7XG4gICAgICAgICAgICBodG1sQmxvY2sgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTm8gc3BlY2lmaWMgZW5kIGNvbmRpdGlvbiwgZW5kcyB3aXRoIGJsYW5rIGxpbmVcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsaW5lTnVtID09IHRoaXMubGluZXMubGVuZ3RoIC0gMSB8fFxuICAgICAgICAgICAgdGhpcy5saW5lc1tsaW5lTnVtICsgMV0ubWF0Y2gobGluZUdyYW1tYXIuVE1CbGFua0xpbmUucmVnZXhwKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaHRtbEJsb2NrID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGFsbCByZWdleHBzIGlmIHdlIGhhdmVuJ3QgYXBwbGllZCBvbmUgb2YgdGhlIGNvZGUgYmxvY2sgdHlwZXNcbiAgICAgIGlmIChsaW5lVHlwZSA9PSBcIlRNUGFyYVwiKSB7XG4gICAgICAgIGZvciAobGV0IHR5cGUgaW4gbGluZUdyYW1tYXIpIHtcbiAgICAgICAgICBpZiAobGluZUdyYW1tYXJbdHlwZV0ucmVnZXhwKSB7XG4gICAgICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyW3R5cGVdLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICAgICAgbGluZVR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hclt0eXBlXS5yZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgbGluZUNhcHR1cmUgPSBjYXB0dXJlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UndmUgb3BlbmVkIGEgY29kZSBibG9jaywgcmVtZW1iZXIgdGhhdFxuICAgICAgaWYgKFxuICAgICAgICBsaW5lVHlwZSA9PSBcIlRNQ29kZUZlbmNlQmFja3RpY2tPcGVuXCIgfHxcbiAgICAgICAgbGluZVR5cGUgPT0gXCJUTUNvZGVGZW5jZVRpbGRlT3BlblwiXG4gICAgICApIHtcbiAgICAgICAgY29kZUJsb2NrVHlwZSA9IGxpbmVUeXBlO1xuICAgICAgICBjb2RlQmxvY2tTZXFMZW5ndGggPSBsaW5lQ2FwdHVyZS5ncm91cHNbXCJzZXFcIl0ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGFuZCBpbmRlbnRlZCBjb2RlIGNhbid0IGludGVycnVwdCBhIHBhcmFncmFwaFxuICAgICAgaWYgKFxuICAgICAgICAobGluZVR5cGUgPT0gXCJUTUluZGVudGVkQ29kZVwiIHx8XG4gICAgICAgICAgbGluZVR5cGUgPT0gXCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCIpICYmXG4gICAgICAgIGxpbmVOdW0gPiAwICYmXG4gICAgICAgICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gXCJUTVBhcmFcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNVUxcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNT0xcIiB8fFxuICAgICAgICAgIHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSBcIlRNQmxvY2txdW90ZVwiKVxuICAgICAgKSB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBUTVBhcmFcbiAgICAgICAgbGluZVR5cGUgPSBcIlRNUGFyYVwiO1xuICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkJDBcIjtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IEgyIG1hcmtlcnMgdGhhdCBjYW4gYWxzbyBiZSBpbnRlcnByZXRlZCBhcyBhbiBlbXB0eSBsaXN0IGl0ZW0gc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIHN1Y2ggKGFzIHBlciBDb21tb25NYXJrIHNwZWMpXG4gICAgICBpZiAobGluZVR5cGUgPT0gXCJUTVNldGV4dEgyTWFya2VyXCIpIHtcbiAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTVVMLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgIGxpbmVUeXBlID0gXCJUTVVMXCI7XG4gICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gbGluZUdyYW1tYXIuVE1VTC5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IGhlYWRpbmdzIGFyZSBvbmx5IHZhbGlkIGlmIHByZWNlZGVkIGJ5IGEgcGFyYWdyYXBoIChhbmQgaWYgc28sIHRoZXkgY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgpXG4gICAgICBpZiAobGluZVR5cGUgPT0gXCJUTVNldGV4dEgxTWFya2VyXCIgfHwgbGluZVR5cGUgPT0gXCJUTVNldGV4dEgyTWFya2VyXCIpIHtcbiAgICAgICAgaWYgKGxpbmVOdW0gPT0gMCB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gIT0gXCJUTVBhcmFcIikge1xuICAgICAgICAgIC8vIFNldGV4dCBtYXJrZXIgaXMgaW52YWxpZC4gSG93ZXZlciwgYSBIMiBtYXJrZXIgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCBIUiwgc28gbGV0J3MgY2hlY2sgdGhhdFxuICAgICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXIuVE1IUi5yZWdleHAuZXhlYyh0aGlzLmxpbmVzW2xpbmVOdW1dKTtcbiAgICAgICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAgICAgLy8gVmFsaWQgSFJcbiAgICAgICAgICAgIGxpbmVUeXBlID0gXCJUTUhSXCI7XG4gICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTUhSLnJlcGxhY2VtZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3QgdmFsaWQgSFIsIGZvcm1hdCBhcyBUTVBhcmFcbiAgICAgICAgICAgIGxpbmVUeXBlID0gXCJUTVBhcmFcIjtcbiAgICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICAgICAgbGluZVJlcGxhY2VtZW50ID0gXCIkJDBcIjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVmFsaWQgc2V0ZXh0IG1hcmtlci4gQ2hhbmdlIHR5cGVzIG9mIHByZWNlZGluZyBwYXJhIGxpbmVzXG4gICAgICAgICAgbGV0IGhlYWRpbmdMaW5lID0gbGluZU51bSAtIDE7XG4gICAgICAgICAgY29uc3QgaGVhZGluZ0xpbmVUeXBlID1cbiAgICAgICAgICAgIGxpbmVUeXBlID09IFwiVE1TZXRleHRIMU1hcmtlclwiID8gXCJUTVNldGV4dEgxXCIgOiBcIlRNU2V0ZXh0SDJcIjtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVUeXBlXSAhPSBoZWFkaW5nTGluZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVdID0gaGVhZGluZ0xpbmVUeXBlO1xuICAgICAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtoZWFkaW5nTGluZVR5cGVdID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGluZVJlcGxhY2VtZW50c1toZWFkaW5nTGluZV0gPSBcIiQkMFwiO1xuICAgICAgICAgICAgdGhpcy5saW5lQ2FwdHVyZXNbaGVhZGluZ0xpbmVdID0gW3RoaXMubGluZXNbaGVhZGluZ0xpbmVdXTtcblxuICAgICAgICAgICAgaGVhZGluZ0xpbmUtLTtcbiAgICAgICAgICB9IHdoaWxlIChoZWFkaW5nTGluZSA+PSAwICYmIHRoaXMubGluZVR5cGVzW2hlYWRpbmdMaW5lXSA9PSBcIlRNUGFyYVwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gTGFzdGx5LCBzYXZlIHRoZSBsaW5lIHN0eWxlIHRvIGJlIGFwcGxpZWQgbGF0ZXJcbiAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSAhPSBsaW5lVHlwZSkge1xuICAgICAgICB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSA9IGxpbmVUeXBlO1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmxpbmVSZXBsYWNlbWVudHNbbGluZU51bV0gPSBsaW5lUmVwbGFjZW1lbnQ7XG4gICAgICB0aGlzLmxpbmVDYXB0dXJlc1tsaW5lTnVtXSA9IGxpbmVDYXB0dXJlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBsaW5lIGNvbnRlbnRzIGZyb20gdGhlIEhUTUwsIHRoZW4gcmUtYXBwbGllcyBmb3JtYXR0aW5nLlxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzQW5kRm9ybWF0dGluZygpIHtcbiAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBwYXJzZSBhIGxpbmsgb3IgaW1hZ2UgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBvcGVuaW5nIFsgb3IgIVsgaGFzIGFscmVhZHkgYmVlbiBtYXRjaGVkLlxuICAgKiBSZXR1cm5zIGZhbHNlIGlmIHRoaXMgaXMgbm90IGEgdmFsaWQgbGluaywgaW1hZ2UuIFNlZSBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxTdHJpbmcgVGhlIG9yaWdpbmFsIHN0cmluZywgc3RhcnRpbmcgYXQgdGhlIG9wZW5pbmcgbWFya2VyIChbIG9yICFbKVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzSW1hZ2UgV2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBpbWFnZSAob3BlbmVyID09ICFbKVxuICAgKiBAcmV0dXJucyBmYWxzZSBpZiBub3QgYSB2YWxpZCBsaW5rIC8gaW1hZ2UuXG4gICAqIE90aGVyd2lzZSByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHR3byBwcm9wZXJ0aWVzOiBvdXRwdXQgaXMgdGhlIHN0cmluZyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcHJvY2Vzc2VkIG91dHB1dCxcbiAgICogY2hhckNvdW50IGlzIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hhcmFjdGVycyAoZnJvbSBvcmlnaW5hbFN0cmluZykgY29uc3VtZWQuXG4gICAqL1xuICBwYXJzZUxpbmtPckltYWdlKG9yaWdpbmFsU3RyaW5nLCBpc0ltYWdlKSB7XG4gICAgLy8gU2tpcCB0aGUgb3BlbmluZyBicmFja2V0XG4gICAgbGV0IHRleHRPZmZzZXQgPSBpc0ltYWdlID8gMiA6IDE7XG4gICAgbGV0IG9wZW5lciA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cigwLCB0ZXh0T2Zmc2V0KTtcbiAgICBsZXQgdHlwZSA9IGlzSW1hZ2UgPyBcIlRNSW1hZ2VcIiA6IFwiVE1MaW5rXCI7XG4gICAgbGV0IGN1cnJlbnRPZmZzZXQgPSB0ZXh0T2Zmc2V0O1xuXG4gICAgbGV0IGJyYWNrZXRMZXZlbCA9IDE7XG4gICAgbGV0IGxpbmtUZXh0ID0gZmFsc2U7XG4gICAgbGV0IGxpbmtSZWYgPSBmYWxzZTtcbiAgICBsZXQgbGlua0xhYmVsID0gW107XG4gICAgbGV0IGxpbmtEZXRhaWxzID0gW107IC8vIElmIG1hdGNoZWQsIHRoaXMgd2lsbCBiZSBhbiBhcnJheTogW3doaXRlc3BhY2UgKyBsaW5rIGRlc3RpbmF0aW9uIGRlbGltaXRlciwgbGluayBkZXN0aW5hdGlvbiwgbGluayBkZXN0aW5hdGlvbiBkZWxpbWl0ZXIsIHdoaXRlc3BhY2UsIGxpbmsgdGl0bGUgZGVsaW1pdGVyLCBsaW5rIHRpdGxlLCBsaW5rIHRpdGxlIGRlbGltaXRlciArIHdoaXRlc3BhY2VdLiBBbGwgY2FuIGJlIGVtcHR5IHN0cmluZ3MuXG5cbiAgICB0ZXh0T3V0ZXI6IHdoaWxlIChcbiAgICAgIGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiZcbiAgICAgIGxpbmtUZXh0ID09PSBmYWxzZSAvKiBlbXB0eSBzdHJpbmcgaXMgb2theSAqL1xuICAgICkge1xuICAgICAgbGV0IHN0cmluZyA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgLy8gQ2FwdHVyZSBhbnkgZXNjYXBlcyBhbmQgY29kZSBibG9ja3MgYXQgY3VycmVudCBwb3NpdGlvbiwgdGhleSBiaW5kIG1vcmUgc3Ryb25nbHkgdGhhbiBsaW5rc1xuICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBhY3R1YWxseSBwcm9jZXNzIHRoZW0gaGVyZSwgdGhhdCdsbCBiZSBkb25lIGxhdGVyIGluIGNhc2UgdGhlIGxpbmsgLyBpbWFnZSBpcyB2YWxpZCwgYnV0IHdlIG5lZWQgdG8gc2tpcCBvdmVyIHRoZW0uXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFtcImVzY2FwZVwiLCBcImNvZGVcIiwgXCJhdXRvbGlua1wiLCBcImh0bWxcIl0pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGltYWdlLiBJdCdzIG9rYXkgZm9yIGFuIGltYWdlIHRvIGJlIGluY2x1ZGVkIGluIGEgbGluayBvciBpbWFnZVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmltYWdlT3Blbi5yZWdleHApKSB7XG4gICAgICAgIC8vIE9wZW5pbmcgaW1hZ2UuIEl0J3Mgb2theSBpZiB0aGlzIGlzIGEgbWF0Y2hpbmcgcGFpciBvZiBicmFja2V0c1xuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgY3VycmVudE9mZnNldCArPSAyO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBsaW5rIChub3QgYW4gaW1hZ2UgYmVjYXVzZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCBhbmQgc2tpcHBlZCBvdmVyIGFib3ZlKVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCkpIHtcbiAgICAgICAgLy8gT3BlbmluZyBicmFja2V0LiBUd28gdGhpbmdzIHRvIGRvOlxuICAgICAgICAvLyAxKSBpdCdzIG9rYXkgaWYgdGhpcyBwYXJ0IG9mIGEgcGFpciBvZiBicmFja2V0cy5cbiAgICAgICAgLy8gMikgSWYgd2UgYXJlIGN1cnJlbnRseSB0cnlpbmcgdG8gcGFyc2UgYSBsaW5rLCB0aGlzIG5lc3RlZCBicmFja2V0IG11c24ndCBzdGFydCBhIHZhbGlkIGxpbmsgKG5vIG5lc3RlZCBsaW5rcyBhbGxvd2VkKVxuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgLy8gaWYgKGJyYWNrZXRMZXZlbCA+PSAyKSByZXR1cm4gZmFsc2U7IC8vIE5lc3RlZCB1bmVzY2FwZWQgYnJhY2tldHMsIHRoaXMgZG9lc24ndCBxdWFsaWZ5IGFzIGEgbGluayAvIGltYWdlXG4gICAgICAgIGlmICghaXNJbWFnZSkge1xuICAgICAgICAgIGlmICh0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkIGxpbmsgaW5zaWRlIHRoaXMgcG9zc2libGUgbGluaywgd2hpY2ggbWFrZXMgdGhpcyBsaW5rIGludmFsaWQgKGlubmVyIGxpbmtzIGJlYXQgb3V0ZXIgb25lcylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudE9mZnNldCArPSAxO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBjbG9zaW5nIGJyYWNrZXRcbiAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXF0vKSkge1xuICAgICAgICBicmFja2V0TGV2ZWwtLTtcbiAgICAgICAgaWYgKGJyYWNrZXRMZXZlbCA9PSAwKSB7XG4gICAgICAgICAgLy8gRm91bmQgbWF0Y2hpbmcgYnJhY2tldCBhbmQgaGF2ZW4ndCBmb3VuZCBhbnl0aGluZyBkaXNxdWFsaWZ5aW5nIHRoaXMgYXMgbGluayAvIGltYWdlLlxuICAgICAgICAgIGxpbmtUZXh0ID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgdGV4dE9mZnNldCxcbiAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgLSB0ZXh0T2Zmc2V0XG4gICAgICAgICAgKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgdGV4dE91dGVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE5vdGhpbmcgbWF0Y2hlcywgcHJvY2VlZCB0byBuZXh0IGNoYXJcbiAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICB9XG5cbiAgICAvLyBEaWQgd2UgZmluZCBhIGxpbmsgdGV4dCAoaS5lLiwgZmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldD8pXG4gICAgaWYgKGxpbmtUZXh0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOyAvLyBOb3BlXG5cbiAgICAvLyBTbyBmYXIsIHNvIGdvb2QuIFdlJ3ZlIGdvdCBhIHZhbGlkIGxpbmsgdGV4dC4gTGV0J3Mgc2VlIHdoYXQgdHlwZSBvZiBsaW5rIHRoaXMgaXNcbiAgICBsZXQgbmV4dENoYXIgPVxuICAgICAgY3VycmVudE9mZnNldCA8IG9yaWdpbmFsU3RyaW5nLmxlbmd0aFxuICAgICAgICA/IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0LCAxKVxuICAgICAgICA6IFwiXCI7XG5cbiAgICAvLyBSRUZFUkVOQ0UgTElOS1NcbiAgICBpZiAobmV4dENoYXIgPT0gXCJbXCIpIHtcbiAgICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCk7XG4gICAgICBsZXQgY2FwID0gaW5saW5lR3JhbW1hci5saW5rTGFiZWwucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgLy8gVmFsaWQgbGluayBsYWJlbFxuICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIGxpbmtMYWJlbC5wdXNoKGNhcFsxXSwgY2FwWzJdLCBjYXBbM10pO1xuICAgICAgICBpZiAoY2FwW2lubGluZUdyYW1tYXIubGlua0xhYmVsLmxhYmVsUGxhY2Vob2xkZXJdKSB7XG4gICAgICAgICAgLy8gRnVsbCByZWZlcmVuY2UgbGlua1xuICAgICAgICAgIGxpbmtSZWYgPSBjYXBbaW5saW5lR3JhbW1hci5saW5rTGFiZWwubGFiZWxQbGFjZWhvbGRlcl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ29sbGFwc2VkIHJlZmVyZW5jZSBsaW5rXG4gICAgICAgICAgbGlua1JlZiA9IGxpbmtUZXh0LnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm90IGEgdmFsaWQgbGluayBsYWJlbFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChuZXh0Q2hhciAhPSBcIihcIikge1xuICAgICAgLy8gU2hvcnRjdXQgcmVmIGxpbmtcbiAgICAgIGxpbmtSZWYgPSBsaW5rVGV4dC50cmltKCk7XG5cbiAgICAgIC8vIElOTElORSBMSU5LU1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBuZXh0Q2hhciA9PSAnKCdcblxuICAgICAgLy8gUG90ZW50aWFsIGlubGluZSBsaW5rXG4gICAgICBjdXJyZW50T2Zmc2V0Kys7XG5cbiAgICAgIGxldCBwYXJlbnRoZXNpc0xldmVsID0gMTtcbiAgICAgIGlubGluZU91dGVyOiB3aGlsZSAoXG4gICAgICAgIGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiZcbiAgICAgICAgcGFyZW50aGVzaXNMZXZlbCA+IDBcbiAgICAgICkge1xuICAgICAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKGN1cnJlbnRPZmZzZXQpO1xuXG4gICAgICAgIC8vIFByb2Nlc3Mgd2hpdGVzcGFjZVxuICAgICAgICBsZXQgY2FwID0gL15cXHMrLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBPcGVuaW5nIHdoaXRlc3BhY2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gT3BlbiBkZXN0aW5hdGlvbiwgYnV0IG5vdCBhIGRlc3RpbmF0aW9uIHlldDsgZGVzaW5hdGlvbiBvcGVuZWQgd2l0aCA8XG4gICAgICAgICAgICBjYXNlIDI6IC8vIE9wZW4gZGVzdGluYXRpb24gd2l0aCBjb250ZW50IGluIGl0LiBXaGl0ZXNwYWNlIG9ubHkgYWxsb3dlZCBpZiBvcGVuZWQgYnkgYW5nbGUgYnJhY2tldCwgb3RoZXJ3aXNlIHRoaXMgY2xvc2VzIHRoZSBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbMF0ubWF0Y2goLzwvKSkge1xuICAgICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgIT0gMSkgcmV0dXJuIGZhbHNlOyAvLyBVbmJhbGFuY2VkIHBhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gRW1wdHkgZW5kIGRlbGltaXRlciBmb3IgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7IC8vIFdoaXRlc3BhY2UgaW4gYmV0d2VlbiBkZXN0aW5hdGlvbiBhbmQgdGl0bGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gV2hpdGVzcGFjZSBiZXR3ZWVuIGRlc3RpbmF0aW9uIGFuZCB0aXRsZVxuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAobm8gb3BlbmVyIGZvciB0aXRsZSB5ZXQsIGJ1dCBtb3JlIHdoaXRlc3BhY2UgdG8gY2FwdHVyZSlcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gV2hpdGVzcGFjZSBhdCBiZWdpbm5pbmcgb2YgdGl0bGUsIHB1c2ggZW1wdHkgdGl0bGUgYW5kIGNvbnRpbnVlXG4gICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBXaGl0ZXNwYWNlIGluIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzZdID0gbGlua0RldGFpbHNbNl0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIGJyZWFrOyAvLyBXaGl0ZXNwYWNlIGFmdGVyIGNsb3NpbmcgZGVsaW1pdGVyXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZVxuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIGJhY2tzbGFzaCBlc2NhcGVzXG4gICAgICAgIGNhcCA9IGlubGluZUdyYW1tYXIuZXNjYXBlLnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIGFuZ2xlIGJyYWNrZXQgYXMgZGVpbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoIDwgMiAmJiBzdHJpbmcubWF0Y2goL148LykpIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDApIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgbGlua0RldGFpbHNbMF0gPSBsaW5rRGV0YWlsc1swXS5jb25jYXQoXCI8XCIpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgY2xvc2luZyBhbmdsZSBicmFja2V0IGFzIGRlbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAyKSAmJlxuICAgICAgICAgIHN0cmluZy5tYXRjaCgvXj4vKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDEpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIEVtcHR5IGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiPlwiKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzICBub24tcGFyZW50aGVzaXMgZGVsaW1pdGVyIGZvciB0aXRsZS5cbiAgICAgICAgY2FwID0gL15bXCInXS8uZXhlYyhzdHJpbmcpO1xuICAgICAgICAvLyBGb3IgdGhpcyB0byBiZSBhIHZhbGlkIG9wZW5lciwgd2UgaGF2ZSB0byBlaXRoZXIgaGF2ZSBubyBkZXN0aW5hdGlvbiwgb25seSB3aGl0ZXNwYWNlIHNvIGZhcixcbiAgICAgICAgLy8gb3IgYSBkZXN0aW5hdGlvbiB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2UuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBjYXAgJiZcbiAgICAgICAgICAobGlua0RldGFpbHMubGVuZ3RoID09IDAgfHxcbiAgICAgICAgICAgIGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8XG4gICAgICAgICAgICBsaW5rRGV0YWlscy5sZW5ndGggPT0gNClcbiAgICAgICAgKSB7XG4gICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDQpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciB0aGlzIHRvIGJlIGEgdmFsaWQgY2xvc2VyLCB3ZSBoYXZlIHRvIGhhdmUgYW4gb3BlbmVyIGFuZCBzb21lIG9yIG5vIHRpdGxlLCBhbmQgdGhpcyBoYXMgdG8gbWF0Y2ggdGhlIG9wZW5lclxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FwICYmXG4gICAgICAgICAgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSAmJlxuICAgICAgICAgIGxpbmtEZXRhaWxzWzRdID09IGNhcFswXVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDUpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIEVtcHR5IGxpbmsgdGl0bGVcbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyIGNhc2VzIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMiwgMywgNykgd2lsbCBiZSBoYW5kbGVkIHdpdGggdGhlIFwiZGVmYXVsdFwiIGNhc2UgYmVsb3cuXG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCgvKSkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIHRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFkZCBlbXB0eSBvcGVuaW5nIGRlbGltaXRlciBhbmQgcHJvY2VlZCB0byBuZXh0IGNhc2VcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gVGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAyOiAvLyBQYXJ0IG9mIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KFwiKFwiKTtcbiAgICAgICAgICAgICAgaWYgKCFsaW5rRGV0YWlsc1swXS5tYXRjaCgvPCQvKSkgcGFyZW50aGVzaXNMZXZlbCsrO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCIoXCIpO1xuICAgICAgICAgICAgICBicmVhazsgLy8gb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTsgLy8gb3BlbnMgdGhlIGxpbmsgdGl0bGUsIGFkZCBlbXB0eSB0aXRsZSBjb250ZW50IGFuZCBwcm9jZWVkIHRvIG5leHQgY2FzZVxuICAgICAgICAgICAgY2FzZSA2OiAvLyBQYXJ0IG9mIHRoZSBsaW5rIHRpdGxlLiBVbi1lc2NhcGVkIHBhcmVudGhlc2lzIG9ubHkgYWxsb3dlZCBpbiBcIiBvciAnIGRlbGltaXRlZCB0aXRsZVxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbNF0gPT0gXCIoXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoXCIoXCIpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJvY2VzcyBjbG9zaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCkvKSkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPD0gMikge1xuICAgICAgICAgICAgLy8gV2UgYXJlIGluc2lkZSB0aGUgbGluayBkZXN0aW5hdGlvbi4gUGFyZW50aGVzZXMgaGF2ZSB0byBiZSBtYXRjaGVkIGlmIG5vdCBpbiBhbmdsZSBicmFja2V0c1xuICAgICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDIpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG5cbiAgICAgICAgICAgIGlmICghbGlua0RldGFpbHNbMF0ubWF0Y2goLzwkLykpIHBhcmVudGhlc2lzTGV2ZWwtLTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KFwiKVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIHRpdGxlLlxuICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzWzRdID09IFwiKFwiKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgY2xvc2VzIHRoZSBsaW5rIHRpdGxlXG4gICAgICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChcIilcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBKdXN0IHJlZ3VsYXIgb2wnIGNvbnRlbnRcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1KSBsaW5rRGV0YWlscy5wdXNoKFwiKVwiKTtcbiAgICAgICAgICAgICAgZWxzZSBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChcIilcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudGhlc2lzTGV2ZWwtLTsgLy8gVGhpcyBzaG91bGQgZGVjcmVhc2UgaXQgZnJvbSAxIHRvIDAuLi5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFyZW50aGVzaXNMZXZlbCA9PSAwKSB7XG4gICAgICAgICAgICAvLyBObyBpbnZhbGlkIGNvbmRpdGlvbiwgbGV0J3MgbWFrZSBzdXJlIHRoZSBsaW5rRGV0YWlscyBhcnJheSBpcyBjb21wbGV0ZVxuICAgICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDcpIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQW55IG9sZCBjaGFyYWN0ZXJcbiAgICAgICAgY2FwID0gL14uLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKFwiXCIpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pO1xuICAgICAgICAgICAgICBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goXCJcIik7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTtcbiAgICAgICAgICAgICAgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQWZ0ZXIgbGluayB0aXRsZSB3YXMgY2xvc2VkLCB3aXRob3V0IGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IFwiSW5maW5pdGUgbG9vcFwiOyAvLyB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgc2luY2UgdGhlIGxhc3QgdGVzdCBtYXRjaGVzIGFueSBjaGFyYWN0ZXJcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnRoZXNpc0xldmVsID4gMCkgcmV0dXJuIGZhbHNlOyAvLyBQYXJlbnRoZXMoZXMpIG5vdCBjbG9zZWRcbiAgICB9XG5cbiAgICBpZiAobGlua1JlZiAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIFJlZiBsaW5rOyBjaGVjayB0aGF0IGxpbmtSZWYgaXMgdmFsaWRcbiAgICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgbGFiZWwgb2YgdGhpcy5saW5rTGFiZWxzKSB7XG4gICAgICAgIGlmIChsYWJlbCA9PSBsaW5rUmVmKSB7XG4gICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgbGFiZWwgPSB2YWxpZFxuICAgICAgICA/IFwiVE1MaW5rTGFiZWwgVE1MaW5rTGFiZWxfVmFsaWRcIlxuICAgICAgICA6IFwiVE1MaW5rTGFiZWwgVE1MaW5rTGFiZWxfSW52YWxpZFwiO1xuICAgICAgbGV0IG91dHB1dCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7b3BlbmVyfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX0gJHtcbiAgICAgICAgbGlua0xhYmVsLmxlbmd0aCA8IDMgfHwgIWxpbmtMYWJlbFsxXSA/IGxhYmVsIDogXCJcIlxuICAgICAgfVwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKFxuICAgICAgICBsaW5rVGV4dFxuICAgICAgKX08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj5dPC9zcGFuPmA7XG5cbiAgICAgIGlmIChsaW5rTGFiZWwubGVuZ3RoID49IDMpIHtcbiAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmNvbmNhdChcbiAgICAgICAgICBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke2xpbmtMYWJlbFswXX08L3NwYW4+YCxcbiAgICAgICAgICBgPHNwYW4gY2xhc3M9XCIke2xhYmVsfVwiPiR7bGlua0xhYmVsWzFdfTwvc3Bhbj5gLFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0xhYmVsWzJdfTwvc3Bhbj5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvdXRwdXQ6IG91dHB1dCxcbiAgICAgICAgY2hhckNvdW50OiBjdXJyZW50T2Zmc2V0LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzKSB7XG4gICAgICAvLyBJbmxpbmUgbGlua1xuXG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5LlxuICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDcpIHtcbiAgICAgICAgbGlua0RldGFpbHMucHVzaChcIlwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0OiBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke29wZW5lcn08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMoXG4gICAgICAgICAgbGlua1RleHRcbiAgICAgICAgKX08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj5dKCR7XG4gICAgICAgICAgbGlua0RldGFpbHNbMF1cbiAgICAgICAgfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX1EZXN0aW5hdGlvblwiPiR7XG4gICAgICAgICAgbGlua0RldGFpbHNbMV1cbiAgICAgICAgfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0RldGFpbHNbMl19JHtcbiAgICAgICAgICBsaW5rRGV0YWlsc1szXVxuICAgICAgICB9JHtsaW5rRGV0YWlsc1s0XX08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9VGl0bGVcIj4ke1xuICAgICAgICAgIGxpbmtEZXRhaWxzWzVdXG4gICAgICAgIH08L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke2xpbmtEZXRhaWxzWzZdfSk8L3NwYW4+YCxcbiAgICAgICAgY2hhckNvdW50OiBjdXJyZW50T2Zmc2V0LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIG1hcmtkb3duIHN0cmluZyBhcyBIVE1MLCB1c2luZyBNYXJrZG93biBpbmxpbmUgZm9ybWF0dGluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsU3RyaW5nIFRoZSBpbnB1dCAobWFya2Rvd24gaW5saW5lIGZvcm1hdHRlZCkgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBIVE1MIGZvcm1hdHRlZCBvdXRwdXRcbiAgICovXG4gIHByb2Nlc3NJbmxpbmVTdHlsZXMob3JpZ2luYWxTdHJpbmcpIHtcbiAgICBsZXQgcHJvY2Vzc2VkID0gXCJcIjtcbiAgICBsZXQgc3RhY2sgPSBbXTsgLy8gU3RhY2sgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyBvZiB0aGUgZm9ybWF0OiB7ZGVsaW1pdGVyLCBkZWxpbVN0cmluZywgY291bnQsIG91dHB1dH1cbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmc7XG5cbiAgICBvdXRlcjogd2hpbGUgKHN0cmluZykge1xuICAgICAgLy8gUHJvY2VzcyBzaW1wbGUgcnVsZXMgKG5vbi1kZWxpbWl0ZXIpXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFtcImVzY2FwZVwiLCBcImNvZGVcIiwgXCJhdXRvbGlua1wiLCBcImh0bWxcIl0pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgcHJvY2Vzc2VkICs9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVwbGFjZW1lbnRcbiAgICAgICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCQoWzEtOV0pL2csIChzdHIsIHAxKSA9PiBwcm9jZXNzSW5saW5lU3R5bGVzKGNhcFtwMV0pKSAvLyB0b2RvIHJlY3Vyc2l2ZSBjYWxsaW5nXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwkKFsxLTldKS9nLCAoc3RyLCBwMSkgPT4gaHRtbGVzY2FwZShjYXBbcDFdKSk7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIGxpbmtzIC8gaW1hZ2VzXG4gICAgICBsZXQgcG90ZW50aWFsTGluayA9IHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCk7XG4gICAgICBsZXQgcG90ZW50aWFsSW1hZ2UgPSBzdHJpbmcubWF0Y2goaW5saW5lR3JhbW1hci5pbWFnZU9wZW4ucmVnZXhwKTtcbiAgICAgIGlmIChwb3RlbnRpYWxJbWFnZSB8fCBwb3RlbnRpYWxMaW5rKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBwb3RlbnRpYWxJbWFnZSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtyZXN1bHQub3V0cHV0fWA7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihyZXN1bHQuY2hhckNvdW50KTtcbiAgICAgICAgICBvZmZzZXQgKz0gcmVzdWx0LmNoYXJDb3VudDtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgZW0gLyBzdHJvbmcgZGVsaW1pdGVyc1xuICAgICAgbGV0IGNhcCA9IC8oXlxcKispfCheXyspLy5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBkZWxpbUNvdW50ID0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsaW1TdHJpbmcgPSBjYXBbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSBjYXBbMF1bMF07IC8vIFRoaXMgc2hvdWxkIGJlICogb3IgX1xuXG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG5cbiAgICAgICAgLy8gV2UgaGF2ZSBhIGRlbGltaXRlciBydW4uIExldCdzIGNoZWNrIGlmIGl0IGNhbiBvcGVuIG9yIGNsb3NlIGFuIGVtcGhhc2lzLlxuXG4gICAgICAgIGNvbnN0IHByZWNlZGluZyA9IG9mZnNldCA+IDAgPyBvcmlnaW5hbFN0cmluZy5zdWJzdHIoMCwgb2Zmc2V0KSA6IFwiIFwiOyAvLyBiZWdpbm5pbmcgYW5kIGVuZCBvZiBsaW5lIGNvdW50IGFzIHdoaXRlc3BhY2VcbiAgICAgICAgY29uc3QgZm9sbG93aW5nID1cbiAgICAgICAgICBvZmZzZXQgKyBjYXBbMF0ubGVuZ3RoIDwgb3JpZ2luYWxTdHJpbmcubGVuZ3RoID8gc3RyaW5nIDogXCIgXCI7XG5cbiAgICAgICAgY29uc3QgcHVuY3R1YXRpb25Gb2xsb3dzID0gZm9sbG93aW5nLm1hdGNoKHB1bmN0dWF0aW9uTGVhZGluZyk7XG4gICAgICAgIGNvbnN0IHB1bmN0dWF0aW9uUHJlY2VkZXMgPSBwcmVjZWRpbmcubWF0Y2gocHVuY3R1YXRpb25UcmFpbGluZyk7XG4gICAgICAgIGNvbnN0IHdoaXRlc3BhY2VGb2xsb3dzID0gZm9sbG93aW5nLm1hdGNoKC9eXFxzLyk7XG4gICAgICAgIGNvbnN0IHdoaXRlc3BhY2VQcmVjZWRlcyA9IHByZWNlZGluZy5tYXRjaCgvXFxzJC8pO1xuXG4gICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgcnVsZXMgZm9yIHJpZ2h0LWZsYW5raW5nIGFuZCBsZWZ0LWZsYW5raW5nIGRlbGltaXRlciBydW5zIGFzIHBlciBDb21tb25NYXJrIHNwZWNcbiAgICAgICAgbGV0IGNhbk9wZW4gPVxuICAgICAgICAgICF3aGl0ZXNwYWNlRm9sbG93cyAmJlxuICAgICAgICAgICghcHVuY3R1YXRpb25Gb2xsb3dzIHx8XG4gICAgICAgICAgICAhIXdoaXRlc3BhY2VQcmVjZWRlcyB8fFxuICAgICAgICAgICAgISFwdW5jdHVhdGlvblByZWNlZGVzKTtcbiAgICAgICAgbGV0IGNhbkNsb3NlID1cbiAgICAgICAgICAhd2hpdGVzcGFjZVByZWNlZGVzICYmXG4gICAgICAgICAgKCFwdW5jdHVhdGlvblByZWNlZGVzIHx8ICEhd2hpdGVzcGFjZUZvbGxvd3MgfHwgISFwdW5jdHVhdGlvbkZvbGxvd3MpO1xuXG4gICAgICAgIC8vIFVuZGVyc2NvcmVzIGhhdmUgbW9yZSBkZXRhaWxlZCBydWxlcyB0aGFuIGp1c3QgYmVpbmcgcGFydCBvZiBsZWZ0LSBvciByaWdodC1mbGFua2luZyBydW46XG4gICAgICAgIGlmIChjdXJyZW50RGVsaW1pdGVyID09IFwiX1wiICYmIGNhbk9wZW4gJiYgY2FuQ2xvc2UpIHtcbiAgICAgICAgICBjYW5PcGVuID0gcHVuY3R1YXRpb25QcmVjZWRlcztcbiAgICAgICAgICBjYW5DbG9zZSA9IHB1bmN0dWF0aW9uRm9sbG93cztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBkZWxpbWl0ZXIgY2FuIGNsb3NlLCBjaGVjayB0aGUgc3RhY2sgaWYgdGhlcmUncyBzb21ldGhpbmcgaXQgY2FuIGNsb3NlXG4gICAgICAgIGlmIChjYW5DbG9zZSkge1xuICAgICAgICAgIGxldCBzdGFja1BvaW50ZXIgPSBzdGFjay5sZW5ndGggLSAxO1xuICAgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIG9wZW5pbmcgZGVsaW1pdGVyLCBtb3ZlIGRvd24gdGhyb3VnaCB0aGUgc3RhY2tcbiAgICAgICAgICB3aGlsZSAoZGVsaW1Db3VudCAmJiBzdGFja1BvaW50ZXIgPj0gMCkge1xuICAgICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uZGVsaW1pdGVyID09IGN1cnJlbnREZWxpbWl0ZXIpIHtcbiAgICAgICAgICAgICAgLy8gV2UgZm91bmQgYSBtYXRjaGluZyBkZWxpbWl0ZXIsIGxldCdzIGNvbnN0cnVjdCB0aGUgZm9ybWF0dGVkIHN0cmluZ1xuXG4gICAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGVudHJ5LmNvdW50XG4gICAgICAgICAgICAgICAgKX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgZm9ybWF0IHRoZSBzdHJpbmdcbiAgICAgICAgICAgICAgaWYgKGRlbGltQ291bnQgPj0gMiAmJiBzdGFja1tzdGFja1BvaW50ZXJdLmNvdW50ID49IDIpIHtcbiAgICAgICAgICAgICAgICAvLyBTdHJvbmdcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgPHNwYW4gY2xhc3M9XCJUTU1hcmtcIj4ke2N1cnJlbnREZWxpbWl0ZXJ9JHtjdXJyZW50RGVsaW1pdGVyfTwvc3Bhbj48c3Ryb25nIGNsYXNzPVwiVE1TdHJvbmdcIj4ke3Byb2Nlc3NlZH08L3N0cm9uZz48c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn0ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgZGVsaW1Db3VudCAtPSAyO1xuICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgLT0gMjtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBFbVxuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+PGVtIGNsYXNzPVwiVE1FbVwiPiR7cHJvY2Vzc2VkfTwvZW0+PHNwYW4gY2xhc3M9XCJUTU1hcmtcIj4ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgZGVsaW1Db3VudCAtPSAxO1xuICAgICAgICAgICAgICAgIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgLT0gMTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIElmIHRoYXQgc3RhY2sgbGV2ZWwgaXMgZW1wdHkgbm93LCBwb3AgaXRcbiAgICAgICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgPT0gMCkge1xuICAgICAgICAgICAgICAgIGxldCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGAke2VudHJ5Lm91dHB1dH0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUaGlzIHN0YWNrIGxldmVsJ3MgZGVsaW1pdGVyIHR5cGUgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBkZWxpbWl0ZXIgdHlwZVxuICAgICAgICAgICAgICAvLyBHbyBkb3duIG9uZSBsZXZlbCBpbiB0aGUgc3RhY2tcbiAgICAgICAgICAgICAgc3RhY2tQb2ludGVyLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKGRlbGltQ291bnQgJiYgY2FuT3Blbikge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiBjdXJyZW50RGVsaW1pdGVyLFxuICAgICAgICAgICAgZGVsaW1TdHJpbmc6IGRlbGltU3RyaW5nLFxuICAgICAgICAgICAgY291bnQ6IGRlbGltQ291bnQsXG4gICAgICAgICAgICBvdXRwdXQ6IHByb2Nlc3NlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBcIlwiOyAvLyBDdXJyZW50IGZvcm1hdHRlZCBvdXRwdXQgaGFzIGJlZW4gcHVzaGVkIG9uIHRoZSBzdGFjayBhbmQgd2lsbCBiZSBwcmVwZW5kZWQgd2hlbiB0aGUgc3RhY2sgZ2V0cyBwb3BwZWRcbiAgICAgICAgICBkZWxpbUNvdW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFueSBkZWxpbWl0ZXJzIHRoYXQgYXJlIGxlZnQgKGNsb3NpbmcgdW5tYXRjaGVkKSBhcmUgYXBwZW5kZWQgdG8gdGhlIG91dHB1dC5cbiAgICAgICAgaWYgKGRlbGltQ291bnQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtkZWxpbVN0cmluZy5zdWJzdHIoMCwgZGVsaW1Db3VudCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgZm9yIHN0cmlrZXRocm91Z2ggZGVsaW1pdGVyXG4gICAgICBjYXAgPSAvXn5+Ly5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBjb25zdW1lZCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RhY2tQb2ludGVyID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgb3BlbmluZyBkZWxpbWl0ZXIsIG1vdmUgZG93biB0aHJvdWdoIHRoZSBzdGFja1xuICAgICAgICB3aGlsZSAoIWNvbnN1bWVkICYmIHN0YWNrUG9pbnRlciA+PSAwKSB7XG4gICAgICAgICAgaWYgKHN0YWNrW3N0YWNrUG9pbnRlcl0uZGVsaW1pdGVyID09IFwiflwiKSB7XG4gICAgICAgICAgICAvLyBXZSBmb3VuZCBhIG1hdGNoaW5nIGRlbGltaXRlciwgbGV0J3MgY29uc3RydWN0IHRoZSBmb3JtYXR0ZWQgc3RyaW5nXG5cbiAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgd2hpbGUgKHN0YWNrUG9pbnRlciA8IHN0YWNrLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgZW50cnkuY291bnRcbiAgICAgICAgICAgICAgKX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUaGVuLCBmb3JtYXQgdGhlIHN0cmluZ1xuICAgICAgICAgICAgcHJvY2Vzc2VkID0gYDxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+fn48L3NwYW4+PGRlbCBjbGFzcz1cIlRNU3RyaWtldGhyb3VnaFwiPiR7cHJvY2Vzc2VkfTwvZGVsPjxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+fn48L3NwYW4+YDtcbiAgICAgICAgICAgIGxldCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICBjb25zdW1lZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoaXMgc3RhY2sgbGV2ZWwncyBkZWxpbWl0ZXIgdHlwZSBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IGRlbGltaXRlciB0eXBlXG4gICAgICAgICAgICAvLyBHbyBkb3duIG9uZSBsZXZlbCBpbiB0aGUgc3RhY2tcbiAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKCFjb25zdW1lZCkge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiBcIn5cIixcbiAgICAgICAgICAgIGRlbGltU3RyaW5nOiBcIn5+XCIsXG4gICAgICAgICAgICBjb3VudDogMixcbiAgICAgICAgICAgIG91dHB1dDogcHJvY2Vzc2VkLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHByb2Nlc3NlZCA9IFwiXCI7IC8vIEN1cnJlbnQgZm9ybWF0dGVkIG91dHB1dCBoYXMgYmVlbiBwdXNoZWQgb24gdGhlIHN0YWNrIGFuZCB3aWxsIGJlIHByZXBlbmRlZCB3aGVuIHRoZSBzdGFjayBnZXRzIHBvcHBlZFxuICAgICAgICB9XG5cbiAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzICdkZWZhdWx0JyBydWxlXG4gICAgICBjYXAgPSBpbmxpbmVHcmFtbWFyLmRlZmF1bHQucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgIGlmIChjYXApIHtcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcbiAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgIHByb2Nlc3NlZCArPSBpbmxpbmVHcmFtbWFyLmRlZmF1bHQucmVwbGFjZW1lbnQucmVwbGFjZShcbiAgICAgICAgICAvXFwkKFsxLTldKS9nLFxuICAgICAgICAgIChzdHIsIHAxKSA9PiBodG1sZXNjYXBlKGNhcFtwMV0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuICAgICAgdGhyb3cgXCJJbmZpbml0ZSBsb29wIVwiO1xuICAgIH1cblxuICAgIC8vIEVtcHR5IHRoZSBzdGFjaywgYW55IG9wZW5pbmcgZGVsaW1pdGVycyBhcmUgdW51c2VkXG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgY29uc3QgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgIHByb2Nlc3NlZCA9IGAke2VudHJ5Lm91dHB1dH0ke2VudHJ5LmRlbGltU3RyaW5nLnN1YnN0cihcbiAgICAgICAgMCxcbiAgICAgICAgZW50cnkuY291bnRcbiAgICAgICl9JHtwcm9jZXNzZWR9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgbGluZSBkaXJ0eSBmbGFnIChyZXNldHMgaXQgdG8gYW4gYXJyYXkgb2YgZmFsc2UpXG4gICAqL1xuICBjbGVhckRpcnR5RmxhZygpIHtcbiAgICB0aGlzLmxpbmVEaXJ0eSA9IG5ldyBBcnJheSh0aGlzLmxpbmVzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxpbmVEaXJ0eS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5saW5lRGlydHlbaV0gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY2xhc3MgcHJvcGVydGllcyAobGluZXMsIGxpbmVFbGVtZW50cykgZnJvbSB0aGUgRE9NLlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGNvbnRlbnRzIGNoYW5nZWRcbiAgICovXG4gIHVwZGF0ZUxpbmVDb250ZW50cygpIHtcbiAgICAvLyB0aGlzLmxpbmVEaXJ0eSA9IFtdO1xuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgY2hhbmdlZCBhbnl0aGluZyBhYm91dCB0aGUgbnVtYmVyIG9mIGxpbmVzIChpbnNlcnRlZCBvciBkZWxldGVkIGEgcGFyYWdyYXBoKVxuICAgIC8vIDwgMCBtZWFucyBsaW5lKHMpIHJlbW92ZWQ7ID4gMCBtZWFucyBsaW5lKHMpIGFkZGVkXG4gICAgbGV0IGxpbmVEZWx0YSA9IHRoaXMuZS5jaGlsZEVsZW1lbnRDb3VudCAtIHRoaXMubGluZXMubGVuZ3RoO1xuICAgIGlmIChsaW5lRGVsdGEpIHtcbiAgICAgIC8vIHl1cC4gTGV0J3MgdHJ5IGhvdyBtdWNoIHdlIGNhbiBzYWx2YWdlIChmaW5kIG91dCB3aGljaCBsaW5lcyBmcm9tIGJlZ2lubmluZyBhbmQgZW5kIHdlcmUgdW5jaGFuZ2VkKVxuICAgICAgLy8gRmluZCBsaW5lcyBmcm9tIHRoZSBiZWdpbm5pbmcgdGhhdCBoYXZlbid0IGNoYW5nZWQuLi5cbiAgICAgIGxldCBmaXJzdENoYW5nZWRMaW5lID0gMDtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgZmlyc3RDaGFuZ2VkTGluZSA8PSB0aGlzLmxpbmVzLmxlbmd0aCAmJlxuICAgICAgICBmaXJzdENoYW5nZWRMaW5lIDw9IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICB0aGlzLmxpbmVFbGVtZW50c1tmaXJzdENoYW5nZWRMaW5lXSAmJiAvLyBDaGVjayB0aGF0IHRoZSBsaW5lIGVsZW1lbnQgaGFzbid0IGJlZW4gZGVsZXRlZFxuICAgICAgICB0aGlzLmxpbmVzW2ZpcnN0Q2hhbmdlZExpbmVdID09XG4gICAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbZmlyc3RDaGFuZ2VkTGluZV0udGV4dENvbnRlbnRcbiAgICAgICkge1xuICAgICAgICBmaXJzdENoYW5nZWRMaW5lKys7XG4gICAgICB9XG5cbiAgICAgIC8vIEVuZCBhbHNvIGZyb20gdGhlIGVuZFxuICAgICAgbGV0IGxhc3RDaGFuZ2VkTGluZSA9IC0xO1xuICAgICAgd2hpbGUgKFxuICAgICAgICAtbGFzdENoYW5nZWRMaW5lIDwgdGhpcy5saW5lcy5sZW5ndGggJiZcbiAgICAgICAgLWxhc3RDaGFuZ2VkTGluZSA8IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCAmJlxuICAgICAgICB0aGlzLmxpbmVzW3RoaXMubGluZXMubGVuZ3RoICsgbGFzdENoYW5nZWRMaW5lXSA9PVxuICAgICAgICAgIHRoaXMubGluZUVsZW1lbnRzW3RoaXMubGluZUVsZW1lbnRzLmxlbmd0aCArIGxhc3RDaGFuZ2VkTGluZV1cbiAgICAgICAgICAgIC50ZXh0Q29udGVudFxuICAgICAgKSB7XG4gICAgICAgIGxhc3RDaGFuZ2VkTGluZS0tO1xuICAgICAgfVxuXG4gICAgICBsZXQgbGluZXNUb0RlbGV0ZSA9XG4gICAgICAgIHRoaXMubGluZXMubGVuZ3RoICsgbGFzdENoYW5nZWRMaW5lICsgMSAtIGZpcnN0Q2hhbmdlZExpbmU7XG4gICAgICBpZiAobGluZXNUb0RlbGV0ZSA8IC1saW5lRGVsdGEpIGxpbmVzVG9EZWxldGUgPSAtbGluZURlbHRhO1xuICAgICAgaWYgKGxpbmVzVG9EZWxldGUgPCAwKSBsaW5lc1RvRGVsZXRlID0gMDtcblxuICAgICAgbGV0IGxpbmVzVG9BZGQgPSBbXTtcbiAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgbGluZXNUb0RlbGV0ZSArIGxpbmVEZWx0YTsgbCsrKSB7XG4gICAgICAgIGxpbmVzVG9BZGQucHVzaCh0aGlzLmxpbmVFbGVtZW50c1tmaXJzdENoYW5nZWRMaW5lICsgbF0udGV4dENvbnRlbnQpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcGxpY2VMaW5lcyhmaXJzdENoYW5nZWRMaW5lLCBsaW5lc1RvRGVsZXRlLCBsaW5lc1RvQWRkLCBmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGxpbmVzIGFkZGVkIG9yIHJlbW92ZWRcbiAgICAgIGZvciAobGV0IGxpbmUgPSAwOyBsaW5lIDwgdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoOyBsaW5lKyspIHtcbiAgICAgICAgbGV0IGUgPSB0aGlzLmxpbmVFbGVtZW50c1tsaW5lXTtcbiAgICAgICAgbGV0IGN0ID0gZS50ZXh0Q29udGVudDtcbiAgICAgICAgaWYgKHRoaXMubGluZXNbbGluZV0gIT09IGN0KSB7XG4gICAgICAgICAgLy8gTGluZSBjaGFuZ2VkLCB1cGRhdGUgaXRcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gY3Q7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBhIG5ldyBwYXJhZ3JhcGguXG4gICAqIEBwYXJhbSBzZWwgVGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAqL1xuICBwcm9jZXNzTmV3UGFyYWdyYXBoKHNlbCkge1xuICAgIGlmICghc2VsKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgbGluZXMgZnJvbSBjb250ZW50XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcblxuICAgIGxldCBjb250aW51YWJsZVR5cGUgPSBmYWxzZTtcbiAgICAvLyBMZXQncyBzZWUgaWYgd2UgbmVlZCB0byBjb250aW51ZSBhIGxpc3RcblxuICAgIGxldCBjaGVja0xpbmUgPSBzZWwuY29sID4gMCA/IHNlbC5yb3cgOiBzZWwucm93IC0gMTtcbiAgICBzd2l0Y2ggKHRoaXMubGluZVR5cGVzW2NoZWNrTGluZV0pIHtcbiAgICAgIGNhc2UgXCJUTVVMXCI6XG4gICAgICAgIGNvbnRpbnVhYmxlVHlwZSA9IFwiVE1VTFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJUTU9MXCI6XG4gICAgICAgIGNvbnRpbnVhYmxlVHlwZSA9IFwiVE1PTFwiO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJUTUluZGVudGVkQ29kZVwiOlxuICAgICAgICBjb250aW51YWJsZVR5cGUgPSBcIlRNSW5kZW50ZWRDb2RlXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBsaW5lcyA9IHRoaXMubGluZXNbc2VsLnJvd11cbiAgICAgIC5yZXBsYWNlKC9cXG5cXG4kLywgXCJcXG5cIilcbiAgICAgIC5zcGxpdCgvKD86XFxyXFxufFxcbnxcXHIpLyk7XG4gICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBObyBuZXcgbGluZVxuICAgICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3BsaWNlTGluZXMoc2VsLnJvdywgMSwgbGluZXMsIHRydWUpO1xuICAgIHNlbC5yb3crKztcbiAgICBzZWwuY29sID0gMDtcblxuICAgIGlmIChjb250aW51YWJsZVR5cGUpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBwcmV2aW91cyBsaW5lIHdhcyBub24tZW1wdHlcbiAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXJbY29udGludWFibGVUeXBlXS5yZWdleHAuZXhlYyhcbiAgICAgICAgdGhpcy5saW5lc1tzZWwucm93IC0gMV1cbiAgICAgICk7XG4gICAgICBpZiAoY2FwdHVyZSkge1xuICAgICAgICAvLyBDb252ZW50aW9uOiBjYXB0dXJlWzFdIGlzIHRoZSBsaW5lIHR5cGUgbWFya2VyLCBjYXB0dXJlWzJdIGlzIHRoZSBjb250ZW50XG4gICAgICAgIGlmIChjYXB0dXJlWzJdKSB7XG4gICAgICAgICAgLy8gUHJldmlvdXMgbGluZSBoYXMgY29udGVudCwgY29udGludWUgdGhlIGNvbnRpbnVhYmxlIHR5cGVcblxuICAgICAgICAgIC8vIEhhY2sgZm9yIE9MOiBpbmNyZW1lbnQgbnVtYmVyXG4gICAgICAgICAgaWYgKGNvbnRpbnVhYmxlVHlwZSA9PSBcIlRNT0xcIikge1xuICAgICAgICAgICAgY2FwdHVyZVsxXSA9IGNhcHR1cmVbMV0ucmVwbGFjZSgvXFxkezEsOX0vLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChyZXN1bHRbMF0pICsgMTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3ddID0gYCR7Y2FwdHVyZVsxXX0ke3RoaXMubGluZXNbc2VsLnJvd119YDtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtzZWwucm93XSA9IHRydWU7XG4gICAgICAgICAgc2VsLmNvbCA9IGNhcHR1cmVbMV0ubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFByZXZpb3VzIGxpbmUgaGFzIG5vIGNvbnRlbnQsIHJlbW92ZSB0aGUgY29udGludWFibGUgdHlwZSBmcm9tIHRoZSBwcmV2aW91cyByb3dcbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3cgLSAxXSA9IFwiXCI7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbc2VsLnJvdyAtIDFdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBQcm9jZXNzZXMgYSBcImRlbGV0ZVwiIGlucHV0IGFjdGlvbi5cbiAgLy8gICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBzZWxlY3Rpb25cbiAgLy8gICogQHBhcmFtIHtib29sZWFufSBmb3J3YXJkIElmIHRydWUsIHBlcmZvcm1zIGEgZm9yd2FyZCBkZWxldGUsIG90aGVyd2lzZSBwZXJmb3JtcyBhIGJhY2t3YXJkIGRlbGV0ZVxuICAvLyAgKi9cbiAgLy8gcHJvY2Vzc0RlbGV0ZShmb2N1cywgZm9yd2FyZCkge1xuICAvLyAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgLy8gICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gIC8vICAgLy8gRG8gd2UgaGF2ZSBhIG5vbi1lbXB0eSBzZWxlY3Rpb24/XG4gIC8vICAgaWYgKGZvY3VzLmNvbCAhPSBhbmNob3IuY29sIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSB7XG4gIC8vICAgICAvLyBub24tZW1wdHkuIGRpcmVjdGlvbiBkb2Vzbid0IG1hdHRlci5cbiAgLy8gICAgIHRoaXMucGFzdGUoJycsIGFuY2hvciwgZm9jdXMpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBpZiAoZm9yd2FyZCkge1xuICAvLyAgICAgICBpZiAoZm9jdXMuY29sIDwgdGhpcy5saW5lc1tmb2N1cy5yb3ddLmxlbmd0aCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93LCBjb2w6IGZvY3VzLmNvbCArIDF9LCBmb2N1cyk7XG4gIC8vICAgICAgIGVsc2UgaWYgKGZvY3VzLmNvbCA8IHRoaXMubGluZXMubGVuZ3RoKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3cgKyAxLCBjb2w6IDB9LCBmb2N1cyk7XG4gIC8vICAgICAgIC8vIE90aGVyd2lzZSwgd2UncmUgYXQgdGhlIHZlcnkgZW5kIGFuZCBjYW4ndCBkZWxldGUgZm9yd2FyZFxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgaWYgKGZvY3VzLmNvbCA+IDApIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdywgY29sOiBmb2N1cy5jb2wgLSAxfSwgZm9jdXMpO1xuICAvLyAgICAgICBlbHNlIGlmIChmb2N1cy5yb3cgPiAwKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3cgLSAxLCBjb2w6IHRoaXMubGluZXNbZm9jdXMucm93IC0gMV0ubGVuZ3RoIC0gMX0sIGZvY3VzKTtcbiAgLy8gICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSdyZSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgYW5kIGNhbid0IGRlbGV0ZSBiYWNrd2FyZHNcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBzZWxlY3Rpb24gY291bnRlZCBieSByb3cgYW5kIGNvbHVtbiBvZiB0aGUgZWRpdG9yIE1hcmtkb3duIGNvbnRlbnQgKGFzIG9wcG9zZWQgdG8gdGhlIHBvc2l0aW9uIGluIHRoZSBET00pLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGdldEFuY2hvciBpZiBzZXQgdG8gdHJ1ZSwgZ2V0cyB0aGUgc2VsZWN0aW9uIGFuY2hvciAoc3RhcnQgcG9pbnQgb2YgdGhlIHNlbGVjdGlvbiksIG90aGVyd2lzZSBnZXRzIHRoZSBmb2N1cyAoZW5kIHBvaW50KS5cbiAgICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3Rpb24sIHdpdGggcHJvcGVydGllcyBjb2wgYW5kIHJvdy5cbiAgICovXG4gIGdldFNlbGVjdGlvbihnZXRBbmNob3IgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBsZXQgc3RhcnROb2RlID0gZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck5vZGUgOiBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuICAgIGlmICghc3RhcnROb2RlKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgb2Zmc2V0ID0gZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICBpZiAoc3RhcnROb2RlID09IHRoaXMuZSkge1xuICAgICAgaWYgKG9mZnNldCA8IHRoaXMubGluZXMubGVuZ3RoKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdzogb2Zmc2V0LFxuICAgICAgICAgIGNvbDogMCxcbiAgICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJvdzogb2Zmc2V0IC0gMSxcbiAgICAgICAgY29sOiB0aGlzLmxpbmVzW29mZnNldCAtIDFdLmxlbmd0aCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IGNvbCA9IHRoaXMuY29tcHV0ZUNvbHVtbihzdGFydE5vZGUsIG9mZnNldCk7XG4gICAgaWYgKGNvbCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7IC8vIFdlIGFyZSBvdXRzaWRlIG9mIHRoZSBlZGl0b3JcblxuICAgIC8vIEZpbmQgdGhlIHJvdyBub2RlXG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgd2hpbGUgKG5vZGUucGFyZW50RWxlbWVudCAhPSB0aGlzLmUpIHtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbGV0IHJvdyA9IDA7XG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIHJlYWQgYSBsaW5lIG51bWJlciBmcm9tIHRoZSBkYXRhLWxpbmUtbnVtIGF0dHJpYnV0ZS5cbiAgICAvLyBUaGUgbGFzdCBjb25kaXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIHNpbmNlIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggY29waWVzIHRoZSBwcmV2aW91cyByb3dzJyBsaW5lIG51bWJlclxuICAgIGlmIChcbiAgICAgIG5vZGUuZGF0YXNldCAmJlxuICAgICAgbm9kZS5kYXRhc2V0LmxpbmVOdW0gJiZcbiAgICAgICghbm9kZS5wcmV2aW91c1NpYmxpbmcgfHxcbiAgICAgICAgbm9kZS5wcmV2aW91c1NpYmxpbmcuZGF0YXNldC5saW5lTnVtICE9IG5vZGUuZGF0YXNldC5saW5lTnVtKVxuICAgICkge1xuICAgICAgcm93ID0gcGFyc2VJbnQobm9kZS5kYXRhc2V0LmxpbmVOdW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aGlsZSAobm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgcm93Kys7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgcm93OiByb3csIGNvbDogY29sLCBub2RlOiBzdGFydE5vZGUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhIGNvbHVtbiB3aXRoaW4gYW4gZWRpdG9yIGxpbmUgZnJvbSBhIG5vZGUgYW5kIG9mZnNldCB3aXRoaW4gdGhhdCBub2RlLlxuICAgKiBAcGFyYW0ge05vZGV9IHN0YXJ0Tm9kZSBUaGUgbm9kZVxuICAgKiBAcGFyYW0ge2ludH0gb2Zmc2V0IFRIZSBzZWxlY3Rpb25cbiAgICogQHJldHVybnMge2ludH0gdGhlIGNvbHVtbiwgb3IgbnVsbCBpZiB0aGUgbm9kZSBpcyBub3QgaW5zaWRlIHRoZSBlZGl0b3JcbiAgICovXG4gIGNvbXB1dGVDb2x1bW4oc3RhcnROb2RlLCBvZmZzZXQpIHtcbiAgICBsZXQgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICBsZXQgY29sO1xuICAgIC8vIEZpcnN0LCBtYWtlIHN1cmUgd2UncmUgYWN0dWFsbHkgaW4gdGhlIGVkaXRvci5cbiAgICB3aGlsZSAobm9kZSAmJiBub2RlLnBhcmVudE5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICBpZiAobm9kZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcblxuICAgIC8vIFRoZXJlIGFyZSB0d28gd2F5cyB0aGF0IG9mZnNldCBjYW4gYmUgZGVmaW5lZDpcbiAgICAvLyAtIEVpdGhlciwgdGhlIG5vZGUgaXMgYSB0ZXh0IG5vZGUsIGluIHdoaWNoIGNhc2UgaXQgaXMgdGhlIG9mZnNldCB3aXRoaW4gdGhlIHRleHRcbiAgICAvLyAtIE9yLCB0aGUgbm9kZSBpcyBhbiBlbGVtZW50IHdpdGggY2hpbGQgbm90ZXMsIGluIHdoaWNoIGNhc2UgdGhlIG9mZnNldCByZWZlcnMgdG8gdGhlXG4gICAgLy8gICBjaGlsZCBub2RlIGFmdGVyIHdoaWNoIHRoZSBzZWxlY3Rpb24gaXMgbG9jYXRlZFxuICAgIGlmIChzdGFydE5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFIHx8IG9mZnNldCA9PT0gMCkge1xuICAgICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB0aGUgbm9kZSBpcyBub24tdGV4dCBub2RlIGJ1dCB0aGUgb2Zmc2V0IGlzIDAsXG4gICAgICAvLyBUaGUgc2VsZWN0aW9uIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhhdCBlbGVtZW50IHNvIHdlXG4gICAgICAvLyBjYW4gc2ltcGx5IHVzZSB0aGUgc2FtZSBhcHByb2FjaCBhcyBpZiBpdCB3ZXJlIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgIC8vIG9mIGEgdGV4dCBub2RlLlxuICAgICAgY29sID0gb2Zmc2V0O1xuICAgICAgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICB9IGVsc2UgaWYgKG9mZnNldCA+IDApIHtcbiAgICAgIG5vZGUgPSBzdGFydE5vZGUuY2hpbGROb2Rlc1tvZmZzZXQgLSAxXTtcbiAgICAgIGNvbCA9IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgIH1cbiAgICB3aGlsZSAobm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgY29sICs9IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBET00gbm9kZSBhbmQgb2Zmc2V0IHdpdGhpbiB0aGF0IG5vZGUgZnJvbSBhIHBvc2l0aW9uIGV4cHJlc3NlZCBhcyByb3cgYW5kIGNvbHVtbi5cbiAgICogQHBhcmFtIHtpbnR9IHJvdyBSb3cgKGxpbmUgbnVtYmVyKVxuICAgKiBAcGFyYW0ge2ludH0gY29sIENvbHVtblxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0d28gcHJvcGVydGllczogbm9kZSBhbmQgb2Zmc2V0LiBvZmZzZXQgbWF5IGJlIG51bGw7XG4gICAqL1xuICBjb21wdXRlTm9kZUFuZE9mZnNldChyb3csIGNvbCwgYmluZFJpZ2h0ID0gZmFsc2UpIHtcbiAgICBpZiAocm93ID49IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gU2VsZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0ZXh0LCBzZXQgc2VsZWN0aW9uIHRvIGVuZCBvZiB0ZXh0XG4gICAgICByb3cgPSB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggLSAxO1xuICAgICAgY29sID0gdGhpcy5saW5lc1tyb3ddLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGNvbCA+IHRoaXMubGluZXNbcm93XS5sZW5ndGgpIHtcbiAgICAgIGNvbCA9IHRoaXMubGluZXNbcm93XS5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmxpbmVFbGVtZW50c1tyb3ddO1xuICAgIGxldCBub2RlID0gcGFyZW50Tm9kZS5maXJzdENoaWxkO1xuXG4gICAgbGV0IGNoaWxkcmVuQ29tcGxldGUgPSBmYWxzZTtcbiAgICAvLyBkZWZhdWx0IHJldHVybiB2YWx1ZVxuICAgIGxldCBydiA9IHtcbiAgICAgIG5vZGU6IHBhcmVudE5vZGUuZmlyc3RDaGlsZCA/IHBhcmVudE5vZGUuZmlyc3RDaGlsZCA6IHBhcmVudE5vZGUsXG4gICAgICBvZmZzZXQ6IDAsXG4gICAgfTtcblxuICAgIHdoaWxlIChub2RlICE9IHBhcmVudE5vZGUpIHtcbiAgICAgIGlmICghY2hpbGRyZW5Db21wbGV0ZSAmJiBub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVmFsdWUubGVuZ3RoID49IGNvbCkge1xuICAgICAgICAgIGlmIChiaW5kUmlnaHQgJiYgbm9kZS5ub2RlVmFsdWUubGVuZ3RoID09IGNvbCkge1xuICAgICAgICAgICAgLy8gU2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyB0ZXh0IG5vZGUsIGJ1dCB3ZSBhcmUgYmluZGluZyByaWdodCAocHJlZmVyIGFuIG9mZnNldCBvZiAwIGluIHRoZSBuZXh0IHRleHQgbm9kZSlcbiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHJldHVybiB2YWx1ZSBpbiBjYXNlIHdlIGRvbid0IGZpbmQgYW5vdGhlciB0ZXh0IG5vZGVcbiAgICAgICAgICAgIHJ2ID0geyBub2RlOiBub2RlLCBvZmZzZXQ6IGNvbCB9O1xuICAgICAgICAgICAgY29sID0gMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHsgbm9kZTogbm9kZSwgb2Zmc2V0OiBjb2wgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29sIC09IG5vZGUubm9kZVZhbHVlLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFjaGlsZHJlbkNvbXBsZXRlICYmIG5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIGNoaWxkcmVuQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZHJlbkNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFaXRoZXIsIHRoZSBwb3NpdGlvbiB3YXMgaW52YWxpZCBhbmQgd2UganVzdCByZXR1cm4gdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlXG4gICAgLy8gT3Igd2UgYXJlIGJpbmRpbmcgcmlnaHQgYW5kIHRoZSBzZWxlY3Rpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGluZVxuICAgIHJldHVybiBydjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gYmFzZWQgb24gcm93cyBhbmQgY29sdW1ucyB3aXRoaW4gdGhlIGVkaXRvciBNYXJrZG93biBjb250ZW50LlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc2VsZWN0aW9uLCBuZWVkcyB0byBoYXZlIHByb3BlcnRpZXMgcm93IGFuZCBjb2wuXG4gICAqIEBwYXJhbSBhbmNob3IgQW5jaG9yIG9mIHRoZSBzZWxlY3Rpb24uIElmIG5vdCBnaXZlbiwgYXNzdW1lcyB0aGUgY3VycmVudCBhbmNob3IuXG4gICAqL1xuICBzZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvciA9IG51bGwpIHtcbiAgICBpZiAoIWZvY3VzKSByZXR1cm47XG5cbiAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXG4gICAgbGV0IHsgbm9kZTogZm9jdXNOb2RlLCBvZmZzZXQ6IGZvY3VzT2Zmc2V0IH0gPSB0aGlzLmNvbXB1dGVOb2RlQW5kT2Zmc2V0KFxuICAgICAgZm9jdXMucm93LFxuICAgICAgZm9jdXMuY29sLFxuICAgICAgYW5jaG9yICYmIGFuY2hvci5yb3cgPT0gZm9jdXMucm93ICYmIGFuY2hvci5jb2wgPiBmb2N1cy5jb2xcbiAgICApOyAvLyBCaW5kIHNlbGVjdGlvbiByaWdodCBpZiBhbmNob3IgaXMgaW4gdGhlIHNhbWUgcm93IGFuZCBiZWhpbmQgdGhlIGZvY3VzXG4gICAgbGV0IGFuY2hvck5vZGUgPSBudWxsLFxuICAgICAgYW5jaG9yT2Zmc2V0ID0gbnVsbDtcbiAgICBpZiAoYW5jaG9yICYmIChhbmNob3Iucm93ICE9IGZvY3VzLnJvdyB8fCBhbmNob3IuY29sICE9IGZvY3VzLmNvbCkpIHtcbiAgICAgIGxldCB7IG5vZGUsIG9mZnNldCB9ID0gdGhpcy5jb21wdXRlTm9kZUFuZE9mZnNldChcbiAgICAgICAgYW5jaG9yLnJvdyxcbiAgICAgICAgYW5jaG9yLmNvbCxcbiAgICAgICAgZm9jdXMucm93ID09IGFuY2hvci5yb3cgJiYgZm9jdXMuY29sID4gYW5jaG9yLmNvbFxuICAgICAgKTtcbiAgICAgIGFuY2hvck5vZGUgPSBub2RlO1xuICAgICAgYW5jaG9yT2Zmc2V0ID0gb2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChhbmNob3JOb2RlKSByYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuICAgIGVsc2UgcmFuZ2Uuc2V0U3RhcnQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gICAgcmFuZ2Uuc2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuXG4gICAgbGV0IHdpbmRvd1NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICB3aW5kb3dTZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgd2luZG93U2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBpbnB1dCBldmVudHNcbiAgICovXG4gIGhhbmRsZUlucHV0RXZlbnQoZXZlbnQpIHtcbiAgICAvLyBGb3IgY29tcG9zaXRpb24gaW5wdXQsIHdlIGFyZSBvbmx5IHVwZGF0aW5nIHRoZSB0ZXh0IGFmdGVyIHdlIGhhdmUgcmVjZWl2ZWRcbiAgICAvLyBhIGNvbXBvc2l0aW9uZW5kIGV2ZW50LCBzbyB3ZSByZXR1cm4gdXBvbiBpbnNlcnRDb21wb3NpdGlvblRleHQuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGUgRE9NIGNoYW5nZXMgYnJlYWsgdGhlIHRleHQgaW5wdXQuXG4gICAgaWYgKGV2ZW50LmlucHV0VHlwZSA9PSBcImluc2VydENvbXBvc2l0aW9uVGV4dFwiKSByZXR1cm47XG5cbiAgICBsZXQgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKFxuICAgICAgKGV2ZW50LmlucHV0VHlwZSA9PSBcImluc2VydFBhcmFncmFwaFwiIHx8XG4gICAgICAgIGV2ZW50LmlucHV0VHlwZSA9PSBcImluc2VydExpbmVCcmVha1wiKSAmJlxuICAgICAgZm9jdXNcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcbiAgICAgIHRoaXMucHJvY2Vzc05ld1BhcmFncmFwaChmb2N1cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5lLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgdGhpcy5lLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwiVE1CbGFua0xpbmVcIj48YnI+PC9kaXY+JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZml4Tm9kZUhpZXJhcmNoeSgpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHNBbmRGb3JtYXR0aW5nKCk7XG4gICAgfVxuICAgIGlmIChmb2N1cykge1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oZm9jdXMpO1xuICAgIH1cblxuICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpeGVzIHRoZSBub2RlIGhpZXJhcmNoeSDigJMgbWFrZXMgc3VyZSB0aGF0IGVhY2ggbGluZSBpcyBpbiBhIGRpdiwgYW5kIHRoZXJlIGFyZSBubyBuZXN0ZWQgZGl2c1xuICAgKi9cbiAgZml4Tm9kZUhpZXJhcmNoeSgpIHtcbiAgICBjb25zdCBvcmlnaW5hbENoaWxkcmVuID0gQXJyYXkuZnJvbSh0aGlzLmUuY2hpbGROb2Rlcyk7XG5cbiAgICBjb25zdCByZXBsYWNlQ2hpbGQgPSAoY2hpbGQsIC4uLm5ld0NoaWxkcmVuKSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBjaGlsZC5wYXJlbnRFbGVtZW50O1xuICAgICAgY29uc3QgbmV4dFNpYmxpbmcgPSBjaGlsZC5uZXh0U2libGluZztcbiAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgICBuZXdDaGlsZHJlbi5mb3JFYWNoKChuZXdDaGlsZCkgPT5cbiAgICAgICAgbmV4dFNpYmxpbmdcbiAgICAgICAgICA/IHBhcmVudC5pbnNlcnRCZWZvcmUobmV3Q2hpbGQsIG5leHRTaWJsaW5nKVxuICAgICAgICAgIDogcGFyZW50LmFwcGVuZENoaWxkKG5ld0NoaWxkKVxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgb3JpZ2luYWxDaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKGNoaWxkLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSB8fCBjaGlsZC50YWdOYW1lICE9PSBcIkRJVlwiKSB7XG4gICAgICAgIC8vIEZvdW5kIGEgY2hpbGQgbm9kZSB0aGF0J3MgZWl0aGVyIG5vdCBhbiBlbGVtZW50IG9yIG5vdCBhIGRpdi4gV3JhcCBpdCBpbiBhIGRpdi5cbiAgICAgICAgY29uc3QgZGl2V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIHJlcGxhY2VDaGlsZChjaGlsZCwgZGl2V3JhcHBlcik7XG4gICAgICAgIGRpdldyYXBwZXIuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgICAgfSBlbHNlIGlmIChjaGlsZC5jaGlsZE5vZGVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIC8vIEVtcHR5IGRpdiBjaGlsZCBub2RlLCBpbmNsdWRlIGF0IGxlYXN0IGEgPGJyIC8+XG4gICAgICAgIGNoaWxkLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJiclwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBncmFuZENoaWxkcmVuID0gQXJyYXkuZnJvbShjaGlsZC5jaGlsZE5vZGVzKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGdyYW5kQ2hpbGRyZW4uc29tZShcbiAgICAgICAgICAgIChncmFuZENoaWxkKSA9PlxuICAgICAgICAgICAgICBncmFuZENoaWxkLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgICAgICBncmFuZENoaWxkLnRhZ05hbWUgPT09IFwiRElWXCJcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiByZXBsYWNlQ2hpbGQoY2hpbGQsIGdyYW5kQ2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgXCJzZWxlY3Rpb25jaGFuZ2VcIiBldmVudHMuXG4gICAqL1xuICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2VFdmVudCgpIHtcbiAgICB0aGlzLmZpcmVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBcInNwbGljZVwiIG5ldyBsaW5lcyBpbnRvIHRoZSBhcnJheXMgdGhpcy5saW5lcywgdGhpcy5saW5lRGlydHksIHRoaXMubGluZVR5cGVzLCBhbmQgdGhlIERPTSBlbGVtZW50c1xuICAgKiB1bmRlcm5lYXRoIHRoZSBlZGl0b3IgZWxlbWVudC5cbiAgICogVGhpcyBtZXRob2QgaXMgZXNzZW50aWFsbHkgQXJyYXkuc3BsaWNlLCBvbmx5IHRoYXQgdGhlIHRoaXJkIHBhcmFtZXRlciB0YWtlcyBhbiB1bi1zcHJlYWQgYXJyYXkgKGFuZCB0aGUgZm9ydGggcGFyYW1ldGVyKVxuICAgKiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIERPTSBzaG91bGQgYWxzbyBiZSBhZGp1c3RlZC5cbiAgICpcbiAgICogQHBhcmFtIHtpbnR9IHN0YXJ0TGluZSBQb3NpdGlvbiBhdCB3aGljaCB0byBzdGFydCBjaGFuZ2luZyB0aGUgYXJyYXkgb2YgbGluZXNcbiAgICogQHBhcmFtIHtpbnR9IGxpbmVzVG9EZWxldGUgTnVtYmVyIG9mIGxpbmVzIHRvIGRlbGV0ZVxuICAgKiBAcGFyYW0ge2FycmF5fSBsaW5lc1RvSW5zZXJ0IEFycmF5IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBsaW5lcyB0byBiZSBpbnNlcnRlZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFkanVzdExpbmVFbGVtZW50cyBJZiB0cnVlLCB0aGVuIDxkaXY+IGVsZW1lbnRzIGFyZSBhbHNvIGluc2VydGVkIGluIHRoZSBET00gYXQgdGhlIHJlc3BlY3RpdmUgcG9zaXRpb25cbiAgICovXG4gIHNwbGljZUxpbmVzKFxuICAgIHN0YXJ0TGluZSxcbiAgICBsaW5lc1RvRGVsZXRlID0gMCxcbiAgICBsaW5lc1RvSW5zZXJ0ID0gW10sXG4gICAgYWRqdXN0TGluZUVsZW1lbnRzID0gdHJ1ZVxuICApIHtcbiAgICBpZiAoYWRqdXN0TGluZUVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzVG9EZWxldGU7IGkrKykge1xuICAgICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGluc2VydGVkQmxhbmsgPSBbXTtcbiAgICBsZXQgaW5zZXJ0ZWREaXJ0eSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lc1RvSW5zZXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRlZEJsYW5rLnB1c2goXCJcIik7XG4gICAgICBpbnNlcnRlZERpcnR5LnB1c2godHJ1ZSk7XG4gICAgICBpZiAoYWRqdXN0TGluZUVsZW1lbnRzKSB7XG4gICAgICAgIGlmICh0aGlzLmUuY2hpbGROb2Rlc1tzdGFydExpbmVdKVxuICAgICAgICAgIHRoaXMuZS5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLFxuICAgICAgICAgICAgdGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXVxuICAgICAgICAgICk7XG4gICAgICAgIGVsc2UgdGhpcy5lLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGluZXMuc3BsaWNlKHN0YXJ0TGluZSwgbGluZXNUb0RlbGV0ZSwgLi4ubGluZXNUb0luc2VydCk7XG4gICAgdGhpcy5saW5lVHlwZXMuc3BsaWNlKHN0YXJ0TGluZSwgbGluZXNUb0RlbGV0ZSwgLi4uaW5zZXJ0ZWRCbGFuayk7XG4gICAgdGhpcy5saW5lRGlydHkuc3BsaWNlKHN0YXJ0TGluZSwgbGluZXNUb0RlbGV0ZSwgLi4uaW5zZXJ0ZWREaXJ0eSk7XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgdGhlIFwicGFzdGVcIiBldmVudFxuICAgKi9cbiAgaGFuZGxlUGFzdGUoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gZ2V0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgY2xpcGJvYXJkXG4gICAgbGV0IHRleHQgPSAoZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudCkuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFxuICAgICAgXCJ0ZXh0L3BsYWluXCJcbiAgICApO1xuXG4gICAgLy8gaW5zZXJ0IHRleHQgbWFudWFsbHlcbiAgICB0aGlzLnBhc3RlKHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhc3RlcyB0aGUgdGV4dCBhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24gKG9yIGF0IHRoZSBlbmQsIGlmIG5vIGN1cnJlbnQgc2VsZWN0aW9uKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICAgKi9cbiAgcGFzdGUodGV4dCwgYW5jaG9yID0gbnVsbCwgZm9jdXMgPSBudWxsKSB7XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGxldCBiZWdpbm5pbmcsIGVuZDtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb2N1cyA9IHtcbiAgICAgICAgcm93OiB0aGlzLmxpbmVzLmxlbmd0aCAtIDEsXG4gICAgICAgIGNvbDogdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCxcbiAgICAgIH07IC8vIEluc2VydCBhdCBlbmRcbiAgICB9XG4gICAgaWYgKCFhbmNob3IpIHtcbiAgICAgIGFuY2hvciA9IGZvY3VzO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBhbmNob3Iucm93IDwgZm9jdXMucm93IHx8XG4gICAgICAoYW5jaG9yLnJvdyA9PSBmb2N1cy5yb3cgJiYgYW5jaG9yLmNvbCA8PSBmb2N1cy5jb2wpXG4gICAgKSB7XG4gICAgICBiZWdpbm5pbmcgPSBhbmNob3I7XG4gICAgICBlbmQgPSBmb2N1cztcbiAgICB9IGVsc2Uge1xuICAgICAgYmVnaW5uaW5nID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGxldCBpbnNlcnRlZExpbmVzID0gdGV4dC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgbGV0IGxpbmVCZWZvcmUgPSB0aGlzLmxpbmVzW2JlZ2lubmluZy5yb3ddLnN1YnN0cigwLCBiZWdpbm5pbmcuY29sKTtcbiAgICBsZXQgbGluZUVuZCA9IHRoaXMubGluZXNbZW5kLnJvd10uc3Vic3RyKGVuZC5jb2wpO1xuICAgIGluc2VydGVkTGluZXNbMF0gPSBsaW5lQmVmb3JlLmNvbmNhdChpbnNlcnRlZExpbmVzWzBdKTtcbiAgICBsZXQgZW5kQ29sUG9zID0gaW5zZXJ0ZWRMaW5lc1tpbnNlcnRlZExpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcbiAgICBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0gPVxuICAgICAgaW5zZXJ0ZWRMaW5lc1tpbnNlcnRlZExpbmVzLmxlbmd0aCAtIDFdLmNvbmNhdChsaW5lRW5kKTtcbiAgICB0aGlzLnNwbGljZUxpbmVzKGJlZ2lubmluZy5yb3csIDEgKyBlbmQucm93IC0gYmVnaW5uaW5nLnJvdywgaW5zZXJ0ZWRMaW5lcyk7XG4gICAgZm9jdXMucm93ID0gYmVnaW5uaW5nLnJvdyArIGluc2VydGVkTGluZXMubGVuZ3RoIC0gMTtcbiAgICBmb2N1cy5jb2wgPSBlbmRDb2xQb3M7XG4gICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oZm9jdXMpO1xuICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSAobG93ZXN0IGluIHRoZSBET00gdHJlZSkgY29tbW9uIGFuY2VzdG9yIG9mIHR3byBET00gbm9kZXMuXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZTEgdGhlIGZpcnN0IG5vZGVcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlMiB0aGUgc2Vjb25kIG5vZGVcbiAgICogQHJldHVybnMge05vZGV9IFRoZSBjb21tZW4gYW5jZXN0b3Igbm9kZSwgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBjb21tb24gYW5jZXN0b3JcbiAgICovXG4gIGNvbXB1dGVDb21tb25BbmNlc3Rvcihub2RlMSwgbm9kZTIpIHtcbiAgICBpZiAoIW5vZGUxIHx8ICFub2RlMikgcmV0dXJuIG51bGw7XG4gICAgaWYgKG5vZGUxID09IG5vZGUyKSByZXR1cm4gbm9kZTE7XG4gICAgY29uc3QgYW5jZXN0cnkgPSAobm9kZSkgPT4ge1xuICAgICAgbGV0IGFuY2VzdHJ5ID0gW107XG4gICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICBhbmNlc3RyeS51bnNoaWZ0KG5vZGUpO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFuY2VzdHJ5O1xuICAgIH07XG5cbiAgICBjb25zdCBhbmNlc3RyeTEgPSBhbmNlc3RyeShub2RlMSk7XG4gICAgY29uc3QgYW5jZXN0cnkyID0gYW5jZXN0cnkobm9kZTIpO1xuXG4gICAgaWYgKGFuY2VzdHJ5MVswXSAhPSBhbmNlc3RyeTJbMF0pIHJldHVybiBudWxsO1xuICAgIGxldCBpO1xuICAgIGZvciAoaSA9IDA7IGFuY2VzdHJ5MVtpXSA9PSBhbmNlc3RyeTJbaV07IGkrKyk7XG4gICAgcmV0dXJuIGFuY2VzdHJ5MVtpIC0gMV07XG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIChsb3dlc3QgaW4gdGhlIERPTSB0cmVlKSBlbmNsb3NpbmcgRE9NIG5vZGUgd2l0aCBhIGdpdmVuIGNsYXNzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIGZvY3VzIHNlbGVjdGlvbiBvYmplY3RcbiAgICogQHBhcmFtIHtvYmplY3R9IGFuY2hvciBUaGUgYW5jaG9yIHNlbGVjdGlvbiBvYmplY3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSBUaGUgY2xhc3MgbmFtZSB0byBmaW5kXG4gICAqIEByZXR1cm5zIHtOb2RlfSBUaGUgZW5jbG9zaW5nIERPTSBub2RlIHdpdGggdGhlIHJlc3BlY3RpdmUgY2xhc3MgKGluc2lkZSB0aGUgZWRpdG9yKSwgaWYgdGhlcmUgaXMgb25lOyBudWxsIG90aGVyd2lzZS5cbiAgICovXG4gIGNvbXB1dGVFbmNsb3NpbmdNYXJrdXBOb2RlKGZvY3VzLCBhbmNob3IsIGNsYXNzTmFtZSkge1xuICAgIGxldCBub2RlID0gbnVsbDtcbiAgICBpZiAoIWZvY3VzKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoIWFuY2hvcikge1xuICAgICAgbm9kZSA9IGZvY3VzLm5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmb2N1cy5yb3cgIT0gYW5jaG9yLnJvdykgcmV0dXJuIG51bGw7XG4gICAgICBub2RlID0gdGhpcy5jb21wdXRlQ29tbW9uQW5jZXN0b3IoZm9jdXMubm9kZSwgYW5jaG9yLm5vZGUpO1xuICAgIH1cbiAgICBpZiAoIW5vZGUpIHJldHVybiBudWxsO1xuICAgIHdoaWxlIChub2RlICE9IHRoaXMuZSkge1xuICAgICAgaWYgKG5vZGUuY2xhc3NOYW1lICYmIG5vZGUuY2xhc3NOYW1lLmluY2x1ZGVzKGNsYXNzTmFtZSkpIHJldHVybiBub2RlO1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gICAgLy8gQXNjZW5kZWQgYWxsIHRoZSB3YXkgdG8gdGhlIGVkaXRvciBlbGVtZW50XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3RhdGUgKHRydWUgLyBmYWxzZSkgb2YgYWxsIGNvbW1hbmRzLlxuICAgKiBAcGFyYW0gZm9jdXMgRm9jdXMgb2YgdGhlIHNlbGVjdGlvbi4gSWYgbm90IGdpdmVuLCBhc3N1bWVzIHRoZSBjdXJyZW50IGZvY3VzLlxuICAgKiBAcGFyYW0gYW5jaG9yIEFuY2hvciBvZiB0aGUgc2VsZWN0aW9uLiBJZiBub3QgZ2l2ZW4sIGFzc3VtZXMgdGhlIGN1cnJlbnQgYW5jaG9yLlxuICAgKi9cbiAgZ2V0Q29tbWFuZFN0YXRlKGZvY3VzID0gbnVsbCwgYW5jaG9yID0gbnVsbCkge1xuICAgIGxldCBjb21tYW5kU3RhdGUgPSB7fTtcbiAgICBpZiAoIWZvY3VzKSBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgaWYgKCFmb2N1cykge1xuICAgICAgZm9yIChsZXQgY21kIGluIGNvbW1hbmRzKSB7XG4gICAgICAgIGNvbW1hbmRTdGF0ZVtjbWRdID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21tYW5kU3RhdGU7XG4gICAgfVxuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcblxuICAgIGxldCBzdGFydCwgZW5kO1xuICAgIGlmIChcbiAgICAgIGFuY2hvci5yb3cgPCBmb2N1cy5yb3cgfHxcbiAgICAgIChhbmNob3Iucm93ID09IGZvY3VzLnJvdyAmJiBhbmNob3IuY29sIDwgZm9jdXMuY29sKVxuICAgICkge1xuICAgICAgc3RhcnQgPSBhbmNob3I7XG4gICAgICBlbmQgPSBmb2N1cztcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnQgPSBmb2N1cztcbiAgICAgIGVuZCA9IGFuY2hvcjtcbiAgICB9XG4gICAgaWYgKGVuZC5yb3cgPiBzdGFydC5yb3cgJiYgZW5kLmNvbCA9PSAwKSB7XG4gICAgICBlbmQucm93LS07XG4gICAgICBlbmQuY29sID0gdGhpcy5saW5lc1tlbmQucm93XS5sZW5ndGg7IC8vIFNlbGVjdGlvbiB0byBiZWdpbm5pbmcgb2YgbmV4dCBsaW5lIGlzIHNhaWQgdG8gZW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxhc3QgbGluZVxuICAgIH1cblxuICAgIGZvciAobGV0IGNtZCBpbiBjb21tYW5kcykge1xuICAgICAgaWYgKGNvbW1hbmRzW2NtZF0udHlwZSA9PSBcImlubGluZVwiKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhZm9jdXMgfHxcbiAgICAgICAgICBmb2N1cy5yb3cgIT0gYW5jaG9yLnJvdyB8fFxuICAgICAgICAgICF0aGlzLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoZm9jdXMsIGFuY2hvcilcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZSBjb21tYW5kIHN0YXRlIGlzIHRydWUgaWYgdGhlcmUgaXMgYSByZXNwZWN0aXZlIGVuY2xvc2luZyBtYXJrdXAgbm9kZSAoZS5nLiwgdGhlIHNlbGVjdGlvbiBpcyBlbmNsb3NlZCBpbiBhIDxiPi4uPC9iPikgLi4uXG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPVxuICAgICAgICAgICAgISF0aGlzLmNvbXB1dGVFbmNsb3NpbmdNYXJrdXBOb2RlKFxuICAgICAgICAgICAgICBmb2N1cyxcbiAgICAgICAgICAgICAgYW5jaG9yLFxuICAgICAgICAgICAgICBjb21tYW5kc1tjbWRdLmNsYXNzTmFtZVxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgLy8gLi4uIG9yIGlmIGl0J3MgYW4gZW1wdHkgc3RyaW5nIHByZWNlZGVkIGJ5IGFuZCBmb2xsb3dlZCBieSBmb3JtYXR0aW5nIG1hcmtlcnMsIGUuZy4gKip8Kiogd2hlcmUgfCBpcyB0aGUgY3Vyc29yXG4gICAgICAgICAgICAoZm9jdXMuY29sID09IGFuY2hvci5jb2wgJiZcbiAgICAgICAgICAgICAgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAgICAgICAuc3Vic3RyKDAsIGZvY3VzLmNvbClcbiAgICAgICAgICAgICAgICAubWF0Y2goY29tbWFuZHNbY21kXS51bnNldC5wcmVQYXR0ZXJuKSAmJlxuICAgICAgICAgICAgICAhIXRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgICAgICAgIC5zdWJzdHIoZm9jdXMuY29sKVxuICAgICAgICAgICAgICAgIC5tYXRjaChjb21tYW5kc1tjbWRdLnVuc2V0LnBvc3RQYXR0ZXJuKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjb21tYW5kc1tjbWRdLnR5cGUgPT0gXCJsaW5lXCIpIHtcbiAgICAgICAgaWYgKCFmb2N1cykge1xuICAgICAgICAgIGNvbW1hbmRTdGF0ZVtjbWRdID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmxpbmVUeXBlc1tzdGFydC5yb3ddID09IGNvbW1hbmRzW2NtZF0uY2xhc3NOYW1lO1xuXG4gICAgICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lKyspIHtcbiAgICAgICAgICAgIGlmICgodGhpcy5saW5lVHlwZXNbbGluZV0gPT0gY29tbWFuZHNbY21kXS5jbGFzc05hbWUpICE9IHN0YXRlKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gbnVsbDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbW1hbmRTdGF0ZVtjbWRdID0gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmRTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgY29tbWFuZCBzdGF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXRlXG4gICAqL1xuICBzZXRDb21tYW5kU3RhdGUoY29tbWFuZCwgc3RhdGUpIHtcbiAgICBpZiAoY29tbWFuZHNbY29tbWFuZF0udHlwZSA9PSBcImlubGluZVwiKSB7XG4gICAgICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICBsZXQgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gZm9jdXM7XG4gICAgICBpZiAoIWFuY2hvcikgcmV0dXJuO1xuICAgICAgaWYgKGFuY2hvci5yb3cgIT0gZm9jdXMucm93KSByZXR1cm47XG4gICAgICBpZiAoIXRoaXMuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKSkgcmV0dXJuO1xuICAgICAgbGV0IG1hcmt1cE5vZGUgPSB0aGlzLmNvbXB1dGVFbmNsb3NpbmdNYXJrdXBOb2RlKFxuICAgICAgICBmb2N1cyxcbiAgICAgICAgYW5jaG9yLFxuICAgICAgICBjb21tYW5kc1tjb21tYW5kXS5jbGFzc05hbWVcbiAgICAgICk7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG5cbiAgICAgIC8vIEZpcnN0IGNhc2U6IFRoZXJlJ3MgYW4gZW5jbG9zaW5nIG1hcmt1cCBub2RlLCByZW1vdmUgdGhlIG1hcmtlcnMgYXJvdW5kIHRoYXQgbWFya3VwIG5vZGVcbiAgICAgIGlmIChtYXJrdXBOb2RlKSB7XG4gICAgICAgIHRoaXMubGluZURpcnR5W2ZvY3VzLnJvd10gPSB0cnVlO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHRoaXMuY29tcHV0ZUNvbHVtbihtYXJrdXBOb2RlLCAwKTtcbiAgICAgICAgY29uc3QgbGVuID0gbWFya3VwTm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKDAsIHN0YXJ0Q29sKVxuICAgICAgICAgIC5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4sIFwiXCIpO1xuICAgICAgICBjb25zdCBtaWQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKHN0YXJ0Q29sLCBsZW4pO1xuICAgICAgICBjb25zdCByaWdodCA9IHRoaXMubGluZXNbZm9jdXMucm93XVxuICAgICAgICAgIC5zdWJzdHIoc3RhcnRDb2wgKyBsZW4pXG4gICAgICAgICAgLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0udW5zZXQucG9zdFBhdHRlcm4sIFwiXCIpO1xuICAgICAgICB0aGlzLmxpbmVzW2ZvY3VzLnJvd10gPSBsZWZ0LmNvbmNhdChtaWQsIHJpZ2h0KTtcbiAgICAgICAgYW5jaG9yLmNvbCA9IGxlZnQubGVuZ3RoO1xuICAgICAgICBmb2N1cy5jb2wgPSBhbmNob3IuY29sICsgbGVuO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvcik7XG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuXG4gICAgICAgIC8vIFNlY29uZCBjYXNlOiBFbXB0eSBzZWxlY3Rpb24gd2l0aCBzdXJyb3VuZGluZyBmb3JtYXR0aW5nIG1hcmtlcnMsIHJlbW92ZSB0aG9zZVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZm9jdXMuY29sID09IGFuY2hvci5jb2wgJiZcbiAgICAgICAgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKDAsIGZvY3VzLmNvbClcbiAgICAgICAgICAubWF0Y2goY29tbWFuZHNbY29tbWFuZF0udW5zZXQucHJlUGF0dGVybikgJiZcbiAgICAgICAgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKGZvY3VzLmNvbClcbiAgICAgICAgICAubWF0Y2goY29tbWFuZHNbY29tbWFuZF0udW5zZXQucG9zdFBhdHRlcm4pXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKDAsIGZvY3VzLmNvbClcbiAgICAgICAgICAucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wcmVQYXR0ZXJuLCBcIlwiKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd11cbiAgICAgICAgICAuc3Vic3RyKGZvY3VzLmNvbClcbiAgICAgICAgICAucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wb3N0UGF0dGVybiwgXCJcIik7XG4gICAgICAgIHRoaXMubGluZXNbZm9jdXMucm93XSA9IGxlZnQuY29uY2F0KHJpZ2h0KTtcbiAgICAgICAgZm9jdXMuY29sID0gYW5jaG9yLmNvbCA9IGxlZnQubGVuZ3RoO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvcik7XG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuXG4gICAgICAgIC8vIE5vdCBjdXJyZW50bHkgZm9ybWF0dGVkLCBpbnNlcnQgZm9ybWF0dGluZyBtYXJrZXJzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBUcmltIGFueSBzcGFjZXMgZnJvbSB0aGUgc2VsZWN0aW9uXG4gICAgICAgIGxldCB7IHN0YXJ0Q29sLCBlbmRDb2wgfSA9XG4gICAgICAgICAgZm9jdXMuY29sIDwgYW5jaG9yLmNvbFxuICAgICAgICAgICAgPyB7IHN0YXJ0Q29sOiBmb2N1cy5jb2wsIGVuZENvbDogYW5jaG9yLmNvbCB9XG4gICAgICAgICAgICA6IHsgc3RhcnRDb2w6IGFuY2hvci5jb2wsIGVuZENvbDogZm9jdXMuY29sIH07XG5cbiAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddXG4gICAgICAgICAgLnN1YnN0cihzdGFydENvbCwgZW5kQ29sIC0gc3RhcnRDb2wpXG4gICAgICAgICAgLm1hdGNoKC9eKD88bGVhZGluZz5cXHMqKS4qXFxTKD88dHJhaWxpbmc+XFxzKikkLyk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHN0YXJ0Q29sICs9IG1hdGNoLmdyb3Vwcy5sZWFkaW5nLmxlbmd0aDtcbiAgICAgICAgICBlbmRDb2wgLT0gbWF0Y2guZ3JvdXBzLnRyYWlsaW5nLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvY3VzLmNvbCA9IHN0YXJ0Q29sO1xuICAgICAgICBhbmNob3IuY29sID0gZW5kQ29sO1xuXG4gICAgICAgIC8vIEp1c3QgaW5zZXJ0IG1hcmt1cCBiZWZvcmUgYW5kIGFmdGVyIGFuZCBob3BlIGZvciB0aGUgYmVzdC5cbiAgICAgICAgdGhpcy53cmFwU2VsZWN0aW9uKFxuICAgICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLnNldC5wcmUsXG4gICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0uc2V0LnBvc3QsXG4gICAgICAgICAgZm9jdXMsXG4gICAgICAgICAgYW5jaG9yXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICAgICAgICAvLyBUT0RPIGNsZWFuIHRoaXMgdXAgc28gdGhhdCBtYXJrdXAgcmVtYWlucyBwcm9wZXJseSBuZXN0ZWRcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbW1hbmRzW2NvbW1hbmRdLnR5cGUgPT0gXCJsaW5lXCIpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcbiAgICAgIGxldCBzdGFydCA9IGFuY2hvci5yb3cgPiBmb2N1cy5yb3cgPyBmb2N1cyA6IGFuY2hvcjtcbiAgICAgIGxldCBlbmQgPSBhbmNob3Iucm93ID4gZm9jdXMucm93ID8gYW5jaG9yIDogZm9jdXM7XG4gICAgICBpZiAoZW5kLnJvdyA+IHN0YXJ0LnJvdyAmJiBlbmQuY29sID09IDApIHtcbiAgICAgICAgZW5kLnJvdy0tO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBsaW5lID0gc3RhcnQucm93OyBsaW5lIDw9IGVuZC5yb3c7IGxpbmUrKykge1xuICAgICAgICBpZiAoc3RhdGUgJiYgdGhpcy5saW5lVHlwZXNbbGluZV0gIT0gY29tbWFuZHNbY29tbWFuZF0uY2xhc3NOYW1lKSB7XG4gICAgICAgICAgdGhpcy5saW5lc1tsaW5lXSA9IHRoaXMubGluZXNbbGluZV0ucmVwbGFjZShcbiAgICAgICAgICAgIGNvbW1hbmRzW2NvbW1hbmRdLnNldC5wYXR0ZXJuLFxuICAgICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0uc2V0LnJlcGxhY2VtZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAgIFwiJCNcIixcbiAgICAgICAgICAgICAgbGluZSAtIHN0YXJ0LnJvdyArIDFcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubGluZURpcnR5W2xpbmVdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXN0YXRlICYmIHRoaXMubGluZVR5cGVzW2xpbmVdID09IGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHRoaXMubGluZXNbbGluZV0gPSB0aGlzLmxpbmVzW2xpbmVdLnJlcGxhY2UoXG4gICAgICAgICAgICBjb21tYW5kc1tjb21tYW5kXS51bnNldC5wYXR0ZXJuLFxuICAgICAgICAgICAgY29tbWFuZHNbY29tbWFuZF0udW5zZXQucmVwbGFjZW1lbnRcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubGluZURpcnR5W2xpbmVdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgICB0aGlzLnNldFNlbGVjdGlvbihcbiAgICAgICAgeyByb3c6IGVuZC5yb3csIGNvbDogdGhpcy5saW5lc1tlbmQucm93XS5sZW5ndGggfSxcbiAgICAgICAgeyByb3c6IHN0YXJ0LnJvdywgY29sOiAwIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpbmxpbmUgZm9ybWF0dGluZyBpcyBhbGxvd2VkIGF0IHRoZSBjdXJyZW50IGZvY3VzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBUaGUgY3VycmVudCBmb2N1c1xuICAgKi9cbiAgaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZCgpIHtcbiAgICAvLyBUT0RPIFJlbW92ZSBwYXJhbWV0ZXJzIGZyb20gYWxsIGNhbGxzXG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmICghc2VsIHx8ICFzZWwuZm9jdXNOb2RlIHx8ICFzZWwuYW5jaG9yTm9kZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIGZpbmQgYSBjb21tb24gYW5jZXN0b3Igd2l0aCB0aGUgY2xhc3MgYFRNSW5saW5lRm9ybWF0dGVkYFxuXG4gICAgLy8gU3BlY2lhbCBjYXNlOiBFbXB0eSBzZWxlY3Rpb24gcmlnaHQgYmVmb3JlIGBUTUlubGluZUZvcm1hdHRlZGBcbiAgICBpZiAoXG4gICAgICBzZWwuaXNDb2xsYXBzZWQgJiZcbiAgICAgIHNlbC5mb2N1c05vZGUubm9kZVR5cGUgPT0gMyAmJlxuICAgICAgc2VsLmZvY3VzT2Zmc2V0ID09IHNlbC5mb2N1c05vZGUubm9kZVZhbHVlLmxlbmd0aFxuICAgICkge1xuICAgICAgbGV0IG5vZGU7XG4gICAgICBmb3IgKFxuICAgICAgICBub2RlID0gc2VsLmZvY3VzTm9kZTtcbiAgICAgICAgbm9kZSAmJiBub2RlLm5leHRTaWJsaW5nID09IG51bGw7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGVcbiAgICAgICk7XG4gICAgICBpZiAoXG4gICAgICAgIG5vZGUgJiZcbiAgICAgICAgbm9kZS5uZXh0U2libGluZy5jbGFzc05hbWUgJiZcbiAgICAgICAgbm9kZS5uZXh0U2libGluZy5jbGFzc05hbWUuaW5jbHVkZXMoXCJUTUlubGluZUZvcm1hdHRlZFwiKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBMb29rIGZvciBhIGNvbW1vbiBhbmNlc3RvclxuICAgIGxldCBhbmNlc3RvciA9IHRoaXMuY29tcHV0ZUNvbW1vbkFuY2VzdG9yKHNlbC5mb2N1c05vZGUsIHNlbC5hbmNob3JOb2RlKTtcbiAgICBpZiAoIWFuY2VzdG9yKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFuIGFuY2VzdG9yIG9mIGNsYXNzICdUTUlubGluZUZvcm1hdHRlZCcgb3IgJ1RNQmxhbmtMaW5lJ1xuICAgIHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3RvciAhPSB0aGlzLmUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgYW5jZXN0b3IuY2xhc3NOYW1lICYmXG4gICAgICAgIHR5cGVvZiBhbmNlc3Rvci5jbGFzc05hbWUuaW5jbHVkZXMgPT0gXCJmdW5jdGlvblwiICYmXG4gICAgICAgIChhbmNlc3Rvci5jbGFzc05hbWUuaW5jbHVkZXMoXCJUTUlubGluZUZvcm1hdHRlZFwiKSB8fFxuICAgICAgICAgIGFuY2VzdG9yLmNsYXNzTmFtZS5pbmNsdWRlcyhcIlRNQmxhbmtMaW5lXCIpKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGluIHRoZSBzdHJpbmdzIHByZSBhbmQgcG9zdC4gSWYgdGhlIHNlbGVjdGlvbiBpcyBub3Qgb24gb25lIGxpbmUsIHJldHVybnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmUgVGhlIHN0cmluZyB0byBpbnNlcnQgYmVmb3JlIHRoZSBzZWxlY3Rpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwb3N0IFRoZSBzdHJpbmcgdG8gaW5zZXJ0IGFmdGVyIHRoZSBzZWxlY3Rpb24uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBUaGUgY3VycmVudCBzZWxlY3Rpb24gZm9jdXMuIElmIG51bGwsIHNlbGVjdGlvbiB3aWxsIGJlIGNvbXB1dGVkLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYW5jaG9yIFRoZSBjdXJyZW50IHNlbGVjdGlvbiBmb2N1cy4gSWYgbnVsbCwgc2VsZWN0aW9uIHdpbGwgYmUgY29tcHV0ZWQuXG4gICAqL1xuICB3cmFwU2VsZWN0aW9uKHByZSwgcG9zdCwgZm9jdXMgPSBudWxsLCBhbmNob3IgPSBudWxsKSB7XG4gICAgaWYgKCFmb2N1cykgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgIGlmICghZm9jdXMgfHwgIWFuY2hvciB8fCBmb2N1cy5yb3cgIT0gYW5jaG9yLnJvdykgcmV0dXJuO1xuICAgIHRoaXMubGluZURpcnR5W2ZvY3VzLnJvd10gPSB0cnVlO1xuXG4gICAgY29uc3Qgc3RhcnRDb2wgPSBmb2N1cy5jb2wgPCBhbmNob3IuY29sID8gZm9jdXMuY29sIDogYW5jaG9yLmNvbDtcbiAgICBjb25zdCBlbmRDb2wgPSBmb2N1cy5jb2wgPCBhbmNob3IuY29sID8gYW5jaG9yLmNvbCA6IGZvY3VzLmNvbDtcbiAgICBjb25zdCBsZWZ0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cigwLCBzdGFydENvbCkuY29uY2F0KHByZSk7XG4gICAgY29uc3QgbWlkID1cbiAgICAgIGVuZENvbCA9PSBzdGFydENvbFxuICAgICAgICA/IFwiXCJcbiAgICAgICAgOiB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKHN0YXJ0Q29sLCBlbmRDb2wgLSBzdGFydENvbCk7XG4gICAgY29uc3QgcmlnaHQgPSBwb3N0LmNvbmNhdCh0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKGVuZENvbCkpO1xuICAgIHRoaXMubGluZXNbZm9jdXMucm93XSA9IGxlZnQuY29uY2F0KG1pZCwgcmlnaHQpO1xuICAgIGFuY2hvci5jb2wgPSBsZWZ0Lmxlbmd0aDtcbiAgICBmb2N1cy5jb2wgPSBhbmNob3IuY29sICsgbWlkLmxlbmd0aDtcblxuICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzLCBhbmNob3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGNvbW1hbmQgc3RhdGUgZm9yIGEgY29tbWFuZCAodHJ1ZSA8LT4gZmFsc2UpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kIFRoZSBlZGl0b3IgY29tbWFuZFxuICAgKi9cbiAgdG9nZ2xlQ29tbWFuZFN0YXRlKGNvbW1hbmQpIHtcbiAgICBpZiAoIXRoaXMubGFzdENvbW1hbmRTdGF0ZSkgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gdGhpcy5nZXRDb21tYW5kU3RhdGUoKTtcbiAgICB0aGlzLnNldENvbW1hbmRTdGF0ZShjb21tYW5kLCAhdGhpcy5sYXN0Q29tbWFuZFN0YXRlW2NvbW1hbmRdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyBhIGNoYW5nZSBldmVudC4gVXBkYXRlcyB0aGUgbGlua2VkIHRleHRhcmVhIGFuZCBub3RpZmllcyBhbnkgZXZlbnQgbGlzdGVuZXJzLlxuICAgKi9cbiAgZmlyZUNoYW5nZSgpIHtcbiAgICBpZiAoIXRoaXMudGV4dGFyZWEgJiYgIXRoaXMubGlzdGVuZXJzLmNoYW5nZS5sZW5ndGgpIHJldHVybjtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5nZXRDb250ZW50KCk7XG4gICAgaWYgKHRoaXMudGV4dGFyZWEpIHRoaXMudGV4dGFyZWEudmFsdWUgPSBjb250ZW50O1xuICAgIGZvciAobGV0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzLmNoYW5nZSkge1xuICAgICAgbGlzdGVuZXIoe1xuICAgICAgICBjb250ZW50OiBjb250ZW50LFxuICAgICAgICBsaW5lc0RpcnR5OiB0aGlzLmxpbmVzRGlydHksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgYSBcInNlbGVjdGlvbiBjaGFuZ2VkXCIgZXZlbnQuXG4gICAqL1xuICBmaXJlU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24gJiYgdGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgbGV0IGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgICAgbGV0IGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgICAgbGV0IGNvbW1hbmRTdGF0ZSA9IHRoaXMuZ2V0Q29tbWFuZFN0YXRlKGZvY3VzLCBhbmNob3IpO1xuICAgICAgaWYgKHRoaXMubGFzdENvbW1hbmRTdGF0ZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubGFzdENvbW1hbmRTdGF0ZSwgY29tbWFuZFN0YXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGFzdENvbW1hbmRTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIGNvbW1hbmRTdGF0ZSk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24pIHtcbiAgICAgICAgbGlzdGVuZXIoe1xuICAgICAgICAgIGZvY3VzOiBmb2N1cyxcbiAgICAgICAgICBhbmNob3I6IGFuY2hvcixcbiAgICAgICAgICBjb21tYW5kU3RhdGU6IHRoaXMubGFzdENvbW1hbmRTdGF0ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFRoZSB0eXBlIG9mIGV2ZW50IHRvIGxpc3RlbiB0by4gQ2FuIGJlICdjaGFuZ2UnIG9yICdzZWxlY3Rpb24nXG4gICAqIEBwYXJhbSB7Kn0gbGlzdGVuZXIgRnVuY3Rpb24gb2YgdGhlIHR5cGUgKGV2ZW50KSA9PiB7fSB0byBiZSBjYWxsZWQgd2hlbiB0aGUgZXZlbnQgb2NjdXJzLlxuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIGlmICh0eXBlLm1hdGNoKC9eKD86Y2hhbmdlfGlucHV0KSQvaSkpIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzLmNoYW5nZS5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG4gICAgaWYgKHR5cGUubWF0Y2goL14oPzpzZWxlY3Rpb258c2VsZWN0aW9uY2hhbmdlKSQvaSkpIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbi5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRWRpdG9yO1xuIl0sIm5hbWVzIjpbInN2ZyIsImJsb2NrcXVvdGUiLCJib2xkIiwiY2xlYXJfZm9ybWF0dGluZyIsImNvZGUiLCJoMSIsImgyIiwiaHIiLCJpbWFnZSIsIml0YWxpYyIsImxpbmsiLCJvbCIsInN0cmlrZXRocm91Z2giLCJ1bCIsImlzTWFjTGlrZSIsInRlc3QiLCJuYXZpZ2F0b3IiLCJwbGF0Zm9ybSIsIkRlZmF1bHRDb21tYW5kcyIsIm5hbWUiLCJhY3Rpb24iLCJpbm5lckhUTUwiLCJ0aXRsZSIsImhvdGtleSIsImVkaXRvciIsImlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQiLCJ3cmFwU2VsZWN0aW9uIiwiZW5hYmxlZCIsImZvY3VzIiwiYW5jaG9yIiwicGFzdGUiLCJDb21tYW5kQmFyIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsImUiLCJjb21tYW5kcyIsImJ1dHRvbnMiLCJzdGF0ZSIsImhvdGtleXMiLCJlbGVtZW50IiwidGFnTmFtZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJib2R5IiwiY3JlYXRlQ29tbWFuZEJhckVsZW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlS2V5ZG93biIsInNldEVkaXRvciIsInBhcmVudEVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiY29tbWFuZCIsImVsIiwiYXBwZW5kQ2hpbGQiLCJjb21tYW5kTmFtZSIsIk9iamVjdCIsImFzc2lnbiIsImtleXMiLCJzcGxpdCIsIm1vZGlmaWVycyIsIm1vZGlmaWVyZXhwbGFuYXRpb24iLCJpIiwibGVuZ3RoIiwicHVzaCIsIm1hdGNoIiwia2V5IiwidG9Mb3dlckNhc2UiLCJjb25jYXQiLCJqb2luIiwiaGFuZGxlQ2xpY2siLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic2V0Q29tbWFuZFN0YXRlIiwiaGFuZGxlU2VsZWN0aW9uIiwiY29tbWFuZFN0YXRlIiwidW5kZWZpbmVkIiwib3V0ZXIiLCJtb2RpZmllciIsImNoZWNrIiwiaXQiLCJNYXRoIiwibW9kdWxlIiwiZ2xvYmFsVGhpcyIsIndpbmRvdyIsInNlbGYiLCJnbG9iYWwiLCJ0aGlzIiwiRnVuY3Rpb24iLCJleGVjIiwiZXJyb3IiLCJmYWlscyIsInJlcXVpcmUiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsImJpbmQiLCJoYXNPd25Qcm9wZXJ0eSIsIk5BVElWRV9CSU5EIiwiRnVuY3Rpb25Qcm90b3R5cGUiLCJwcm90b3R5cGUiLCJjYWxsIiwidW5jdXJyeVRoaXNXaXRoQmluZCIsImZuIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJkb2N1bWVudEFsbCIsImFsbCIsIklTX0hUTUxEREEiLCIkZG9jdW1lbnRBbGwiLCJhcmd1bWVudCIsImlzTnVsbE9yVW5kZWZpbmVkIiwiJFR5cGVFcnJvciIsIlR5cGVFcnJvciIsInJlcXVpcmVPYmplY3RDb2VyY2libGUiLCIkT2JqZWN0IiwidW5jdXJyeVRoaXMiLCJ0b09iamVjdCIsImhhc093biIsIkRFU0NSSVBUT1JTIiwiZ2V0RGVzY3JpcHRvciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkVYSVNUUyIsIlBST1BFUiIsInNvbWV0aGluZyIsIkNPTkZJR1VSQUJMRSIsImNvbmZpZ3VyYWJsZSIsInZhbHVlIiwid3JpdGFibGUiLCJkZWZpbmVHbG9iYWxQcm9wZXJ0eSIsIlNIQVJFRCIsInN0b3JlIiwiaXNDYWxsYWJsZSIsImZ1bmN0aW9uVG9TdHJpbmciLCJ0b1N0cmluZyIsImluc3BlY3RTb3VyY2UiLCJXZWFrTWFwIiwiU3RyaW5nIiwiaXNPYmplY3QiLCJhIiwiJFN0cmluZyIsImFGdW5jdGlvbiIsIm5hbWVzcGFjZSIsIm1ldGhvZCIsImlzUHJvdG90eXBlT2YiLCJ1c2VyQWdlbnQiLCJwcm9jZXNzIiwiRGVubyIsInZlcnNpb25zIiwidmVyc2lvbiIsInY4IiwiVjhfVkVSU0lPTiIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bWJvbCIsIlN5bWJvbCIsInNoYW0iLCJOQVRJVkVfU1lNQk9MIiwiaXRlcmF0b3IiLCJnZXRCdWlsdEluIiwiVVNFX1NZTUJPTF9BU19VSUQiLCIkU3ltYm9sIiwidHJ5VG9TdHJpbmciLCJhQ2FsbGFibGUiLCJWIiwiUCIsImZ1bmMiLCJpbnB1dCIsInByZWYiLCJ2YWwiLCJ2YWx1ZU9mIiwibW9kZSIsImNvcHlyaWdodCIsImxpY2Vuc2UiLCJzb3VyY2UiLCJpZCIsInBvc3RmaXgiLCJyYW5kb20iLCJzaGFyZWQiLCJ1aWQiLCJXZWxsS25vd25TeW1ib2xzU3RvcmUiLCJjcmVhdGVXZWxsS25vd25TeW1ib2wiLCJ3aXRob3V0U2V0dGVyIiwiaXNTeW1ib2wiLCJnZXRNZXRob2QiLCJvcmRpbmFyeVRvUHJpbWl0aXZlIiwid2VsbEtub3duU3ltYm9sIiwiVE9fUFJJTUlUSVZFIiwiZXhvdGljVG9QcmltIiwicmVzdWx0IiwidG9QcmltaXRpdmUiLCJJRThfRE9NX0RFRklORSIsIlY4X1BST1RPVFlQRV9ERUZJTkVfQlVHIiwiYW5PYmplY3QiLCJ0b1Byb3BlcnR5S2V5IiwiJGRlZmluZVByb3BlcnR5IiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkVOVU1FUkFCTEUiLCJXUklUQUJMRSIsImV4cG9ydHMiLCJPIiwiQXR0cmlidXRlcyIsImN1cnJlbnQiLCJlbnVtZXJhYmxlIiwiYml0bWFwIiwiZGVmaW5lUHJvcGVydHlNb2R1bGUiLCJjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJvYmplY3QiLCJmIiwiTkFUSVZFX1dFQUtfTUFQIiwiY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5Iiwic2hhcmVkS2V5IiwiT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQiLCJzZXQiLCJoYXMiLCJlbmZvcmNlIiwiZ2V0dGVyRm9yIiwiVFlQRSIsInR5cGUiLCJtZXRhZGF0YSIsImZhY2FkZSIsIlNUQVRFIiwiQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUiLCJJbnRlcm5hbFN0YXRlTW9kdWxlIiwiZW5mb3JjZUludGVybmFsU3RhdGUiLCJnZXRJbnRlcm5hbFN0YXRlIiwic3RyaW5nU2xpY2UiLCJzbGljZSIsInJlcGxhY2UiLCJDT05GSUdVUkFCTEVfTEVOR1RIIiwiVEVNUExBVEUiLCJtYWtlQnVpbHRJbiIsIm9wdGlvbnMiLCJnZXR0ZXIiLCJzZXR0ZXIiLCJhcml0eSIsInRhcmdldCIsImRlc2NyaXB0b3IiLCJ0aGF0IiwiaGFzSW5kaWNlcyIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJkb3RBbGwiLCJ1bmljb2RlIiwidW5pY29kZVNldHMiLCJzdGlja3kiLCJkZWZpbmVCdWlsdEluQWNjZXNzb3IiLCJyZWdFeHBGbGFncyIsIlJlZ0V4cCIsIlJlZ0V4cFByb3RvdHlwZSIsIkZPUkNFRCIsIklORElDRVNfU1VQUE9SVCIsImNhbGxzIiwiZXhwZWN0ZWQiLCJhZGRHZXR0ZXIiLCJjaHIiLCJwYWlycyIsInJlcGxhY2VtZW50cyIsIkFTQ0lJUHVuY3R1YXRpb24iLCJOb3RUcmlnZ2VyQ2hhciIsIlNjaGVtZSIsIkVtYWlsIiwiSFRNTE9wZW5UYWciLCJIVE1MQ2xvc2VUYWciLCJIVE1MVGFnTmFtZSIsIkhUTUxDb21tZW50IiwiSFRNTFBJIiwiSFRNTERlY2xhcmF0aW9uIiwiSFRNTENEQVRBIiwiSFRNTEF0dHJpYnV0ZSIsIkhUTUxBdHRWYWx1ZSIsIktub3duVGFnIiwicHVuY3R1YXRpb25MZWFkaW5nIiwicHVuY3R1YXRpb25UcmFpbGluZyIsImxpbmVHcmFtbWFyIiwiVE1IMSIsInJlZ2V4cCIsInJlcGxhY2VtZW50IiwiVE1IMiIsIlRNSDMiLCJUTUg0IiwiVE1INSIsIlRNSDYiLCJUTUJsb2NrcXVvdGUiLCJUTUNvZGVGZW5jZUJhY2t0aWNrT3BlbiIsIlRNQ29kZUZlbmNlVGlsZGVPcGVuIiwiVE1Db2RlRmVuY2VCYWNrdGlja0Nsb3NlIiwiVE1Db2RlRmVuY2VUaWxkZUNsb3NlIiwiVE1CbGFua0xpbmUiLCJUTVNldGV4dEgxTWFya2VyIiwiVE1TZXRleHRIMk1hcmtlciIsIlRNSFIiLCJUTVVMIiwiVE1PTCIsIlRNSW5kZW50ZWRDb2RlIiwiVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbiIsImxhYmVsUGxhY2Vob2xkZXIiLCJodG1sQmxvY2tHcmFtbWFyIiwic3RhcnQiLCJlbmQiLCJwYXJhSW50ZXJydXB0IiwiaW5saW5lR3JhbW1hciIsImVzY2FwZSIsImF1dG9saW5rIiwiaHRtbCIsImxpbmtPcGVuIiwiaW1hZ2VPcGVuIiwibGlua0xhYmVsIiwiZGVmYXVsdCIsInJlcGxhY2VtZW50UmVnZXhwIiwiaW5saW5lUnVsZXMiLCJydWxlIiwicmUiLCJzdHJpbmciLCJmbGFncyIsImh0bWxlc2NhcGUiLCJwcmUiLCJwb3N0IiwidW5zZXQiLCJwcmVQYXR0ZXJuIiwicG9zdFBhdHRlcm4iLCJwYXR0ZXJuIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJFZGl0b3IiLCJ0ZXh0YXJlYSIsImxpbmVzIiwibGluZUVsZW1lbnRzIiwibGluZVR5cGVzIiwibGluZUNhcHR1cmVzIiwibGluZVJlcGxhY2VtZW50cyIsImxpbmtMYWJlbHMiLCJsaW5lRGlydHkiLCJsYXN0Q29tbWFuZFN0YXRlIiwibGlzdGVuZXJzIiwiY2hhbmdlIiwic2VsZWN0aW9uIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJwYXJlbnROb2RlIiwic3R5bGUiLCJkaXNwbGF5IiwiY3JlYXRlRWRpdG9yRWxlbWVudCIsInNldENvbnRlbnQiLCJjb250ZW50IiwiY29udGVudEVkaXRhYmxlIiwid2hpdGVTcGFjZSIsIndlYmtpdFVzZXJNb2RpZnkiLCJuZXh0U2libGluZyIsImluc2VydEJlZm9yZSIsImhhbmRsZUlucHV0RXZlbnQiLCJoYW5kbGVTZWxlY3Rpb25DaGFuZ2VFdmVudCIsImhhbmRsZVBhc3RlIiwiY2hpbGROb2RlcyIsImZpcnN0Q2hpbGQiLCJyZW1vdmVDaGlsZCIsImxpbmVOdW0iLCJsZSIsIkFycmF5IiwidXBkYXRlRm9ybWF0dGluZyIsImZpcmVDaGFuZ2UiLCJnZXRDb250ZW50IiwidXBkYXRlTGluZVR5cGVzIiwidXBkYXRlTGlua0xhYmVscyIsImFwcGx5TGluZVR5cGVzIiwibCIsImNhcHR1cmUiLCJzdHIiLCJwMSIsInAyIiwicHJvY2Vzc0lubGluZVN0eWxlcyIsImNvbnRlbnRIVE1MIiwicmVtb3ZlQXR0cmlidXRlIiwiZGF0YXNldCIsImNvZGVCbG9ja1R5cGUiLCJjb2RlQmxvY2tTZXFMZW5ndGgiLCJodG1sQmxvY2siLCJsaW5lVHlwZSIsImxpbmVDYXB0dXJlIiwibGluZVJlcGxhY2VtZW50IiwiZ3JvdXBzIiwiaHRtbEJsb2NrVHlwZSIsImhlYWRpbmdMaW5lIiwiaGVhZGluZ0xpbmVUeXBlIiwidXBkYXRlTGluZUNvbnRlbnRzQW5kRm9ybWF0dGluZyIsImNsZWFyRGlydHlGbGFnIiwidXBkYXRlTGluZUNvbnRlbnRzIiwicGFyc2VMaW5rT3JJbWFnZSIsIm9yaWdpbmFsU3RyaW5nIiwiaXNJbWFnZSIsInRleHRPZmZzZXQiLCJvcGVuZXIiLCJzdWJzdHIiLCJjdXJyZW50T2Zmc2V0IiwiYnJhY2tldExldmVsIiwibGlua1RleHQiLCJsaW5rUmVmIiwibGlua0RldGFpbHMiLCJ0ZXh0T3V0ZXIiLCJjYXAiLCJuZXh0Q2hhciIsInRyaW0iLCJwYXJlbnRoZXNpc0xldmVsIiwiaW5saW5lT3V0ZXIiLCJ2YWxpZCIsImxhYmVsIiwib3V0cHV0IiwiY2hhckNvdW50IiwicHJvY2Vzc2VkIiwic3RhY2siLCJvZmZzZXQiLCJwb3RlbnRpYWxMaW5rIiwicG90ZW50aWFsSW1hZ2UiLCJkZWxpbUNvdW50IiwiZGVsaW1TdHJpbmciLCJjdXJyZW50RGVsaW1pdGVyIiwicHJlY2VkaW5nIiwiZm9sbG93aW5nIiwicHVuY3R1YXRpb25Gb2xsb3dzIiwicHVuY3R1YXRpb25QcmVjZWRlcyIsIndoaXRlc3BhY2VGb2xsb3dzIiwid2hpdGVzcGFjZVByZWNlZGVzIiwiY2FuT3BlbiIsImNhbkNsb3NlIiwic3RhY2tQb2ludGVyIiwiZGVsaW1pdGVyIiwiZW50cnkiLCJwb3AiLCJjb3VudCIsImNvbnN1bWVkIiwibGluZURlbHRhIiwiY2hpbGRFbGVtZW50Q291bnQiLCJmaXJzdENoYW5nZWRMaW5lIiwidGV4dENvbnRlbnQiLCJsYXN0Q2hhbmdlZExpbmUiLCJsaW5lc1RvRGVsZXRlIiwibGluZXNUb0FkZCIsInNwbGljZUxpbmVzIiwibGluZSIsImN0IiwicHJvY2Vzc05ld1BhcmFncmFwaCIsInNlbCIsImNvbnRpbnVhYmxlVHlwZSIsImNoZWNrTGluZSIsImNvbCIsInJvdyIsInBhcnNlSW50IiwiZ2V0U2VsZWN0aW9uIiwiZ2V0QW5jaG9yIiwic3RhcnROb2RlIiwiYW5jaG9yTm9kZSIsImZvY3VzTm9kZSIsImFuY2hvck9mZnNldCIsImZvY3VzT2Zmc2V0IiwiY29tcHV0ZUNvbHVtbiIsIm5vZGUiLCJwcmV2aW91c1NpYmxpbmciLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJjb21wdXRlTm9kZUFuZE9mZnNldCIsImJpbmRSaWdodCIsImNoaWxkcmVuQ29tcGxldGUiLCJydiIsIm5vZGVWYWx1ZSIsInNldFNlbGVjdGlvbiIsInJhbmdlIiwiY3JlYXRlUmFuZ2UiLCJzZXRTdGFydCIsInNldEVuZCIsIndpbmRvd1NlbGVjdGlvbiIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIiwiaW5wdXRUeXBlIiwiZml4Tm9kZUhpZXJhcmNoeSIsIm9yaWdpbmFsQ2hpbGRyZW4iLCJmcm9tIiwicmVwbGFjZUNoaWxkIiwiY2hpbGQiLCJwYXJlbnQiLCJfbGVuIiwibmV3Q2hpbGRyZW4iLCJfa2V5IiwiZm9yRWFjaCIsIm5ld0NoaWxkIiwiRUxFTUVOVF9OT0RFIiwiZGl2V3JhcHBlciIsImdyYW5kQ2hpbGRyZW4iLCJzb21lIiwiZ3JhbmRDaGlsZCIsImZpcmVTZWxlY3Rpb24iLCJzdGFydExpbmUiLCJsaW5lc1RvSW5zZXJ0IiwiYWRqdXN0TGluZUVsZW1lbnRzIiwiaW5zZXJ0ZWRCbGFuayIsImluc2VydGVkRGlydHkiLCJzcGxpY2UiLCJ0ZXh0Iiwib3JpZ2luYWxFdmVudCIsImNsaXBib2FyZERhdGEiLCJnZXREYXRhIiwiYmVnaW5uaW5nIiwiaW5zZXJ0ZWRMaW5lcyIsImxpbmVCZWZvcmUiLCJsaW5lRW5kIiwiZW5kQ29sUG9zIiwiY29tcHV0ZUNvbW1vbkFuY2VzdG9yIiwibm9kZTEiLCJub2RlMiIsImFuY2VzdHJ5IiwidW5zaGlmdCIsImFuY2VzdHJ5MSIsImFuY2VzdHJ5MiIsImNvbXB1dGVFbmNsb3NpbmdNYXJrdXBOb2RlIiwiaW5jbHVkZXMiLCJnZXRDb21tYW5kU3RhdGUiLCJjbWQiLCJtYXJrdXBOb2RlIiwic3RhcnRDb2wiLCJsZW4iLCJsZWZ0IiwibWlkIiwicmlnaHQiLCJlbmRDb2wiLCJsZWFkaW5nIiwidHJhaWxpbmciLCJpc0NvbGxhcHNlZCIsImFuY2VzdG9yIiwidG9nZ2xlQ29tbWFuZFN0YXRlIiwibGlzdGVuZXIiLCJsaW5lc0RpcnR5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7RUFBQSxNQUFNQSxHQUFHLEdBQUc7RUFDVkMsRUFBQUEsVUFBVSxFQUFHLENBQTBSLHlSQUFBLENBQUE7RUFDdlNDLEVBQUFBLElBQUksRUFBRyxDQUF5WSx3WUFBQSxDQUFBO0VBQ2haQyxFQUFBQSxnQkFBZ0IsRUFBRyxDQUEwWCx5WEFBQSxDQUFBO0VBQzdZQyxFQUFBQSxJQUFJLEVBQUcsQ0FBOFUsNlVBQUEsQ0FBQTtFQUNyVkMsRUFBQUEsRUFBRSxFQUFHLENBQStKLDhKQUFBLENBQUE7RUFDcEtDLEVBQUFBLEVBQUUsRUFBRyxDQUFpSyxnS0FBQSxDQUFBO0VBQ3RLQyxFQUFBQSxFQUFFLEVBQUcsQ0FBZ0ksK0hBQUEsQ0FBQTtFQUNySUMsRUFBQUEsS0FBSyxFQUFHLENBQThILDZIQUFBLENBQUE7RUFDdElDLEVBQUFBLE1BQU0sRUFBRyxDQUFnSCwrR0FBQSxDQUFBO0VBQ3pIQyxFQUFBQSxJQUFJLEVBQUcsQ0FBMHVDLHl1Q0FBQSxDQUFBO0VBQ2p2Q0MsRUFBQUEsRUFBRSxFQUFHLENBQW90QixtdEJBQUEsQ0FBQTtFQUN6dEJDLEVBQUFBLGFBQWEsRUFBRyxDQUEyWCwwWEFBQSxDQUFBO0VBQzNZQyxFQUFBQSxFQUFFLEVBQUcsQ0FBQSwyUUFBQSxDQUFBO0VBQ1AsQ0FBQzs7RUNaRCxNQUFNQyxTQUFTLEdBQUcseUJBQXlCLENBQUNDLElBQUksQ0FBQyxPQUFPQyxTQUFTLEtBQUssV0FBVyxHQUFHQSxTQUFTLENBQUNDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQTtFQUU1RyxNQUFNQyxlQUFlLEdBQUc7RUFDdEIsRUFBQSxNQUFNLEVBQUU7RUFDTkMsSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWkMsSUFBQUEsTUFBTSxFQUFFLE1BQU07TUFDZEMsU0FBUyxFQUFFckIsR0FBRyxDQUFDRSxJQUFJO0VBQ25Cb0IsSUFBQUEsS0FBSyxFQUFFLE1BQU07RUFDYkMsSUFBQUEsTUFBTSxFQUFFLE9BQUE7S0FDVDtFQUNELEVBQUEsUUFBUSxFQUFFO0VBQ1JKLElBQUFBLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUFBLE1BQU0sRUFBRSxRQUFRO01BQ2hCQyxTQUFTLEVBQUVyQixHQUFHLENBQUNTLE1BQU07RUFDckJhLElBQUFBLEtBQUssRUFBRSxRQUFRO0VBQ2ZDLElBQUFBLE1BQU0sRUFBRSxPQUFBO0tBQ1Q7RUFDRCxFQUFBLGVBQWUsRUFBRTtFQUNmSixJQUFBQSxJQUFJLEVBQUUsZUFBZTtFQUNyQkMsSUFBQUEsTUFBTSxFQUFFLGVBQWU7TUFDdkJDLFNBQVMsRUFBRXJCLEdBQUcsQ0FBQ1ksYUFBYTtFQUM1QlUsSUFBQUEsS0FBSyxFQUFFLGVBQWU7RUFDdEJDLElBQUFBLE1BQU0sRUFBRSxjQUFBO0tBQ1Q7RUFDRCxFQUFBLE1BQU0sRUFBRTtFQUNOSixJQUFBQSxJQUFJLEVBQUUsTUFBTTtFQUNaQyxJQUFBQSxNQUFNLEVBQUUsTUFBTTtNQUNkQyxTQUFTLEVBQUVyQixHQUFHLENBQUNJLElBQUk7RUFDbkJrQixJQUFBQSxLQUFLLEVBQUUsZ0JBQUE7S0FDUjtFQUNELEVBQUEsSUFBSSxFQUFFO0VBQ0pILElBQUFBLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUFBLE1BQU0sRUFBRSxJQUFJO01BQ1pDLFNBQVMsRUFBRXJCLEdBQUcsQ0FBQ0ssRUFBRTtFQUNqQmlCLElBQUFBLEtBQUssRUFBRSxpQkFBaUI7RUFDeEJDLElBQUFBLE1BQU0sRUFBRSxhQUFBO0tBQ1Q7RUFDRCxFQUFBLElBQUksRUFBRTtFQUNKSixJQUFBQSxJQUFJLEVBQUUsSUFBSTtFQUNWQyxJQUFBQSxNQUFNLEVBQUUsSUFBSTtNQUNaQyxTQUFTLEVBQUVyQixHQUFHLENBQUNNLEVBQUU7RUFDakJnQixJQUFBQSxLQUFLLEVBQUUsaUJBQWlCO0VBQ3hCQyxJQUFBQSxNQUFNLEVBQUUsYUFBQTtLQUNUO0VBQ0QsRUFBQSxJQUFJLEVBQUU7RUFDSkosSUFBQUEsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBQUEsTUFBTSxFQUFFLElBQUk7TUFDWkMsU0FBUyxFQUFFckIsR0FBRyxDQUFDYSxFQUFFO0VBQ2pCUyxJQUFBQSxLQUFLLEVBQUUsZUFBQTtLQUNSO0VBQ0QsRUFBQSxJQUFJLEVBQUU7RUFDSkgsSUFBQUEsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBQUEsTUFBTSxFQUFFLElBQUk7TUFDWkMsU0FBUyxFQUFFckIsR0FBRyxDQUFDVyxFQUFFO0VBQ2pCVyxJQUFBQSxLQUFLLEVBQUUsZUFBQTtLQUNSO0VBQ0QsRUFBQSxZQUFZLEVBQUU7RUFDWkgsSUFBQUEsSUFBSSxFQUFFLFlBQVk7RUFDbEJDLElBQUFBLE1BQU0sRUFBRSxZQUFZO01BQ3BCQyxTQUFTLEVBQUVyQixHQUFHLENBQUNDLFVBQVU7RUFDekJxQixJQUFBQSxLQUFLLEVBQUUsT0FBTztFQUNkQyxJQUFBQSxNQUFNLEVBQUUsY0FBQTtLQUNUO0VBQ0QsRUFBQSxZQUFZLEVBQUU7RUFDWkosSUFBQUEsSUFBSSxFQUFFLFlBQVk7TUFDbEJDLE1BQU0sRUFBR0ksTUFBTSxJQUFLO0VBQUMsTUFBQSxJQUFJQSxNQUFNLENBQUNDLHlCQUF5QixFQUFFLEVBQUVELE1BQU0sQ0FBQ0UsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtPQUFDO0VBQzlGQyxJQUFBQSxPQUFPLEVBQUVBLENBQUNILE1BQU0sRUFBRUksS0FBSyxFQUFFQyxNQUFNLEtBQUtMLE1BQU0sQ0FBQ0MseUJBQXlCLENBQUNHLEtBQUssRUFBRUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUk7TUFDbEdSLFNBQVMsRUFBRXJCLEdBQUcsQ0FBQ1UsSUFBSTtFQUNuQlksSUFBQUEsS0FBSyxFQUFFLGFBQWE7RUFDcEJDLElBQUFBLE1BQU0sRUFBRSxPQUFBO0tBQ1Q7RUFDRCxFQUFBLGFBQWEsRUFBRTtFQUNiSixJQUFBQSxJQUFJLEVBQUUsYUFBYTtNQUNuQkMsTUFBTSxFQUFHSSxNQUFNLElBQUs7RUFBQyxNQUFBLElBQUlBLE1BQU0sQ0FBQ0MseUJBQXlCLEVBQUUsRUFBRUQsTUFBTSxDQUFDRSxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO09BQUM7RUFDL0ZDLElBQUFBLE9BQU8sRUFBRUEsQ0FBQ0gsTUFBTSxFQUFFSSxLQUFLLEVBQUVDLE1BQU0sS0FBS0wsTUFBTSxDQUFDQyx5QkFBeUIsQ0FBQ0csS0FBSyxFQUFFQyxNQUFNLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSTtNQUNsR1IsU0FBUyxFQUFFckIsR0FBRyxDQUFDUSxLQUFLO0VBQ3BCYyxJQUFBQSxLQUFLLEVBQUUsY0FBYztFQUNyQkMsSUFBQUEsTUFBTSxFQUFFLGNBQUE7S0FDVDtFQUNELEVBQUEsSUFBSSxFQUFFO0VBQ0pKLElBQUFBLElBQUksRUFBRSxJQUFJO01BQ1ZDLE1BQU0sRUFBR0ksTUFBTSxJQUFLQSxNQUFNLENBQUNNLEtBQUssQ0FBQyxTQUFTLENBQUM7TUFDM0NILE9BQU8sRUFBRUEsTUFBTSxLQUFLO01BQ3BCTixTQUFTLEVBQUVyQixHQUFHLENBQUNPLEVBQUU7RUFDakJlLElBQUFBLEtBQUssRUFBRSx3QkFBd0I7RUFDL0JDLElBQUFBLE1BQU0sRUFBRSxjQUFBO0VBQ1YsR0FBQTtFQUNGLENBQUMsQ0FBQTtFQUdELE1BQU1RLFVBQVUsQ0FBQztJQUNmQyxXQUFXQSxDQUFDQyxLQUFLLEVBQUU7TUFDakIsSUFBSSxDQUFDQyxDQUFDLEdBQUcsSUFBSSxDQUFBO01BQ2IsSUFBSSxDQUFDVixNQUFNLEdBQUcsSUFBSSxDQUFBO01BQ2xCLElBQUksQ0FBQ1csUUFBUSxHQUFHLEVBQUUsQ0FBQTtFQUNsQixJQUFBLElBQUksQ0FBQ0MsT0FBTyxHQUFHLEVBQUUsQ0FBQTtFQUNqQixJQUFBLElBQUksQ0FBQ0MsS0FBSyxHQUFHLEVBQUUsQ0FBQTtNQUNmLElBQUksQ0FBQ0MsT0FBTyxHQUFHLEVBQUUsQ0FBQTtFQUVqQixJQUFBLElBQUlDLE9BQU8sR0FBR04sS0FBSyxDQUFDTSxPQUFPLENBQUE7RUFDM0IsSUFBQSxJQUFJQSxPQUFPLElBQUksQ0FBQ0EsT0FBTyxDQUFDQyxPQUFPLEVBQUU7UUFDL0JELE9BQU8sR0FBR0UsUUFBUSxDQUFDQyxjQUFjLENBQUNULEtBQUssQ0FBQ00sT0FBTyxDQUFDLENBQUE7RUFDbEQsS0FBQTtNQUNBLElBQUksQ0FBQ0EsT0FBTyxFQUFFO1FBQ1pBLE9BQU8sR0FBR0UsUUFBUSxDQUFDRSxJQUFJLENBQUE7RUFDekIsS0FBQTtNQUNBLElBQUksQ0FBQ0MsdUJBQXVCLENBQUNMLE9BQU8sRUFBRU4sS0FBSyxDQUFDRSxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQTtFQUN0TU0sSUFBQUEsUUFBUSxDQUFDSSxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUdYLENBQUMsSUFBSyxJQUFJLENBQUNZLGFBQWEsQ0FBQ1osQ0FBQyxDQUFDLENBQUMsQ0FBQTtNQUNsRSxJQUFJRCxLQUFLLENBQUNULE1BQU0sRUFBRSxJQUFJLENBQUN1QixTQUFTLENBQUNkLEtBQUssQ0FBQ1QsTUFBTSxDQUFDLENBQUE7RUFDaEQsR0FBQTtFQUVBb0IsRUFBQUEsdUJBQXVCQSxDQUFDSSxhQUFhLEVBQUViLFFBQVEsRUFBRTtNQUMvQyxJQUFJLENBQUNELENBQUMsR0FBR08sUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7RUFDdEMsSUFBQSxJQUFJLENBQUNmLENBQUMsQ0FBQ2dCLFNBQVMsR0FBRyxjQUFjLENBQUE7RUFFakMsSUFBQSxLQUFLLElBQUlDLE9BQU8sSUFBSWhCLFFBQVEsRUFBRTtRQUM1QixJQUFJZ0IsT0FBTyxJQUFJLEdBQUcsRUFBRTtFQUNsQixRQUFBLElBQUlDLEVBQUUsR0FBR1gsUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7VUFDdENHLEVBQUUsQ0FBQ0YsU0FBUyxHQUFHLGtCQUFrQixDQUFBO0VBQ2pDLFFBQUEsSUFBSSxDQUFDaEIsQ0FBQyxDQUFDbUIsV0FBVyxDQUFDRCxFQUFFLENBQUMsQ0FBQTtFQUN4QixPQUFDLE1BQU07RUFDTCxRQUFBLElBQUlFLFdBQVcsQ0FBQTtFQUNmLFFBQUEsSUFBSSxPQUFPSCxPQUFPLElBQUksUUFBUSxFQUFFO0VBQzlCOztFQUVBLFVBQUEsSUFBSWpDLGVBQWUsQ0FBQ2lDLE9BQU8sQ0FBQyxFQUFFO0VBQzVCRyxZQUFBQSxXQUFXLEdBQUdILE9BQU8sQ0FBQTtjQUNyQixJQUFJLENBQUNoQixRQUFRLENBQUNtQixXQUFXLENBQUMsR0FBR3BDLGVBQWUsQ0FBQ29DLFdBQVcsQ0FBQyxDQUFBO0VBRzNELFdBQUMsTUFBTTtFQUNMLFlBQUEsU0FBQTtFQUNGLFdBQUE7V0FFRCxNQUFNLElBQUksT0FBT0gsT0FBTyxJQUFJLFFBQVEsSUFBSUEsT0FBTyxDQUFDaEMsSUFBSSxFQUFFO1lBQ3JEbUMsV0FBVyxHQUFHSCxPQUFPLENBQUNoQyxJQUFJLENBQUE7RUFDMUIsVUFBQSxJQUFJLENBQUNnQixRQUFRLENBQUNtQixXQUFXLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDL0IsSUFBSXBDLGVBQWUsQ0FBQ29DLFdBQVcsQ0FBQyxFQUFFQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUNyQixRQUFRLENBQUNtQixXQUFXLENBQUMsRUFBRXBDLGVBQWUsQ0FBQ29DLFdBQVcsQ0FBQyxDQUFDLENBQUE7WUFDekdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQ3JCLFFBQVEsQ0FBQ21CLFdBQVcsQ0FBQyxFQUFFSCxPQUFPLENBQUMsQ0FBQTtFQUdwRCxTQUFDLE1BQU07RUFDTCxVQUFBLFNBQUE7RUFDRixTQUFBO1VBRUEsSUFBSTdCLEtBQUssR0FBRyxJQUFJLENBQUNhLFFBQVEsQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDaEMsS0FBSyxJQUFJZ0MsV0FBVyxDQUFBO1VBRTNELElBQUksSUFBSSxDQUFDbkIsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLENBQUMvQixNQUFNLEVBQUU7RUFDckMsVUFBQSxNQUFNa0MsSUFBSSxHQUFHLElBQUksQ0FBQ3RCLFFBQVEsQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDL0IsTUFBTSxDQUFDbUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQ3pEO1lBQ0EsSUFBSUMsU0FBUyxHQUFHLEVBQUUsQ0FBQTtZQUNsQixJQUFJQyxtQkFBbUIsR0FBRyxFQUFFLENBQUE7RUFDNUIsVUFBQSxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0osSUFBSSxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxFQUFFRCxDQUFDLEVBQUUsRUFBRTtjQUN4QyxRQUFRSixJQUFJLENBQUNJLENBQUMsQ0FBQztFQUNiLGNBQUEsS0FBSyxNQUFNO0VBQUVGLGdCQUFBQSxTQUFTLENBQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtFQUFFSCxnQkFBQUEsbUJBQW1CLENBQUNHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtFQUFFLGdCQUFBLE1BQUE7RUFDMUUsY0FBQSxLQUFLLEtBQUs7RUFBRUosZ0JBQUFBLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0VBQUVILGdCQUFBQSxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQUUsZ0JBQUEsTUFBQTtFQUN0RSxjQUFBLEtBQUssS0FBSztFQUFFSixnQkFBQUEsU0FBUyxDQUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7RUFBRUgsZ0JBQUFBLG1CQUFtQixDQUFDRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7RUFBRSxnQkFBQSxNQUFBO0VBQ3ZFLGNBQUEsS0FBSyxRQUFRO0VBQUVKLGdCQUFBQSxTQUFTLENBQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtFQUFFSCxnQkFBQUEsbUJBQW1CLENBQUNHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUFFLGdCQUFBLE1BQUE7RUFDeEUsY0FBQSxLQUFLLEtBQUs7RUFBRUosZ0JBQUFBLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0VBQUVILGdCQUFBQSxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0VBQUUsZ0JBQUEsTUFBQTtFQUUxRSxjQUFBLEtBQUssT0FBTztFQUFHSixnQkFBQUEsU0FBUyxDQUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7RUFBRUgsZ0JBQUFBLG1CQUFtQixDQUFDRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7RUFBRSxnQkFBQSxNQUFBO0VBRTFFLGNBQUEsS0FBSyxLQUFLO0VBQUU7RUFDVixnQkFBQSxJQUFJakQsU0FBUyxFQUFFO0VBQUM2QyxrQkFBQUEsU0FBUyxDQUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7RUFBRUgsa0JBQUFBLG1CQUFtQixDQUFDRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7RUFBQyxpQkFBQyxNQUNyRTtFQUFDSixrQkFBQUEsU0FBUyxDQUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7RUFBRUgsa0JBQUFBLG1CQUFtQixDQUFDRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7RUFBQyxpQkFBQTtFQUNsRSxnQkFBQSxNQUFBO0VBQ0YsY0FBQSxLQUFLLE1BQU07RUFDVEosZ0JBQUFBLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0VBQ3hCLGdCQUFBLElBQUlqRCxTQUFTLEVBQUU4QyxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQ3hDSCxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQ3BDLGdCQUFBLE1BQUE7RUFBTztFQUNYLGFBQUE7RUFDRixXQUFBOztZQUNBSCxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDTixJQUFJLENBQUNBLElBQUksQ0FBQ0ssTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDL0MsVUFBQSxJQUFJdkMsTUFBTSxHQUFHO0VBRVhvQyxZQUFBQSxTQUFTLEVBQUVBLFNBQVM7RUFDcEJSLFlBQUFBLE9BQU8sRUFBRUcsV0FBQUE7YUFDVixDQUFBO0VBQ0Q7RUFDQSxVQUFBLElBQUlHLElBQUksQ0FBQ0EsSUFBSSxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUNFLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtFQUMxQ3pDLFlBQUFBLE1BQU0sQ0FBQ25CLElBQUksR0FBSSxDQUFBLEtBQUEsRUFBT3FELElBQUksQ0FBQ0EsSUFBSSxDQUFDSyxNQUFNLEdBQUcsQ0FBQyxDQUFFLENBQUMsQ0FBQSxDQUFBO0VBQy9DLFdBQUMsTUFBTTtFQUNMdkMsWUFBQUEsTUFBTSxDQUFDMEMsR0FBRyxHQUFHUixJQUFJLENBQUNBLElBQUksQ0FBQ0ssTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDSSxXQUFXLEVBQUUsQ0FBQTtFQUNsRCxXQUFBO0VBQ0EsVUFBQSxJQUFJLENBQUM1QixPQUFPLENBQUN5QixJQUFJLENBQUN4QyxNQUFNLENBQUMsQ0FBQTtFQUN6QkQsVUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUM2QyxNQUFNLENBQUUsQ0FBQSxFQUFBLEVBQUlQLG1CQUFtQixDQUFDUSxJQUFJLENBQUMsR0FBRyxDQUFFLEdBQUUsQ0FBQyxDQUFBO0VBQzdELFNBQUE7VUFFQSxJQUFJLENBQUNoQyxPQUFPLENBQUNrQixXQUFXLENBQUMsR0FBR2IsUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7VUFDekQsSUFBSSxDQUFDYixPQUFPLENBQUNrQixXQUFXLENBQUMsQ0FBQ0osU0FBUyxHQUFHLDBDQUEwQyxDQUFBO1VBQ2hGLElBQUksQ0FBQ2QsT0FBTyxDQUFDa0IsV0FBVyxDQUFDLENBQUNoQyxLQUFLLEdBQUdBLEtBQUssQ0FBQTtFQUN2QyxRQUFBLElBQUksQ0FBQ2MsT0FBTyxDQUFDa0IsV0FBVyxDQUFDLENBQUNqQyxTQUFTLEdBQUcsSUFBSSxDQUFDYyxRQUFRLENBQUNtQixXQUFXLENBQUMsQ0FBQ2pDLFNBQVMsQ0FBQTtVQUUxRSxJQUFJLENBQUNlLE9BQU8sQ0FBQ2tCLFdBQVcsQ0FBQyxDQUFDVCxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUdYLENBQUMsSUFBSyxJQUFJLENBQUNtQyxXQUFXLENBQUNmLFdBQVcsRUFBRXBCLENBQUMsQ0FBQyxDQUFDLENBQUE7VUFDaEcsSUFBSSxDQUFDQSxDQUFDLENBQUNtQixXQUFXLENBQUMsSUFBSSxDQUFDakIsT0FBTyxDQUFDa0IsV0FBVyxDQUFDLENBQUMsQ0FBQTtFQUMvQyxPQUFBO0VBQ0YsS0FBQTtFQUNBTixJQUFBQSxhQUFhLENBQUNLLFdBQVcsQ0FBQyxJQUFJLENBQUNuQixDQUFDLENBQUMsQ0FBQTtFQUNuQyxHQUFBO0VBRUFtQyxFQUFBQSxXQUFXQSxDQUFDZixXQUFXLEVBQUVnQixLQUFLLEVBQUU7RUFDOUIsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDOUMsTUFBTSxFQUFFLE9BQUE7TUFDbEI4QyxLQUFLLENBQUNDLGNBQWMsRUFBRSxDQUFBO01BQ3RCLElBQUksT0FBTyxJQUFJLENBQUNwQyxRQUFRLENBQUNtQixXQUFXLENBQUMsQ0FBQ2xDLE1BQU0sSUFBSSxRQUFRLEVBQUU7RUFDeEQsTUFBQSxJQUFJLElBQUksQ0FBQ2lCLEtBQUssQ0FBQ2lCLFdBQVcsQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLENBQUM5QixNQUFNLENBQUNnRCxlQUFlLENBQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FDakYsSUFBSSxDQUFDOUIsTUFBTSxDQUFDZ0QsZUFBZSxDQUFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFBO0VBQ3RELEtBQUMsTUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDbkIsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLENBQUNsQyxNQUFNLElBQUksVUFBVSxFQUFFO1FBQ2pFLElBQUksQ0FBQ2UsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLENBQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDSSxNQUFNLENBQUMsQ0FBQTtFQUNoRCxLQUFBO0VBQ0YsR0FBQTtJQUVBdUIsU0FBU0EsQ0FBQ3ZCLE1BQU0sRUFBRTtNQUNoQixJQUFJLENBQUNBLE1BQU0sR0FBR0EsTUFBTSxDQUFBO0VBQ3BCQSxJQUFBQSxNQUFNLENBQUNxQixnQkFBZ0IsQ0FBQyxXQUFXLEVBQUdYLENBQUMsSUFBSyxJQUFJLENBQUN1QyxlQUFlLENBQUN2QyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ3RFLEdBQUE7SUFFQXVDLGVBQWVBLENBQUNILEtBQUssRUFBRTtNQUNyQixJQUFJQSxLQUFLLENBQUNJLFlBQVksRUFBRTtFQUN0QixNQUFBLEtBQUssSUFBSXZCLE9BQU8sSUFBSSxJQUFJLENBQUNoQixRQUFRLEVBQUU7VUFDakMsSUFBSW1DLEtBQUssQ0FBQ0ksWUFBWSxDQUFDdkIsT0FBTyxDQUFDLEtBQUt3QixTQUFTLEVBQUU7WUFDN0MsSUFBSSxJQUFJLENBQUN4QyxRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUNVLEtBQUssQ0FBQ2MsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDaEIsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDSCxNQUFNLEVBQUU4QyxLQUFLLENBQUMxQyxLQUFLLEVBQUUwQyxLQUFLLENBQUN6QyxNQUFNLENBQUMsQ0FBQyxLQUM1SCxJQUFJLENBQUNRLEtBQUssQ0FBQ2MsT0FBTyxDQUFDLEdBQUdtQixLQUFLLENBQUMxQyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQTtFQUN2RCxTQUFDLE1BQU07WUFDTCxJQUFJLENBQUNTLEtBQUssQ0FBQ2MsT0FBTyxDQUFDLEdBQUdtQixLQUFLLENBQUNJLFlBQVksQ0FBQ3ZCLE9BQU8sQ0FBQyxDQUFBO0VBQ25ELFNBQUE7VUFFQSxJQUFJLElBQUksQ0FBQ2QsS0FBSyxDQUFDYyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDaEMsSUFBSSxDQUFDZixPQUFPLENBQUNlLE9BQU8sQ0FBQyxDQUFDRCxTQUFTLEdBQUcsd0NBQXdDLENBQUE7V0FDM0UsTUFBTSxJQUFJLElBQUksQ0FBQ2IsS0FBSyxDQUFDYyxPQUFPLENBQUMsS0FBSyxLQUFLLEVBQUU7WUFDeEMsSUFBSSxDQUFDZixPQUFPLENBQUNlLE9BQU8sQ0FBQyxDQUFDRCxTQUFTLEdBQUcsMENBQTBDLENBQUE7RUFDOUUsU0FBQyxNQUFNO1lBQ0wsSUFBSSxDQUFDZCxPQUFPLENBQUNlLE9BQU8sQ0FBQyxDQUFDRCxTQUFTLEdBQUksMENBQTBDLENBQUE7RUFDL0UsU0FBQTtFQUNGLE9BQUE7RUFDRixLQUFBO0VBQ0YsR0FBQTtJQUVBSixhQUFhQSxDQUFDd0IsS0FBSyxFQUFFO01BQ25CTSxLQUFLLEVBQUUsS0FBSyxJQUFJckQsTUFBTSxJQUFJLElBQUksQ0FBQ2UsT0FBTyxFQUFFO1FBQ3RDLElBQUtmLE1BQU0sQ0FBQzBDLEdBQUcsSUFBSUssS0FBSyxDQUFDTCxHQUFHLENBQUNDLFdBQVcsRUFBRSxJQUFJM0MsTUFBTSxDQUFDMEMsR0FBRyxJQUFNMUMsTUFBTSxDQUFDbkIsSUFBSSxJQUFJa0UsS0FBSyxDQUFDbEUsSUFBSSxJQUFJbUIsTUFBTSxDQUFDbkIsSUFBSyxFQUFFO0VBQ3ZHO0VBQ0EsUUFBQSxLQUFLLElBQUl5RSxRQUFRLElBQUl0RCxNQUFNLENBQUNvQyxTQUFTLEVBQUU7RUFDckMsVUFBQSxJQUFJLENBQUNXLEtBQUssQ0FBQ08sUUFBUSxDQUFDLEVBQUUsU0FBU0QsS0FBSyxDQUFBO0VBQ3RDLFNBQUE7RUFDQTtVQUNBLElBQUksQ0FBQ1AsV0FBVyxDQUFDOUMsTUFBTSxDQUFDNEIsT0FBTyxFQUFFbUIsS0FBSyxDQUFDLENBQUE7RUFDdkMsUUFBQSxPQUFBO0VBQ0YsT0FBQTtFQUNGLEtBQUE7RUFDRixHQUFBO0VBQ0Y7Ozs7RUM1UEEsSUFBSVEsS0FBSyxHQUFHLFVBQVVDLEVBQUUsRUFBRTtJQUN4QixPQUFPQSxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsSUFBSSxLQUFLQSxJQUFJLElBQUlELEVBQUUsQ0FBQTtFQUNyQyxDQUFDLENBQUE7O0VBRUQ7TUFDQUUsUUFBYztFQUNaO0VBQ0FILEtBQUssQ0FBQyxPQUFPSSxVQUFVLElBQUksUUFBUSxJQUFJQSxVQUFVLENBQUMsSUFDbERKLEtBQUssQ0FBQyxPQUFPSyxNQUFNLElBQUksUUFBUSxJQUFJQSxNQUFNLENBQUM7RUFDMUM7RUFDQUwsS0FBSyxDQUFDLE9BQU9NLElBQUksSUFBSSxRQUFRLElBQUlBLElBQUksQ0FBQyxJQUN0Q04sS0FBSyxDQUFDLE9BQU9PLGNBQU0sSUFBSSxRQUFRLElBQUlBLGNBQU0sQ0FBQztFQUMxQztFQUNDLFlBQVk7RUFBRSxFQUFBLE9BQU8sSUFBSSxDQUFBO0VBQUUsQ0FBQyxFQUFHLElBQUlDLGNBQUksSUFBSUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFOztNQ2J2RU4sT0FBYyxHQUFHLFVBQVVPLElBQUksRUFBRTtJQUMvQixJQUFJO0VBQ0YsSUFBQSxPQUFPLENBQUMsQ0FBQ0EsSUFBSSxFQUFFLENBQUE7S0FDaEIsQ0FBQyxPQUFPQyxLQUFLLEVBQUU7RUFDZCxJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTtFQUNGLENBQUM7O0VDTkQsSUFBSUMsT0FBSyxHQUFHQyxPQUE2QixDQUFBOztFQUV6QztFQUNBVixJQUFBQSxXQUFjLEdBQUcsQ0FBQ1MsT0FBSyxDQUFDLFlBQVk7RUFDbEM7SUFDQSxPQUFPbkMsTUFBTSxDQUFDcUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7TUFBRUMsR0FBRyxFQUFFLFlBQVk7RUFBRSxNQUFBLE9BQU8sQ0FBQyxDQUFBO0VBQUUsS0FBQTtFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUNsRixDQUFDLENBQUM7Ozs7Ozs7O0VDTkYsSUFBSUgsT0FBSyxHQUFHQyxPQUE2QixDQUFBO0VBRXpDVixJQUFBQSxrQkFBYyxHQUFHLENBQUNTLE9BQUssQ0FBQyxZQUFZO0VBQ2xDO0lBQ0EsSUFBSTNFLElBQUksR0FBSSxZQUFZLGFBQWUsQ0FBRStFLElBQUksRUFBRSxDQUFBO0VBQy9DO0lBQ0EsT0FBTyxPQUFPL0UsSUFBSSxJQUFJLFVBQVUsSUFBSUEsSUFBSSxDQUFDZ0YsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0VBQ3RFLENBQUMsQ0FBQzs7RUNQRixJQUFJQyxhQUFXLEdBQUdMLGtCQUE0QyxDQUFBO0VBRTlELElBQUlNLG1CQUFpQixHQUFHVixRQUFRLENBQUNXLFNBQVMsQ0FBQTtFQUMxQyxJQUFJQyxNQUFJLEdBQUdGLG1CQUFpQixDQUFDRSxJQUFJLENBQUE7RUFDakMsSUFBSUMsbUJBQW1CLEdBQUdKLGFBQVcsSUFBSUMsbUJBQWlCLENBQUNILElBQUksQ0FBQ0EsSUFBSSxDQUFDSyxNQUFJLEVBQUVBLE1BQUksQ0FBQyxDQUFBO0VBRWhGbEIsSUFBQUEsbUJBQWMsR0FBR2UsYUFBVyxHQUFHSSxtQkFBbUIsR0FBRyxVQUFVQyxFQUFFLEVBQUU7RUFDakUsRUFBQSxPQUFPLFlBQVk7RUFDakIsSUFBQSxPQUFPRixNQUFJLENBQUNHLEtBQUssQ0FBQ0QsRUFBRSxFQUFFRSxTQUFTLENBQUMsQ0FBQTtLQUNqQyxDQUFBO0VBQ0gsQ0FBQzs7RUNWRCxJQUFJQyxhQUFXLEdBQUcsT0FBTy9ELFFBQVEsSUFBSSxRQUFRLElBQUlBLFFBQVEsQ0FBQ2dFLEdBQUcsQ0FBQTs7RUFFN0Q7RUFDQTtFQUNBLElBQUlDLFVBQVUsR0FBRyxPQUFPRixhQUFXLElBQUksV0FBVyxJQUFJQSxhQUFXLEtBQUs3QixTQUFTLENBQUE7RUFFL0VNLElBQUFBLGFBQWMsR0FBRztFQUNmd0IsRUFBQUEsR0FBRyxFQUFFRCxhQUFXO0VBQ2hCRSxFQUFBQSxVQUFVLEVBQUVBLFVBQUFBO0VBQ2QsQ0FBQzs7RUNURCxJQUFJQyxjQUFZLEdBQUdoQixhQUFvQyxDQUFBO0VBRXZELElBQUlhLGFBQVcsR0FBR0csY0FBWSxDQUFDRixHQUFHLENBQUE7O0VBRWxDO0VBQ0E7RUFDQXhCLElBQUFBLFlBQWMsR0FBRzBCLGNBQVksQ0FBQ0QsVUFBVSxHQUFHLFVBQVVFLFFBQVEsRUFBRTtFQUM3RCxFQUFBLE9BQU8sT0FBT0EsUUFBUSxJQUFJLFVBQVUsSUFBSUEsUUFBUSxLQUFLSixhQUFXLENBQUE7RUFDbEUsQ0FBQyxHQUFHLFVBQVVJLFFBQVEsRUFBRTtJQUN0QixPQUFPLE9BQU9BLFFBQVEsSUFBSSxVQUFVLENBQUE7RUFDdEMsQ0FBQzs7RUNWRDtFQUNBO01BQ0EzQixtQkFBYyxHQUFHLFVBQVVGLEVBQUUsRUFBRTtFQUM3QixFQUFBLE9BQU9BLEVBQUUsS0FBSyxJQUFJLElBQUlBLEVBQUUsS0FBS0osU0FBUyxDQUFBO0VBQ3hDLENBQUM7O0VDSkQsSUFBSWtDLG1CQUFpQixHQUFHbEIsbUJBQTRDLENBQUE7RUFFcEUsSUFBSW1CLFlBQVUsR0FBR0MsU0FBUyxDQUFBOztFQUUxQjtFQUNBO01BQ0E5Qix3QkFBYyxHQUFHLFVBQVVGLEVBQUUsRUFBRTtFQUM3QixFQUFBLElBQUk4QixtQkFBaUIsQ0FBQzlCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sSUFBSStCLFlBQVUsQ0FBQyx1QkFBdUIsR0FBRy9CLEVBQUUsQ0FBQyxDQUFBO0VBQzdFLEVBQUEsT0FBT0EsRUFBRSxDQUFBO0VBQ1gsQ0FBQzs7RUNURCxJQUFJaUMsc0JBQXNCLEdBQUdyQix3QkFBZ0QsQ0FBQTtFQUU3RSxJQUFJc0IsU0FBTyxHQUFHMUQsTUFBTSxDQUFBOztFQUVwQjtFQUNBO01BQ0EwQixVQUFjLEdBQUcsVUFBVTJCLFFBQVEsRUFBRTtFQUNuQyxFQUFBLE9BQU9LLFNBQU8sQ0FBQ0Qsc0JBQXNCLENBQUNKLFFBQVEsQ0FBQyxDQUFDLENBQUE7RUFDbEQsQ0FBQzs7RUNSRCxJQUFJTSxhQUFXLEdBQUd2QixtQkFBNkMsQ0FBQTtFQUMvRCxJQUFJd0IsUUFBUSxHQUFHeEIsVUFBaUMsQ0FBQTtFQUVoRCxJQUFJSSxjQUFjLEdBQUdtQixhQUFXLENBQUMsRUFBRSxDQUFDbkIsY0FBYyxDQUFDLENBQUE7O0VBRW5EO0VBQ0E7RUFDQTtNQUNBZCxnQkFBYyxHQUFHMUIsTUFBTSxDQUFDNkQsTUFBTSxJQUFJLFNBQVNBLE1BQU1BLENBQUNyQyxFQUFFLEVBQUVkLEdBQUcsRUFBRTtJQUN6RCxPQUFPOEIsY0FBYyxDQUFDb0IsUUFBUSxDQUFDcEMsRUFBRSxDQUFDLEVBQUVkLEdBQUcsQ0FBQyxDQUFBO0VBQzFDLENBQUM7O0VDVkQsSUFBSW9ELGFBQVcsR0FBRzFCLFdBQW1DLENBQUE7RUFDckQsSUFBSXlCLFFBQU0sR0FBR3pCLGdCQUF3QyxDQUFBO0VBRXJELElBQUlNLGlCQUFpQixHQUFHVixRQUFRLENBQUNXLFNBQVMsQ0FBQTtFQUMxQztFQUNBLElBQUlvQixhQUFhLEdBQUdELGFBQVcsSUFBSTlELE1BQU0sQ0FBQ2dFLHdCQUF3QixDQUFBO0VBRWxFLElBQUlDLFFBQU0sR0FBR0osUUFBTSxDQUFDbkIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUE7RUFDOUM7RUFDQSxJQUFJd0IsTUFBTSxHQUFHRCxRQUFNLElBQUssU0FBU0UsU0FBU0EsR0FBRyxhQUFlLENBQUV2RyxJQUFJLEtBQUssV0FBVyxDQUFBO0VBQ2xGLElBQUl3RyxjQUFZLEdBQUdILFFBQU0sS0FBSyxDQUFDSCxhQUFXLElBQUtBLGFBQVcsSUFBSUMsYUFBYSxDQUFDckIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUMyQixZQUFhLENBQUMsQ0FBQTtFQUVySDNDLElBQUFBLFlBQWMsR0FBRztFQUNmdUMsRUFBQUEsTUFBTSxFQUFFQSxRQUFNO0VBQ2RDLEVBQUFBLE1BQU0sRUFBRUEsTUFBTTtFQUNkRSxFQUFBQSxZQUFZLEVBQUVBLGNBQUFBO0VBQ2hCLENBQUM7O0VDaEJELElBQUl0QyxRQUFNLEdBQUdNLFFBQThCLENBQUE7O0VBRTNDO0VBQ0EsSUFBSUMsZ0JBQWMsR0FBR3JDLE1BQU0sQ0FBQ3FDLGNBQWMsQ0FBQTtFQUUxQ1gsSUFBQUEsc0JBQWMsR0FBRyxVQUFVaEIsR0FBRyxFQUFFNEQsS0FBSyxFQUFFO0lBQ3JDLElBQUk7RUFDRmpDLElBQUFBLGdCQUFjLENBQUNQLFFBQU0sRUFBRXBCLEdBQUcsRUFBRTtFQUFFNEQsTUFBQUEsS0FBSyxFQUFFQSxLQUFLO0VBQUVELE1BQUFBLFlBQVksRUFBRSxJQUFJO0VBQUVFLE1BQUFBLFFBQVEsRUFBRSxJQUFBO0VBQUssS0FBQyxDQUFDLENBQUE7S0FDbEYsQ0FBQyxPQUFPckMsS0FBSyxFQUFFO0VBQ2RKLElBQUFBLFFBQU0sQ0FBQ3BCLEdBQUcsQ0FBQyxHQUFHNEQsS0FBSyxDQUFBO0VBQ3JCLEdBQUE7RUFBRSxFQUFBLE9BQU9BLEtBQUssQ0FBQTtFQUNoQixDQUFDOztFQ1hELElBQUl4QyxRQUFNLEdBQUdNLFFBQThCLENBQUE7RUFDM0MsSUFBSW9DLG9CQUFvQixHQUFHcEMsc0JBQThDLENBQUE7RUFFekUsSUFBSXFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQTtFQUNqQyxJQUFJQyxPQUFLLEdBQUc1QyxRQUFNLENBQUMyQyxNQUFNLENBQUMsSUFBSUQsb0JBQW9CLENBQUNDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtFQUU5RC9DLElBQUFBLFdBQWMsR0FBR2dELE9BQUs7O0VDTnRCLElBQUlmLGFBQVcsR0FBR3ZCLG1CQUE2QyxDQUFBO0VBQy9ELElBQUl1QyxZQUFVLEdBQUd2QyxZQUFtQyxDQUFBO0VBQ3BELElBQUlzQyxPQUFLLEdBQUd0QyxXQUFvQyxDQUFBO0VBRWhELElBQUl3QyxnQkFBZ0IsR0FBR2pCLGFBQVcsQ0FBQzNCLFFBQVEsQ0FBQzZDLFFBQVEsQ0FBQyxDQUFBOztFQUVyRDtFQUNBLElBQUksQ0FBQ0YsWUFBVSxDQUFDRCxPQUFLLENBQUNJLGFBQWEsQ0FBQyxFQUFFO0VBQ3BDSixFQUFBQSxPQUFLLENBQUNJLGFBQWEsR0FBRyxVQUFVdEQsRUFBRSxFQUFFO01BQ2xDLE9BQU9vRCxnQkFBZ0IsQ0FBQ3BELEVBQUUsQ0FBQyxDQUFBO0tBQzVCLENBQUE7RUFDSCxDQUFBO01BRUFFLGVBQWMsR0FBR2dELE9BQUssQ0FBQ0ksYUFBYTs7RUNicEMsSUFBSWhELFFBQU0sR0FBR00sUUFBOEIsQ0FBQTtFQUMzQyxJQUFJdUMsWUFBVSxHQUFHdkMsWUFBbUMsQ0FBQTtFQUVwRCxJQUFJMkMsU0FBTyxHQUFHakQsUUFBTSxDQUFDaUQsT0FBTyxDQUFBO0VBRTVCckQsSUFBQUEscUJBQWMsR0FBR2lELFlBQVUsQ0FBQ0ksU0FBTyxDQUFDLElBQUksYUFBYSxDQUFDdkgsSUFBSSxDQUFDd0gsTUFBTSxDQUFDRCxTQUFPLENBQUMsQ0FBQzs7RUNMM0UsSUFBSUosWUFBVSxHQUFHdkMsWUFBbUMsQ0FBQTtFQUNwRCxJQUFJZ0IsWUFBWSxHQUFHaEIsYUFBb0MsQ0FBQTtFQUV2RCxJQUFJYSxXQUFXLEdBQUdHLFlBQVksQ0FBQ0YsR0FBRyxDQUFBO0VBRWxDeEIsSUFBQUEsVUFBYyxHQUFHMEIsWUFBWSxDQUFDRCxVQUFVLEdBQUcsVUFBVTNCLEVBQUUsRUFBRTtFQUN2RCxFQUFBLE9BQU8sT0FBT0EsRUFBRSxJQUFJLFFBQVEsR0FBR0EsRUFBRSxLQUFLLElBQUksR0FBR21ELFlBQVUsQ0FBQ25ELEVBQUUsQ0FBQyxJQUFJQSxFQUFFLEtBQUt5QixXQUFXLENBQUE7RUFDbkYsQ0FBQyxHQUFHLFVBQVV6QixFQUFFLEVBQUU7RUFDaEIsRUFBQSxPQUFPLE9BQU9BLEVBQUUsSUFBSSxRQUFRLEdBQUdBLEVBQUUsS0FBSyxJQUFJLEdBQUdtRCxZQUFVLENBQUNuRCxFQUFFLENBQUMsQ0FBQTtFQUM3RCxDQUFDOzs7O0VDVEQsSUFBSU0sUUFBTSxHQUFHTSxRQUE4QixDQUFBO0VBQzNDLElBQUk2QyxVQUFRLEdBQUc3QyxVQUFpQyxDQUFBO0VBRWhELElBQUlsRCxVQUFRLEdBQUc0QyxRQUFNLENBQUM1QyxRQUFRLENBQUE7RUFDOUI7RUFDQSxJQUFJK0UsTUFBTSxHQUFHZ0IsVUFBUSxDQUFDL0YsVUFBUSxDQUFDLElBQUkrRixVQUFRLENBQUMvRixVQUFRLENBQUNRLGFBQWEsQ0FBQyxDQUFBO01BRW5FZ0MscUJBQWMsR0FBRyxVQUFVRixFQUFFLEVBQUU7SUFDN0IsT0FBT3lDLE1BQU0sR0FBRy9FLFVBQVEsQ0FBQ1EsYUFBYSxDQUFDOEIsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFBO0VBQ2pELENBQUM7O0VDVEQsSUFBSXNDLGFBQVcsR0FBRzFCLFdBQW1DLENBQUE7RUFDckQsSUFBSUQsT0FBSyxHQUFHQyxPQUE2QixDQUFBO0VBQ3pDLElBQUkxQyxhQUFhLEdBQUcwQyxxQkFBK0MsQ0FBQTs7RUFFbkU7RUFDQVYsSUFBQUEsWUFBYyxHQUFHLENBQUNvQyxhQUFXLElBQUksQ0FBQzNCLE9BQUssQ0FBQyxZQUFZO0VBQ2xEO0lBQ0EsT0FBT25DLE1BQU0sQ0FBQ3FDLGNBQWMsQ0FBQzNDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUU7TUFDdEQ0QyxHQUFHLEVBQUUsWUFBWTtFQUFFLE1BQUEsT0FBTyxDQUFDLENBQUE7RUFBRSxLQUFBO0VBQy9CLEdBQUMsQ0FBQyxDQUFDNEMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUNaLENBQUMsQ0FBQzs7RUNWRixJQUFJcEIsYUFBVyxHQUFHMUIsV0FBbUMsQ0FBQTtFQUNyRCxJQUFJRCxPQUFLLEdBQUdDLE9BQTZCLENBQUE7O0VBRXpDO0VBQ0E7RUFDQVYsSUFBQUEsb0JBQWMsR0FBR29DLGFBQVcsSUFBSTNCLE9BQUssQ0FBQyxZQUFZO0VBQ2hEO0lBQ0EsT0FBT25DLE1BQU0sQ0FBQ3FDLGNBQWMsQ0FBQyxZQUFZLGFBQWUsRUFBRSxXQUFXLEVBQUU7RUFDckVpQyxJQUFBQSxLQUFLLEVBQUUsRUFBRTtFQUNUQyxJQUFBQSxRQUFRLEVBQUUsS0FBQTtFQUNaLEdBQUMsQ0FBQyxDQUFDNUIsU0FBUyxLQUFLLEVBQUUsQ0FBQTtFQUNyQixDQUFDLENBQUM7O0VDWEYsSUFBSXNDLFVBQVEsR0FBRzdDLFVBQWlDLENBQUE7RUFFaEQsSUFBSStDLFNBQU8sR0FBR0gsTUFBTSxDQUFBO0VBQ3BCLElBQUl6QixZQUFVLEdBQUdDLFNBQVMsQ0FBQTs7RUFFMUI7TUFDQTlCLFVBQWMsR0FBRyxVQUFVMkIsUUFBUSxFQUFFO0VBQ25DLEVBQUEsSUFBSTRCLFVBQVEsQ0FBQzVCLFFBQVEsQ0FBQyxFQUFFLE9BQU9BLFFBQVEsQ0FBQTtJQUN2QyxNQUFNLElBQUlFLFlBQVUsQ0FBQzRCLFNBQU8sQ0FBQzlCLFFBQVEsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUE7RUFDL0QsQ0FBQzs7RUNURCxJQUFJWixXQUFXLEdBQUdMLGtCQUE0QyxDQUFBO0VBRTlELElBQUlRLE1BQUksR0FBR1osUUFBUSxDQUFDVyxTQUFTLENBQUNDLElBQUksQ0FBQTtNQUVsQ2xCLFlBQWMsR0FBR2UsV0FBVyxHQUFHRyxNQUFJLENBQUNMLElBQUksQ0FBQ0ssTUFBSSxDQUFDLEdBQUcsWUFBWTtFQUMzRCxFQUFBLE9BQU9BLE1BQUksQ0FBQ0csS0FBSyxDQUFDSCxNQUFJLEVBQUVJLFNBQVMsQ0FBQyxDQUFBO0VBQ3BDLENBQUM7O0VDTkQsSUFBSWxCLFFBQU0sR0FBR00sUUFBOEIsQ0FBQTtFQUMzQyxJQUFJdUMsWUFBVSxHQUFHdkMsWUFBbUMsQ0FBQTtFQUVwRCxJQUFJZ0QsU0FBUyxHQUFHLFVBQVUvQixRQUFRLEVBQUU7RUFDbEMsRUFBQSxPQUFPc0IsWUFBVSxDQUFDdEIsUUFBUSxDQUFDLEdBQUdBLFFBQVEsR0FBR2pDLFNBQVMsQ0FBQTtFQUNwRCxDQUFDLENBQUE7RUFFRE0sSUFBQUEsWUFBYyxHQUFHLFVBQVUyRCxTQUFTLEVBQUVDLE1BQU0sRUFBRTtJQUM1QyxPQUFPdEMsU0FBUyxDQUFDekMsTUFBTSxHQUFHLENBQUMsR0FBRzZFLFNBQVMsQ0FBQ3RELFFBQU0sQ0FBQ3VELFNBQVMsQ0FBQyxDQUFDLEdBQUd2RCxRQUFNLENBQUN1RCxTQUFTLENBQUMsSUFBSXZELFFBQU0sQ0FBQ3VELFNBQVMsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQTtFQUM3RyxDQUFDOztFQ1RELElBQUkzQixhQUFXLEdBQUd2QixtQkFBNkMsQ0FBQTtFQUUvRFYsSUFBQUEsbUJBQWMsR0FBR2lDLGFBQVcsQ0FBQyxFQUFFLENBQUM0QixhQUFhLENBQUM7O0VDRjlDN0QsSUFBQUEsZUFBYyxHQUFHLE9BQU9qRSxTQUFTLElBQUksV0FBVyxJQUFJdUgsTUFBTSxDQUFDdkgsU0FBUyxDQUFDK0gsU0FBUyxDQUFDLElBQUksRUFBRTs7RUNBckYsSUFBSTFELFFBQU0sR0FBR00sUUFBOEIsQ0FBQTtFQUMzQyxJQUFJb0QsU0FBUyxHQUFHcEQsZUFBeUMsQ0FBQTtFQUV6RCxJQUFJcUQsT0FBTyxHQUFHM0QsUUFBTSxDQUFDMkQsT0FBTyxDQUFBO0VBQzVCLElBQUlDLElBQUksR0FBRzVELFFBQU0sQ0FBQzRELElBQUksQ0FBQTtFQUN0QixJQUFJQyxRQUFRLEdBQUdGLE9BQU8sSUFBSUEsT0FBTyxDQUFDRSxRQUFRLElBQUlELElBQUksSUFBSUEsSUFBSSxDQUFDRSxPQUFPLENBQUE7RUFDbEUsSUFBSUMsRUFBRSxHQUFHRixRQUFRLElBQUlBLFFBQVEsQ0FBQ0UsRUFBRSxDQUFBO0VBQ2hDLElBQUlwRixLQUFLLEVBQUVtRixPQUFPLENBQUE7RUFFbEIsSUFBSUMsRUFBRSxFQUFFO0VBQ05wRixFQUFBQSxLQUFLLEdBQUdvRixFQUFFLENBQUMxRixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7RUFDckI7RUFDQTtJQUNBeUYsT0FBTyxHQUFHbkYsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSUEsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRUEsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUNyRSxDQUFBOztFQUVBO0VBQ0E7RUFDQSxJQUFJLENBQUNtRixPQUFPLElBQUlKLFNBQVMsRUFBRTtFQUN6Qi9FLEVBQUFBLEtBQUssR0FBRytFLFNBQVMsQ0FBQy9FLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN0QyxJQUFJLENBQUNBLEtBQUssSUFBSUEsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtFQUM1QkEsSUFBQUEsS0FBSyxHQUFHK0UsU0FBUyxDQUFDL0UsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO01BQ3hDLElBQUlBLEtBQUssRUFBRW1GLE9BQU8sR0FBRyxDQUFDbkYsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ2hDLEdBQUE7RUFDRixDQUFBO0VBRUFpQixJQUFBQSxlQUFjLEdBQUdrRSxPQUFPOztFQzFCeEI7RUFDQSxJQUFJRSxVQUFVLEdBQUcxRCxlQUF5QyxDQUFBO0VBQzFELElBQUlELE9BQUssR0FBR0MsT0FBNkIsQ0FBQTtFQUN6QyxJQUFJTixRQUFNLEdBQUdNLFFBQThCLENBQUE7RUFFM0MsSUFBSStDLFNBQU8sR0FBR3JELFFBQU0sQ0FBQ2tELE1BQU0sQ0FBQTs7RUFFM0I7TUFDQXRELDBCQUFjLEdBQUcsQ0FBQyxDQUFDMUIsTUFBTSxDQUFDK0YscUJBQXFCLElBQUksQ0FBQzVELE9BQUssQ0FBQyxZQUFZO0VBQ3BFLEVBQUEsSUFBSTZELE1BQU0sR0FBR0MsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7RUFDdkM7RUFDQTtFQUNBO0VBQ0E7RUFDQSxFQUFBLE9BQU8sQ0FBQ2QsU0FBTyxDQUFDYSxNQUFNLENBQUMsSUFBSSxFQUFFaEcsTUFBTSxDQUFDZ0csTUFBTSxDQUFDLFlBQVlDLE1BQU0sQ0FBQztFQUM1RDtJQUNBLENBQUNBLE1BQU0sQ0FBQ0MsSUFBSSxJQUFJSixVQUFVLElBQUlBLFVBQVUsR0FBRyxFQUFFLENBQUE7RUFDakQsQ0FBQyxDQUFDOztFQ2pCRjtFQUNBLElBQUlLLGVBQWEsR0FBRy9ELDBCQUFvRCxDQUFBO0VBRXhFVixJQUFBQSxjQUFjLEdBQUd5RSxlQUFhLElBQ3pCLENBQUNGLE1BQU0sQ0FBQ0MsSUFBSSxJQUNaLE9BQU9ELE1BQU0sQ0FBQ0csUUFBUSxJQUFJLFFBQVE7O0VDTHZDLElBQUlDLFVBQVUsR0FBR2pFLFlBQW9DLENBQUE7RUFDckQsSUFBSXVDLFlBQVUsR0FBR3ZDLFlBQW1DLENBQUE7RUFDcEQsSUFBSW1ELGFBQWEsR0FBR25ELG1CQUE4QyxDQUFBO0VBQ2xFLElBQUlrRSxtQkFBaUIsR0FBR2xFLGNBQXlDLENBQUE7RUFFakUsSUFBSXNCLE9BQU8sR0FBRzFELE1BQU0sQ0FBQTtFQUVwQjBCLElBQUFBLFVBQWMsR0FBRzRFLG1CQUFpQixHQUFHLFVBQVU5RSxFQUFFLEVBQUU7SUFDakQsT0FBTyxPQUFPQSxFQUFFLElBQUksUUFBUSxDQUFBO0VBQzlCLENBQUMsR0FBRyxVQUFVQSxFQUFFLEVBQUU7RUFDaEIsRUFBQSxJQUFJK0UsT0FBTyxHQUFHRixVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7RUFDbEMsRUFBQSxPQUFPMUIsWUFBVSxDQUFDNEIsT0FBTyxDQUFDLElBQUloQixhQUFhLENBQUNnQixPQUFPLENBQUM1RCxTQUFTLEVBQUVlLE9BQU8sQ0FBQ2xDLEVBQUUsQ0FBQyxDQUFDLENBQUE7RUFDN0UsQ0FBQzs7RUNaRCxJQUFJMkQsU0FBTyxHQUFHSCxNQUFNLENBQUE7TUFFcEJ0RCxhQUFjLEdBQUcsVUFBVTJCLFFBQVEsRUFBRTtJQUNuQyxJQUFJO01BQ0YsT0FBTzhCLFNBQU8sQ0FBQzlCLFFBQVEsQ0FBQyxDQUFBO0tBQ3pCLENBQUMsT0FBT25CLEtBQUssRUFBRTtFQUNkLElBQUEsT0FBTyxRQUFRLENBQUE7RUFDakIsR0FBQTtFQUNGLENBQUM7O0VDUkQsSUFBSXlDLFlBQVUsR0FBR3ZDLFlBQW1DLENBQUE7RUFDcEQsSUFBSW9FLFdBQVcsR0FBR3BFLGFBQXFDLENBQUE7RUFFdkQsSUFBSW1CLFlBQVUsR0FBR0MsU0FBUyxDQUFBOztFQUUxQjtNQUNBOUIsV0FBYyxHQUFHLFVBQVUyQixRQUFRLEVBQUU7RUFDbkMsRUFBQSxJQUFJc0IsWUFBVSxDQUFDdEIsUUFBUSxDQUFDLEVBQUUsT0FBT0EsUUFBUSxDQUFBO0lBQ3pDLE1BQU0sSUFBSUUsWUFBVSxDQUFDaUQsV0FBVyxDQUFDbkQsUUFBUSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsQ0FBQTtFQUNwRSxDQUFDOztFQ1RELElBQUlvRCxTQUFTLEdBQUdyRSxXQUFrQyxDQUFBO0VBQ2xELElBQUlrQixpQkFBaUIsR0FBR2xCLG1CQUE0QyxDQUFBOztFQUVwRTtFQUNBO0VBQ0FWLElBQUFBLFdBQWMsR0FBRyxVQUFVZ0YsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDL0IsRUFBQSxJQUFJQyxJQUFJLEdBQUdGLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLENBQUE7SUFDZixPQUFPckQsaUJBQWlCLENBQUNzRCxJQUFJLENBQUMsR0FBR3hGLFNBQVMsR0FBR3FGLFNBQVMsQ0FBQ0csSUFBSSxDQUFDLENBQUE7RUFDOUQsQ0FBQzs7RUNSRCxJQUFJaEUsTUFBSSxHQUFHUixZQUFxQyxDQUFBO0VBQ2hELElBQUl1QyxZQUFVLEdBQUd2QyxZQUFtQyxDQUFBO0VBQ3BELElBQUk2QyxVQUFRLEdBQUc3QyxVQUFpQyxDQUFBO0VBRWhELElBQUltQixZQUFVLEdBQUdDLFNBQVMsQ0FBQTs7RUFFMUI7RUFDQTtFQUNBOUIsSUFBQUEscUJBQWMsR0FBRyxVQUFVbUYsS0FBSyxFQUFFQyxJQUFJLEVBQUU7SUFDdEMsSUFBSWhFLEVBQUUsRUFBRWlFLEdBQUcsQ0FBQTtJQUNYLElBQUlELElBQUksS0FBSyxRQUFRLElBQUluQyxZQUFVLENBQUM3QixFQUFFLEdBQUcrRCxLQUFLLENBQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDSSxVQUFRLENBQUM4QixHQUFHLEdBQUduRSxNQUFJLENBQUNFLEVBQUUsRUFBRStELEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBT0UsR0FBRyxDQUFBO0lBQ3hHLElBQUlwQyxZQUFVLENBQUM3QixFQUFFLEdBQUcrRCxLQUFLLENBQUNHLE9BQU8sQ0FBQyxJQUFJLENBQUMvQixVQUFRLENBQUM4QixHQUFHLEdBQUduRSxNQUFJLENBQUNFLEVBQUUsRUFBRStELEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBT0UsR0FBRyxDQUFBO0lBQ2xGLElBQUlELElBQUksS0FBSyxRQUFRLElBQUluQyxZQUFVLENBQUM3QixFQUFFLEdBQUcrRCxLQUFLLENBQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDSSxVQUFRLENBQUM4QixHQUFHLEdBQUduRSxNQUFJLENBQUNFLEVBQUUsRUFBRStELEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBT0UsR0FBRyxDQUFBO0VBQ3hHLEVBQUEsTUFBTSxJQUFJeEQsWUFBVSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7RUFDakUsQ0FBQzs7Ozs7Ozs7RUNiRCxJQUFJbUIsT0FBSyxHQUFHdEMsV0FBb0MsQ0FBQTtFQUVoRCxDQUFDVixnQkFBYyxHQUFHLFVBQVVoQixHQUFHLEVBQUU0RCxLQUFLLEVBQUU7RUFDdEMsRUFBQSxPQUFPSSxPQUFLLENBQUNoRSxHQUFHLENBQUMsS0FBS2dFLE9BQUssQ0FBQ2hFLEdBQUcsQ0FBQyxHQUFHNEQsS0FBSyxLQUFLbEQsU0FBUyxHQUFHa0QsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0VBQ3RFLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM5RCxJQUFJLENBQUM7RUFDdEJvRixFQUFBQSxPQUFPLEVBQUUsUUFBUTtFQUNqQnFCLEVBQUFBLElBQUksRUFBcUIsUUFBUTtFQUNqQ0MsRUFBQUEsU0FBUyxFQUFFLDJDQUEyQztFQUN0REMsRUFBQUEsT0FBTyxFQUFFLDBEQUEwRDtFQUNuRUMsRUFBQUEsTUFBTSxFQUFFLHFDQUFBO0VBQ1YsQ0FBQyxDQUFDOztFQ1hGLElBQUl6RCxhQUFXLEdBQUd2QixtQkFBNkMsQ0FBQTtFQUUvRCxJQUFJaUYsRUFBRSxHQUFHLENBQUMsQ0FBQTtFQUNWLElBQUlDLE9BQU8sR0FBRzdGLElBQUksQ0FBQzhGLE1BQU0sRUFBRSxDQUFBO0VBQzNCLElBQUkxQyxRQUFRLEdBQUdsQixhQUFXLENBQUMsR0FBRyxDQUFDa0IsUUFBUSxDQUFDLENBQUE7TUFFeENuRCxLQUFjLEdBQUcsVUFBVWhCLEdBQUcsRUFBRTtJQUM5QixPQUFPLFNBQVMsSUFBSUEsR0FBRyxLQUFLVSxTQUFTLEdBQUcsRUFBRSxHQUFHVixHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUdtRSxRQUFRLENBQUMsRUFBRXdDLEVBQUUsR0FBR0MsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0VBQ3pGLENBQUM7O0VDUkQsSUFBSXhGLFFBQU0sR0FBR00sUUFBOEIsQ0FBQTtFQUMzQyxJQUFJb0YsUUFBTSxHQUFHcEYsYUFBOEIsQ0FBQTtFQUMzQyxJQUFJeUIsUUFBTSxHQUFHekIsZ0JBQXdDLENBQUE7RUFDckQsSUFBSXFGLEtBQUcsR0FBR3JGLEtBQTJCLENBQUE7RUFDckMsSUFBSStELGFBQWEsR0FBRy9ELDBCQUFvRCxDQUFBO0VBQ3hFLElBQUlrRSxpQkFBaUIsR0FBR2xFLGNBQXlDLENBQUE7RUFFakUsSUFBSTZELFFBQU0sR0FBR25FLFFBQU0sQ0FBQ21FLE1BQU0sQ0FBQTtFQUMxQixJQUFJeUIscUJBQXFCLEdBQUdGLFFBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUN6QyxJQUFJRyxxQkFBcUIsR0FBR3JCLGlCQUFpQixHQUFHTCxRQUFNLENBQUMsS0FBSyxDQUFDLElBQUlBLFFBQU0sR0FBR0EsUUFBTSxJQUFJQSxRQUFNLENBQUMyQixhQUFhLElBQUlILEtBQUcsQ0FBQTtNQUUvRy9GLGlCQUFjLEdBQUcsVUFBVTlELElBQUksRUFBRTtFQUMvQixFQUFBLElBQUksQ0FBQ2lHLFFBQU0sQ0FBQzZELHFCQUFxQixFQUFFOUosSUFBSSxDQUFDLEVBQUU7TUFDeEM4SixxQkFBcUIsQ0FBQzlKLElBQUksQ0FBQyxHQUFHdUksYUFBYSxJQUFJdEMsUUFBTSxDQUFDb0MsUUFBTSxFQUFFckksSUFBSSxDQUFDLEdBQy9EcUksUUFBTSxDQUFDckksSUFBSSxDQUFDLEdBQ1orSixxQkFBcUIsQ0FBQyxTQUFTLEdBQUcvSixJQUFJLENBQUMsQ0FBQTtFQUM3QyxHQUFBO0lBQUUsT0FBTzhKLHFCQUFxQixDQUFDOUosSUFBSSxDQUFDLENBQUE7RUFDdEMsQ0FBQzs7RUNqQkQsSUFBSWdGLElBQUksR0FBR1IsWUFBcUMsQ0FBQTtFQUNoRCxJQUFJNkMsVUFBUSxHQUFHN0MsVUFBaUMsQ0FBQTtFQUNoRCxJQUFJeUYsVUFBUSxHQUFHekYsVUFBaUMsQ0FBQTtFQUNoRCxJQUFJMEYsU0FBUyxHQUFHMUYsV0FBa0MsQ0FBQTtFQUNsRCxJQUFJMkYsbUJBQW1CLEdBQUczRixxQkFBNkMsQ0FBQTtFQUN2RSxJQUFJNEYsZUFBZSxHQUFHNUYsaUJBQXlDLENBQUE7RUFFL0QsSUFBSW1CLFlBQVUsR0FBR0MsU0FBUyxDQUFBO0VBQzFCLElBQUl5RSxZQUFZLEdBQUdELGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQTs7RUFFakQ7RUFDQTtFQUNBdEcsSUFBQUEsYUFBYyxHQUFHLFVBQVVtRixLQUFLLEVBQUVDLElBQUksRUFBRTtFQUN0QyxFQUFBLElBQUksQ0FBQzdCLFVBQVEsQ0FBQzRCLEtBQUssQ0FBQyxJQUFJZ0IsVUFBUSxDQUFDaEIsS0FBSyxDQUFDLEVBQUUsT0FBT0EsS0FBSyxDQUFBO0VBQ3JELEVBQUEsSUFBSXFCLFlBQVksR0FBR0osU0FBUyxDQUFDakIsS0FBSyxFQUFFb0IsWUFBWSxDQUFDLENBQUE7RUFDakQsRUFBQSxJQUFJRSxNQUFNLENBQUE7RUFDVixFQUFBLElBQUlELFlBQVksRUFBRTtFQUNoQixJQUFBLElBQUlwQixJQUFJLEtBQUsxRixTQUFTLEVBQUUwRixJQUFJLEdBQUcsU0FBUyxDQUFBO01BQ3hDcUIsTUFBTSxHQUFHdkYsSUFBSSxDQUFDc0YsWUFBWSxFQUFFckIsS0FBSyxFQUFFQyxJQUFJLENBQUMsQ0FBQTtFQUN4QyxJQUFBLElBQUksQ0FBQzdCLFVBQVEsQ0FBQ2tELE1BQU0sQ0FBQyxJQUFJTixVQUFRLENBQUNNLE1BQU0sQ0FBQyxFQUFFLE9BQU9BLE1BQU0sQ0FBQTtFQUN4RCxJQUFBLE1BQU0sSUFBSTVFLFlBQVUsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0VBQ2pFLEdBQUE7RUFDQSxFQUFBLElBQUl1RCxJQUFJLEtBQUsxRixTQUFTLEVBQUUwRixJQUFJLEdBQUcsUUFBUSxDQUFBO0VBQ3ZDLEVBQUEsT0FBT2lCLG1CQUFtQixDQUFDbEIsS0FBSyxFQUFFQyxJQUFJLENBQUMsQ0FBQTtFQUN6QyxDQUFDOztFQ3hCRCxJQUFJc0IsV0FBVyxHQUFHaEcsYUFBb0MsQ0FBQTtFQUN0RCxJQUFJeUYsUUFBUSxHQUFHekYsVUFBaUMsQ0FBQTs7RUFFaEQ7RUFDQTtNQUNBVixlQUFjLEdBQUcsVUFBVTJCLFFBQVEsRUFBRTtFQUNuQyxFQUFBLElBQUkzQyxHQUFHLEdBQUcwSCxXQUFXLENBQUMvRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDekMsT0FBT3dFLFFBQVEsQ0FBQ25ILEdBQUcsQ0FBQyxHQUFHQSxHQUFHLEdBQUdBLEdBQUcsR0FBRyxFQUFFLENBQUE7RUFDdkMsQ0FBQzs7RUNSRCxJQUFJb0QsYUFBVyxHQUFHMUIsV0FBbUMsQ0FBQTtFQUNyRCxJQUFJaUcsY0FBYyxHQUFHakcsWUFBc0MsQ0FBQTtFQUMzRCxJQUFJa0csdUJBQXVCLEdBQUdsRyxvQkFBK0MsQ0FBQTtFQUM3RSxJQUFJbUcsVUFBUSxHQUFHbkcsVUFBaUMsQ0FBQTtFQUNoRCxJQUFJb0csYUFBYSxHQUFHcEcsZUFBdUMsQ0FBQTtFQUUzRCxJQUFJbUIsVUFBVSxHQUFHQyxTQUFTLENBQUE7RUFDMUI7RUFDQSxJQUFJaUYsZUFBZSxHQUFHekksTUFBTSxDQUFDcUMsY0FBYyxDQUFBO0VBQzNDO0VBQ0EsSUFBSXFHLHlCQUF5QixHQUFHMUksTUFBTSxDQUFDZ0Usd0JBQXdCLENBQUE7RUFDL0QsSUFBSTJFLFVBQVUsR0FBRyxZQUFZLENBQUE7RUFDN0IsSUFBSXZFLFlBQVksR0FBRyxjQUFjLENBQUE7RUFDakMsSUFBSXdFLFFBQVEsR0FBRyxVQUFVLENBQUE7O0VBRXpCO0VBQ0E7RUFDQUMsb0JBQUFBLENBQUFBLENBQVMsR0FBRy9FLGFBQVcsR0FBR3dFLHVCQUF1QixHQUFHLFNBQVNqRyxjQUFjQSxDQUFDeUcsQ0FBQyxFQUFFbkMsQ0FBQyxFQUFFb0MsVUFBVSxFQUFFO0lBQzVGUixVQUFRLENBQUNPLENBQUMsQ0FBQyxDQUFBO0VBQ1huQyxFQUFBQSxDQUFDLEdBQUc2QixhQUFhLENBQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNwQjRCLFVBQVEsQ0FBQ1EsVUFBVSxDQUFDLENBQUE7SUFDcEIsSUFBSSxPQUFPRCxDQUFDLEtBQUssVUFBVSxJQUFJbkMsQ0FBQyxLQUFLLFdBQVcsSUFBSSxPQUFPLElBQUlvQyxVQUFVLElBQUlILFFBQVEsSUFBSUcsVUFBVSxJQUFJLENBQUNBLFVBQVUsQ0FBQ0gsUUFBUSxDQUFDLEVBQUU7RUFDNUgsSUFBQSxJQUFJSSxPQUFPLEdBQUdOLHlCQUF5QixDQUFDSSxDQUFDLEVBQUVuQyxDQUFDLENBQUMsQ0FBQTtFQUM3QyxJQUFBLElBQUlxQyxPQUFPLElBQUlBLE9BQU8sQ0FBQ0osUUFBUSxDQUFDLEVBQUU7RUFDaENFLE1BQUFBLENBQUMsQ0FBQ25DLENBQUMsQ0FBQyxHQUFHb0MsVUFBVSxDQUFDekUsS0FBSyxDQUFBO0VBQ3ZCeUUsTUFBQUEsVUFBVSxHQUFHO0VBQ1gxRSxRQUFBQSxZQUFZLEVBQUVELFlBQVksSUFBSTJFLFVBQVUsR0FBR0EsVUFBVSxDQUFDM0UsWUFBWSxDQUFDLEdBQUc0RSxPQUFPLENBQUM1RSxZQUFZLENBQUM7RUFDM0Y2RSxRQUFBQSxVQUFVLEVBQUVOLFVBQVUsSUFBSUksVUFBVSxHQUFHQSxVQUFVLENBQUNKLFVBQVUsQ0FBQyxHQUFHSyxPQUFPLENBQUNMLFVBQVUsQ0FBQztFQUNuRnBFLFFBQUFBLFFBQVEsRUFBRSxLQUFBO1NBQ1gsQ0FBQTtFQUNILEtBQUE7RUFDRixHQUFBO0VBQUUsRUFBQSxPQUFPa0UsZUFBZSxDQUFDSyxDQUFDLEVBQUVuQyxDQUFDLEVBQUVvQyxVQUFVLENBQUMsQ0FBQTtFQUM1QyxDQUFDLEdBQUdOLGVBQWUsR0FBRyxTQUFTcEcsY0FBY0EsQ0FBQ3lHLENBQUMsRUFBRW5DLENBQUMsRUFBRW9DLFVBQVUsRUFBRTtJQUM5RFIsVUFBUSxDQUFDTyxDQUFDLENBQUMsQ0FBQTtFQUNYbkMsRUFBQUEsQ0FBQyxHQUFHNkIsYUFBYSxDQUFDN0IsQ0FBQyxDQUFDLENBQUE7SUFDcEI0QixVQUFRLENBQUNRLFVBQVUsQ0FBQyxDQUFBO0lBQ3BCLElBQUlWLGNBQWMsRUFBRSxJQUFJO0VBQ3RCLElBQUEsT0FBT0ksZUFBZSxDQUFDSyxDQUFDLEVBQUVuQyxDQUFDLEVBQUVvQyxVQUFVLENBQUMsQ0FBQTtFQUMxQyxHQUFDLENBQUMsT0FBTzdHLEtBQUssRUFBRSxhQUFFO0VBQ2xCLEVBQUEsSUFBSSxLQUFLLElBQUk2RyxVQUFVLElBQUksS0FBSyxJQUFJQSxVQUFVLEVBQUUsTUFBTSxJQUFJeEYsVUFBVSxDQUFDLHlCQUF5QixDQUFDLENBQUE7SUFDL0YsSUFBSSxPQUFPLElBQUl3RixVQUFVLEVBQUVELENBQUMsQ0FBQ25DLENBQUMsQ0FBQyxHQUFHb0MsVUFBVSxDQUFDekUsS0FBSyxDQUFBO0VBQ2xELEVBQUEsT0FBT3dFLENBQUMsQ0FBQTtFQUNWOztFQzFDQXBILElBQUFBLDBCQUFjLEdBQUcsVUFBVXdILE1BQU0sRUFBRTVFLEtBQUssRUFBRTtJQUN4QyxPQUFPO0VBQ0wyRSxJQUFBQSxVQUFVLEVBQUUsRUFBRUMsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUN6QjdFLElBQUFBLFlBQVksRUFBRSxFQUFFNkUsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUMzQjNFLElBQUFBLFFBQVEsRUFBRSxFQUFFMkUsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUN2QjVFLElBQUFBLEtBQUssRUFBRUEsS0FBQUE7S0FDUixDQUFBO0VBQ0gsQ0FBQzs7RUNQRCxJQUFJUixhQUFXLEdBQUcxQixXQUFtQyxDQUFBO0VBQ3JELElBQUkrRyxvQkFBb0IsR0FBRy9HLG9CQUE4QyxDQUFBO0VBQ3pFLElBQUlnSCx3QkFBd0IsR0FBR2hILDBCQUFrRCxDQUFBO01BRWpGViw2QkFBYyxHQUFHb0MsYUFBVyxHQUFHLFVBQVV1RixNQUFNLEVBQUUzSSxHQUFHLEVBQUU0RCxLQUFLLEVBQUU7RUFDM0QsRUFBQSxPQUFPNkUsb0JBQW9CLENBQUNHLENBQUMsQ0FBQ0QsTUFBTSxFQUFFM0ksR0FBRyxFQUFFMEksd0JBQXdCLENBQUMsQ0FBQyxFQUFFOUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtFQUNoRixDQUFDLEdBQUcsVUFBVStFLE1BQU0sRUFBRTNJLEdBQUcsRUFBRTRELEtBQUssRUFBRTtFQUNoQytFLEVBQUFBLE1BQU0sQ0FBQzNJLEdBQUcsQ0FBQyxHQUFHNEQsS0FBSyxDQUFBO0VBQ25CLEVBQUEsT0FBTytFLE1BQU0sQ0FBQTtFQUNmLENBQUM7O0VDVEQsSUFBSTdCLFFBQU0sR0FBR3BGLGFBQThCLENBQUE7RUFDM0MsSUFBSXFGLEdBQUcsR0FBR3JGLEtBQTJCLENBQUE7RUFFckMsSUFBSWxDLElBQUksR0FBR3NILFFBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtNQUV6QjlGLFdBQWMsR0FBRyxVQUFVaEIsR0FBRyxFQUFFO0VBQzlCLEVBQUEsT0FBT1IsSUFBSSxDQUFDUSxHQUFHLENBQUMsS0FBS1IsSUFBSSxDQUFDUSxHQUFHLENBQUMsR0FBRytHLEdBQUcsQ0FBQy9HLEdBQUcsQ0FBQyxDQUFDLENBQUE7RUFDNUMsQ0FBQzs7RUNQRCxJQUFJNkksZUFBZSxHQUFHbkgscUJBQWdELENBQUE7RUFDdEUsSUFBSU4sUUFBTSxHQUFHTSxRQUE4QixDQUFBO0VBQzNDLElBQUk2QyxRQUFRLEdBQUc3QyxVQUFpQyxDQUFBO0VBQ2hELElBQUlvSCwyQkFBMkIsR0FBR3BILDZCQUFzRCxDQUFBO0VBQ3hGLElBQUl5QixRQUFNLEdBQUd6QixnQkFBd0MsQ0FBQTtFQUNyRCxJQUFJb0YsTUFBTSxHQUFHcEYsV0FBb0MsQ0FBQTtFQUNqRCxJQUFJcUgsU0FBUyxHQUFHckgsV0FBa0MsQ0FBQTtFQUdsRCxJQUFJc0gsMEJBQTBCLEdBQUcsNEJBQTRCLENBQUE7RUFDN0QsSUFBSWxHLFdBQVMsR0FBRzFCLFFBQU0sQ0FBQzBCLFNBQVMsQ0FBQTtFQUNoQyxJQUFJdUIsT0FBTyxHQUFHakQsUUFBTSxDQUFDaUQsT0FBTyxDQUFBO0VBQzVCLElBQUk0RSxHQUFHLEVBQUVySCxHQUFHLEVBQUVzSCxHQUFHLENBQUE7RUFFakIsSUFBSUMsT0FBTyxHQUFHLFVBQVVySSxFQUFFLEVBQUU7RUFDMUIsRUFBQSxPQUFPb0ksR0FBRyxDQUFDcEksRUFBRSxDQUFDLEdBQUdjLEdBQUcsQ0FBQ2QsRUFBRSxDQUFDLEdBQUdtSSxHQUFHLENBQUNuSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7RUFDeEMsQ0FBQyxDQUFBO0VBRUQsSUFBSXNJLFNBQVMsR0FBRyxVQUFVQyxJQUFJLEVBQUU7SUFDOUIsT0FBTyxVQUFVdkksRUFBRSxFQUFFO0VBQ25CLElBQUEsSUFBSTFDLEtBQUssQ0FBQTtFQUNULElBQUEsSUFBSSxDQUFDbUcsUUFBUSxDQUFDekQsRUFBRSxDQUFDLElBQUksQ0FBQzFDLEtBQUssR0FBR3dELEdBQUcsQ0FBQ2QsRUFBRSxDQUFDLEVBQUV3SSxJQUFJLEtBQUtELElBQUksRUFBRTtRQUNwRCxNQUFNLElBQUl2RyxXQUFTLENBQUMseUJBQXlCLEdBQUd1RyxJQUFJLEdBQUcsV0FBVyxDQUFDLENBQUE7RUFDckUsS0FBQTtFQUFFLElBQUEsT0FBT2pMLEtBQUssQ0FBQTtLQUNmLENBQUE7RUFDSCxDQUFDLENBQUE7RUFFRCxJQUFJeUssZUFBZSxJQUFJL0IsTUFBTSxDQUFDMUksS0FBSyxFQUFFO0VBQ25DLEVBQUEsSUFBSTRGLEtBQUssR0FBRzhDLE1BQU0sQ0FBQzFJLEtBQUssS0FBSzBJLE1BQU0sQ0FBQzFJLEtBQUssR0FBRyxJQUFJaUcsT0FBTyxFQUFFLENBQUMsQ0FBQTtFQUMxRDtFQUNBTCxFQUFBQSxLQUFLLENBQUNwQyxHQUFHLEdBQUdvQyxLQUFLLENBQUNwQyxHQUFHLENBQUE7RUFDckJvQyxFQUFBQSxLQUFLLENBQUNrRixHQUFHLEdBQUdsRixLQUFLLENBQUNrRixHQUFHLENBQUE7RUFDckJsRixFQUFBQSxLQUFLLENBQUNpRixHQUFHLEdBQUdqRixLQUFLLENBQUNpRixHQUFHLENBQUE7RUFDckI7RUFDQUEsRUFBQUEsR0FBRyxHQUFHLFVBQVVuSSxFQUFFLEVBQUV5SSxRQUFRLEVBQUU7RUFDNUIsSUFBQSxJQUFJdkYsS0FBSyxDQUFDa0YsR0FBRyxDQUFDcEksRUFBRSxDQUFDLEVBQUUsTUFBTSxJQUFJZ0MsV0FBUyxDQUFDa0csMEJBQTBCLENBQUMsQ0FBQTtNQUNsRU8sUUFBUSxDQUFDQyxNQUFNLEdBQUcxSSxFQUFFLENBQUE7RUFDcEJrRCxJQUFBQSxLQUFLLENBQUNpRixHQUFHLENBQUNuSSxFQUFFLEVBQUV5SSxRQUFRLENBQUMsQ0FBQTtFQUN2QixJQUFBLE9BQU9BLFFBQVEsQ0FBQTtLQUNoQixDQUFBO0VBQ0QzSCxFQUFBQSxHQUFHLEdBQUcsVUFBVWQsRUFBRSxFQUFFO01BQ2xCLE9BQU9rRCxLQUFLLENBQUNwQyxHQUFHLENBQUNkLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtLQUMzQixDQUFBO0VBQ0RvSSxFQUFBQSxHQUFHLEdBQUcsVUFBVXBJLEVBQUUsRUFBRTtFQUNsQixJQUFBLE9BQU9rRCxLQUFLLENBQUNrRixHQUFHLENBQUNwSSxFQUFFLENBQUMsQ0FBQTtLQUNyQixDQUFBO0VBQ0gsQ0FBQyxNQUFNO0VBQ0wsRUFBQSxJQUFJMkksS0FBSyxHQUFHVixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7RUFFOUJFLEVBQUFBLEdBQUcsR0FBRyxVQUFVbkksRUFBRSxFQUFFeUksUUFBUSxFQUFFO0VBQzVCLElBQUEsSUFBSXBHLFFBQU0sQ0FBQ3JDLEVBQUUsRUFBRTJJLEtBQUssQ0FBQyxFQUFFLE1BQU0sSUFBSTNHLFdBQVMsQ0FBQ2tHLDBCQUEwQixDQUFDLENBQUE7TUFDdEVPLFFBQVEsQ0FBQ0MsTUFBTSxHQUFHMUksRUFBRSxDQUFBO0VBQ3BCZ0ksSUFBQUEsMkJBQTJCLENBQUNoSSxFQUFFLEVBQUUySSxLQUFLLEVBQUVGLFFBQVEsQ0FBQyxDQUFBO0VBQ2hELElBQUEsT0FBT0EsUUFBUSxDQUFBO0tBQ2hCLENBQUE7RUFDRDNILEVBQUFBLEdBQUcsR0FBRyxVQUFVZCxFQUFFLEVBQUU7RUFDbEIsSUFBQSxPQUFPcUMsUUFBTSxDQUFDckMsRUFBRSxFQUFFMkksS0FBSyxDQUFDLEdBQUczSSxFQUFFLENBQUMySSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUE7S0FDMUMsQ0FBQTtFQUNEUCxFQUFBQSxHQUFHLEdBQUcsVUFBVXBJLEVBQUUsRUFBRTtFQUNsQixJQUFBLE9BQU9xQyxRQUFNLENBQUNyQyxFQUFFLEVBQUUySSxLQUFLLENBQUMsQ0FBQTtLQUN6QixDQUFBO0VBQ0gsQ0FBQTtFQUVBekksSUFBQUEsYUFBYyxHQUFHO0VBQ2ZpSSxFQUFBQSxHQUFHLEVBQUVBLEdBQUc7RUFDUnJILEVBQUFBLEdBQUcsRUFBRUEsR0FBRztFQUNSc0gsRUFBQUEsR0FBRyxFQUFFQSxHQUFHO0VBQ1JDLEVBQUFBLE9BQU8sRUFBRUEsT0FBTztFQUNoQkMsRUFBQUEsU0FBUyxFQUFFQSxTQUFBQTtFQUNiLENBQUM7O0VDckVELElBQUluRyxXQUFXLEdBQUd2QixtQkFBNkMsQ0FBQTtFQUMvRCxJQUFJRCxPQUFLLEdBQUdDLE9BQTZCLENBQUE7RUFDekMsSUFBSXVDLFVBQVUsR0FBR3ZDLFlBQW1DLENBQUE7RUFDcEQsSUFBSXlCLE1BQU0sR0FBR3pCLGdCQUF3QyxDQUFBO0VBQ3JELElBQUkwQixhQUFXLEdBQUcxQixXQUFtQyxDQUFBO0VBQ3JELElBQUlnSSwwQkFBMEIsR0FBR2hJLFlBQXFDLENBQUNnQyxZQUFZLENBQUE7RUFDbkYsSUFBSVUsYUFBYSxHQUFHMUMsZUFBc0MsQ0FBQTtFQUMxRCxJQUFJaUksbUJBQW1CLEdBQUdqSSxhQUFzQyxDQUFBO0VBRWhFLElBQUlrSSxvQkFBb0IsR0FBR0QsbUJBQW1CLENBQUNSLE9BQU8sQ0FBQTtFQUN0RCxJQUFJVSxnQkFBZ0IsR0FBR0YsbUJBQW1CLENBQUMvSCxHQUFHLENBQUE7RUFDOUMsSUFBSTZDLE9BQU8sR0FBR0gsTUFBTSxDQUFBO0VBQ3BCO0VBQ0EsSUFBSTNDLGdCQUFjLEdBQUdyQyxNQUFNLENBQUNxQyxjQUFjLENBQUE7RUFDMUMsSUFBSW1JLFdBQVcsR0FBRzdHLFdBQVcsQ0FBQyxFQUFFLENBQUM4RyxLQUFLLENBQUMsQ0FBQTtFQUN2QyxJQUFJQyxPQUFPLEdBQUcvRyxXQUFXLENBQUMsRUFBRSxDQUFDK0csT0FBTyxDQUFDLENBQUE7RUFDckMsSUFBSTdKLElBQUksR0FBRzhDLFdBQVcsQ0FBQyxFQUFFLENBQUM5QyxJQUFJLENBQUMsQ0FBQTtFQUUvQixJQUFJOEosbUJBQW1CLEdBQUc3RyxhQUFXLElBQUksQ0FBQzNCLE9BQUssQ0FBQyxZQUFZO0VBQzFELEVBQUEsT0FBT0UsZ0JBQWMsQ0FBQyxZQUFZLGFBQWUsRUFBRSxRQUFRLEVBQUU7RUFBRWlDLElBQUFBLEtBQUssRUFBRSxDQUFBO0VBQUUsR0FBQyxDQUFDLENBQUMvRCxNQUFNLEtBQUssQ0FBQyxDQUFBO0VBQ3pGLENBQUMsQ0FBQyxDQUFBO0VBRUYsSUFBSXFLLFFBQVEsR0FBRzVGLE1BQU0sQ0FBQ0EsTUFBTSxDQUFDLENBQUM3RSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7RUFFN0MsSUFBSTBLLGFBQVcsR0FBR25KLGFBQUFBLENBQUFBLE9BQWMsR0FBRyxVQUFVNEMsS0FBSyxFQUFFMUcsSUFBSSxFQUFFa04sT0FBTyxFQUFFO0VBQ2pFLEVBQUEsSUFBSU4sV0FBVyxDQUFDckYsT0FBTyxDQUFDdkgsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtFQUNsREEsSUFBQUEsSUFBSSxHQUFHLEdBQUcsR0FBRzhNLE9BQU8sQ0FBQ3ZGLE9BQU8sQ0FBQ3ZILElBQUksQ0FBQyxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtFQUN2RSxHQUFBO0lBQ0EsSUFBSWtOLE9BQU8sSUFBSUEsT0FBTyxDQUFDQyxNQUFNLEVBQUVuTixJQUFJLEdBQUcsTUFBTSxHQUFHQSxJQUFJLENBQUE7SUFDbkQsSUFBSWtOLE9BQU8sSUFBSUEsT0FBTyxDQUFDRSxNQUFNLEVBQUVwTixJQUFJLEdBQUcsTUFBTSxHQUFHQSxJQUFJLENBQUE7RUFDbkQsRUFBQSxJQUFJLENBQUNpRyxNQUFNLENBQUNTLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSzhGLDBCQUEwQixJQUFJOUYsS0FBSyxDQUFDMUcsSUFBSSxLQUFLQSxJQUFLLEVBQUU7RUFDakYsSUFBQSxJQUFJa0csYUFBVyxFQUFFekIsZ0JBQWMsQ0FBQ2lDLEtBQUssRUFBRSxNQUFNLEVBQUU7RUFBRUEsTUFBQUEsS0FBSyxFQUFFMUcsSUFBSTtFQUFFeUcsTUFBQUEsWUFBWSxFQUFFLElBQUE7RUFBSyxLQUFDLENBQUMsQ0FBQyxLQUMvRUMsS0FBSyxDQUFDMUcsSUFBSSxHQUFHQSxJQUFJLENBQUE7RUFDeEIsR0FBQTtFQUNBLEVBQUEsSUFBSStNLG1CQUFtQixJQUFJRyxPQUFPLElBQUlqSCxNQUFNLENBQUNpSCxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUl4RyxLQUFLLENBQUMvRCxNQUFNLEtBQUt1SyxPQUFPLENBQUNHLEtBQUssRUFBRTtFQUNoRzVJLElBQUFBLGdCQUFjLENBQUNpQyxLQUFLLEVBQUUsUUFBUSxFQUFFO1FBQUVBLEtBQUssRUFBRXdHLE9BQU8sQ0FBQ0csS0FBQUE7RUFBTSxLQUFDLENBQUMsQ0FBQTtFQUMzRCxHQUFBO0lBQ0EsSUFBSTtFQUNGLElBQUEsSUFBSUgsT0FBTyxJQUFJakgsTUFBTSxDQUFDaUgsT0FBTyxFQUFFLGFBQWEsQ0FBQyxJQUFJQSxPQUFPLENBQUNyTSxXQUFXLEVBQUU7RUFDcEUsTUFBQSxJQUFJcUYsYUFBVyxFQUFFekIsZ0JBQWMsQ0FBQ2lDLEtBQUssRUFBRSxXQUFXLEVBQUU7RUFBRUMsUUFBQUEsUUFBUSxFQUFFLEtBQUE7RUFBTSxPQUFDLENBQUMsQ0FBQTtFQUMxRTtPQUNDLE1BQU0sSUFBSUQsS0FBSyxDQUFDM0IsU0FBUyxFQUFFMkIsS0FBSyxDQUFDM0IsU0FBUyxHQUFHdkIsU0FBUyxDQUFBO0VBQ3pELEdBQUMsQ0FBQyxPQUFPYyxLQUFLLEVBQUUsYUFBRTtFQUNsQixFQUFBLElBQUlwRCxLQUFLLEdBQUd3TCxvQkFBb0IsQ0FBQ2hHLEtBQUssQ0FBQyxDQUFBO0VBQ3ZDLEVBQUEsSUFBSSxDQUFDVCxNQUFNLENBQUMvRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7RUFDNUJBLElBQUFBLEtBQUssQ0FBQ3NJLE1BQU0sR0FBR3ZHLElBQUksQ0FBQytKLFFBQVEsRUFBRSxPQUFPaE4sSUFBSSxJQUFJLFFBQVEsR0FBR0EsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFBO0VBQ3BFLEdBQUE7RUFBRSxFQUFBLE9BQU8wRyxLQUFLLENBQUE7RUFDaEIsQ0FBQyxDQUFBOztFQUVEO0VBQ0E7RUFDQXRDLFFBQVEsQ0FBQ1csU0FBUyxDQUFDa0MsUUFBUSxHQUFHZ0csYUFBVyxDQUFDLFNBQVNoRyxRQUFRQSxHQUFHO0VBQzVELEVBQUEsT0FBT0YsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJNEYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUNuRCxNQUFNLElBQUl0QyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDakYsQ0FBQyxFQUFFLFVBQVUsQ0FBQzs7RUNyRGQsSUFBSStGLFdBQVcsR0FBR3pJLGtCQUFxQyxDQUFBO0VBQ3ZELElBQUlDLGNBQWMsR0FBR0Qsb0JBQThDLENBQUE7RUFFbkVWLElBQUFBLHVCQUFjLEdBQUcsVUFBVXdKLE1BQU0sRUFBRXROLElBQUksRUFBRXVOLFVBQVUsRUFBRTtJQUNuRCxJQUFJQSxVQUFVLENBQUM3SSxHQUFHLEVBQUV1SSxXQUFXLENBQUNNLFVBQVUsQ0FBQzdJLEdBQUcsRUFBRTFFLElBQUksRUFBRTtFQUFFbU4sSUFBQUEsTUFBTSxFQUFFLElBQUE7RUFBSyxHQUFDLENBQUMsQ0FBQTtJQUN2RSxJQUFJSSxVQUFVLENBQUN4QixHQUFHLEVBQUVrQixXQUFXLENBQUNNLFVBQVUsQ0FBQ3hCLEdBQUcsRUFBRS9MLElBQUksRUFBRTtFQUFFb04sSUFBQUEsTUFBTSxFQUFFLElBQUE7RUFBSyxHQUFDLENBQUMsQ0FBQTtJQUN2RSxPQUFPM0ksY0FBYyxDQUFDaUgsQ0FBQyxDQUFDNEIsTUFBTSxFQUFFdE4sSUFBSSxFQUFFdU4sVUFBVSxDQUFDLENBQUE7RUFDbkQsQ0FBQzs7RUNQRCxJQUFJNUMsUUFBUSxHQUFHbkcsVUFBaUMsQ0FBQTs7RUFFaEQ7RUFDQTtFQUNBVixJQUFBQSxXQUFjLEdBQUcsWUFBWTtFQUMzQixFQUFBLElBQUkwSixJQUFJLEdBQUc3QyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDekIsSUFBSUosTUFBTSxHQUFHLEVBQUUsQ0FBQTtFQUNmLEVBQUEsSUFBSWlELElBQUksQ0FBQ0MsVUFBVSxFQUFFbEQsTUFBTSxJQUFJLEdBQUcsQ0FBQTtFQUNsQyxFQUFBLElBQUlpRCxJQUFJLENBQUN0SixNQUFNLEVBQUVxRyxNQUFNLElBQUksR0FBRyxDQUFBO0VBQzlCLEVBQUEsSUFBSWlELElBQUksQ0FBQ0UsVUFBVSxFQUFFbkQsTUFBTSxJQUFJLEdBQUcsQ0FBQTtFQUNsQyxFQUFBLElBQUlpRCxJQUFJLENBQUNHLFNBQVMsRUFBRXBELE1BQU0sSUFBSSxHQUFHLENBQUE7RUFDakMsRUFBQSxJQUFJaUQsSUFBSSxDQUFDSSxNQUFNLEVBQUVyRCxNQUFNLElBQUksR0FBRyxDQUFBO0VBQzlCLEVBQUEsSUFBSWlELElBQUksQ0FBQ0ssT0FBTyxFQUFFdEQsTUFBTSxJQUFJLEdBQUcsQ0FBQTtFQUMvQixFQUFBLElBQUlpRCxJQUFJLENBQUNNLFdBQVcsRUFBRXZELE1BQU0sSUFBSSxHQUFHLENBQUE7RUFDbkMsRUFBQSxJQUFJaUQsSUFBSSxDQUFDTyxNQUFNLEVBQUV4RCxNQUFNLElBQUksR0FBRyxDQUFBO0VBQzlCLEVBQUEsT0FBT0EsTUFBTSxDQUFBO0VBQ2YsQ0FBQzs7RUNoQkQsSUFBSXJHLFFBQU0sR0FBR00sUUFBOEIsQ0FBQTtFQUMzQyxJQUFJMEIsV0FBVyxHQUFHMUIsV0FBbUMsQ0FBQTtFQUNyRCxJQUFJd0oscUJBQXFCLEdBQUd4Six1QkFBZ0QsQ0FBQTtFQUM1RSxJQUFJeUosV0FBVyxHQUFHekosV0FBb0MsQ0FBQTtFQUN0RCxJQUFJRCxLQUFLLEdBQUdDLE9BQTZCLENBQUE7O0VBRXpDO0VBQ0EsSUFBSTBKLFFBQU0sR0FBR2hLLFFBQU0sQ0FBQ2dLLE1BQU0sQ0FBQTtFQUMxQixJQUFJQyxlQUFlLEdBQUdELFFBQU0sQ0FBQ25KLFNBQVMsQ0FBQTtFQUV0QyxJQUFJcUosTUFBTSxHQUFHbEksV0FBVyxJQUFJM0IsS0FBSyxDQUFDLFlBQVk7SUFDNUMsSUFBSThKLGVBQWUsR0FBRyxJQUFJLENBQUE7SUFDMUIsSUFBSTtFQUNGSCxJQUFBQSxRQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0tBQ2pCLENBQUMsT0FBTzVKLEtBQUssRUFBRTtFQUNkK0osSUFBQUEsZUFBZSxHQUFHLEtBQUssQ0FBQTtFQUN6QixHQUFBO0lBRUEsSUFBSW5ELENBQUMsR0FBRyxFQUFFLENBQUE7RUFDVjtJQUNBLElBQUlvRCxLQUFLLEdBQUcsRUFBRSxDQUFBO0VBQ2QsRUFBQSxJQUFJQyxRQUFRLEdBQUdGLGVBQWUsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFBO0VBRW5ELEVBQUEsSUFBSUcsU0FBUyxHQUFHLFVBQVUxTCxHQUFHLEVBQUUyTCxHQUFHLEVBQUU7RUFDbEM7RUFDQXJNLElBQUFBLE1BQU0sQ0FBQ3FDLGNBQWMsQ0FBQ3lHLENBQUMsRUFBRXBJLEdBQUcsRUFBRTtRQUFFNEIsR0FBRyxFQUFFLFlBQVk7RUFDL0M0SixRQUFBQSxLQUFLLElBQUlHLEdBQUcsQ0FBQTtFQUNaLFFBQUEsT0FBTyxJQUFJLENBQUE7RUFDYixPQUFBO0VBQUUsS0FBQyxDQUFDLENBQUE7S0FDTCxDQUFBO0VBRUQsRUFBQSxJQUFJQyxLQUFLLEdBQUc7RUFDVmQsSUFBQUEsTUFBTSxFQUFFLEdBQUc7RUFDWDFKLElBQUFBLE1BQU0sRUFBRSxHQUFHO0VBQ1h3SixJQUFBQSxVQUFVLEVBQUUsR0FBRztFQUNmQyxJQUFBQSxTQUFTLEVBQUUsR0FBRztFQUNkSSxJQUFBQSxNQUFNLEVBQUUsR0FBQTtLQUNULENBQUE7RUFFRCxFQUFBLElBQUlNLGVBQWUsRUFBRUssS0FBSyxDQUFDakIsVUFBVSxHQUFHLEdBQUcsQ0FBQTtFQUUzQyxFQUFBLEtBQUssSUFBSTNLLEdBQUcsSUFBSTRMLEtBQUssRUFBRUYsU0FBUyxDQUFDMUwsR0FBRyxFQUFFNEwsS0FBSyxDQUFDNUwsR0FBRyxDQUFDLENBQUMsQ0FBQTs7RUFFakQ7RUFDQSxFQUFBLElBQUl5SCxNQUFNLEdBQUduSSxNQUFNLENBQUNnRSx3QkFBd0IsQ0FBQytILGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQ3pKLEdBQUcsQ0FBQ00sSUFBSSxDQUFDa0csQ0FBQyxDQUFDLENBQUE7RUFFbEYsRUFBQSxPQUFPWCxNQUFNLEtBQUtnRSxRQUFRLElBQUlELEtBQUssS0FBS0MsUUFBUSxDQUFBO0VBQ2xELENBQUMsQ0FBQyxDQUFBOztFQUVGO0VBQ0E7RUFDQSxJQUFJSCxNQUFNLEVBQUVKLHFCQUFxQixDQUFDRyxlQUFlLEVBQUUsT0FBTyxFQUFFO0VBQzFEMUgsRUFBQUEsWUFBWSxFQUFFLElBQUk7RUFDbEIvQixFQUFBQSxHQUFHLEVBQUV1SixXQUFBQTtFQUNQLENBQUMsQ0FBQzs7RUN2REY7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBLE1BQU1VLFlBQVksR0FBRztFQUNuQkMsRUFBQUEsZ0JBQWdCLEVBQUUsdUNBQXVDO0VBQ3pEQyxFQUFBQSxjQUFjLEVBQUUsaUJBQWlCO0VBQ2pDQyxFQUFBQSxNQUFNLEVBQUUsOEJBQThCO0VBQ3RDQyxFQUFBQSxLQUFLLEVBQUUsb0lBQW9JO0VBQUU7RUFDN0lDLEVBQUFBLFdBQVcsRUFBRSx1Q0FBdUM7RUFDcERDLEVBQUFBLFlBQVksRUFBRSxvQkFBb0I7RUFDbENDLEVBQUFBLFdBQVcsRUFBRSx1QkFBdUI7RUFDcENDLEVBQUFBLFdBQVcsRUFBRSwrQ0FBK0M7RUFDNURDLEVBQUFBLE1BQU0sRUFBRSwrQkFBK0I7RUFDdkNDLEVBQUFBLGVBQWUsRUFBRSxrQkFBa0I7RUFDbkNDLEVBQUFBLFNBQVMsRUFBRSxxQkFBcUI7RUFDaENDLEVBQUFBLGFBQWEsRUFBRSxnREFBZ0Q7RUFDL0RDLEVBQUFBLFlBQVksRUFBRSxxREFBcUQ7RUFDbkVDLEVBQUFBLFFBQVEsRUFBRSxxV0FBQTtFQUNaLENBQUMsQ0FBQTs7RUFFRDtFQUNBLE1BQU1DLGtCQUFrQixHQUFHLElBQUl4QixNQUFNLENBQUMscXBEQUFxcEQsQ0FBQyxDQUFBO0VBRTVyRCxNQUFNeUIsbUJBQW1CLEdBQUcsSUFBSXpCLE1BQU0sQ0FBQyxxcERBQXFwRCxDQUFDLENBQUE7O0VBRTdyRDs7RUFFQTtFQUNBO0VBQ0E7RUFDQSxNQUFNMEIsV0FBVyxHQUFHO0VBQ2xCQyxFQUFBQSxJQUFJLEVBQUU7RUFDSkMsSUFBQUEsTUFBTSxFQUFFLG1DQUFtQztFQUMzQ0MsSUFBQUEsV0FBVyxFQUFFLHlGQUFBO0tBQ2Q7RUFDREMsRUFBQUEsSUFBSSxFQUFFO0VBQ0pGLElBQUFBLE1BQU0sRUFBRSxvQ0FBb0M7RUFDNUNDLElBQUFBLFdBQVcsRUFBRSx5RkFBQTtLQUNkO0VBQ0RFLEVBQUFBLElBQUksRUFBRTtFQUNKSCxJQUFBQSxNQUFNLEVBQUUscUNBQXFDO0VBQzdDQyxJQUFBQSxXQUFXLEVBQUUseUZBQUE7S0FDZDtFQUNERyxFQUFBQSxJQUFJLEVBQUU7RUFDSkosSUFBQUEsTUFBTSxFQUFFLHNDQUFzQztFQUM5Q0MsSUFBQUEsV0FBVyxFQUFFLHlGQUFBO0tBQ2Q7RUFDREksRUFBQUEsSUFBSSxFQUFFO0VBQ0pMLElBQUFBLE1BQU0sRUFBRSx1Q0FBdUM7RUFDL0NDLElBQUFBLFdBQVcsRUFBRSx5RkFBQTtLQUNkO0VBQ0RLLEVBQUFBLElBQUksRUFBRTtFQUNKTixJQUFBQSxNQUFNLEVBQUUsd0NBQXdDO0VBQ2hEQyxJQUFBQSxXQUFXLEVBQUUseUZBQUE7S0FDZDtFQUNETSxFQUFBQSxZQUFZLEVBQUU7RUFDWlAsSUFBQUEsTUFBTSxFQUFFLHFCQUFxQjtFQUM3QkMsSUFBQUEsV0FBVyxFQUFFLHVEQUFBO0tBQ2Q7RUFDRE8sRUFBQUEsdUJBQXVCLEVBQUU7RUFDdkJSLElBQUFBLE1BQU0sRUFBRSx5Q0FBeUM7RUFDakRDLElBQUFBLFdBQVcsRUFBRSxpR0FBQTtLQUNkO0VBQ0RRLEVBQUFBLG9CQUFvQixFQUFFO0VBQ3BCVCxJQUFBQSxNQUFNLEVBQUUsc0NBQXNDO0VBQzlDQyxJQUFBQSxXQUFXLEVBQUUsOEZBQUE7S0FDZDtFQUNEUyxFQUFBQSx3QkFBd0IsRUFBRTtFQUN4QlYsSUFBQUEsTUFBTSxFQUFFLDhCQUE4QjtFQUN0Q0MsSUFBQUEsV0FBVyxFQUFFLDZEQUFBO0tBQ2Q7RUFDRFUsRUFBQUEscUJBQXFCLEVBQUU7RUFDckJYLElBQUFBLE1BQU0sRUFBRSw4QkFBOEI7RUFDdENDLElBQUFBLFdBQVcsRUFBRSwwREFBQTtLQUNkO0VBQ0RXLEVBQUFBLFdBQVcsRUFBRTtFQUNYWixJQUFBQSxNQUFNLEVBQUUsWUFBWTtFQUNwQkMsSUFBQUEsV0FBVyxFQUFFLElBQUE7S0FDZDtFQUNEWSxFQUFBQSxnQkFBZ0IsRUFBRTtFQUNoQmIsSUFBQUEsTUFBTSxFQUFFLGVBQWU7RUFDdkJDLElBQUFBLFdBQVcsRUFBRSx3REFBQTtLQUNkO0VBQ0RhLEVBQUFBLGdCQUFnQixFQUFFO0VBQ2hCZCxJQUFBQSxNQUFNLEVBQUUsZUFBZTtFQUN2QkMsSUFBQUEsV0FBVyxFQUFFLHdEQUFBO0tBQ2Q7RUFDRGMsRUFBQUEsSUFBSSxFQUFFO0VBQ0pmLElBQUFBLE1BQU0sRUFBRSx5RkFBeUY7RUFDakdDLElBQUFBLFdBQVcsRUFBRSw0Q0FBQTtLQUNkO0VBQ0RlLEVBQUFBLElBQUksRUFBRTtFQUNKaEIsSUFBQUEsTUFBTSxFQUFFLDJCQUEyQjtFQUNuQ0MsSUFBQUEsV0FBVyxFQUFFLCtDQUFBO0tBQ2Q7RUFDRGdCLEVBQUFBLElBQUksRUFBRTtFQUNKakIsSUFBQUEsTUFBTSxFQUFFLGlDQUFpQztFQUN6Q0MsSUFBQUEsV0FBVyxFQUFFLCtDQUFBO0tBQ2Q7RUFDRDtFQUNBaUIsRUFBQUEsY0FBYyxFQUFFO0VBQ2RsQixJQUFBQSxNQUFNLEVBQUUsaUJBQWlCO0VBQ3pCQyxJQUFBQSxXQUFXLEVBQUUsd0RBQUE7S0FDZDtFQUNEa0IsRUFBQUEseUJBQXlCLEVBQUU7RUFDekI7RUFDQW5CLElBQUFBLE1BQU0sRUFBRSw0S0FBNEs7RUFDcExDLElBQUFBLFdBQVcsRUFBRSwwUUFBMFE7TUFDdlJtQixnQkFBZ0IsRUFBRSxDQUFDO0VBQ3JCLEdBQUE7RUFDRixDQUFDLENBQUE7O0VBRUQ7RUFDQTtFQUNBO0VBQ0EsSUFBSUMsZ0JBQWdCLEdBQUcsQ0FDckI7RUFBRUMsRUFBQUEsS0FBSyxFQUFFLHlDQUF5QztFQUFFQyxFQUFBQSxHQUFHLEVBQUUsbUNBQW1DO0VBQUVDLEVBQUFBLGFBQWEsRUFBRSxJQUFBO0VBQUssQ0FBQyxFQUNuSDtFQUFFRixFQUFBQSxLQUFLLEVBQUUsYUFBYTtFQUFFQyxFQUFBQSxHQUFHLEVBQUUsS0FBSztFQUFFQyxFQUFBQSxhQUFhLEVBQUUsSUFBQTtFQUFLLENBQUMsRUFDekQ7RUFBRUYsRUFBQUEsS0FBSyxFQUFFLFlBQVk7RUFBRUMsRUFBQUEsR0FBRyxFQUFFLEtBQUs7RUFBRUMsRUFBQUEsYUFBYSxFQUFFLElBQUE7RUFBSyxDQUFDLEVBQ3hEO0VBQUVGLEVBQUFBLEtBQUssRUFBRSxnQkFBZ0I7RUFBRUMsRUFBQUEsR0FBRyxFQUFFLEdBQUc7RUFBRUMsRUFBQUEsYUFBYSxFQUFHLElBQUE7RUFBSSxDQUFDLEVBQzFEO0VBQUVGLEVBQUFBLEtBQUssRUFBRSxvQkFBb0I7RUFBRUMsRUFBQUEsR0FBRyxFQUFFLE9BQU87RUFBRUMsRUFBQUEsYUFBYSxFQUFHLElBQUE7RUFBSSxDQUFDLEVBQ2xFO0VBQUVGLEVBQUFBLEtBQUssRUFBRSw2Q0FBNkM7RUFBRUMsRUFBQUEsR0FBRyxFQUFFLEtBQUs7RUFBRUMsRUFBQUEsYUFBYSxFQUFFLElBQUE7RUFBSSxDQUFDLEVBQ3hGO0VBQUVGLEVBQUFBLEtBQUssRUFBRSx5Q0FBeUM7RUFBRUMsRUFBQUEsR0FBRyxFQUFFLEtBQUs7RUFBRUMsRUFBQUEsYUFBYSxFQUFFLEtBQUE7RUFBSyxDQUFDLENBQ3RGLENBQUE7O0VBRUQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQUlDLGFBQWEsR0FBRztFQUNsQkMsRUFBQUEsTUFBTSxFQUFHO0VBQ1AxQixJQUFBQSxNQUFNLEVBQUUsdUJBQXVCO0VBQy9CQyxJQUFBQSxXQUFXLEVBQUcsa0RBQUE7S0FDZjtFQUNEOVEsRUFBQUEsSUFBSSxFQUFHO0VBQ0w2USxJQUFBQSxNQUFNLEVBQUUscUNBQXFDO0VBQzdDQyxJQUFBQSxXQUFXLEVBQUcsd0hBQUE7S0FDZjtFQUNEMEIsRUFBQUEsUUFBUSxFQUFHO0VBQ1QzQixJQUFBQSxNQUFNLEVBQUUsb0NBQW9DO0VBQzVDQyxJQUFBQSxXQUFXLEVBQUUsd0lBQUE7S0FDZDtFQUNEMkIsRUFBQUEsSUFBSSxFQUFHO0VBQ0w1QixJQUFBQSxNQUFNLEVBQUUsa0dBQWtHO0VBQzFHQyxJQUFBQSxXQUFXLEVBQUUsZ0NBQUE7S0FDZDtFQUNENEIsRUFBQUEsUUFBUSxFQUFHO0VBQ1Q3QixJQUFBQSxNQUFNLEVBQUUsS0FBSztFQUNiQyxJQUFBQSxXQUFXLEVBQUUsRUFBQTtLQUNkO0VBQ0Q2QixFQUFBQSxTQUFTLEVBQUc7RUFDVjlCLElBQUFBLE1BQU0sRUFBRSxNQUFNO0VBQ2RDLElBQUFBLFdBQVcsRUFBRyxFQUFBO0tBQ2Y7RUFDRDhCLEVBQUFBLFNBQVMsRUFBRztFQUNWL0IsSUFBQUEsTUFBTSxFQUFFLDBCQUEwQjtFQUNsQ0MsSUFBQUEsV0FBVyxFQUFFLEVBQUU7RUFDZm1CLElBQUFBLGdCQUFnQixFQUFFLENBQUE7S0FDbkI7RUFDRFksRUFBQUEsT0FBTyxFQUFHO0VBQ1JoQyxJQUFBQSxNQUFNLEVBQUUsMEJBQTBCO0VBQ2xDQyxJQUFBQSxXQUFXLEVBQUUsSUFBQTtFQUNmLEdBQUE7RUFDRixDQUFDLENBQUE7O0VBRUQ7RUFDQSxNQUFNZ0MsaUJBQWlCLEdBQUcsSUFBSTdELE1BQU0sQ0FBQzlMLE1BQU0sQ0FBQ0UsSUFBSSxDQUFDcU0sWUFBWSxDQUFDLENBQUMxTCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTs7RUFFekU7RUFDQSxNQUFNK08sV0FBVyxHQUFFLENBQUMsR0FBRzVQLE1BQU0sQ0FBQ0UsSUFBSSxDQUFDaVAsYUFBYSxDQUFDLENBQUMsQ0FBQTtFQUNsRCxLQUFLLElBQUlVLElBQUksSUFBSUQsV0FBVyxFQUFFO0lBQzVCLElBQUlFLEVBQUUsR0FBR1gsYUFBYSxDQUFDVSxJQUFJLENBQUMsQ0FBQ25DLE1BQU0sQ0FBQ3RHLE1BQU0sQ0FBQTtFQUMxQztFQUNBLEVBQUEsT0FBTzBJLEVBQUUsQ0FBQ3JQLEtBQUssQ0FBQ2tQLGlCQUFpQixDQUFDLEVBQUU7TUFDbENHLEVBQUUsR0FBR0EsRUFBRSxDQUFDcEYsT0FBTyxDQUFDaUYsaUJBQWlCLEVBQUdJLE1BQU0sSUFBSztFQUFFLE1BQUEsT0FBT3hELFlBQVksQ0FBQ3dELE1BQU0sQ0FBQyxDQUFDM0ksTUFBTSxDQUFBO0VBQUUsS0FBQyxDQUFDLENBQUE7RUFDekYsR0FBQTtFQUNBK0gsRUFBQUEsYUFBYSxDQUFDVSxJQUFJLENBQUMsQ0FBQ25DLE1BQU0sR0FBRyxJQUFJNUIsTUFBTSxDQUFDZ0UsRUFBRSxFQUFFWCxhQUFhLENBQUNVLElBQUksQ0FBQyxDQUFDbkMsTUFBTSxDQUFDc0MsS0FBSyxDQUFDLENBQUE7RUFDL0UsQ0FBQTs7RUFFQTtFQUNBLEtBQUssSUFBSUgsSUFBSSxJQUFJZCxnQkFBZ0IsRUFBRTtFQUNqQyxFQUFBLElBQUllLEVBQUUsR0FBR0QsSUFBSSxDQUFDYixLQUFLLENBQUM1SCxNQUFNLENBQUE7RUFDMUI7RUFDQSxFQUFBLE9BQU8wSSxFQUFFLENBQUNyUCxLQUFLLENBQUNrUCxpQkFBaUIsQ0FBQyxFQUFFO01BQ2xDRyxFQUFFLEdBQUdBLEVBQUUsQ0FBQ3BGLE9BQU8sQ0FBQ2lGLGlCQUFpQixFQUFHSSxNQUFNLElBQUs7RUFBRSxNQUFBLE9BQU94RCxZQUFZLENBQUN3RCxNQUFNLENBQUMsQ0FBQzNJLE1BQU0sQ0FBQTtFQUFFLEtBQUMsQ0FBQyxDQUFBO0VBQ3pGLEdBQUE7RUFDQXlJLEVBQUFBLElBQUksQ0FBQ2IsS0FBSyxHQUFHLElBQUlsRCxNQUFNLENBQUNnRSxFQUFFLEVBQUVELElBQUksQ0FBQ2IsS0FBSyxDQUFDZ0IsS0FBSyxDQUFDLENBQUE7RUFDL0MsQ0FBQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBU0MsVUFBVUEsQ0FBQ0YsTUFBTSxFQUFFO0lBQzFCLE9BQU8sQ0FBQ0EsTUFBTSxHQUFHQSxNQUFNLEdBQUcsRUFBRSxFQUN6QnJGLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQ3RCQSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUNyQkEsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtFQUMxQixDQUFBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsTUFBTTlMLFFBQVEsR0FBRztFQUNmO0VBQ0FqQyxFQUFBQSxJQUFJLEVBQUU7RUFDSnFOLElBQUFBLElBQUksRUFBRSxRQUFRO0VBQ2RySyxJQUFBQSxTQUFTLEVBQUUsVUFBVTtFQUNyQmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDdUcsTUFBQUEsR0FBRyxFQUFFLElBQUk7RUFBRUMsTUFBQUEsSUFBSSxFQUFFLElBQUE7T0FBSztFQUM1QkMsSUFBQUEsS0FBSyxFQUFFO0VBQUNDLE1BQUFBLFVBQVUsRUFBRSxjQUFjO0VBQUVDLE1BQUFBLFdBQVcsRUFBRSxjQUFBO0VBQWMsS0FBQTtLQUNoRTtFQUNEcFQsRUFBQUEsTUFBTSxFQUFFO0VBQ044TSxJQUFBQSxJQUFJLEVBQUUsUUFBUTtFQUNkckssSUFBQUEsU0FBUyxFQUFFLE1BQU07RUFDakJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQ3VHLE1BQUFBLEdBQUcsRUFBRSxHQUFHO0VBQUVDLE1BQUFBLElBQUksRUFBRSxHQUFBO09BQUk7RUFDMUJDLElBQUFBLEtBQUssRUFBRTtFQUFDQyxNQUFBQSxVQUFVLEVBQUUsV0FBVztFQUFFQyxNQUFBQSxXQUFXLEVBQUUsV0FBQTtFQUFXLEtBQUE7S0FDMUQ7RUFDRHpULEVBQUFBLElBQUksRUFBRTtFQUNKbU4sSUFBQUEsSUFBSSxFQUFFLFFBQVE7RUFDZHJLLElBQUFBLFNBQVMsRUFBRSxRQUFRO0VBQ25CZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUN1RyxNQUFBQSxHQUFHLEVBQUUsR0FBRztFQUFFQyxNQUFBQSxJQUFJLEVBQUUsR0FBQTtPQUFJO0VBQzFCQyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0MsTUFBQUEsVUFBVSxFQUFFLEtBQUs7RUFBRUMsTUFBQUEsV0FBVyxFQUFFLEtBQUE7RUFBSyxLQUFDO0tBQy9DOztFQUNEalQsRUFBQUEsYUFBYSxFQUFFO0VBQ2IyTSxJQUFBQSxJQUFJLEVBQUUsUUFBUTtFQUNkckssSUFBQUEsU0FBUyxFQUFFLGlCQUFpQjtFQUM1QmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDdUcsTUFBQUEsR0FBRyxFQUFFLElBQUk7RUFBRUMsTUFBQUEsSUFBSSxFQUFFLElBQUE7T0FBSztFQUM1QkMsSUFBQUEsS0FBSyxFQUFFO0VBQUNDLE1BQUFBLFVBQVUsRUFBQyxLQUFLO0VBQUVDLE1BQUFBLFdBQVcsRUFBRSxLQUFBO0VBQU0sS0FBQTtLQUM5QztFQUNEeFQsRUFBQUEsRUFBRSxFQUFFO0VBQ0ZrTixJQUFBQSxJQUFJLEVBQUUsTUFBTTtFQUNackssSUFBQUEsU0FBUyxFQUFFLE1BQU07RUFDakJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQzRHLE1BQUFBLE9BQU8sRUFBRSxxREFBcUQ7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxNQUFBO09BQU87RUFDMUZ5QyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0csTUFBQUEsT0FBTyxFQUFFLG9DQUFvQztFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLElBQUE7RUFBSSxLQUFBO0tBQ3pFO0VBQ0Q1USxFQUFBQSxFQUFFLEVBQUU7RUFDRmlOLElBQUFBLElBQUksRUFBRSxNQUFNO0VBQ1pySyxJQUFBQSxTQUFTLEVBQUUsTUFBTTtFQUNqQmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDNEcsTUFBQUEsT0FBTyxFQUFFLHFEQUFxRDtFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLE9BQUE7T0FBUTtFQUMzRnlDLElBQUFBLEtBQUssRUFBRTtFQUFDRyxNQUFBQSxPQUFPLEVBQUUscUNBQXFDO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsSUFBQTtFQUFJLEtBQUE7S0FDMUU7RUFDRDZDLEVBQUFBLEVBQUUsRUFBRTtFQUNGeEcsSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWnJLLElBQUFBLFNBQVMsRUFBRSxNQUFNO0VBQ2pCZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUM0RyxNQUFBQSxPQUFPLEVBQUUscURBQXFEO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsUUFBQTtPQUFTO0VBQzVGeUMsSUFBQUEsS0FBSyxFQUFFO0VBQUNHLE1BQUFBLE9BQU8sRUFBRSxzQ0FBc0M7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxJQUFBO0VBQUksS0FBQTtLQUMzRTtFQUNEOEMsRUFBQUEsRUFBRSxFQUFFO0VBQ0Z6RyxJQUFBQSxJQUFJLEVBQUUsTUFBTTtFQUNackssSUFBQUEsU0FBUyxFQUFFLE1BQU07RUFDakJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQzRHLE1BQUFBLE9BQU8sRUFBRSxxREFBcUQ7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxTQUFBO09BQVU7RUFDN0Z5QyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0csTUFBQUEsT0FBTyxFQUFFLHVDQUF1QztFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLElBQUE7RUFBSSxLQUFBO0tBQzVFO0VBQ0QrQyxFQUFBQSxFQUFFLEVBQUU7RUFDRjFHLElBQUFBLElBQUksRUFBRSxNQUFNO0VBQ1pySyxJQUFBQSxTQUFTLEVBQUUsTUFBTTtFQUNqQmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDNEcsTUFBQUEsT0FBTyxFQUFFLHFEQUFxRDtFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLFVBQUE7T0FBVztFQUM5RnlDLElBQUFBLEtBQUssRUFBRTtFQUFDRyxNQUFBQSxPQUFPLEVBQUUsd0NBQXdDO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsSUFBQTtFQUFJLEtBQUE7S0FDN0U7RUFDRGdELEVBQUFBLEVBQUUsRUFBRTtFQUNGM0csSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWnJLLElBQUFBLFNBQVMsRUFBRSxNQUFNO0VBQ2pCZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUM0RyxNQUFBQSxPQUFPLEVBQUUscURBQXFEO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsV0FBQTtPQUFZO0VBQy9GeUMsSUFBQUEsS0FBSyxFQUFFO0VBQUNHLE1BQUFBLE9BQU8sRUFBRSx5Q0FBeUM7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxJQUFBO0VBQUksS0FBQTtLQUM5RTtFQUNEclEsRUFBQUEsRUFBRSxFQUFFO0VBQ0YwTSxJQUFBQSxJQUFJLEVBQUUsTUFBTTtFQUNackssSUFBQUEsU0FBUyxFQUFFLE1BQU07RUFDakJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQzRHLE1BQUFBLE9BQU8sRUFBRSxxREFBcUQ7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxNQUFBO09BQU87RUFDMUZ5QyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0csTUFBQUEsT0FBTyxFQUFFLDJCQUEyQjtFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLElBQUE7RUFBSSxLQUFBO0tBQ2hFO0VBQ0R2USxFQUFBQSxFQUFFLEVBQUU7RUFDRjRNLElBQUFBLElBQUksRUFBRSxNQUFNO0VBQ1pySyxJQUFBQSxTQUFTLEVBQUUsTUFBTTtFQUNqQmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDNEcsTUFBQUEsT0FBTyxFQUFFLHFEQUFxRDtFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLFFBQUE7T0FBUztFQUM1RnlDLElBQUFBLEtBQUssRUFBRTtFQUFDRyxNQUFBQSxPQUFPLEVBQUUsaUNBQWlDO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsSUFBQTtFQUFJLEtBQUE7S0FDdEU7RUFDRGpSLEVBQUFBLFVBQVUsRUFBRTtFQUNWc04sSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWnJLLElBQUFBLFNBQVMsRUFBRSxjQUFjO0VBQ3pCZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUM0RyxNQUFBQSxPQUFPLEVBQUUscURBQXFEO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsTUFBQTtPQUFPO0VBQzFGeUMsSUFBQUEsS0FBSyxFQUFFO0VBQUNHLE1BQUFBLE9BQU8sRUFBRSxxQkFBcUI7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxJQUFBO0VBQUksS0FBQTtFQUMzRCxHQUFBO0VBQ0YsQ0FBQzs7RUMvUkQsTUFBTWlELE1BQU0sQ0FBQztFQUNYblMsRUFBQUEsV0FBV0EsR0FBYTtFQUFBLElBQUEsSUFBWkMsS0FBSyxHQUFBc0UsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxFQUFFLENBQUE7TUFDcEIsSUFBSSxDQUFDckUsQ0FBQyxHQUFHLElBQUksQ0FBQTtNQUNiLElBQUksQ0FBQ2tTLFFBQVEsR0FBRyxJQUFJLENBQUE7TUFDcEIsSUFBSSxDQUFDQyxLQUFLLEdBQUcsRUFBRSxDQUFBO01BQ2YsSUFBSSxDQUFDQyxZQUFZLEdBQUcsRUFBRSxDQUFBO01BQ3RCLElBQUksQ0FBQ0MsU0FBUyxHQUFHLEVBQUUsQ0FBQTtNQUNuQixJQUFJLENBQUNDLFlBQVksR0FBRyxFQUFFLENBQUE7TUFDdEIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUE7TUFDMUIsSUFBSSxDQUFDQyxVQUFVLEdBQUcsRUFBRSxDQUFBO01BQ3BCLElBQUksQ0FBQ0MsU0FBUyxHQUFHLEVBQUUsQ0FBQTtNQUNuQixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUksQ0FBQTtNQUU1QixJQUFJLENBQUNDLFNBQVMsR0FBRztFQUNmQyxNQUFBQSxNQUFNLEVBQUUsRUFBRTtFQUNWQyxNQUFBQSxTQUFTLEVBQUUsRUFBQTtPQUNaLENBQUE7RUFFRCxJQUFBLElBQUl4UyxPQUFPLEdBQUdOLEtBQUssQ0FBQ00sT0FBTyxDQUFBO0VBQzNCLElBQUEsSUFBSSxDQUFDNlIsUUFBUSxHQUFHblMsS0FBSyxDQUFDbVMsUUFBUSxDQUFBO01BRTlCLElBQUksSUFBSSxDQUFDQSxRQUFRLEVBQUU7RUFDakIsTUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDQSxRQUFRLENBQUM1UixPQUFPLEVBQUU7VUFDMUIsSUFBSSxDQUFDNFIsUUFBUSxHQUFHM1IsUUFBUSxDQUFDQyxjQUFjLENBQUMsSUFBSSxDQUFDMFIsUUFBUSxDQUFDLENBQUE7RUFDeEQsT0FBQTtFQUNBLE1BQUEsSUFBSSxDQUFDN1IsT0FBTyxFQUFFQSxPQUFPLEdBQUcsSUFBSSxDQUFDNlIsUUFBUSxDQUFBO0VBQ3ZDLEtBQUE7RUFFQSxJQUFBLElBQUk3UixPQUFPLElBQUksQ0FBQ0EsT0FBTyxDQUFDQyxPQUFPLEVBQUU7UUFDL0JELE9BQU8sR0FBR0UsUUFBUSxDQUFDQyxjQUFjLENBQUNULEtBQUssQ0FBQ00sT0FBTyxDQUFDLENBQUE7RUFDbEQsS0FBQTtNQUNBLElBQUksQ0FBQ0EsT0FBTyxFQUFFO1FBQ1pBLE9BQU8sR0FBR0UsUUFBUSxDQUFDdVMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDcEQsS0FBQTtFQUNBLElBQUEsSUFBSXpTLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJLFVBQVUsRUFBRTtRQUNqQyxJQUFJLENBQUM0UixRQUFRLEdBQUc3UixPQUFPLENBQUE7RUFDdkJBLE1BQUFBLE9BQU8sR0FBRyxJQUFJLENBQUM2UixRQUFRLENBQUNhLFVBQVUsQ0FBQTtFQUNwQyxLQUFBO01BRUEsSUFBSSxJQUFJLENBQUNiLFFBQVEsRUFBRTtFQUNqQixNQUFBLElBQUksQ0FBQ0EsUUFBUSxDQUFDYyxLQUFLLENBQUNDLE9BQU8sR0FBRyxNQUFNLENBQUE7RUFDdEMsS0FBQTtFQUVBLElBQUEsSUFBSSxDQUFDQyxtQkFBbUIsQ0FBQzdTLE9BQU8sQ0FBQyxDQUFBO0VBQ2pDO0VBQ0EsSUFBQSxJQUFJLENBQUM4UyxVQUFVLENBQ2JwVCxLQUFLLENBQUNxVCxPQUFPLEtBQ1YsSUFBSSxDQUFDbEIsUUFBUSxHQUNWLElBQUksQ0FBQ0EsUUFBUSxDQUFDdk0sS0FBSyxHQUNuQixpQ0FBaUMsQ0FDekMsQ0FBQyxDQUFBO0VBQ0gsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtJQUNFdU4sbUJBQW1CQSxDQUFDN1MsT0FBTyxFQUFFO01BQzNCLElBQUksQ0FBQ0wsQ0FBQyxHQUFHTyxRQUFRLENBQUNRLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUN0QyxJQUFBLElBQUksQ0FBQ2YsQ0FBQyxDQUFDZ0IsU0FBUyxHQUFHLFNBQVMsQ0FBQTtFQUM1QixJQUFBLElBQUksQ0FBQ2hCLENBQUMsQ0FBQ3FULGVBQWUsR0FBRyxJQUFJLENBQUE7RUFDN0I7RUFDQTtFQUNBLElBQUEsSUFBSSxDQUFDclQsQ0FBQyxDQUFDZ1QsS0FBSyxDQUFDTSxVQUFVLEdBQUcsVUFBVSxDQUFBO0VBQ3BDO0VBQ0EsSUFBQSxJQUFJLENBQUN0VCxDQUFDLENBQUNnVCxLQUFLLENBQUNPLGdCQUFnQixHQUFHLDJCQUEyQixDQUFBO0VBQzNELElBQUEsSUFDRSxJQUFJLENBQUNyQixRQUFRLElBQ2IsSUFBSSxDQUFDQSxRQUFRLENBQUNhLFVBQVUsSUFBSTFTLE9BQU8sSUFDbkMsSUFBSSxDQUFDNlIsUUFBUSxDQUFDc0IsV0FBVyxFQUN6QjtFQUNBblQsTUFBQUEsT0FBTyxDQUFDb1QsWUFBWSxDQUFDLElBQUksQ0FBQ3pULENBQUMsRUFBRSxJQUFJLENBQUNrUyxRQUFRLENBQUNzQixXQUFXLENBQUMsQ0FBQTtFQUN6RCxLQUFDLE1BQU07RUFDTG5ULE1BQUFBLE9BQU8sQ0FBQ2MsV0FBVyxDQUFDLElBQUksQ0FBQ25CLENBQUMsQ0FBQyxDQUFBO0VBQzdCLEtBQUE7RUFFQSxJQUFBLElBQUksQ0FBQ0EsQ0FBQyxDQUFDVyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUdYLENBQUMsSUFBSyxJQUFJLENBQUMwVCxnQkFBZ0IsQ0FBQzFULENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDakUsSUFBQSxJQUFJLENBQUNBLENBQUMsQ0FBQ1csZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUdYLENBQUMsSUFBSyxJQUFJLENBQUMwVCxnQkFBZ0IsQ0FBQzFULENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDMUVPLElBQUFBLFFBQVEsQ0FBQ0ksZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUdYLENBQUMsSUFDN0MsSUFBSSxDQUFDMlQsMEJBQTBCLENBQUMzVCxDQUFDLENBQ25DLENBQUMsQ0FBQTtFQUNELElBQUEsSUFBSSxDQUFDQSxDQUFDLENBQUNXLGdCQUFnQixDQUFDLE9BQU8sRUFBR1gsQ0FBQyxJQUFLLElBQUksQ0FBQzRULFdBQVcsQ0FBQzVULENBQUMsQ0FBQyxDQUFDLENBQUE7TUFDNUQsSUFBSSxDQUFDb1MsWUFBWSxHQUFHLElBQUksQ0FBQ3BTLENBQUMsQ0FBQzZULFVBQVUsQ0FBQztFQUN4QyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0lBQ0VWLFVBQVVBLENBQUNDLE9BQU8sRUFBRTtFQUNsQjtFQUNBLElBQUEsT0FBTyxJQUFJLENBQUNwVCxDQUFDLENBQUM4VCxVQUFVLEVBQUU7UUFDeEIsSUFBSSxDQUFDOVQsQ0FBQyxDQUFDK1QsV0FBVyxDQUFDLElBQUksQ0FBQy9ULENBQUMsQ0FBQzhULFVBQVUsQ0FBQyxDQUFBO0VBQ3ZDLEtBQUE7TUFDQSxJQUFJLENBQUMzQixLQUFLLEdBQUdpQixPQUFPLENBQUM1UixLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtNQUM1QyxJQUFJLENBQUNpUixTQUFTLEdBQUcsRUFBRSxDQUFBO0VBQ25CLElBQUEsS0FBSyxJQUFJdUIsT0FBTyxHQUFHLENBQUMsRUFBRUEsT0FBTyxHQUFHLElBQUksQ0FBQzdCLEtBQUssQ0FBQ3ZRLE1BQU0sRUFBRW9TLE9BQU8sRUFBRSxFQUFFO0VBQzVELE1BQUEsSUFBSUMsRUFBRSxHQUFHMVQsUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7RUFDdEMsTUFBQSxJQUFJLENBQUNmLENBQUMsQ0FBQ21CLFdBQVcsQ0FBQzhTLEVBQUUsQ0FBQyxDQUFBO0VBQ3RCLE1BQUEsSUFBSSxDQUFDeEIsU0FBUyxDQUFDNVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQzNCLEtBQUE7TUFDQSxJQUFJLENBQUN3USxTQUFTLEdBQUcsSUFBSTZCLEtBQUssQ0FBQyxJQUFJLENBQUMvQixLQUFLLENBQUN2USxNQUFNLENBQUMsQ0FBQTtNQUM3QyxJQUFJLENBQUN1UyxnQkFBZ0IsRUFBRSxDQUFBO01BQ3ZCLElBQUksQ0FBQ0MsVUFBVSxFQUFFLENBQUE7RUFDbkIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNFQyxFQUFBQSxVQUFVQSxHQUFHO0VBQ1gsSUFBQSxPQUFPLElBQUksQ0FBQ2xDLEtBQUssQ0FBQ2pRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUM5QixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNFaVMsRUFBQUEsZ0JBQWdCQSxHQUFHO0VBQ2pCO0VBQ0E7TUFDQSxJQUFJLENBQUNHLGVBQWUsRUFBRSxDQUFBO0VBQ3RCO01BQ0EsSUFBSSxDQUFDQyxnQkFBZ0IsRUFBRSxDQUFBO0VBQ3ZCO01BQ0EsSUFBSSxDQUFDQyxjQUFjLEVBQUUsQ0FBQTtFQUN2QixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNFRCxFQUFBQSxnQkFBZ0JBLEdBQUc7TUFDakIsSUFBSSxDQUFDL0IsVUFBVSxHQUFHLEVBQUUsQ0FBQTtFQUNwQixJQUFBLEtBQUssSUFBSWlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBRyxJQUFJLENBQUN0QyxLQUFLLENBQUN2USxNQUFNLEVBQUU2UyxDQUFDLEVBQUUsRUFBRTtRQUMxQyxJQUFJLElBQUksQ0FBQ3BDLFNBQVMsQ0FBQ29DLENBQUMsQ0FBQyxJQUFJLDJCQUEyQixFQUFFO0VBQ3BELFFBQUEsSUFBSSxDQUFDakMsVUFBVSxDQUFDM1EsSUFBSSxDQUNsQixJQUFJLENBQUN5USxZQUFZLENBQUNtQyxDQUFDLENBQUMsQ0FDbEI1RixXQUFXLENBQUNxQix5QkFBeUIsQ0FBQ0MsZ0JBQWdCLENBRTFELENBQUMsQ0FBQTtFQUNILE9BQUE7RUFDRixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFcEUsRUFBQUEsT0FBT0EsQ0FBQ2lELFdBQVcsRUFBRTBGLE9BQU8sRUFBRTtFQUM1QixJQUFBLE9BQU8xRixXQUFXLENBQUNqRCxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzRJLEdBQUcsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEtBQUs7UUFDL0QsSUFBSUQsRUFBRSxJQUFJLEdBQUcsRUFBRSxPQUFPdEQsVUFBVSxDQUFDb0QsT0FBTyxDQUFDRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBRTVDLE9BQVEsQ0FBa0MsZ0NBQUEsRUFBQSxJQUFJLENBQUNDLG1CQUFtQixDQUNoRUosT0FBTyxDQUFDRyxFQUFFLENBQ1osQ0FBRSxDQUFRLE9BQUEsQ0FBQSxDQUFBO0VBQ2QsS0FBQyxDQUFDLENBQUE7RUFDSixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0VMLEVBQUFBLGNBQWNBLEdBQUc7RUFDZixJQUFBLEtBQUssSUFBSVIsT0FBTyxHQUFHLENBQUMsRUFBRUEsT0FBTyxHQUFHLElBQUksQ0FBQzdCLEtBQUssQ0FBQ3ZRLE1BQU0sRUFBRW9TLE9BQU8sRUFBRSxFQUFFO0VBQzVELE1BQUEsSUFBSSxJQUFJLENBQUN2QixTQUFTLENBQUN1QixPQUFPLENBQUMsRUFBRTtFQUMzQixRQUFBLElBQUllLFdBQVcsR0FBRyxJQUFJLENBQUNoSixPQUFPLENBQzVCLElBQUksQ0FBQ3dHLGdCQUFnQixDQUFDeUIsT0FBTyxDQUFDLEVBQzlCLElBQUksQ0FBQzFCLFlBQVksQ0FBQzBCLE9BQU8sQ0FDM0IsQ0FBQyxDQUFBO0VBQ0Q7RUFDQSxRQUFBLElBQUksQ0FBQzVCLFlBQVksQ0FBQzRCLE9BQU8sQ0FBQyxDQUFDaFQsU0FBUyxHQUFHLElBQUksQ0FBQ3FSLFNBQVMsQ0FBQzJCLE9BQU8sQ0FBQyxDQUFBO1VBQzlELElBQUksQ0FBQzVCLFlBQVksQ0FBQzRCLE9BQU8sQ0FBQyxDQUFDZ0IsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0VBQ25ELFFBQUEsSUFBSSxDQUFDNUMsWUFBWSxDQUFDNEIsT0FBTyxDQUFDLENBQUM3VSxTQUFTLEdBQ2xDNFYsV0FBVyxJQUFJLEVBQUUsR0FBRyxRQUFRLEdBQUdBLFdBQVcsQ0FBQztFQUMvQyxPQUFBOztRQUNBLElBQUksQ0FBQzNDLFlBQVksQ0FBQzRCLE9BQU8sQ0FBQyxDQUFDaUIsT0FBTyxDQUFDakIsT0FBTyxHQUFHQSxPQUFPLENBQUE7RUFDdEQsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNFTSxFQUFBQSxlQUFlQSxHQUFHO01BQ2hCLElBQUlZLGFBQWEsR0FBRyxLQUFLLENBQUE7TUFDekIsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFBO01BQzFCLElBQUlDLFNBQVMsR0FBRyxLQUFLLENBQUE7RUFFckIsSUFBQSxLQUFLLElBQUlwQixPQUFPLEdBQUcsQ0FBQyxFQUFFQSxPQUFPLEdBQUcsSUFBSSxDQUFDN0IsS0FBSyxDQUFDdlEsTUFBTSxFQUFFb1MsT0FBTyxFQUFFLEVBQUU7UUFDNUQsSUFBSXFCLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDdkIsSUFBSUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDbkQsS0FBSyxDQUFDNkIsT0FBTyxDQUFDLENBQUMsQ0FBQTtFQUN2QyxNQUFBLElBQUl1QixlQUFlLEdBQUcsS0FBSyxDQUFDOztFQUU1QjtFQUNBO1FBQ0EsSUFBSUwsYUFBYSxJQUFJLHlCQUF5QixFQUFFO0VBQzlDO0VBQ0EsUUFBQSxJQUFJUixPQUFPLEdBQUc3RixXQUFXLENBQUNZLHdCQUF3QixDQUFDVixNQUFNLENBQUN6TCxJQUFJLENBQzVELElBQUksQ0FBQzZPLEtBQUssQ0FBQzZCLE9BQU8sQ0FDcEIsQ0FBQyxDQUFBO0VBQ0QsUUFBQSxJQUFJVSxPQUFPLElBQUlBLE9BQU8sQ0FBQ2MsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDNVQsTUFBTSxJQUFJdVQsa0JBQWtCLEVBQUU7RUFDakVFLFVBQUFBLFFBQVEsR0FBRywwQkFBMEIsQ0FBQTtFQUNyQ0UsVUFBQUEsZUFBZSxHQUFHMUcsV0FBVyxDQUFDWSx3QkFBd0IsQ0FBQ1QsV0FBVyxDQUFBO0VBQ2xFc0csVUFBQUEsV0FBVyxHQUFHWixPQUFPLENBQUE7RUFDckJRLFVBQUFBLGFBQWEsR0FBRyxLQUFLLENBQUE7RUFDdkIsU0FBQyxNQUFNO0VBQ0xHLFVBQUFBLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQTtFQUNqQ0UsVUFBQUEsZUFBZSxHQUFHLDRDQUE0QyxDQUFBO1lBQzlERCxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUNuRCxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ3JDLFNBQUE7RUFDRixPQUFBO0VBQ0E7RUFBQSxXQUNLLElBQUlrQixhQUFhLElBQUksc0JBQXNCLEVBQUU7RUFDaEQ7RUFDQSxRQUFBLElBQUlSLE9BQU8sR0FBRzdGLFdBQVcsQ0FBQ2EscUJBQXFCLENBQUNYLE1BQU0sQ0FBQ3pMLElBQUksQ0FDekQsSUFBSSxDQUFDNk8sS0FBSyxDQUFDNkIsT0FBTyxDQUNwQixDQUFDLENBQUE7RUFDRCxRQUFBLElBQUlVLE9BQU8sSUFBSUEsT0FBTyxDQUFDYyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM1VCxNQUFNLElBQUl1VCxrQkFBa0IsRUFBRTtFQUNqRUUsVUFBQUEsUUFBUSxHQUFHLHVCQUF1QixDQUFBO0VBQ2xDRSxVQUFBQSxlQUFlLEdBQUcxRyxXQUFXLENBQUNhLHFCQUFxQixDQUFDVixXQUFXLENBQUE7RUFDL0RzRyxVQUFBQSxXQUFXLEdBQUdaLE9BQU8sQ0FBQTtFQUNyQlEsVUFBQUEsYUFBYSxHQUFHLEtBQUssQ0FBQTtFQUN2QixTQUFDLE1BQU07RUFDTEcsVUFBQUEsUUFBUSxHQUFHLG1CQUFtQixDQUFBO0VBQzlCRSxVQUFBQSxlQUFlLEdBQUcsNENBQTRDLENBQUE7WUFDOURELFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQ25ELEtBQUssQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDLENBQUE7RUFDckMsU0FBQTtFQUNGLE9BQUE7O0VBRUE7RUFDQSxNQUFBLElBQUlxQixRQUFRLElBQUksUUFBUSxJQUFJRCxTQUFTLEtBQUssS0FBSyxFQUFFO0VBQy9DLFFBQUEsS0FBSyxJQUFJSyxhQUFhLElBQUlyRixnQkFBZ0IsRUFBRTtFQUMxQyxVQUFBLElBQUksSUFBSSxDQUFDK0IsS0FBSyxDQUFDNkIsT0FBTyxDQUFDLENBQUNsUyxLQUFLLENBQUMyVCxhQUFhLENBQUNwRixLQUFLLENBQUMsRUFBRTtFQUNsRDtjQUNBLElBQ0VvRixhQUFhLENBQUNsRixhQUFhLElBQzNCeUQsT0FBTyxJQUFJLENBQUMsSUFDWixFQUNFLElBQUksQ0FBQzNCLFNBQVMsQ0FBQzJCLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQ3ZDLElBQUksQ0FBQzNCLFNBQVMsQ0FBQzJCLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQ3JDLElBQUksQ0FBQzNCLFNBQVMsQ0FBQzJCLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQ3JDLElBQUksQ0FBQzNCLFNBQVMsQ0FBQzJCLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLENBQzlDLEVBQ0Q7RUFDQW9CLGNBQUFBLFNBQVMsR0FBR0ssYUFBYSxDQUFBO0VBQ3pCLGNBQUEsTUFBQTtFQUNGLGFBQUE7RUFDRixXQUFBO0VBQ0YsU0FBQTtFQUNGLE9BQUE7UUFFQSxJQUFJTCxTQUFTLEtBQUssS0FBSyxFQUFFO0VBQ3ZCQyxRQUFBQSxRQUFRLEdBQUcsYUFBYSxDQUFBO1VBQ3hCRSxlQUFlLEdBQUcsNkNBQTZDLENBQUM7VUFDaEVELFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQ25ELEtBQUssQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDLENBQUM7O0VBRXBDO1VBQ0EsSUFBSW9CLFNBQVMsQ0FBQzlFLEdBQUcsRUFBRTtFQUNqQjtFQUNBLFVBQUEsSUFBSSxJQUFJLENBQUM2QixLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQ2xTLEtBQUssQ0FBQ3NULFNBQVMsQ0FBQzlFLEdBQUcsQ0FBQyxFQUFFO0VBQzVDOEUsWUFBQUEsU0FBUyxHQUFHLEtBQUssQ0FBQTtFQUNuQixXQUFBO0VBQ0YsU0FBQyxNQUFNO0VBQ0w7WUFDQSxJQUNFcEIsT0FBTyxJQUFJLElBQUksQ0FBQzdCLEtBQUssQ0FBQ3ZRLE1BQU0sR0FBRyxDQUFDLElBQ2hDLElBQUksQ0FBQ3VRLEtBQUssQ0FBQzZCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQ2xTLEtBQUssQ0FBQytNLFdBQVcsQ0FBQ2MsV0FBVyxDQUFDWixNQUFNLENBQUMsRUFDN0Q7RUFDQXFHLFlBQUFBLFNBQVMsR0FBRyxLQUFLLENBQUE7RUFDbkIsV0FBQTtFQUNGLFNBQUE7RUFDRixPQUFBOztFQUVBO1FBQ0EsSUFBSUMsUUFBUSxJQUFJLFFBQVEsRUFBRTtFQUN4QixRQUFBLEtBQUssSUFBSWhLLElBQUksSUFBSXdELFdBQVcsRUFBRTtFQUM1QixVQUFBLElBQUlBLFdBQVcsQ0FBQ3hELElBQUksQ0FBQyxDQUFDMEQsTUFBTSxFQUFFO0VBQzVCLFlBQUEsSUFBSTJGLE9BQU8sR0FBRzdGLFdBQVcsQ0FBQ3hELElBQUksQ0FBQyxDQUFDMEQsTUFBTSxDQUFDekwsSUFBSSxDQUFDLElBQUksQ0FBQzZPLEtBQUssQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDLENBQUE7RUFDaEUsWUFBQSxJQUFJVSxPQUFPLEVBQUU7RUFDWFcsY0FBQUEsUUFBUSxHQUFHaEssSUFBSSxDQUFBO0VBQ2ZrSyxjQUFBQSxlQUFlLEdBQUcxRyxXQUFXLENBQUN4RCxJQUFJLENBQUMsQ0FBQzJELFdBQVcsQ0FBQTtFQUMvQ3NHLGNBQUFBLFdBQVcsR0FBR1osT0FBTyxDQUFBO0VBQ3JCLGNBQUEsTUFBQTtFQUNGLGFBQUE7RUFDRixXQUFBO0VBQ0YsU0FBQTtFQUNGLE9BQUE7O0VBRUE7RUFDQSxNQUFBLElBQ0VXLFFBQVEsSUFBSSx5QkFBeUIsSUFDckNBLFFBQVEsSUFBSSxzQkFBc0IsRUFDbEM7RUFDQUgsUUFBQUEsYUFBYSxHQUFHRyxRQUFRLENBQUE7VUFDeEJGLGtCQUFrQixHQUFHRyxXQUFXLENBQUNFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzVULE1BQU0sQ0FBQTtFQUN2RCxPQUFBOztFQUVBO1FBQ0EsSUFDRSxDQUFDeVQsUUFBUSxJQUFJLGdCQUFnQixJQUMzQkEsUUFBUSxJQUFJLDJCQUEyQixLQUN6Q3JCLE9BQU8sR0FBRyxDQUFDLEtBQ1YsSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFDdEMsSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFDckMsSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLE1BQU0sSUFDckMsSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUNoRDtFQUNBO0VBQ0FxQixRQUFBQSxRQUFRLEdBQUcsUUFBUSxDQUFBO1VBQ25CQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUNuRCxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ25DdUIsUUFBQUEsZUFBZSxHQUFHLEtBQUssQ0FBQTtFQUN6QixPQUFBOztFQUVBO1FBQ0EsSUFBSUYsUUFBUSxJQUFJLGtCQUFrQixFQUFFO0VBQ2xDLFFBQUEsSUFBSVgsT0FBTyxHQUFHN0YsV0FBVyxDQUFDa0IsSUFBSSxDQUFDaEIsTUFBTSxDQUFDekwsSUFBSSxDQUFDLElBQUksQ0FBQzZPLEtBQUssQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDLENBQUE7RUFDL0QsUUFBQSxJQUFJVSxPQUFPLEVBQUU7RUFDWFcsVUFBQUEsUUFBUSxHQUFHLE1BQU0sQ0FBQTtFQUNqQkUsVUFBQUEsZUFBZSxHQUFHMUcsV0FBVyxDQUFDa0IsSUFBSSxDQUFDZixXQUFXLENBQUE7RUFDOUNzRyxVQUFBQSxXQUFXLEdBQUdaLE9BQU8sQ0FBQTtFQUN2QixTQUFBO0VBQ0YsT0FBQTs7RUFFQTtFQUNBLE1BQUEsSUFBSVcsUUFBUSxJQUFJLGtCQUFrQixJQUFJQSxRQUFRLElBQUksa0JBQWtCLEVBQUU7RUFDcEUsUUFBQSxJQUFJckIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMzQixTQUFTLENBQUMyQixPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFO0VBQzNEO0VBQ0EsVUFBQSxJQUFJVSxPQUFPLEdBQUc3RixXQUFXLENBQUNpQixJQUFJLENBQUNmLE1BQU0sQ0FBQ3pMLElBQUksQ0FBQyxJQUFJLENBQUM2TyxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQy9ELFVBQUEsSUFBSVUsT0FBTyxFQUFFO0VBQ1g7RUFDQVcsWUFBQUEsUUFBUSxHQUFHLE1BQU0sQ0FBQTtFQUNqQkMsWUFBQUEsV0FBVyxHQUFHWixPQUFPLENBQUE7RUFDckJhLFlBQUFBLGVBQWUsR0FBRzFHLFdBQVcsQ0FBQ2lCLElBQUksQ0FBQ2QsV0FBVyxDQUFBO0VBQ2hELFdBQUMsTUFBTTtFQUNMO0VBQ0FxRyxZQUFBQSxRQUFRLEdBQUcsUUFBUSxDQUFBO2NBQ25CQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUNuRCxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ25DdUIsWUFBQUEsZUFBZSxHQUFHLEtBQUssQ0FBQTtFQUN6QixXQUFBO0VBQ0YsU0FBQyxNQUFNO0VBQ0w7RUFDQSxVQUFBLElBQUlHLFdBQVcsR0FBRzFCLE9BQU8sR0FBRyxDQUFDLENBQUE7WUFDN0IsTUFBTTJCLGVBQWUsR0FDbkJOLFFBQVEsSUFBSSxrQkFBa0IsR0FBRyxZQUFZLEdBQUcsWUFBWSxDQUFBO1lBQzlELEdBQUc7Y0FDRCxJQUFJLElBQUksQ0FBQ2hELFNBQVMsQ0FBQ3NELGVBQWUsQ0FBQyxJQUFJQSxlQUFlLEVBQUU7RUFDdEQsY0FBQSxJQUFJLENBQUN0RCxTQUFTLENBQUNxRCxXQUFXLENBQUMsR0FBR0MsZUFBZSxDQUFBO0VBQzdDLGNBQUEsSUFBSSxDQUFDbEQsU0FBUyxDQUFDa0QsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBQ3hDLGFBQUE7RUFDQSxZQUFBLElBQUksQ0FBQ3BELGdCQUFnQixDQUFDbUQsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFBO0VBQzFDLFlBQUEsSUFBSSxDQUFDcEQsWUFBWSxDQUFDb0QsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUN2RCxLQUFLLENBQUN1RCxXQUFXLENBQUMsQ0FBQyxDQUFBO0VBRTFEQSxZQUFBQSxXQUFXLEVBQUUsQ0FBQTtFQUNmLFdBQUMsUUFBUUEsV0FBVyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUNyRCxTQUFTLENBQUNxRCxXQUFXLENBQUMsSUFBSSxRQUFRLEVBQUE7RUFDdEUsU0FBQTtFQUNGLE9BQUE7RUFDQTtRQUNBLElBQUksSUFBSSxDQUFDckQsU0FBUyxDQUFDMkIsT0FBTyxDQUFDLElBQUlxQixRQUFRLEVBQUU7RUFDdkMsUUFBQSxJQUFJLENBQUNoRCxTQUFTLENBQUMyQixPQUFPLENBQUMsR0FBR3FCLFFBQVEsQ0FBQTtFQUNsQyxRQUFBLElBQUksQ0FBQzVDLFNBQVMsQ0FBQ3VCLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQTtFQUNoQyxPQUFBO0VBQ0EsTUFBQSxJQUFJLENBQUN6QixnQkFBZ0IsQ0FBQ3lCLE9BQU8sQ0FBQyxHQUFHdUIsZUFBZSxDQUFBO0VBQ2hELE1BQUEsSUFBSSxDQUFDakQsWUFBWSxDQUFDMEIsT0FBTyxDQUFDLEdBQUdzQixXQUFXLENBQUE7RUFDMUMsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0VNLEVBQUFBLCtCQUErQkEsR0FBRztNQUNoQyxJQUFJLENBQUNDLGNBQWMsRUFBRSxDQUFBO01BQ3JCLElBQUksQ0FBQ0Msa0JBQWtCLEVBQUUsQ0FBQTtNQUN6QixJQUFJLENBQUMzQixnQkFBZ0IsRUFBRSxDQUFBO0VBQ3pCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0U0QixFQUFBQSxnQkFBZ0JBLENBQUNDLGNBQWMsRUFBRUMsT0FBTyxFQUFFO0VBQ3hDO0VBQ0EsSUFBQSxJQUFJQyxVQUFVLEdBQUdELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO01BQ2hDLElBQUlFLE1BQU0sR0FBR0gsY0FBYyxDQUFDSSxNQUFNLENBQUMsQ0FBQyxFQUFFRixVQUFVLENBQUMsQ0FBQTtFQUNqRCxJQUFBLElBQUk3SyxJQUFJLEdBQUc0SyxPQUFPLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQTtNQUN6QyxJQUFJSSxhQUFhLEdBQUdILFVBQVUsQ0FBQTtNQUU5QixJQUFJSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO01BQ3BCLElBQUlDLFFBQVEsR0FBRyxLQUFLLENBQUE7TUFDcEIsSUFBSUMsT0FBTyxHQUFHLEtBQUssQ0FBQTtNQUNuQixJQUFJMUYsU0FBUyxHQUFHLEVBQUUsQ0FBQTtFQUNsQixJQUFBLElBQUkyRixXQUFXLEdBQUcsRUFBRSxDQUFDOztFQUVyQkMsSUFBQUEsU0FBUyxFQUFFLE9BQ1RMLGFBQWEsR0FBR0wsY0FBYyxDQUFDcFUsTUFBTSxJQUNyQzJVLFFBQVEsS0FBSyxLQUFLLDZCQUNsQjtFQUNBLE1BQUEsSUFBSW5GLE1BQU0sR0FBRzRFLGNBQWMsQ0FBQ0ksTUFBTSxDQUFDQyxhQUFhLENBQUMsQ0FBQTs7RUFFakQ7RUFDQTtFQUNBLE1BQUEsS0FBSyxJQUFJbkYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUU7RUFDdkQsUUFBQSxJQUFJeUYsR0FBRyxHQUFHbkcsYUFBYSxDQUFDVSxJQUFJLENBQUMsQ0FBQ25DLE1BQU0sQ0FBQ3pMLElBQUksQ0FBQzhOLE1BQU0sQ0FBQyxDQUFBO0VBQ2pELFFBQUEsSUFBSXVGLEdBQUcsRUFBRTtFQUNQTixVQUFBQSxhQUFhLElBQUlNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtFQUM5QixVQUFBLFNBQVM4VSxTQUFTLENBQUE7RUFDcEIsU0FBQTtFQUNGLE9BQUE7O0VBRUE7UUFDQSxJQUFJdEYsTUFBTSxDQUFDdFAsS0FBSyxDQUFDME8sYUFBYSxDQUFDSyxTQUFTLENBQUM5QixNQUFNLENBQUMsRUFBRTtFQUNoRDtFQUNBdUgsUUFBQUEsWUFBWSxFQUFFLENBQUE7RUFDZEQsUUFBQUEsYUFBYSxJQUFJLENBQUMsQ0FBQTtFQUNsQixRQUFBLFNBQVNLLFNBQVMsQ0FBQTtFQUNwQixPQUFBOztFQUVBO1FBQ0EsSUFBSXRGLE1BQU0sQ0FBQ3RQLEtBQUssQ0FBQzBPLGFBQWEsQ0FBQ0ksUUFBUSxDQUFDN0IsTUFBTSxDQUFDLEVBQUU7RUFDL0M7RUFDQTtFQUNBO0VBQ0F1SCxRQUFBQSxZQUFZLEVBQUUsQ0FBQTtFQUNkO1VBQ0EsSUFBSSxDQUFDTCxPQUFPLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQ0YsZ0JBQWdCLENBQUMzRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUU7RUFDeEM7RUFDQSxZQUFBLE9BQU8sS0FBSyxDQUFBO0VBQ2QsV0FBQTtFQUNGLFNBQUE7RUFDQWlGLFFBQUFBLGFBQWEsSUFBSSxDQUFDLENBQUE7RUFDbEIsUUFBQSxTQUFTSyxTQUFTLENBQUE7RUFDcEIsT0FBQTs7RUFFQTtFQUNBLE1BQUEsSUFBSXRGLE1BQU0sQ0FBQ3RQLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtFQUN2QndVLFFBQUFBLFlBQVksRUFBRSxDQUFBO1VBQ2QsSUFBSUEsWUFBWSxJQUFJLENBQUMsRUFBRTtFQUNyQjtZQUNBQyxRQUFRLEdBQUdQLGNBQWMsQ0FBQ0ksTUFBTSxDQUM5QkYsVUFBVSxFQUNWRyxhQUFhLEdBQUdILFVBQ2xCLENBQUMsQ0FBQTtFQUNERyxVQUFBQSxhQUFhLEVBQUUsQ0FBQTtFQUNmLFVBQUEsU0FBU0ssU0FBUyxDQUFBO0VBQ3BCLFNBQUE7RUFDRixPQUFBOztFQUVBO0VBQ0FMLE1BQUFBLGFBQWEsRUFBRSxDQUFBO0VBQ2pCLEtBQUE7O0VBRUE7RUFDQSxJQUFBLElBQUlFLFFBQVEsS0FBSyxLQUFLLEVBQUUsT0FBTyxLQUFLLENBQUM7O0VBRXJDO0VBQ0EsSUFBQSxJQUFJSyxRQUFRLEdBQ1ZQLGFBQWEsR0FBR0wsY0FBYyxDQUFDcFUsTUFBTSxHQUNqQ29VLGNBQWMsQ0FBQ0ksTUFBTSxDQUFDQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEdBQ3ZDLEVBQUUsQ0FBQTs7RUFFUjtNQUNBLElBQUlPLFFBQVEsSUFBSSxHQUFHLEVBQUU7RUFDbkIsTUFBQSxJQUFJeEYsTUFBTSxHQUFHNEUsY0FBYyxDQUFDSSxNQUFNLENBQUNDLGFBQWEsQ0FBQyxDQUFBO1FBQ2pELElBQUlNLEdBQUcsR0FBR25HLGFBQWEsQ0FBQ00sU0FBUyxDQUFDL0IsTUFBTSxDQUFDekwsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDckQsTUFBQSxJQUFJdUYsR0FBRyxFQUFFO0VBQ1A7RUFDQU4sUUFBQUEsYUFBYSxJQUFJTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUE7RUFDOUJrUCxRQUFBQSxTQUFTLENBQUNqUCxJQUFJLENBQUM4VSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7VUFDdEMsSUFBSUEsR0FBRyxDQUFDbkcsYUFBYSxDQUFDTSxTQUFTLENBQUNYLGdCQUFnQixDQUFDLEVBQUU7RUFDakQ7WUFDQXFHLE9BQU8sR0FBR0csR0FBRyxDQUFDbkcsYUFBYSxDQUFDTSxTQUFTLENBQUNYLGdCQUFnQixDQUFDLENBQUE7RUFDekQsU0FBQyxNQUFNO0VBQ0w7RUFDQXFHLFVBQUFBLE9BQU8sR0FBR0QsUUFBUSxDQUFDTSxJQUFJLEVBQUUsQ0FBQTtFQUMzQixTQUFBO0VBQ0YsT0FBQyxNQUFNO0VBQ0w7RUFDQSxRQUFBLE9BQU8sS0FBSyxDQUFBO0VBQ2QsT0FBQTtFQUNGLEtBQUMsTUFBTSxJQUFJRCxRQUFRLElBQUksR0FBRyxFQUFFO0VBQzFCO0VBQ0FKLE1BQUFBLE9BQU8sR0FBR0QsUUFBUSxDQUFDTSxJQUFJLEVBQUUsQ0FBQTs7RUFFekI7RUFDRixLQUFDLE1BQU07RUFDTDs7RUFFQTtFQUNBUixNQUFBQSxhQUFhLEVBQUUsQ0FBQTtRQUVmLElBQUlTLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtRQUN4QkMsV0FBVyxFQUFFLE9BQ1hWLGFBQWEsR0FBR0wsY0FBYyxDQUFDcFUsTUFBTSxJQUNyQ2tWLGdCQUFnQixHQUFHLENBQUMsRUFDcEI7RUFDQSxRQUFBLElBQUkxRixNQUFNLEdBQUc0RSxjQUFjLENBQUNJLE1BQU0sQ0FBQ0MsYUFBYSxDQUFDLENBQUE7O0VBRWpEO0VBQ0EsUUFBQSxJQUFJTSxHQUFHLEdBQUcsTUFBTSxDQUFDclQsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDN0IsUUFBQSxJQUFJdUYsR0FBRyxFQUFFO1lBQ1AsUUFBUUYsV0FBVyxDQUFDN1UsTUFBTTtFQUN4QixZQUFBLEtBQUssQ0FBQztFQUNKNlUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDOFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDeEIsY0FBQSxNQUFBO0VBQU87RUFDVCxZQUFBLEtBQUssQ0FBQztFQUNKRixjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUM4VSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUN4QixjQUFBLE1BQUE7RUFBTztFQUNULFlBQUEsS0FBSyxDQUFDO0VBQUU7Z0JBQ04sSUFBSUYsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDM1UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0VBQzdCMlUsZ0JBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDMFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDaEQsZUFBQyxNQUFNO0VBQ0wsZ0JBQUEsSUFBSUcsZ0JBQWdCLElBQUksQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0VBQ3hDTCxnQkFBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2tCQUNyQjRVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQzhVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzNCLGVBQUE7O0VBQ0EsY0FBQSxNQUFBO0VBQ0YsWUFBQSxLQUFLLENBQUM7RUFDSkYsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDOFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDeEIsY0FBQSxNQUFBO0VBQU87RUFDVCxZQUFBLEtBQUssQ0FBQztFQUNKLGNBQUEsT0FBTyxLQUFLLENBQUE7RUFBRTtFQUNoQixZQUFBLEtBQUssQ0FBQztFQUNKRixjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFBRTtFQUN4QixZQUFBLEtBQUssQ0FBQztFQUNKNFUsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMwVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUM5QyxjQUFBLE1BQUE7RUFBTztFQUNULFlBQUEsS0FBSyxDQUFDO0VBQ0pGLGNBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDMFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDOUMsY0FBQSxNQUFBO0VBQU87RUFDVCxZQUFBO0VBQ0UsY0FBQSxPQUFPLEtBQUssQ0FBQTtFQUFFO0VBQ2xCLFdBQUE7O0VBQ0FOLFVBQUFBLGFBQWEsSUFBSU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxDQUFBO0VBQzlCLFVBQUEsU0FBU21WLFdBQVcsQ0FBQTtFQUN0QixTQUFBOztFQUVBO1VBQ0FKLEdBQUcsR0FBR25HLGFBQWEsQ0FBQ0MsTUFBTSxDQUFDMUIsTUFBTSxDQUFDekwsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDOUMsUUFBQSxJQUFJdUYsR0FBRyxFQUFFO1lBQ1AsUUFBUUYsV0FBVyxDQUFDN1UsTUFBTTtFQUN4QixZQUFBLEtBQUssQ0FBQztFQUNKNlUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQUU7RUFDeEIsWUFBQSxLQUFLLENBQUM7RUFDSjRVLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQzhVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ3hCLGNBQUEsTUFBQTtFQUFPO0VBQ1QsWUFBQSxLQUFLLENBQUM7RUFDSkYsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMwVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUM5QyxjQUFBLE1BQUE7RUFBTztFQUNULFlBQUEsS0FBSyxDQUFDO0VBQ0osY0FBQSxPQUFPLEtBQUssQ0FBQTtFQUFFO0VBQ2hCLFlBQUEsS0FBSyxDQUFDO0VBQ0osY0FBQSxPQUFPLEtBQUssQ0FBQTtFQUFFO0VBQ2hCLFlBQUEsS0FBSyxDQUFDO0VBQ0pGLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUFFO0VBQ3hCLFlBQUEsS0FBSyxDQUFDO0VBQ0o0VSxjQUFBQSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hVLE1BQU0sQ0FBQzBVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQzlDLGNBQUEsTUFBQTtFQUFPO0VBQ1QsWUFBQTtFQUNFLGNBQUEsT0FBTyxLQUFLLENBQUE7RUFBRTtFQUNsQixXQUFBOztFQUNBTixVQUFBQSxhQUFhLElBQUlNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtFQUM5QixVQUFBLFNBQVNtVixXQUFXLENBQUE7RUFDdEIsU0FBQTs7RUFFQTtFQUNBLFFBQUEsSUFBSU4sV0FBVyxDQUFDN1UsTUFBTSxHQUFHLENBQUMsSUFBSXdQLE1BQU0sQ0FBQ3RQLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoRCxJQUFJMlUsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUNqRDRVLFVBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQzNDb1UsVUFBQUEsYUFBYSxFQUFFLENBQUE7RUFDZixVQUFBLFNBQVNVLFdBQVcsQ0FBQTtFQUN0QixTQUFBOztFQUVBO0VBQ0EsUUFBQSxJQUNFLENBQUNOLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLElBQUk2VSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxLQUNuRHdQLE1BQU0sQ0FBQ3RQLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFDbEI7RUFDQSxVQUFBLElBQUkyVSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxFQUFFNlUsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2xENFUsVUFBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQ3JCd1UsVUFBQUEsYUFBYSxFQUFFLENBQUE7RUFDZixVQUFBLFNBQVNVLFdBQVcsQ0FBQTtFQUN0QixTQUFBOztFQUVBO0VBQ0FKLFFBQUFBLEdBQUcsR0FBRyxPQUFPLENBQUNyVCxJQUFJLENBQUM4TixNQUFNLENBQUMsQ0FBQTtFQUMxQjtFQUNBO1VBQ0EsSUFDRXVGLEdBQUcsS0FDRkYsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsSUFDdEI2VSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxJQUN2QjZVLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFDMUI7WUFDQSxPQUFPNlUsV0FBVyxDQUFDN1UsTUFBTSxHQUFHLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUNuRDRVLFVBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQzhVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ3hCTixVQUFBQSxhQUFhLEVBQUUsQ0FBQTtFQUNmLFVBQUEsU0FBU1UsV0FBVyxDQUFBO0VBQ3RCLFNBQUE7O0VBRUE7VUFDQSxJQUNFSixHQUFHLEtBQ0ZGLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLElBQUk2VSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxDQUFDLElBQ3BENlUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ3hCO0VBQ0EsVUFBQSxJQUFJRixXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxFQUFFNlUsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0VBQ2xENFUsVUFBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDOFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDeEJOLFVBQUFBLGFBQWEsRUFBRSxDQUFBO0VBQ2YsVUFBQSxTQUFTVSxXQUFXLENBQUE7RUFDdEIsU0FBQTtFQUNBOztFQUVBO0VBQ0EsUUFBQSxJQUFJM0YsTUFBTSxDQUFDdFAsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLFFBQVEyVSxXQUFXLENBQUM3VSxNQUFNO0VBQ3hCLFlBQUEsS0FBSyxDQUFDO0VBQ0o2VSxjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFBRTtFQUN4QixZQUFBLEtBQUssQ0FBQztFQUNKNFUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQUU7RUFDeEIsWUFBQSxLQUFLLENBQUM7RUFBRTtFQUNONFUsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7RUFDM0MsY0FBQSxJQUFJLENBQUN3VSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMzVSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUVnVixnQkFBZ0IsRUFBRSxDQUFBO0VBQ25ELGNBQUEsTUFBQTtFQUNGLFlBQUEsS0FBSyxDQUFDO0VBQ0pMLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUFFO0VBQ3hCLFlBQUEsS0FBSyxDQUFDO0VBQ0o0VSxjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7RUFDckIsY0FBQSxNQUFBO0VBQU87RUFDVCxZQUFBLEtBQUssQ0FBQztFQUNKNFUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQUU7RUFDeEIsWUFBQSxLQUFLLENBQUM7RUFBRTtnQkFDTixJQUFJNFUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQTtFQUN2Q0EsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7RUFDM0MsY0FBQSxNQUFBO0VBQ0YsWUFBQTtFQUNFLGNBQUEsT0FBTyxLQUFLLENBQUE7RUFBRTtFQUNsQixXQUFBOztFQUNBb1UsVUFBQUEsYUFBYSxFQUFFLENBQUE7RUFDZixVQUFBLFNBQVNVLFdBQVcsQ0FBQTtFQUN0QixTQUFBOztFQUVBO0VBQ0EsUUFBQSxJQUFJM0YsTUFBTSxDQUFDdFAsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0VBQ3ZCLFVBQUEsSUFBSTJVLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLEVBQUU7RUFDM0I7Y0FDQSxPQUFPNlUsV0FBVyxDQUFDN1UsTUFBTSxHQUFHLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUVuRCxZQUFBLElBQUksQ0FBQzRVLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzNVLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRWdWLGdCQUFnQixFQUFFLENBQUE7Y0FFbkQsSUFBSUEsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFO0VBQ3hCTCxjQUFBQSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hVLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUM3QyxhQUFBO0VBQ0YsV0FBQyxNQUFNLElBQUl3VSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxJQUFJNlUsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsRUFBRTtFQUM3RDtFQUNBLFlBQUEsSUFBSTZVLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7RUFDekI7Z0JBQ0EsSUFBSUEsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUNqRDRVLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUN2QixhQUFDLE1BQU07RUFDTDtnQkFDQSxJQUFJNFUsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUM5QzRVLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQ2xELGFBQUE7RUFDRixXQUFDLE1BQU07Y0FDTDZVLGdCQUFnQixFQUFFLENBQUM7RUFDckIsV0FBQTs7WUFFQSxJQUFJQSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUU7RUFDekI7Y0FDQSxPQUFPTCxXQUFXLENBQUM3VSxNQUFNLEdBQUcsQ0FBQyxFQUFFNlUsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQ3JELFdBQUE7RUFFQXdVLFVBQUFBLGFBQWEsRUFBRSxDQUFBO0VBQ2YsVUFBQSxTQUFTVSxXQUFXLENBQUE7RUFDdEIsU0FBQTs7RUFFQTtFQUNBSixRQUFBQSxHQUFHLEdBQUcsSUFBSSxDQUFDclQsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDdkIsUUFBQSxJQUFJdUYsR0FBRyxFQUFFO1lBQ1AsUUFBUUYsV0FBVyxDQUFDN1UsTUFBTTtFQUN4QixZQUFBLEtBQUssQ0FBQztFQUNKNlUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQUU7RUFDeEIsWUFBQSxLQUFLLENBQUM7RUFDSjRVLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQzhVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ3hCLGNBQUEsTUFBQTtFQUFPO0VBQ1QsWUFBQSxLQUFLLENBQUM7RUFDSkYsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMwVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUM5QyxjQUFBLE1BQUE7RUFBTztFQUNULFlBQUEsS0FBSyxDQUFDO0VBQ0osY0FBQSxPQUFPLEtBQUssQ0FBQTtFQUFFO0VBQ2hCLFlBQUEsS0FBSyxDQUFDO0VBQ0osY0FBQSxPQUFPLEtBQUssQ0FBQTtFQUFFO0VBQ2hCLFlBQUEsS0FBSyxDQUFDO0VBQ0pGLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUFFO0VBQ3hCLFlBQUEsS0FBSyxDQUFDO0VBQ0o0VSxjQUFBQSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hVLE1BQU0sQ0FBQzBVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQzlDLGNBQUEsTUFBQTtFQUFPO0VBQ1QsWUFBQTtFQUNFLGNBQUEsT0FBTyxLQUFLLENBQUE7RUFBRTtFQUNsQixXQUFBOztFQUNBTixVQUFBQSxhQUFhLElBQUlNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtFQUM5QixVQUFBLFNBQVNtVixXQUFXLENBQUE7RUFDdEIsU0FBQTtVQUNBLE1BQU0sZUFBZSxDQUFDO0VBQ3hCLE9BQUE7O0VBQ0EsTUFBQSxJQUFJRCxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7RUFDekMsS0FBQTs7TUFFQSxJQUFJTixPQUFPLEtBQUssS0FBSyxFQUFFO0VBQ3JCO1FBQ0EsSUFBSVEsS0FBSyxHQUFHLEtBQUssQ0FBQTtFQUNqQixNQUFBLEtBQUssSUFBSUMsS0FBSyxJQUFJLElBQUksQ0FBQ3pFLFVBQVUsRUFBRTtVQUNqQyxJQUFJeUUsS0FBSyxJQUFJVCxPQUFPLEVBQUU7RUFDcEJRLFVBQUFBLEtBQUssR0FBRyxJQUFJLENBQUE7RUFDWixVQUFBLE1BQUE7RUFDRixTQUFBO0VBQ0YsT0FBQTtFQUNBLE1BQUEsSUFBSUMsS0FBSyxHQUFHRCxLQUFLLEdBQ2IsK0JBQStCLEdBQy9CLGlDQUFpQyxDQUFBO0VBQ3JDLE1BQUEsSUFBSUUsTUFBTSxHQUFJLENBQTZCN0wsMkJBQUFBLEVBQUFBLElBQUssS0FBSThLLE1BQU8sQ0FBQSxvQkFBQSxFQUFzQjlLLElBQUssQ0FBQSxDQUFBLEVBQ3BGeUYsU0FBUyxDQUFDbFAsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDa1AsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHbUcsS0FBSyxHQUFHLEVBQ2pELENBQUEsRUFBQSxFQUFJLElBQUksQ0FBQ25DLG1CQUFtQixDQUMzQnlCLFFBQ0YsQ0FBRSxDQUFBLGtDQUFBLEVBQW9DbEwsSUFBSyxDQUFXLFVBQUEsQ0FBQSxDQUFBO0VBRXRELE1BQUEsSUFBSXlGLFNBQVMsQ0FBQ2xQLE1BQU0sSUFBSSxDQUFDLEVBQUU7RUFDekJzVixRQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ2pWLE1BQU0sQ0FDbkIsQ0FBQSwyQkFBQSxFQUE2Qm9KLElBQUssQ0FBQSxFQUFBLEVBQUl5RixTQUFTLENBQUMsQ0FBQyxDQUFFLFNBQVEsRUFDM0QsQ0FBQSxhQUFBLEVBQWVtRyxLQUFNLENBQUEsRUFBQSxFQUFJbkcsU0FBUyxDQUFDLENBQUMsQ0FBRSxTQUFRLEVBQzlDLENBQUEsMkJBQUEsRUFBNkJ6RixJQUFLLENBQUEsRUFBQSxFQUFJeUYsU0FBUyxDQUFDLENBQUMsQ0FBRSxTQUN0RCxDQUFDLENBQUE7RUFDSCxPQUFBO1FBQ0EsT0FBTztFQUNMb0csUUFBQUEsTUFBTSxFQUFFQSxNQUFNO0VBQ2RDLFFBQUFBLFNBQVMsRUFBRWQsYUFBQUE7U0FDWixDQUFBO09BQ0YsTUFBTSxJQUFJSSxXQUFXLEVBQUU7RUFDdEI7O0VBRUE7RUFDQSxNQUFBLE9BQU9BLFdBQVcsQ0FBQzdVLE1BQU0sR0FBRyxDQUFDLEVBQUU7RUFDN0I2VSxRQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFDdEIsT0FBQTtRQUVBLE9BQU87VUFDTHFWLE1BQU0sRUFBRyxDQUE2QjdMLDJCQUFBQSxFQUFBQSxJQUFLLENBQUk4SyxFQUFBQSxFQUFBQSxNQUFPLENBQXNCOUssb0JBQUFBLEVBQUFBLElBQUssQ0FBSSxFQUFBLEVBQUEsSUFBSSxDQUFDeUosbUJBQW1CLENBQzNHeUIsUUFDRixDQUFFLENBQUEsa0NBQUEsRUFBb0NsTCxJQUFLLENBQUEsSUFBQSxFQUN6Q29MLFdBQVcsQ0FBQyxDQUFDLENBQ2QsQ0FBc0JwTCxvQkFBQUEsRUFBQUEsSUFBSyxDQUMxQm9MLGFBQUFBLEVBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQ2QsQ0FBQSxrQ0FBQSxFQUFvQ3BMLElBQUssQ0FBQSxFQUFBLEVBQUlvTCxXQUFXLENBQUMsQ0FBQyxDQUFFLENBQzNEQSxFQUFBQSxXQUFXLENBQUMsQ0FBQyxDQUNkLENBQUEsRUFBRUEsV0FBVyxDQUFDLENBQUMsQ0FBRSxDQUFzQnBMLG9CQUFBQSxFQUFBQSxJQUFLLENBQzNDb0wsT0FBQUEsRUFBQUEsV0FBVyxDQUFDLENBQUMsQ0FDZCxDQUFBLGtDQUFBLEVBQW9DcEwsSUFBSyxDQUFBLEVBQUEsRUFBSW9MLFdBQVcsQ0FBQyxDQUFDLENBQUUsQ0FBUyxRQUFBLENBQUE7RUFDdEVVLFFBQUFBLFNBQVMsRUFBRWQsYUFBQUE7U0FDWixDQUFBO0VBQ0gsS0FBQTtFQUVBLElBQUEsT0FBTyxLQUFLLENBQUE7RUFDZCxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7SUFDRXZCLG1CQUFtQkEsQ0FBQ2tCLGNBQWMsRUFBRTtNQUNsQyxJQUFJb0IsU0FBUyxHQUFHLEVBQUUsQ0FBQTtFQUNsQixJQUFBLElBQUlDLEtBQUssR0FBRyxFQUFFLENBQUM7TUFDZixJQUFJQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO01BQ2QsSUFBSWxHLE1BQU0sR0FBRzRFLGNBQWMsQ0FBQTtNQUUzQnRULEtBQUssRUFBRSxPQUFPME8sTUFBTSxFQUFFO0VBQ3BCO0VBQ0EsTUFBQSxLQUFLLElBQUlGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxFQUFFO0VBQ3ZELFFBQUEsSUFBSXlGLEdBQUcsR0FBR25HLGFBQWEsQ0FBQ1UsSUFBSSxDQUFDLENBQUNuQyxNQUFNLENBQUN6TCxJQUFJLENBQUM4TixNQUFNLENBQUMsQ0FBQTtFQUNqRCxRQUFBLElBQUl1RixHQUFHLEVBQUU7WUFDUHZGLE1BQU0sR0FBR0EsTUFBTSxDQUFDZ0YsTUFBTSxDQUFDTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUMsQ0FBQTtFQUNyQzBWLFVBQUFBLE1BQU0sSUFBSVgsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxDQUFBO0VBQ3ZCd1YsVUFBQUEsU0FBUyxJQUFJNUcsYUFBYSxDQUFDVSxJQUFJLENBQUMsQ0FBQ2xDLFdBQUFBO0VBQy9CO0VBQUEsV0FDQ2pELE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQzRJLEdBQUcsRUFBRUMsRUFBRSxLQUFLdEQsVUFBVSxDQUFDcUYsR0FBRyxDQUFDL0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQzFELFVBQUEsU0FBU2xTLEtBQUssQ0FBQTtFQUNoQixTQUFBO0VBQ0YsT0FBQTs7RUFFQTtRQUNBLElBQUk2VSxhQUFhLEdBQUduRyxNQUFNLENBQUN0UCxLQUFLLENBQUMwTyxhQUFhLENBQUNJLFFBQVEsQ0FBQzdCLE1BQU0sQ0FBQyxDQUFBO1FBQy9ELElBQUl5SSxjQUFjLEdBQUdwRyxNQUFNLENBQUN0UCxLQUFLLENBQUMwTyxhQUFhLENBQUNLLFNBQVMsQ0FBQzlCLE1BQU0sQ0FBQyxDQUFBO1FBQ2pFLElBQUl5SSxjQUFjLElBQUlELGFBQWEsRUFBRTtVQUNuQyxJQUFJL04sTUFBTSxHQUFHLElBQUksQ0FBQ3VNLGdCQUFnQixDQUFDM0UsTUFBTSxFQUFFb0csY0FBYyxDQUFDLENBQUE7RUFDMUQsUUFBQSxJQUFJaE8sTUFBTSxFQUFFO0VBQ1Y0TixVQUFBQSxTQUFTLEdBQUksQ0FBRUEsRUFBQUEsU0FBVSxHQUFFNU4sTUFBTSxDQUFDME4sTUFBTyxDQUFDLENBQUEsQ0FBQTtZQUMxQzlGLE1BQU0sR0FBR0EsTUFBTSxDQUFDZ0YsTUFBTSxDQUFDNU0sTUFBTSxDQUFDMk4sU0FBUyxDQUFDLENBQUE7WUFDeENHLE1BQU0sSUFBSTlOLE1BQU0sQ0FBQzJOLFNBQVMsQ0FBQTtFQUMxQixVQUFBLFNBQVN6VSxLQUFLLENBQUE7RUFDaEIsU0FBQTtFQUNGLE9BQUE7O0VBRUE7RUFDQSxNQUFBLElBQUlpVSxHQUFHLEdBQUcsY0FBYyxDQUFDclQsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDckMsTUFBQSxJQUFJdUYsR0FBRyxFQUFFO0VBQ1AsUUFBQSxJQUFJYyxVQUFVLEdBQUdkLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtFQUM5QixRQUFBLE1BQU04VixXQUFXLEdBQUdmLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtVQUMxQixNQUFNZ0IsZ0JBQWdCLEdBQUdoQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1VBRW5DdkYsTUFBTSxHQUFHQSxNQUFNLENBQUNnRixNQUFNLENBQUNPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQyxDQUFBOztFQUVyQzs7RUFFQSxRQUFBLE1BQU1nVyxTQUFTLEdBQUdOLE1BQU0sR0FBRyxDQUFDLEdBQUd0QixjQUFjLENBQUNJLE1BQU0sQ0FBQyxDQUFDLEVBQUVrQixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7RUFDdEUsUUFBQSxNQUFNTyxTQUFTLEdBQ2JQLE1BQU0sR0FBR1gsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxHQUFHb1UsY0FBYyxDQUFDcFUsTUFBTSxHQUFHd1AsTUFBTSxHQUFHLEdBQUcsQ0FBQTtFQUUvRCxRQUFBLE1BQU0wRyxrQkFBa0IsR0FBR0QsU0FBUyxDQUFDL1YsS0FBSyxDQUFDNk0sa0JBQWtCLENBQUMsQ0FBQTtFQUM5RCxRQUFBLE1BQU1vSixtQkFBbUIsR0FBR0gsU0FBUyxDQUFDOVYsS0FBSyxDQUFDOE0sbUJBQW1CLENBQUMsQ0FBQTtFQUNoRSxRQUFBLE1BQU1vSixpQkFBaUIsR0FBR0gsU0FBUyxDQUFDL1YsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQ2hELFFBQUEsTUFBTW1XLGtCQUFrQixHQUFHTCxTQUFTLENBQUM5VixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7O0VBRWpEO0VBQ0EsUUFBQSxJQUFJb1csT0FBTyxHQUNULENBQUNGLGlCQUFpQixLQUNqQixDQUFDRixrQkFBa0IsSUFDbEIsQ0FBQyxDQUFDRyxrQkFBa0IsSUFDcEIsQ0FBQyxDQUFDRixtQkFBbUIsQ0FBQyxDQUFBO0VBQzFCLFFBQUEsSUFBSUksUUFBUSxHQUNWLENBQUNGLGtCQUFrQixLQUNsQixDQUFDRixtQkFBbUIsSUFBSSxDQUFDLENBQUNDLGlCQUFpQixJQUFJLENBQUMsQ0FBQ0Ysa0JBQWtCLENBQUMsQ0FBQTs7RUFFdkU7RUFDQSxRQUFBLElBQUlILGdCQUFnQixJQUFJLEdBQUcsSUFBSU8sT0FBTyxJQUFJQyxRQUFRLEVBQUU7RUFDbERELFVBQUFBLE9BQU8sR0FBR0gsbUJBQW1CLENBQUE7RUFDN0JJLFVBQUFBLFFBQVEsR0FBR0wsa0JBQWtCLENBQUE7RUFDL0IsU0FBQTs7RUFFQTtFQUNBLFFBQUEsSUFBSUssUUFBUSxFQUFFO0VBQ1osVUFBQSxJQUFJQyxZQUFZLEdBQUdmLEtBQUssQ0FBQ3pWLE1BQU0sR0FBRyxDQUFDLENBQUE7RUFDbkM7RUFDQSxVQUFBLE9BQU82VixVQUFVLElBQUlXLFlBQVksSUFBSSxDQUFDLEVBQUU7Y0FDdEMsSUFBSWYsS0FBSyxDQUFDZSxZQUFZLENBQUMsQ0FBQ0MsU0FBUyxJQUFJVixnQkFBZ0IsRUFBRTtFQUNyRDs7RUFFQTtFQUNBLGNBQUEsT0FBT1MsWUFBWSxHQUFHZixLQUFLLENBQUN6VixNQUFNLEdBQUcsQ0FBQyxFQUFFO0VBQ3RDLGdCQUFBLE1BQU0wVyxLQUFLLEdBQUdqQixLQUFLLENBQUNrQixHQUFHLEVBQUUsQ0FBQTtrQkFDekJuQixTQUFTLEdBQUksR0FBRWtCLEtBQUssQ0FBQ3BCLE1BQU8sQ0FBRW9CLEVBQUFBLEtBQUssQ0FBQ1osV0FBVyxDQUFDdEIsTUFBTSxDQUNwRCxDQUFDLEVBQ0RrQyxLQUFLLENBQUNFLEtBQ1IsQ0FBRSxDQUFBLEVBQUVwQixTQUFVLENBQUMsQ0FBQSxDQUFBO0VBQ2pCLGVBQUE7O0VBRUE7RUFDQSxjQUFBLElBQUlLLFVBQVUsSUFBSSxDQUFDLElBQUlKLEtBQUssQ0FBQ2UsWUFBWSxDQUFDLENBQUNJLEtBQUssSUFBSSxDQUFDLEVBQUU7RUFDckQ7a0JBQ0FwQixTQUFTLEdBQUksQ0FBdUJPLHFCQUFBQSxFQUFBQSxnQkFBaUIsQ0FBRUEsRUFBQUEsZ0JBQWlCLENBQWtDUCxnQ0FBQUEsRUFBQUEsU0FBVSxDQUFnQ08sOEJBQUFBLEVBQUFBLGdCQUFpQixDQUFFQSxFQUFBQSxnQkFBaUIsQ0FBUSxPQUFBLENBQUEsQ0FBQTtFQUNoTUYsZ0JBQUFBLFVBQVUsSUFBSSxDQUFDLENBQUE7RUFDZkosZ0JBQUFBLEtBQUssQ0FBQ2UsWUFBWSxDQUFDLENBQUNJLEtBQUssSUFBSSxDQUFDLENBQUE7RUFDaEMsZUFBQyxNQUFNO0VBQ0w7RUFDQXBCLGdCQUFBQSxTQUFTLEdBQUksQ0FBdUJPLHFCQUFBQSxFQUFBQSxnQkFBaUIsMkJBQTBCUCxTQUFVLENBQUEsMEJBQUEsRUFBNEJPLGdCQUFpQixDQUFRLE9BQUEsQ0FBQSxDQUFBO0VBQzlJRixnQkFBQUEsVUFBVSxJQUFJLENBQUMsQ0FBQTtFQUNmSixnQkFBQUEsS0FBSyxDQUFDZSxZQUFZLENBQUMsQ0FBQ0ksS0FBSyxJQUFJLENBQUMsQ0FBQTtFQUNoQyxlQUFBOztFQUVBO2dCQUNBLElBQUluQixLQUFLLENBQUNlLFlBQVksQ0FBQyxDQUFDSSxLQUFLLElBQUksQ0FBQyxFQUFFO0VBQ2xDLGdCQUFBLElBQUlGLEtBQUssR0FBR2pCLEtBQUssQ0FBQ2tCLEdBQUcsRUFBRSxDQUFBO0VBQ3ZCbkIsZ0JBQUFBLFNBQVMsR0FBSSxDQUFFa0IsRUFBQUEsS0FBSyxDQUFDcEIsTUFBTyxDQUFBLEVBQUVFLFNBQVUsQ0FBQyxDQUFBLENBQUE7RUFDekNnQixnQkFBQUEsWUFBWSxFQUFFLENBQUE7RUFDaEIsZUFBQTtFQUNGLGFBQUMsTUFBTTtFQUNMO0VBQ0E7RUFDQUEsY0FBQUEsWUFBWSxFQUFFLENBQUE7RUFDaEIsYUFBQTtFQUNGLFdBQUE7RUFDRixTQUFBO0VBQ0E7VUFDQSxJQUFJWCxVQUFVLElBQUlTLE9BQU8sRUFBRTtZQUN6QmIsS0FBSyxDQUFDeFYsSUFBSSxDQUFDO0VBQ1R3VyxZQUFBQSxTQUFTLEVBQUVWLGdCQUFnQjtFQUMzQkQsWUFBQUEsV0FBVyxFQUFFQSxXQUFXO0VBQ3hCYyxZQUFBQSxLQUFLLEVBQUVmLFVBQVU7RUFDakJQLFlBQUFBLE1BQU0sRUFBRUUsU0FBQUE7RUFDVixXQUFDLENBQUMsQ0FBQTtZQUNGQSxTQUFTLEdBQUcsRUFBRSxDQUFDO0VBQ2ZLLFVBQUFBLFVBQVUsR0FBRyxDQUFDLENBQUE7RUFDaEIsU0FBQTs7RUFFQTtFQUNBLFFBQUEsSUFBSUEsVUFBVSxFQUFFO0VBQ2RMLFVBQUFBLFNBQVMsR0FBSSxDQUFBLEVBQUVBLFNBQVUsQ0FBQSxFQUFFTSxXQUFXLENBQUN0QixNQUFNLENBQUMsQ0FBQyxFQUFFcUIsVUFBVSxDQUFFLENBQUMsQ0FBQSxDQUFBO0VBQ2hFLFNBQUE7RUFFQUgsUUFBQUEsTUFBTSxJQUFJWCxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUE7RUFDdkIsUUFBQSxTQUFTYyxLQUFLLENBQUE7RUFDaEIsT0FBQTs7RUFFQTtFQUNBaVUsTUFBQUEsR0FBRyxHQUFHLEtBQUssQ0FBQ3JULElBQUksQ0FBQzhOLE1BQU0sQ0FBQyxDQUFBO0VBQ3hCLE1BQUEsSUFBSXVGLEdBQUcsRUFBRTtVQUNQLElBQUk4QixRQUFRLEdBQUcsS0FBSyxDQUFBO0VBQ3BCLFFBQUEsSUFBSUwsWUFBWSxHQUFHZixLQUFLLENBQUN6VixNQUFNLEdBQUcsQ0FBQyxDQUFBO0VBQ25DO0VBQ0EsUUFBQSxPQUFPLENBQUM2VyxRQUFRLElBQUlMLFlBQVksSUFBSSxDQUFDLEVBQUU7WUFDckMsSUFBSWYsS0FBSyxDQUFDZSxZQUFZLENBQUMsQ0FBQ0MsU0FBUyxJQUFJLEdBQUcsRUFBRTtFQUN4Qzs7RUFFQTtFQUNBLFlBQUEsT0FBT0QsWUFBWSxHQUFHZixLQUFLLENBQUN6VixNQUFNLEdBQUcsQ0FBQyxFQUFFO0VBQ3RDLGNBQUEsTUFBTTBXLEtBQUssR0FBR2pCLEtBQUssQ0FBQ2tCLEdBQUcsRUFBRSxDQUFBO2dCQUN6Qm5CLFNBQVMsR0FBSSxHQUFFa0IsS0FBSyxDQUFDcEIsTUFBTyxDQUFFb0IsRUFBQUEsS0FBSyxDQUFDWixXQUFXLENBQUN0QixNQUFNLENBQ3BELENBQUMsRUFDRGtDLEtBQUssQ0FBQ0UsS0FDUixDQUFFLENBQUEsRUFBRXBCLFNBQVUsQ0FBQyxDQUFBLENBQUE7RUFDakIsYUFBQTs7RUFFQTtjQUNBQSxTQUFTLEdBQUksQ0FBNkRBLDJEQUFBQSxFQUFBQSxTQUFVLENBQXFDLG9DQUFBLENBQUEsQ0FBQTtFQUN6SCxZQUFBLElBQUlrQixLQUFLLEdBQUdqQixLQUFLLENBQUNrQixHQUFHLEVBQUUsQ0FBQTtFQUN2Qm5CLFlBQUFBLFNBQVMsR0FBSSxDQUFFa0IsRUFBQUEsS0FBSyxDQUFDcEIsTUFBTyxDQUFBLEVBQUVFLFNBQVUsQ0FBQyxDQUFBLENBQUE7RUFDekNxQixZQUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFBO0VBQ2pCLFdBQUMsTUFBTTtFQUNMO0VBQ0E7RUFDQUwsWUFBQUEsWUFBWSxFQUFFLENBQUE7RUFDaEIsV0FBQTtFQUNGLFNBQUE7O0VBRUE7VUFDQSxJQUFJLENBQUNLLFFBQVEsRUFBRTtZQUNicEIsS0FBSyxDQUFDeFYsSUFBSSxDQUFDO0VBQ1R3VyxZQUFBQSxTQUFTLEVBQUUsR0FBRztFQUNkWCxZQUFBQSxXQUFXLEVBQUUsSUFBSTtFQUNqQmMsWUFBQUEsS0FBSyxFQUFFLENBQUM7RUFDUnRCLFlBQUFBLE1BQU0sRUFBRUUsU0FBQUE7RUFDVixXQUFDLENBQUMsQ0FBQTtZQUNGQSxTQUFTLEdBQUcsRUFBRSxDQUFDO0VBQ2pCLFNBQUE7O0VBRUFFLFFBQUFBLE1BQU0sSUFBSVgsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxDQUFBO1VBQ3ZCd1AsTUFBTSxHQUFHQSxNQUFNLENBQUNnRixNQUFNLENBQUNPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQyxDQUFBO0VBQ3JDLFFBQUEsU0FBU2MsS0FBSyxDQUFBO0VBQ2hCLE9BQUE7O0VBRUE7UUFDQWlVLEdBQUcsR0FBR25HLGFBQWEsQ0FBQ08sT0FBTyxDQUFDaEMsTUFBTSxDQUFDekwsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDL0MsTUFBQSxJQUFJdUYsR0FBRyxFQUFFO1VBQ1B2RixNQUFNLEdBQUdBLE1BQU0sQ0FBQ2dGLE1BQU0sQ0FBQ08sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxDQUFDLENBQUE7RUFDckMwVixRQUFBQSxNQUFNLElBQUlYLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtVQUN2QndWLFNBQVMsSUFBSTVHLGFBQWEsQ0FBQ08sT0FBTyxDQUFDL0IsV0FBVyxDQUFDakQsT0FBTyxDQUNwRCxZQUFZLEVBQ1osQ0FBQzRJLEdBQUcsRUFBRUMsRUFBRSxLQUFLdEQsVUFBVSxDQUFDcUYsR0FBRyxDQUFDL0IsRUFBRSxDQUFDLENBQ2pDLENBQUMsQ0FBQTtFQUNELFFBQUEsU0FBU2xTLEtBQUssQ0FBQTtFQUNoQixPQUFBO0VBQ0EsTUFBQSxNQUFNLGdCQUFnQixDQUFBO0VBQ3hCLEtBQUE7O0VBRUE7TUFDQSxPQUFPMlUsS0FBSyxDQUFDelYsTUFBTSxFQUFFO0VBQ25CLE1BQUEsTUFBTTBXLEtBQUssR0FBR2pCLEtBQUssQ0FBQ2tCLEdBQUcsRUFBRSxDQUFBO1FBQ3pCbkIsU0FBUyxHQUFJLEdBQUVrQixLQUFLLENBQUNwQixNQUFPLENBQUVvQixFQUFBQSxLQUFLLENBQUNaLFdBQVcsQ0FBQ3RCLE1BQU0sQ0FDcEQsQ0FBQyxFQUNEa0MsS0FBSyxDQUFDRSxLQUNSLENBQUUsQ0FBQSxFQUFFcEIsU0FBVSxDQUFDLENBQUEsQ0FBQTtFQUNqQixLQUFBO0VBRUEsSUFBQSxPQUFPQSxTQUFTLENBQUE7RUFDbEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDRXZCLEVBQUFBLGNBQWNBLEdBQUc7TUFDZixJQUFJLENBQUNwRCxTQUFTLEdBQUcsSUFBSXlCLEtBQUssQ0FBQyxJQUFJLENBQUMvQixLQUFLLENBQUN2USxNQUFNLENBQUMsQ0FBQTtFQUM3QyxJQUFBLEtBQUssSUFBSUQsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLElBQUksQ0FBQzhRLFNBQVMsQ0FBQzdRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7RUFDOUMsTUFBQSxJQUFJLENBQUM4USxTQUFTLENBQUM5USxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUE7RUFDM0IsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDRW1VLEVBQUFBLGtCQUFrQkEsR0FBRztFQUNuQjtFQUNBO0VBQ0E7RUFDQSxJQUFBLElBQUk0QyxTQUFTLEdBQUcsSUFBSSxDQUFDMVksQ0FBQyxDQUFDMlksaUJBQWlCLEdBQUcsSUFBSSxDQUFDeEcsS0FBSyxDQUFDdlEsTUFBTSxDQUFBO0VBQzVELElBQUEsSUFBSThXLFNBQVMsRUFBRTtFQUNiO0VBQ0E7UUFDQSxJQUFJRSxnQkFBZ0IsR0FBRyxDQUFDLENBQUE7UUFDeEIsT0FDRUEsZ0JBQWdCLElBQUksSUFBSSxDQUFDekcsS0FBSyxDQUFDdlEsTUFBTSxJQUNyQ2dYLGdCQUFnQixJQUFJLElBQUksQ0FBQ3hHLFlBQVksQ0FBQ3hRLE1BQU0sSUFDNUMsSUFBSSxDQUFDd1EsWUFBWSxDQUFDd0csZ0JBQWdCLENBQUM7RUFBSTtFQUN2QyxNQUFBLElBQUksQ0FBQ3pHLEtBQUssQ0FBQ3lHLGdCQUFnQixDQUFDLElBQzFCLElBQUksQ0FBQ3hHLFlBQVksQ0FBQ3dHLGdCQUFnQixDQUFDLENBQUNDLFdBQVcsRUFDakQ7RUFDQUQsUUFBQUEsZ0JBQWdCLEVBQUUsQ0FBQTtFQUNwQixPQUFBOztFQUVBO1FBQ0EsSUFBSUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQ0UsQ0FBQ0EsZUFBZSxHQUFHLElBQUksQ0FBQzNHLEtBQUssQ0FBQ3ZRLE1BQU0sSUFDcEMsQ0FBQ2tYLGVBQWUsR0FBRyxJQUFJLENBQUMxRyxZQUFZLENBQUN4USxNQUFNLElBQzNDLElBQUksQ0FBQ3VRLEtBQUssQ0FBQyxJQUFJLENBQUNBLEtBQUssQ0FBQ3ZRLE1BQU0sR0FBR2tYLGVBQWUsQ0FBQyxJQUM3QyxJQUFJLENBQUMxRyxZQUFZLENBQUMsSUFBSSxDQUFDQSxZQUFZLENBQUN4USxNQUFNLEdBQUdrWCxlQUFlLENBQUMsQ0FDMURELFdBQVcsRUFDaEI7RUFDQUMsUUFBQUEsZUFBZSxFQUFFLENBQUE7RUFDbkIsT0FBQTtFQUVBLE1BQUEsSUFBSUMsYUFBYSxHQUNmLElBQUksQ0FBQzVHLEtBQUssQ0FBQ3ZRLE1BQU0sR0FBR2tYLGVBQWUsR0FBRyxDQUFDLEdBQUdGLGdCQUFnQixDQUFBO1FBQzVELElBQUlHLGFBQWEsR0FBRyxDQUFDTCxTQUFTLEVBQUVLLGFBQWEsR0FBRyxDQUFDTCxTQUFTLENBQUE7RUFDMUQsTUFBQSxJQUFJSyxhQUFhLEdBQUcsQ0FBQyxFQUFFQSxhQUFhLEdBQUcsQ0FBQyxDQUFBO1FBRXhDLElBQUlDLFVBQVUsR0FBRyxFQUFFLENBQUE7RUFDbkIsTUFBQSxLQUFLLElBQUl2RSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdzRSxhQUFhLEdBQUdMLFNBQVMsRUFBRWpFLENBQUMsRUFBRSxFQUFFO0VBQ2xEdUUsUUFBQUEsVUFBVSxDQUFDblgsSUFBSSxDQUFDLElBQUksQ0FBQ3VRLFlBQVksQ0FBQ3dHLGdCQUFnQixHQUFHbkUsQ0FBQyxDQUFDLENBQUNvRSxXQUFXLENBQUMsQ0FBQTtFQUN0RSxPQUFBO1FBQ0EsSUFBSSxDQUFDSSxXQUFXLENBQUNMLGdCQUFnQixFQUFFRyxhQUFhLEVBQUVDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQTtFQUN0RSxLQUFDLE1BQU07RUFDTDtFQUNBLE1BQUEsS0FBSyxJQUFJRSxJQUFJLEdBQUcsQ0FBQyxFQUFFQSxJQUFJLEdBQUcsSUFBSSxDQUFDOUcsWUFBWSxDQUFDeFEsTUFBTSxFQUFFc1gsSUFBSSxFQUFFLEVBQUU7RUFDMUQsUUFBQSxJQUFJbFosQ0FBQyxHQUFHLElBQUksQ0FBQ29TLFlBQVksQ0FBQzhHLElBQUksQ0FBQyxDQUFBO0VBQy9CLFFBQUEsSUFBSUMsRUFBRSxHQUFHblosQ0FBQyxDQUFDNlksV0FBVyxDQUFBO1VBQ3RCLElBQUksSUFBSSxDQUFDMUcsS0FBSyxDQUFDK0csSUFBSSxDQUFDLEtBQUtDLEVBQUUsRUFBRTtFQUMzQjtFQUNBLFVBQUEsSUFBSSxDQUFDaEgsS0FBSyxDQUFDK0csSUFBSSxDQUFDLEdBQUdDLEVBQUUsQ0FBQTtFQUNyQixVQUFBLElBQUksQ0FBQzFHLFNBQVMsQ0FBQ3lHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQTtFQUM3QixTQUFBO0VBQ0YsT0FBQTtFQUNGLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0lBQ0VFLG1CQUFtQkEsQ0FBQ0MsR0FBRyxFQUFFO01BQ3ZCLElBQUksQ0FBQ0EsR0FBRyxFQUFFLE9BQUE7O0VBRVY7TUFDQSxJQUFJLENBQUN2RCxrQkFBa0IsRUFBRSxDQUFBO01BRXpCLElBQUl3RCxlQUFlLEdBQUcsS0FBSyxDQUFBO0VBQzNCOztFQUVBLElBQUEsSUFBSUMsU0FBUyxHQUFHRixHQUFHLENBQUNHLEdBQUcsR0FBRyxDQUFDLEdBQUdILEdBQUcsQ0FBQ0ksR0FBRyxHQUFHSixHQUFHLENBQUNJLEdBQUcsR0FBRyxDQUFDLENBQUE7RUFDbkQsSUFBQSxRQUFRLElBQUksQ0FBQ3BILFNBQVMsQ0FBQ2tILFNBQVMsQ0FBQztFQUMvQixNQUFBLEtBQUssTUFBTTtFQUNURCxRQUFBQSxlQUFlLEdBQUcsTUFBTSxDQUFBO0VBQ3hCLFFBQUEsTUFBQTtFQUNGLE1BQUEsS0FBSyxNQUFNO0VBQ1RBLFFBQUFBLGVBQWUsR0FBRyxNQUFNLENBQUE7RUFDeEIsUUFBQSxNQUFBO0VBQ0YsTUFBQSxLQUFLLGdCQUFnQjtFQUNuQkEsUUFBQUEsZUFBZSxHQUFHLGdCQUFnQixDQUFBO0VBQ2xDLFFBQUEsTUFBQTtFQUNKLEtBQUE7TUFFQSxJQUFJbkgsS0FBSyxHQUFHLElBQUksQ0FBQ0EsS0FBSyxDQUFDa0gsR0FBRyxDQUFDSSxHQUFHLENBQUMsQ0FDNUIxTixPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUN0QnZLLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0VBQzFCLElBQUEsSUFBSTJRLEtBQUssQ0FBQ3ZRLE1BQU0sSUFBSSxDQUFDLEVBQUU7RUFDckI7UUFDQSxJQUFJLENBQUN1UyxnQkFBZ0IsRUFBRSxDQUFBO0VBQ3ZCLE1BQUEsT0FBQTtFQUNGLEtBQUE7RUFDQSxJQUFBLElBQUksQ0FBQzhFLFdBQVcsQ0FBQ0ksR0FBRyxDQUFDSSxHQUFHLEVBQUUsQ0FBQyxFQUFFdEgsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO01BQ3pDa0gsR0FBRyxDQUFDSSxHQUFHLEVBQUUsQ0FBQTtNQUNUSixHQUFHLENBQUNHLEdBQUcsR0FBRyxDQUFDLENBQUE7RUFFWCxJQUFBLElBQUlGLGVBQWUsRUFBRTtFQUNuQjtRQUNBLElBQUk1RSxPQUFPLEdBQUc3RixXQUFXLENBQUN5SyxlQUFlLENBQUMsQ0FBQ3ZLLE1BQU0sQ0FBQ3pMLElBQUksQ0FDcEQsSUFBSSxDQUFDNk8sS0FBSyxDQUFDa0gsR0FBRyxDQUFDSSxHQUFHLEdBQUcsQ0FBQyxDQUN4QixDQUFDLENBQUE7RUFDRCxNQUFBLElBQUkvRSxPQUFPLEVBQUU7RUFDWDtFQUNBLFFBQUEsSUFBSUEsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQ2Q7O0VBRUE7WUFDQSxJQUFJNEUsZUFBZSxJQUFJLE1BQU0sRUFBRTtFQUM3QjVFLFlBQUFBLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBR0EsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDM0ksT0FBTyxDQUFDLFNBQVMsRUFBR3ZDLE1BQU0sSUFBSztnQkFDckQsT0FBT2tRLFFBQVEsQ0FBQ2xRLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUNoQyxhQUFDLENBQUMsQ0FBQTtFQUNKLFdBQUE7WUFDQSxJQUFJLENBQUMySSxLQUFLLENBQUNrSCxHQUFHLENBQUNJLEdBQUcsQ0FBQyxHQUFJLENBQUEsRUFBRS9FLE9BQU8sQ0FBQyxDQUFDLENBQUUsQ0FBQSxFQUFFLElBQUksQ0FBQ3ZDLEtBQUssQ0FBQ2tILEdBQUcsQ0FBQ0ksR0FBRyxDQUFFLENBQUMsQ0FBQSxDQUFBO1lBQzNELElBQUksQ0FBQ2hILFNBQVMsQ0FBQzRHLEdBQUcsQ0FBQ0ksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO1lBQzlCSixHQUFHLENBQUNHLEdBQUcsR0FBRzlFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzlTLE1BQU0sQ0FBQTtFQUM3QixTQUFDLE1BQU07RUFDTDtZQUNBLElBQUksQ0FBQ3VRLEtBQUssQ0FBQ2tILEdBQUcsQ0FBQ0ksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUM1QixJQUFJLENBQUNoSCxTQUFTLENBQUM0RyxHQUFHLENBQUNJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDcEMsU0FBQTtFQUNGLE9BQUE7RUFDRixLQUFBO01BQ0EsSUFBSSxDQUFDdEYsZ0JBQWdCLEVBQUUsQ0FBQTtFQUN6QixHQUFBOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0V3RixFQUFBQSxZQUFZQSxHQUFvQjtFQUFBLElBQUEsSUFBbkJDLFNBQVMsR0FBQXZWLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsS0FBSyxDQUFBO0VBQzVCLElBQUEsTUFBTXdPLFNBQVMsR0FBRzVQLE1BQU0sQ0FBQzBXLFlBQVksRUFBRSxDQUFBO01BQ3ZDLElBQUlFLFNBQVMsR0FBR0QsU0FBUyxHQUFHL0csU0FBUyxDQUFDaUgsVUFBVSxHQUFHakgsU0FBUyxDQUFDa0gsU0FBUyxDQUFBO0VBQ3RFLElBQUEsSUFBSSxDQUFDRixTQUFTLEVBQUUsT0FBTyxJQUFJLENBQUE7TUFDM0IsSUFBSXZDLE1BQU0sR0FBR3NDLFNBQVMsR0FBRy9HLFNBQVMsQ0FBQ21ILFlBQVksR0FBR25ILFNBQVMsQ0FBQ29ILFdBQVcsQ0FBQTtFQUN2RSxJQUFBLElBQUlKLFNBQVMsSUFBSSxJQUFJLENBQUM3WixDQUFDLEVBQUU7UUFDdkIsSUFBSXNYLE1BQU0sR0FBRyxJQUFJLENBQUNuRixLQUFLLENBQUN2USxNQUFNLEVBQzVCLE9BQU87RUFDTDZYLFFBQUFBLEdBQUcsRUFBRW5DLE1BQU07RUFDWGtDLFFBQUFBLEdBQUcsRUFBRSxDQUFBO1NBQ04sQ0FBQTtRQUNILE9BQU87VUFDTEMsR0FBRyxFQUFFbkMsTUFBTSxHQUFHLENBQUM7VUFDZmtDLEdBQUcsRUFBRSxJQUFJLENBQUNySCxLQUFLLENBQUNtRixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMxVixNQUFBQTtTQUM3QixDQUFBO0VBQ0gsS0FBQTtNQUVBLElBQUk0WCxHQUFHLEdBQUcsSUFBSSxDQUFDVSxhQUFhLENBQUNMLFNBQVMsRUFBRXZDLE1BQU0sQ0FBQyxDQUFBO0VBQy9DLElBQUEsSUFBSWtDLEdBQUcsS0FBSyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUM7O0VBRTlCO01BQ0EsSUFBSVcsSUFBSSxHQUFHTixTQUFTLENBQUE7RUFDcEIsSUFBQSxPQUFPTSxJQUFJLENBQUNyWixhQUFhLElBQUksSUFBSSxDQUFDZCxDQUFDLEVBQUU7UUFDbkNtYSxJQUFJLEdBQUdBLElBQUksQ0FBQ3JaLGFBQWEsQ0FBQTtFQUMzQixLQUFBO01BRUEsSUFBSTJZLEdBQUcsR0FBRyxDQUFDLENBQUE7RUFDWDtFQUNBO0VBQ0EsSUFBQSxJQUNFVSxJQUFJLENBQUNsRixPQUFPLElBQ1prRixJQUFJLENBQUNsRixPQUFPLENBQUNqQixPQUFPLEtBQ25CLENBQUNtRyxJQUFJLENBQUNDLGVBQWUsSUFDcEJELElBQUksQ0FBQ0MsZUFBZSxDQUFDbkYsT0FBTyxDQUFDakIsT0FBTyxJQUFJbUcsSUFBSSxDQUFDbEYsT0FBTyxDQUFDakIsT0FBTyxDQUFDLEVBQy9EO1FBQ0F5RixHQUFHLEdBQUdDLFFBQVEsQ0FBQ1MsSUFBSSxDQUFDbEYsT0FBTyxDQUFDakIsT0FBTyxDQUFDLENBQUE7RUFDdEMsS0FBQyxNQUFNO1FBQ0wsT0FBT21HLElBQUksQ0FBQ0MsZUFBZSxFQUFFO0VBQzNCWCxRQUFBQSxHQUFHLEVBQUUsQ0FBQTtVQUNMVSxJQUFJLEdBQUdBLElBQUksQ0FBQ0MsZUFBZSxDQUFBO0VBQzdCLE9BQUE7RUFDRixLQUFBO01BQ0EsT0FBTztFQUFFWCxNQUFBQSxHQUFHLEVBQUVBLEdBQUc7RUFBRUQsTUFBQUEsR0FBRyxFQUFFQSxHQUFHO0VBQUVXLE1BQUFBLElBQUksRUFBRU4sU0FBQUE7T0FBVyxDQUFBO0VBQ2hELEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0VLLEVBQUFBLGFBQWFBLENBQUNMLFNBQVMsRUFBRXZDLE1BQU0sRUFBRTtNQUMvQixJQUFJNkMsSUFBSSxHQUFHTixTQUFTLENBQUE7RUFDcEIsSUFBQSxJQUFJTCxHQUFHLENBQUE7RUFDUDtNQUNBLE9BQU9XLElBQUksSUFBSUEsSUFBSSxDQUFDcEgsVUFBVSxJQUFJLElBQUksQ0FBQy9TLENBQUMsRUFBRTtRQUN4Q21hLElBQUksR0FBR0EsSUFBSSxDQUFDcEgsVUFBVSxDQUFBO0VBQ3hCLEtBQUE7RUFDQSxJQUFBLElBQUlvSCxJQUFJLElBQUksSUFBSSxFQUFFLE9BQU8sSUFBSSxDQUFBOztFQUU3QjtFQUNBO0VBQ0E7RUFDQTtNQUNBLElBQUlOLFNBQVMsQ0FBQ1EsUUFBUSxLQUFLQyxJQUFJLENBQUNDLFNBQVMsSUFBSWpELE1BQU0sS0FBSyxDQUFDLEVBQUU7RUFDekQ7RUFDQTtFQUNBO0VBQ0E7RUFDQWtDLE1BQUFBLEdBQUcsR0FBR2xDLE1BQU0sQ0FBQTtFQUNaNkMsTUFBQUEsSUFBSSxHQUFHTixTQUFTLENBQUE7RUFDbEIsS0FBQyxNQUFNLElBQUl2QyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCNkMsSUFBSSxHQUFHTixTQUFTLENBQUNoRyxVQUFVLENBQUN5RCxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7RUFDdkNrQyxNQUFBQSxHQUFHLEdBQUdXLElBQUksQ0FBQ3RCLFdBQVcsQ0FBQ2pYLE1BQU0sQ0FBQTtFQUMvQixLQUFBO0VBQ0EsSUFBQSxPQUFPdVksSUFBSSxDQUFDcEgsVUFBVSxJQUFJLElBQUksQ0FBQy9TLENBQUMsRUFBRTtRQUNoQyxJQUFJbWEsSUFBSSxDQUFDQyxlQUFlLEVBQUU7VUFDeEJELElBQUksR0FBR0EsSUFBSSxDQUFDQyxlQUFlLENBQUE7RUFDM0JaLFFBQUFBLEdBQUcsSUFBSVcsSUFBSSxDQUFDdEIsV0FBVyxDQUFDalgsTUFBTSxDQUFBO0VBQ2hDLE9BQUMsTUFBTTtVQUNMdVksSUFBSSxHQUFHQSxJQUFJLENBQUNwSCxVQUFVLENBQUE7RUFDeEIsT0FBQTtFQUNGLEtBQUE7RUFDQSxJQUFBLE9BQU95RyxHQUFHLENBQUE7RUFDWixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFZ0IsRUFBQUEsb0JBQW9CQSxDQUFDZixHQUFHLEVBQUVELEdBQUcsRUFBcUI7RUFBQSxJQUFBLElBQW5CaUIsU0FBUyxHQUFBcFcsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxLQUFLLENBQUE7RUFDOUMsSUFBQSxJQUFJb1YsR0FBRyxJQUFJLElBQUksQ0FBQ3JILFlBQVksQ0FBQ3hRLE1BQU0sRUFBRTtFQUNuQztFQUNBNlgsTUFBQUEsR0FBRyxHQUFHLElBQUksQ0FBQ3JILFlBQVksQ0FBQ3hRLE1BQU0sR0FBRyxDQUFDLENBQUE7UUFDbEM0WCxHQUFHLEdBQUcsSUFBSSxDQUFDckgsS0FBSyxDQUFDc0gsR0FBRyxDQUFDLENBQUM3WCxNQUFNLENBQUE7RUFDOUIsS0FBQTtNQUNBLElBQUk0WCxHQUFHLEdBQUcsSUFBSSxDQUFDckgsS0FBSyxDQUFDc0gsR0FBRyxDQUFDLENBQUM3WCxNQUFNLEVBQUU7UUFDaEM0WCxHQUFHLEdBQUcsSUFBSSxDQUFDckgsS0FBSyxDQUFDc0gsR0FBRyxDQUFDLENBQUM3WCxNQUFNLENBQUE7RUFDOUIsS0FBQTtFQUNBLElBQUEsTUFBTW1SLFVBQVUsR0FBRyxJQUFJLENBQUNYLFlBQVksQ0FBQ3FILEdBQUcsQ0FBQyxDQUFBO0VBQ3pDLElBQUEsSUFBSVUsSUFBSSxHQUFHcEgsVUFBVSxDQUFDZSxVQUFVLENBQUE7TUFFaEMsSUFBSTRHLGdCQUFnQixHQUFHLEtBQUssQ0FBQTtFQUM1QjtFQUNBLElBQUEsSUFBSUMsRUFBRSxHQUFHO1FBQ1BSLElBQUksRUFBRXBILFVBQVUsQ0FBQ2UsVUFBVSxHQUFHZixVQUFVLENBQUNlLFVBQVUsR0FBR2YsVUFBVTtFQUNoRXVFLE1BQUFBLE1BQU0sRUFBRSxDQUFBO09BQ1QsQ0FBQTtNQUVELE9BQU82QyxJQUFJLElBQUlwSCxVQUFVLEVBQUU7UUFDekIsSUFBSSxDQUFDMkgsZ0JBQWdCLElBQUlQLElBQUksQ0FBQ0UsUUFBUSxLQUFLQyxJQUFJLENBQUNDLFNBQVMsRUFBRTtFQUN6RCxRQUFBLElBQUlKLElBQUksQ0FBQ1MsU0FBUyxDQUFDaFosTUFBTSxJQUFJNFgsR0FBRyxFQUFFO1lBQ2hDLElBQUlpQixTQUFTLElBQUlOLElBQUksQ0FBQ1MsU0FBUyxDQUFDaFosTUFBTSxJQUFJNFgsR0FBRyxFQUFFO0VBQzdDO0VBQ0E7RUFDQW1CLFlBQUFBLEVBQUUsR0FBRztFQUFFUixjQUFBQSxJQUFJLEVBQUVBLElBQUk7RUFBRTdDLGNBQUFBLE1BQU0sRUFBRWtDLEdBQUFBO2VBQUssQ0FBQTtFQUNoQ0EsWUFBQUEsR0FBRyxHQUFHLENBQUMsQ0FBQTtFQUNULFdBQUMsTUFBTTtjQUNMLE9BQU87RUFBRVcsY0FBQUEsSUFBSSxFQUFFQSxJQUFJO0VBQUU3QyxjQUFBQSxNQUFNLEVBQUVrQyxHQUFBQTtlQUFLLENBQUE7RUFDcEMsV0FBQTtFQUNGLFNBQUMsTUFBTTtFQUNMQSxVQUFBQSxHQUFHLElBQUlXLElBQUksQ0FBQ1MsU0FBUyxDQUFDaFosTUFBTSxDQUFBO0VBQzlCLFNBQUE7RUFDRixPQUFBO0VBQ0EsTUFBQSxJQUFJLENBQUM4WSxnQkFBZ0IsSUFBSVAsSUFBSSxDQUFDckcsVUFBVSxFQUFFO1VBQ3hDcUcsSUFBSSxHQUFHQSxJQUFJLENBQUNyRyxVQUFVLENBQUE7RUFDeEIsT0FBQyxNQUFNLElBQUlxRyxJQUFJLENBQUMzRyxXQUFXLEVBQUU7RUFDM0JrSCxRQUFBQSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7VUFDeEJQLElBQUksR0FBR0EsSUFBSSxDQUFDM0csV0FBVyxDQUFBO0VBQ3pCLE9BQUMsTUFBTTtFQUNMa0gsUUFBQUEsZ0JBQWdCLEdBQUcsSUFBSSxDQUFBO1VBQ3ZCUCxJQUFJLEdBQUdBLElBQUksQ0FBQ3BILFVBQVUsQ0FBQTtFQUN4QixPQUFBO0VBQ0YsS0FBQTs7RUFFQTtFQUNBO0VBQ0EsSUFBQSxPQUFPNEgsRUFBRSxDQUFBO0VBQ1gsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0lBQ0VFLFlBQVlBLENBQUNuYixLQUFLLEVBQWlCO0VBQUEsSUFBQSxJQUFmQyxNQUFNLEdBQUEwRSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtNQUMvQixJQUFJLENBQUMzRSxLQUFLLEVBQUUsT0FBQTtFQUVaLElBQUEsSUFBSW9iLEtBQUssR0FBR3ZhLFFBQVEsQ0FBQ3dhLFdBQVcsRUFBRSxDQUFBO01BRWxDLElBQUk7RUFBRVosTUFBQUEsSUFBSSxFQUFFSixTQUFTO0VBQUV6QyxNQUFBQSxNQUFNLEVBQUUyQyxXQUFBQTtFQUFZLEtBQUMsR0FBRyxJQUFJLENBQUNPLG9CQUFvQixDQUN0RTlhLEtBQUssQ0FBQytaLEdBQUcsRUFDVC9aLEtBQUssQ0FBQzhaLEdBQUcsRUFDVDdaLE1BQU0sSUFBSUEsTUFBTSxDQUFDOFosR0FBRyxJQUFJL1osS0FBSyxDQUFDK1osR0FBRyxJQUFJOVosTUFBTSxDQUFDNlosR0FBRyxHQUFHOVosS0FBSyxDQUFDOFosR0FDMUQsQ0FBQyxDQUFDO01BQ0YsSUFBSU0sVUFBVSxHQUFHLElBQUk7RUFDbkJFLE1BQUFBLFlBQVksR0FBRyxJQUFJLENBQUE7RUFDckIsSUFBQSxJQUFJcmEsTUFBTSxLQUFLQSxNQUFNLENBQUM4WixHQUFHLElBQUkvWixLQUFLLENBQUMrWixHQUFHLElBQUk5WixNQUFNLENBQUM2WixHQUFHLElBQUk5WixLQUFLLENBQUM4WixHQUFHLENBQUMsRUFBRTtRQUNsRSxJQUFJO1VBQUVXLElBQUk7RUFBRTdDLFFBQUFBLE1BQUFBO0VBQU8sT0FBQyxHQUFHLElBQUksQ0FBQ2tELG9CQUFvQixDQUM5QzdhLE1BQU0sQ0FBQzhaLEdBQUcsRUFDVjlaLE1BQU0sQ0FBQzZaLEdBQUcsRUFDVjlaLEtBQUssQ0FBQytaLEdBQUcsSUFBSTlaLE1BQU0sQ0FBQzhaLEdBQUcsSUFBSS9aLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzdaLE1BQU0sQ0FBQzZaLEdBQ2hELENBQUMsQ0FBQTtFQUNETSxNQUFBQSxVQUFVLEdBQUdLLElBQUksQ0FBQTtFQUNqQkgsTUFBQUEsWUFBWSxHQUFHMUMsTUFBTSxDQUFBO0VBQ3ZCLEtBQUE7RUFFQSxJQUFBLElBQUl3QyxVQUFVLEVBQUVnQixLQUFLLENBQUNFLFFBQVEsQ0FBQ2xCLFVBQVUsRUFBRUUsWUFBWSxDQUFDLENBQUMsS0FDcERjLEtBQUssQ0FBQ0UsUUFBUSxDQUFDakIsU0FBUyxFQUFFRSxXQUFXLENBQUMsQ0FBQTtFQUMzQ2EsSUFBQUEsS0FBSyxDQUFDRyxNQUFNLENBQUNsQixTQUFTLEVBQUVFLFdBQVcsQ0FBQyxDQUFBO0VBRXBDLElBQUEsSUFBSWlCLGVBQWUsR0FBR2pZLE1BQU0sQ0FBQzBXLFlBQVksRUFBRSxDQUFBO01BQzNDdUIsZUFBZSxDQUFDQyxlQUFlLEVBQUUsQ0FBQTtFQUNqQ0QsSUFBQUEsZUFBZSxDQUFDRSxRQUFRLENBQUNOLEtBQUssQ0FBQyxDQUFBO0VBQ2pDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0lBQ0VwSCxnQkFBZ0JBLENBQUN0UixLQUFLLEVBQUU7RUFDdEI7RUFDQTtFQUNBO0VBQ0EsSUFBQSxJQUFJQSxLQUFLLENBQUNpWixTQUFTLElBQUksdUJBQXVCLEVBQUUsT0FBQTtFQUVoRCxJQUFBLElBQUkzYixLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxFQUFFLENBQUE7RUFFL0IsSUFBQSxJQUNFLENBQUN2WCxLQUFLLENBQUNpWixTQUFTLElBQUksaUJBQWlCLElBQ25DalosS0FBSyxDQUFDaVosU0FBUyxJQUFJLGlCQUFpQixLQUN0QzNiLEtBQUssRUFDTDtRQUNBLElBQUksQ0FBQ21XLGNBQWMsRUFBRSxDQUFBO0VBQ3JCLE1BQUEsSUFBSSxDQUFDdUQsbUJBQW1CLENBQUMxWixLQUFLLENBQUMsQ0FBQTtFQUNqQyxLQUFDLE1BQU07RUFDTCxNQUFBLElBQUksQ0FBQyxJQUFJLENBQUNNLENBQUMsQ0FBQzhULFVBQVUsRUFBRTtFQUN0QixRQUFBLElBQUksQ0FBQzlULENBQUMsQ0FBQ2IsU0FBUyxHQUFHLHFDQUFxQyxDQUFBO0VBQzFELE9BQUMsTUFBTTtVQUNMLElBQUksQ0FBQ21jLGdCQUFnQixFQUFFLENBQUE7RUFDekIsT0FBQTtRQUNBLElBQUksQ0FBQzFGLCtCQUErQixFQUFFLENBQUE7RUFDeEMsS0FBQTtFQUNBLElBQUEsSUFBSWxXLEtBQUssRUFBRTtFQUNULE1BQUEsSUFBSSxDQUFDbWIsWUFBWSxDQUFDbmIsS0FBSyxDQUFDLENBQUE7RUFDMUIsS0FBQTtNQUVBLElBQUksQ0FBQzBVLFVBQVUsRUFBRSxDQUFBO0VBQ25CLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0VrSCxFQUFBQSxnQkFBZ0JBLEdBQUc7TUFDakIsTUFBTUMsZ0JBQWdCLEdBQUdySCxLQUFLLENBQUNzSCxJQUFJLENBQUMsSUFBSSxDQUFDeGIsQ0FBQyxDQUFDNlQsVUFBVSxDQUFDLENBQUE7RUFFdEQsSUFBQSxNQUFNNEgsWUFBWSxHQUFHLFVBQUNDLEtBQUssRUFBcUI7RUFDOUMsTUFBQSxNQUFNQyxNQUFNLEdBQUdELEtBQUssQ0FBQzVhLGFBQWEsQ0FBQTtFQUNsQyxNQUFBLE1BQU0wUyxXQUFXLEdBQUdrSSxLQUFLLENBQUNsSSxXQUFXLENBQUE7RUFDckNtSSxNQUFBQSxNQUFNLENBQUM1SCxXQUFXLENBQUMySCxLQUFLLENBQUMsQ0FBQTtRQUFDLEtBQUFFLElBQUFBLElBQUEsR0FBQXZYLFNBQUEsQ0FBQXpDLE1BQUEsRUFISWlhLFdBQVcsT0FBQTNILEtBQUEsQ0FBQTBILElBQUEsR0FBQUEsQ0FBQUEsR0FBQUEsSUFBQSxXQUFBRSxJQUFBLEdBQUEsQ0FBQSxFQUFBQSxJQUFBLEdBQUFGLElBQUEsRUFBQUUsSUFBQSxFQUFBLEVBQUE7RUFBWEQsUUFBQUEsV0FBVyxDQUFBQyxJQUFBLEdBQUF6WCxDQUFBQSxDQUFBQSxHQUFBQSxTQUFBLENBQUF5WCxJQUFBLENBQUEsQ0FBQTtFQUFBLE9BQUE7UUFJekNELFdBQVcsQ0FBQ0UsT0FBTyxDQUFFQyxRQUFRLElBQzNCeEksV0FBVyxHQUNQbUksTUFBTSxDQUFDbEksWUFBWSxDQUFDdUksUUFBUSxFQUFFeEksV0FBVyxDQUFDLEdBQzFDbUksTUFBTSxDQUFDeGEsV0FBVyxDQUFDNmEsUUFBUSxDQUNqQyxDQUFDLENBQUE7T0FDRixDQUFBO0VBRURULElBQUFBLGdCQUFnQixDQUFDUSxPQUFPLENBQUVMLEtBQUssSUFBSztFQUNsQyxNQUFBLElBQUlBLEtBQUssQ0FBQ3JCLFFBQVEsS0FBS0MsSUFBSSxDQUFDMkIsWUFBWSxJQUFJUCxLQUFLLENBQUNwYixPQUFPLEtBQUssS0FBSyxFQUFFO0VBQ25FO0VBQ0EsUUFBQSxNQUFNNGIsVUFBVSxHQUFHM2IsUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7RUFDaEQwYSxRQUFBQSxZQUFZLENBQUNDLEtBQUssRUFBRVEsVUFBVSxDQUFDLENBQUE7RUFDL0JBLFFBQUFBLFVBQVUsQ0FBQy9hLFdBQVcsQ0FBQ3VhLEtBQUssQ0FBQyxDQUFBO1NBQzlCLE1BQU0sSUFBSUEsS0FBSyxDQUFDN0gsVUFBVSxDQUFDalMsTUFBTSxJQUFJLENBQUMsRUFBRTtFQUN2QztVQUNBOFosS0FBSyxDQUFDdmEsV0FBVyxDQUFDWixRQUFRLENBQUNRLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0VBQ2pELE9BQUMsTUFBTTtVQUNMLE1BQU1vYixhQUFhLEdBQUdqSSxLQUFLLENBQUNzSCxJQUFJLENBQUNFLEtBQUssQ0FBQzdILFVBQVUsQ0FBQyxDQUFBO1VBQ2xELElBQ0VzSSxhQUFhLENBQUNDLElBQUksQ0FDZkMsVUFBVSxJQUNUQSxVQUFVLENBQUNoQyxRQUFRLEtBQUtDLElBQUksQ0FBQzJCLFlBQVksSUFDekNJLFVBQVUsQ0FBQy9iLE9BQU8sS0FBSyxLQUMzQixDQUFDLEVBQ0Q7RUFDQSxVQUFBLE9BQU9tYixZQUFZLENBQUNDLEtBQUssRUFBRVMsYUFBYSxDQUFDLENBQUE7RUFDM0MsU0FBQTtFQUNGLE9BQUE7RUFDRixLQUFDLENBQUMsQ0FBQTtFQUNKLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0V4SSxFQUFBQSwwQkFBMEJBLEdBQUc7TUFDM0IsSUFBSSxDQUFDMkksYUFBYSxFQUFFLENBQUE7RUFDdEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0lBQ0VyRCxXQUFXQSxDQUNUc0QsU0FBUyxFQUlUO0VBQUEsSUFBQSxJQUhBeEQsYUFBYSxHQUFBMVUsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxDQUFDLENBQUE7RUFBQSxJQUFBLElBQ2pCbVksYUFBYSxHQUFBblksU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxFQUFFLENBQUE7RUFBQSxJQUFBLElBQ2xCb1ksa0JBQWtCLEdBQUFwWSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtFQUV6QixJQUFBLElBQUlvWSxrQkFBa0IsRUFBRTtRQUN0QixLQUFLLElBQUk5YSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdvWCxhQUFhLEVBQUVwWCxDQUFDLEVBQUUsRUFBRTtFQUN0QyxRQUFBLElBQUksQ0FBQzNCLENBQUMsQ0FBQytULFdBQVcsQ0FBQyxJQUFJLENBQUMvVCxDQUFDLENBQUM2VCxVQUFVLENBQUMwSSxTQUFTLENBQUMsQ0FBQyxDQUFBO0VBQ2xELE9BQUE7RUFDRixLQUFBO01BRUEsSUFBSUcsYUFBYSxHQUFHLEVBQUUsQ0FBQTtNQUN0QixJQUFJQyxhQUFhLEdBQUcsRUFBRSxDQUFBO0VBRXRCLElBQUEsS0FBSyxJQUFJaGIsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHNmEsYUFBYSxDQUFDNWEsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtFQUM3QythLE1BQUFBLGFBQWEsQ0FBQzdhLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUN0QjhhLE1BQUFBLGFBQWEsQ0FBQzlhLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUN4QixNQUFBLElBQUk0YSxrQkFBa0IsRUFBRTtVQUN0QixJQUFJLElBQUksQ0FBQ3pjLENBQUMsQ0FBQzZULFVBQVUsQ0FBQzBJLFNBQVMsQ0FBQyxFQUM5QixJQUFJLENBQUN2YyxDQUFDLENBQUN5VCxZQUFZLENBQ2pCbFQsUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQzdCLElBQUksQ0FBQ2YsQ0FBQyxDQUFDNlQsVUFBVSxDQUFDMEksU0FBUyxDQUM3QixDQUFDLENBQUMsS0FDQyxJQUFJLENBQUN2YyxDQUFDLENBQUNtQixXQUFXLENBQUNaLFFBQVEsQ0FBQ1EsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7RUFDeEQsT0FBQTtFQUNGLEtBQUE7TUFFQSxJQUFJLENBQUNvUixLQUFLLENBQUN5SyxNQUFNLENBQUNMLFNBQVMsRUFBRXhELGFBQWEsRUFBRSxHQUFHeUQsYUFBYSxDQUFDLENBQUE7TUFDN0QsSUFBSSxDQUFDbkssU0FBUyxDQUFDdUssTUFBTSxDQUFDTCxTQUFTLEVBQUV4RCxhQUFhLEVBQUUsR0FBRzJELGFBQWEsQ0FBQyxDQUFBO01BQ2pFLElBQUksQ0FBQ2pLLFNBQVMsQ0FBQ21LLE1BQU0sQ0FBQ0wsU0FBUyxFQUFFeEQsYUFBYSxFQUFFLEdBQUc0RCxhQUFhLENBQUMsQ0FBQTtFQUNuRSxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtJQUNFL0ksV0FBV0EsQ0FBQ3hSLEtBQUssRUFBRTtNQUNqQkEsS0FBSyxDQUFDQyxjQUFjLEVBQUUsQ0FBQTs7RUFFdEI7RUFDQSxJQUFBLElBQUl3YSxJQUFJLEdBQUcsQ0FBQ3phLEtBQUssQ0FBQzBhLGFBQWEsSUFBSTFhLEtBQUssRUFBRTJhLGFBQWEsQ0FBQ0MsT0FBTyxDQUM3RCxZQUNGLENBQUMsQ0FBQTs7RUFFRDtFQUNBLElBQUEsSUFBSSxDQUFDcGQsS0FBSyxDQUFDaWQsSUFBSSxDQUFDLENBQUE7RUFDbEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtJQUNFamQsS0FBS0EsQ0FBQ2lkLElBQUksRUFBK0I7RUFBQSxJQUFBLElBQTdCbGQsTUFBTSxHQUFBMEUsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxJQUFJLENBQUE7RUFBQSxJQUFBLElBQUUzRSxLQUFLLEdBQUEyRSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtNQUNyQyxJQUFJLENBQUMxRSxNQUFNLEVBQUVBLE1BQU0sR0FBRyxJQUFJLENBQUNnYSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7TUFDN0MsSUFBSSxDQUFDamEsS0FBSyxFQUFFQSxLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO01BQzVDLElBQUlzRCxTQUFTLEVBQUUzTSxHQUFHLENBQUE7TUFDbEIsSUFBSSxDQUFDNVEsS0FBSyxFQUFFO0VBQ1ZBLE1BQUFBLEtBQUssR0FBRztFQUNOK1osUUFBQUEsR0FBRyxFQUFFLElBQUksQ0FBQ3RILEtBQUssQ0FBQ3ZRLE1BQU0sR0FBRyxDQUFDO0VBQzFCNFgsUUFBQUEsR0FBRyxFQUFFLElBQUksQ0FBQ3JILEtBQUssQ0FBQyxJQUFJLENBQUNBLEtBQUssQ0FBQ3ZRLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ0EsTUFBQUE7RUFDekMsT0FBQyxDQUFDO0VBQ0osS0FBQTs7TUFDQSxJQUFJLENBQUNqQyxNQUFNLEVBQUU7RUFDWEEsTUFBQUEsTUFBTSxHQUFHRCxLQUFLLENBQUE7RUFDaEIsS0FBQTtNQUNBLElBQ0VDLE1BQU0sQ0FBQzhaLEdBQUcsR0FBRy9aLEtBQUssQ0FBQytaLEdBQUcsSUFDckI5WixNQUFNLENBQUM4WixHQUFHLElBQUkvWixLQUFLLENBQUMrWixHQUFHLElBQUk5WixNQUFNLENBQUM2WixHQUFHLElBQUk5WixLQUFLLENBQUM4WixHQUFJLEVBQ3BEO0VBQ0F5RCxNQUFBQSxTQUFTLEdBQUd0ZCxNQUFNLENBQUE7RUFDbEIyUSxNQUFBQSxHQUFHLEdBQUc1USxLQUFLLENBQUE7RUFDYixLQUFDLE1BQU07RUFDTHVkLE1BQUFBLFNBQVMsR0FBR3ZkLEtBQUssQ0FBQTtFQUNqQjRRLE1BQUFBLEdBQUcsR0FBRzNRLE1BQU0sQ0FBQTtFQUNkLEtBQUE7RUFDQSxJQUFBLElBQUl1ZCxhQUFhLEdBQUdMLElBQUksQ0FBQ3JiLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0VBQ2hELElBQUEsSUFBSTJiLFVBQVUsR0FBRyxJQUFJLENBQUNoTCxLQUFLLENBQUM4SyxTQUFTLENBQUN4RCxHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQyxDQUFDLEVBQUU2RyxTQUFTLENBQUN6RCxHQUFHLENBQUMsQ0FBQTtFQUNuRSxJQUFBLElBQUk0RCxPQUFPLEdBQUcsSUFBSSxDQUFDakwsS0FBSyxDQUFDN0IsR0FBRyxDQUFDbUosR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUM5RixHQUFHLENBQUNrSixHQUFHLENBQUMsQ0FBQTtFQUNqRDBELElBQUFBLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBR0MsVUFBVSxDQUFDbGIsTUFBTSxDQUFDaWIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7TUFDdEQsSUFBSUcsU0FBUyxHQUFHSCxhQUFhLENBQUNBLGFBQWEsQ0FBQ3RiLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ0EsTUFBTSxDQUFBO01BQzlEc2IsYUFBYSxDQUFDQSxhQUFhLENBQUN0YixNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQ3JDc2IsYUFBYSxDQUFDQSxhQUFhLENBQUN0YixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUNLLE1BQU0sQ0FBQ21iLE9BQU8sQ0FBQyxDQUFBO0VBQ3pELElBQUEsSUFBSSxDQUFDbkUsV0FBVyxDQUFDZ0UsU0FBUyxDQUFDeEQsR0FBRyxFQUFFLENBQUMsR0FBR25KLEdBQUcsQ0FBQ21KLEdBQUcsR0FBR3dELFNBQVMsQ0FBQ3hELEdBQUcsRUFBRXlELGFBQWEsQ0FBQyxDQUFBO01BQzNFeGQsS0FBSyxDQUFDK1osR0FBRyxHQUFHd0QsU0FBUyxDQUFDeEQsR0FBRyxHQUFHeUQsYUFBYSxDQUFDdGIsTUFBTSxHQUFHLENBQUMsQ0FBQTtNQUNwRGxDLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzZELFNBQVMsQ0FBQTtNQUNyQixJQUFJLENBQUNsSixnQkFBZ0IsRUFBRSxDQUFBO0VBQ3ZCLElBQUEsSUFBSSxDQUFDMEcsWUFBWSxDQUFDbmIsS0FBSyxDQUFDLENBQUE7TUFDeEIsSUFBSSxDQUFDMFUsVUFBVSxFQUFFLENBQUE7RUFDbkIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRWtKLEVBQUFBLHFCQUFxQkEsQ0FBQ0MsS0FBSyxFQUFFQyxLQUFLLEVBQUU7RUFDbEMsSUFBQSxJQUFJLENBQUNELEtBQUssSUFBSSxDQUFDQyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUE7RUFDakMsSUFBQSxJQUFJRCxLQUFLLElBQUlDLEtBQUssRUFBRSxPQUFPRCxLQUFLLENBQUE7TUFDaEMsTUFBTUUsUUFBUSxHQUFJdEQsSUFBSSxJQUFLO1FBQ3pCLElBQUlzRCxRQUFRLEdBQUcsRUFBRSxDQUFBO0VBQ2pCLE1BQUEsT0FBT3RELElBQUksRUFBRTtFQUNYc0QsUUFBQUEsUUFBUSxDQUFDQyxPQUFPLENBQUN2RCxJQUFJLENBQUMsQ0FBQTtVQUN0QkEsSUFBSSxHQUFHQSxJQUFJLENBQUNwSCxVQUFVLENBQUE7RUFDeEIsT0FBQTtFQUNBLE1BQUEsT0FBTzBLLFFBQVEsQ0FBQTtPQUNoQixDQUFBO0VBRUQsSUFBQSxNQUFNRSxTQUFTLEdBQUdGLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDLENBQUE7RUFDakMsSUFBQSxNQUFNSyxTQUFTLEdBQUdILFFBQVEsQ0FBQ0QsS0FBSyxDQUFDLENBQUE7TUFFakMsSUFBSUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUE7RUFDN0MsSUFBQSxJQUFJamMsQ0FBQyxDQUFBO0VBQ0wsSUFBQSxLQUFLQSxDQUFDLEdBQUcsQ0FBQyxFQUFFZ2MsU0FBUyxDQUFDaGMsQ0FBQyxDQUFDLElBQUlpYyxTQUFTLENBQUNqYyxDQUFDLENBQUMsRUFBRUEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUM5QyxJQUFBLE9BQU9nYyxTQUFTLENBQUNoYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7RUFDekIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFa2MsRUFBQUEsMEJBQTBCQSxDQUFDbmUsS0FBSyxFQUFFQyxNQUFNLEVBQUVxQixTQUFTLEVBQUU7TUFDbkQsSUFBSW1aLElBQUksR0FBRyxJQUFJLENBQUE7RUFDZixJQUFBLElBQUksQ0FBQ3phLEtBQUssRUFBRSxPQUFPLElBQUksQ0FBQTtNQUN2QixJQUFJLENBQUNDLE1BQU0sRUFBRTtRQUNYd2EsSUFBSSxHQUFHemEsS0FBSyxDQUFDeWEsSUFBSSxDQUFBO0VBQ25CLEtBQUMsTUFBTTtRQUNMLElBQUl6YSxLQUFLLENBQUMrWixHQUFHLElBQUk5WixNQUFNLENBQUM4WixHQUFHLEVBQUUsT0FBTyxJQUFJLENBQUE7RUFDeENVLE1BQUFBLElBQUksR0FBRyxJQUFJLENBQUNtRCxxQkFBcUIsQ0FBQzVkLEtBQUssQ0FBQ3lhLElBQUksRUFBRXhhLE1BQU0sQ0FBQ3dhLElBQUksQ0FBQyxDQUFBO0VBQzVELEtBQUE7RUFDQSxJQUFBLElBQUksQ0FBQ0EsSUFBSSxFQUFFLE9BQU8sSUFBSSxDQUFBO0VBQ3RCLElBQUEsT0FBT0EsSUFBSSxJQUFJLElBQUksQ0FBQ25hLENBQUMsRUFBRTtFQUNyQixNQUFBLElBQUltYSxJQUFJLENBQUNuWixTQUFTLElBQUltWixJQUFJLENBQUNuWixTQUFTLENBQUM4YyxRQUFRLENBQUM5YyxTQUFTLENBQUMsRUFBRSxPQUFPbVosSUFBSSxDQUFBO1FBQ3JFQSxJQUFJLEdBQUdBLElBQUksQ0FBQ3BILFVBQVUsQ0FBQTtFQUN4QixLQUFBO0VBQ0E7RUFDQSxJQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0VnTCxFQUFBQSxlQUFlQSxHQUE4QjtFQUFBLElBQUEsSUFBN0JyZSxLQUFLLEdBQUEyRSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtFQUFBLElBQUEsSUFBRTFFLE1BQU0sR0FBQTBFLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsSUFBSSxDQUFBO01BQ3pDLElBQUk3QixZQUFZLEdBQUcsRUFBRSxDQUFBO01BQ3JCLElBQUksQ0FBQzlDLEtBQUssRUFBRUEsS0FBSyxHQUFHLElBQUksQ0FBQ2lhLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtNQUM1QyxJQUFJLENBQUNoYSxNQUFNLEVBQUVBLE1BQU0sR0FBRyxJQUFJLENBQUNnYSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7TUFDN0MsSUFBSSxDQUFDamEsS0FBSyxFQUFFO0VBQ1YsTUFBQSxLQUFLLElBQUlzZSxHQUFHLElBQUkvZCxRQUFRLEVBQUU7RUFDeEJ1QyxRQUFBQSxZQUFZLENBQUN3YixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDMUIsT0FBQTtFQUNBLE1BQUEsT0FBT3hiLFlBQVksQ0FBQTtFQUNyQixLQUFBO0VBQ0EsSUFBQSxJQUFJLENBQUM3QyxNQUFNLEVBQUVBLE1BQU0sR0FBR0QsS0FBSyxDQUFBO01BRTNCLElBQUkyUSxLQUFLLEVBQUVDLEdBQUcsQ0FBQTtNQUNkLElBQ0UzUSxNQUFNLENBQUM4WixHQUFHLEdBQUcvWixLQUFLLENBQUMrWixHQUFHLElBQ3JCOVosTUFBTSxDQUFDOFosR0FBRyxJQUFJL1osS0FBSyxDQUFDK1osR0FBRyxJQUFJOVosTUFBTSxDQUFDNlosR0FBRyxHQUFHOVosS0FBSyxDQUFDOFosR0FBSSxFQUNuRDtFQUNBbkosTUFBQUEsS0FBSyxHQUFHMVEsTUFBTSxDQUFBO0VBQ2QyUSxNQUFBQSxHQUFHLEdBQUc1USxLQUFLLENBQUE7RUFDYixLQUFDLE1BQU07RUFDTDJRLE1BQUFBLEtBQUssR0FBRzNRLEtBQUssQ0FBQTtFQUNiNFEsTUFBQUEsR0FBRyxHQUFHM1EsTUFBTSxDQUFBO0VBQ2QsS0FBQTtFQUNBLElBQUEsSUFBSTJRLEdBQUcsQ0FBQ21KLEdBQUcsR0FBR3BKLEtBQUssQ0FBQ29KLEdBQUcsSUFBSW5KLEdBQUcsQ0FBQ2tKLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDdkNsSixHQUFHLENBQUNtSixHQUFHLEVBQUUsQ0FBQTtFQUNUbkosTUFBQUEsR0FBRyxDQUFDa0osR0FBRyxHQUFHLElBQUksQ0FBQ3JILEtBQUssQ0FBQzdCLEdBQUcsQ0FBQ21KLEdBQUcsQ0FBQyxDQUFDN1gsTUFBTSxDQUFDO0VBQ3ZDLEtBQUE7O0VBRUEsSUFBQSxLQUFLLElBQUlvYyxHQUFHLElBQUkvZCxRQUFRLEVBQUU7UUFDeEIsSUFBSUEsUUFBUSxDQUFDK2QsR0FBRyxDQUFDLENBQUMzUyxJQUFJLElBQUksUUFBUSxFQUFFO1VBQ2xDLElBQ0UsQ0FBQzNMLEtBQUssSUFDTkEsS0FBSyxDQUFDK1osR0FBRyxJQUFJOVosTUFBTSxDQUFDOFosR0FBRyxJQUN2QixDQUFDLElBQUksQ0FBQ2xhLHlCQUF5QixDQUFDRyxLQUFLLEVBQUVDLE1BQU0sQ0FBQyxFQUM5QztFQUNBNkMsVUFBQUEsWUFBWSxDQUFDd2IsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBQzFCLFNBQUMsTUFBTTtFQUNMO1lBQ0F4YixZQUFZLENBQUN3YixHQUFHLENBQUMsR0FDZixDQUFDLENBQUMsSUFBSSxDQUFDSCwwQkFBMEIsQ0FDL0JuZSxLQUFLLEVBQ0xDLE1BQU0sRUFDTk0sUUFBUSxDQUFDK2QsR0FBRyxDQUFDLENBQUNoZCxTQUNoQixDQUFDO0VBQ0Q7RUFDQ3RCLFVBQUFBLEtBQUssQ0FBQzhaLEdBQUcsSUFBSTdaLE1BQU0sQ0FBQzZaLEdBQUcsSUFDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQ3JILEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxDQUNwQnJELE1BQU0sQ0FBQyxDQUFDLEVBQUUxVyxLQUFLLENBQUM4WixHQUFHLENBQUMsQ0FDcEIxWCxLQUFLLENBQUM3QixRQUFRLENBQUMrZCxHQUFHLENBQUMsQ0FBQ3ZNLEtBQUssQ0FBQ0MsVUFBVSxDQUFDLElBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUNTLEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxDQUNwQnJELE1BQU0sQ0FBQzFXLEtBQUssQ0FBQzhaLEdBQUcsQ0FBQyxDQUNqQjFYLEtBQUssQ0FBQzdCLFFBQVEsQ0FBQytkLEdBQUcsQ0FBQyxDQUFDdk0sS0FBSyxDQUFDRSxXQUFXLENBQUUsQ0FBQTtFQUNoRCxTQUFBO0VBQ0YsT0FBQTtRQUNBLElBQUkxUixRQUFRLENBQUMrZCxHQUFHLENBQUMsQ0FBQzNTLElBQUksSUFBSSxNQUFNLEVBQUU7VUFDaEMsSUFBSSxDQUFDM0wsS0FBSyxFQUFFO0VBQ1Y4QyxVQUFBQSxZQUFZLENBQUN3YixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDMUIsU0FBQyxNQUFNO0VBQ0wsVUFBQSxJQUFJN2QsS0FBSyxHQUFHLElBQUksQ0FBQ2tTLFNBQVMsQ0FBQ2hDLEtBQUssQ0FBQ29KLEdBQUcsQ0FBQyxJQUFJeFosUUFBUSxDQUFDK2QsR0FBRyxDQUFDLENBQUNoZCxTQUFTLENBQUE7RUFFaEUsVUFBQSxLQUFLLElBQUlrWSxJQUFJLEdBQUc3SSxLQUFLLENBQUNvSixHQUFHLEVBQUVQLElBQUksSUFBSTVJLEdBQUcsQ0FBQ21KLEdBQUcsRUFBRVAsSUFBSSxFQUFFLEVBQUU7RUFDbEQsWUFBQSxJQUFLLElBQUksQ0FBQzdHLFNBQVMsQ0FBQzZHLElBQUksQ0FBQyxJQUFJalosUUFBUSxDQUFDK2QsR0FBRyxDQUFDLENBQUNoZCxTQUFTLElBQUtiLEtBQUssRUFBRTtFQUM5REEsY0FBQUEsS0FBSyxHQUFHLElBQUksQ0FBQTtFQUNaLGNBQUEsTUFBQTtFQUNGLGFBQUE7RUFDRixXQUFBO0VBQ0FxQyxVQUFBQSxZQUFZLENBQUN3YixHQUFHLENBQUMsR0FBRzdkLEtBQUssQ0FBQTtFQUMzQixTQUFBO0VBQ0YsT0FBQTtFQUNGLEtBQUE7RUFDQSxJQUFBLE9BQU9xQyxZQUFZLENBQUE7RUFDckIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0VGLEVBQUFBLGVBQWVBLENBQUNyQixPQUFPLEVBQUVkLEtBQUssRUFBRTtNQUM5QixJQUFJRixRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQ29LLElBQUksSUFBSSxRQUFRLEVBQUU7RUFDdEMsTUFBQSxJQUFJMUwsTUFBTSxHQUFHLElBQUksQ0FBQ2dhLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUNwQyxNQUFBLElBQUlqYSxLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQ3BDLE1BQUEsSUFBSSxDQUFDaGEsTUFBTSxFQUFFQSxNQUFNLEdBQUdELEtBQUssQ0FBQTtRQUMzQixJQUFJLENBQUNDLE1BQU0sRUFBRSxPQUFBO0VBQ2IsTUFBQSxJQUFJQSxNQUFNLENBQUM4WixHQUFHLElBQUkvWixLQUFLLENBQUMrWixHQUFHLEVBQUUsT0FBQTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDbGEseUJBQXlCLENBQUNHLEtBQUssRUFBRUMsTUFBTSxDQUFDLEVBQUUsT0FBQTtFQUNwRCxNQUFBLElBQUlzZSxVQUFVLEdBQUcsSUFBSSxDQUFDSiwwQkFBMEIsQ0FDOUNuZSxLQUFLLEVBQ0xDLE1BQU0sRUFDTk0sUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUNELFNBQ3BCLENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQzZVLGNBQWMsRUFBRSxDQUFBOztFQUVyQjtFQUNBLE1BQUEsSUFBSW9JLFVBQVUsRUFBRTtVQUNkLElBQUksQ0FBQ3hMLFNBQVMsQ0FBQy9TLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQTtVQUNoQyxNQUFNeUUsUUFBUSxHQUFHLElBQUksQ0FBQ2hFLGFBQWEsQ0FBQytELFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQTtFQUNsRCxRQUFBLE1BQU1FLEdBQUcsR0FBR0YsVUFBVSxDQUFDcEYsV0FBVyxDQUFDalgsTUFBTSxDQUFBO0VBQ3pDLFFBQUEsTUFBTXdjLElBQUksR0FBRyxJQUFJLENBQUNqTSxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FDL0JyRCxNQUFNLENBQUMsQ0FBQyxFQUFFOEgsUUFBUSxDQUFDLENBQ25CblMsT0FBTyxDQUFDOUwsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQTtFQUNsRCxRQUFBLE1BQU0yTSxHQUFHLEdBQUcsSUFBSSxDQUFDbE0sS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUM4SCxRQUFRLEVBQUVDLEdBQUcsQ0FBQyxDQUFBO0VBQ3ZELFFBQUEsTUFBTUcsS0FBSyxHQUFHLElBQUksQ0FBQ25NLEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxDQUNoQ3JELE1BQU0sQ0FBQzhILFFBQVEsR0FBR0MsR0FBRyxDQUFDLENBQ3RCcFMsT0FBTyxDQUFDOUwsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQTtFQUNuRCxRQUFBLElBQUksQ0FBQ1EsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLEdBQUcyRSxJQUFJLENBQUNuYyxNQUFNLENBQUNvYyxHQUFHLEVBQUVDLEtBQUssQ0FBQyxDQUFBO0VBQy9DM2UsUUFBQUEsTUFBTSxDQUFDNlosR0FBRyxHQUFHNEUsSUFBSSxDQUFDeGMsTUFBTSxDQUFBO0VBQ3hCbEMsUUFBQUEsS0FBSyxDQUFDOFosR0FBRyxHQUFHN1osTUFBTSxDQUFDNlosR0FBRyxHQUFHMkUsR0FBRyxDQUFBO1VBQzVCLElBQUksQ0FBQ2hLLGdCQUFnQixFQUFFLENBQUE7RUFDdkIsUUFBQSxJQUFJLENBQUMwRyxZQUFZLENBQUNuYixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFBO1VBQ2hDLElBQUksQ0FBQ3lVLFVBQVUsRUFBRSxDQUFBOztFQUVqQjtFQUNGLE9BQUMsTUFBTSxJQUNMMVUsS0FBSyxDQUFDOFosR0FBRyxJQUFJN1osTUFBTSxDQUFDNlosR0FBRyxJQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDckgsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQ3BCckQsTUFBTSxDQUFDLENBQUMsRUFBRTFXLEtBQUssQ0FBQzhaLEdBQUcsQ0FBQyxDQUNwQjFYLEtBQUssQ0FBQzdCLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDd1EsS0FBSyxDQUFDQyxVQUFVLENBQUMsSUFDNUMsQ0FBQyxDQUFDLElBQUksQ0FBQ1MsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQ3BCckQsTUFBTSxDQUFDMVcsS0FBSyxDQUFDOFosR0FBRyxDQUFDLENBQ2pCMVgsS0FBSyxDQUFDN0IsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNFLFdBQVcsQ0FBQyxFQUM3QztVQUNBLElBQUksQ0FBQ2MsU0FBUyxDQUFDL1MsS0FBSyxDQUFDK1osR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBQ2hDLFFBQUEsTUFBTTJFLElBQUksR0FBRyxJQUFJLENBQUNqTSxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FDL0JyRCxNQUFNLENBQUMsQ0FBQyxFQUFFMVcsS0FBSyxDQUFDOFosR0FBRyxDQUFDLENBQ3BCek4sT0FBTyxDQUFDOUwsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQTtFQUNsRCxRQUFBLE1BQU00TSxLQUFLLEdBQUcsSUFBSSxDQUFDbk0sS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQ2hDckQsTUFBTSxDQUFDMVcsS0FBSyxDQUFDOFosR0FBRyxDQUFDLENBQ2pCek4sT0FBTyxDQUFDOUwsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQTtFQUNuRCxRQUFBLElBQUksQ0FBQ1EsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLEdBQUcyRSxJQUFJLENBQUNuYyxNQUFNLENBQUNxYyxLQUFLLENBQUMsQ0FBQTtVQUMxQzVlLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzdaLE1BQU0sQ0FBQzZaLEdBQUcsR0FBRzRFLElBQUksQ0FBQ3hjLE1BQU0sQ0FBQTtVQUNwQyxJQUFJLENBQUN1UyxnQkFBZ0IsRUFBRSxDQUFBO0VBQ3ZCLFFBQUEsSUFBSSxDQUFDMEcsWUFBWSxDQUFDbmIsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQTtVQUNoQyxJQUFJLENBQUN5VSxVQUFVLEVBQUUsQ0FBQTs7RUFFakI7RUFDRixPQUFDLE1BQU07RUFDTDtVQUNBLElBQUk7WUFBRThKLFFBQVE7RUFBRUssVUFBQUEsTUFBQUE7V0FBUSxHQUN0QjdlLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzdaLE1BQU0sQ0FBQzZaLEdBQUcsR0FDbEI7WUFBRTBFLFFBQVEsRUFBRXhlLEtBQUssQ0FBQzhaLEdBQUc7WUFBRStFLE1BQU0sRUFBRTVlLE1BQU0sQ0FBQzZaLEdBQUFBO0VBQUksU0FBQyxHQUMzQztZQUFFMEUsUUFBUSxFQUFFdmUsTUFBTSxDQUFDNlosR0FBRztZQUFFK0UsTUFBTSxFQUFFN2UsS0FBSyxDQUFDOFosR0FBQUE7V0FBSyxDQUFBO1VBRWpELElBQUkxWCxLQUFLLEdBQUcsSUFBSSxDQUFDcVEsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQzlCckQsTUFBTSxDQUFDOEgsUUFBUSxFQUFFSyxNQUFNLEdBQUdMLFFBQVEsQ0FBQyxDQUNuQ3BjLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFBO0VBQ2pELFFBQUEsSUFBSUEsS0FBSyxFQUFFO0VBQ1RvYyxVQUFBQSxRQUFRLElBQUlwYyxLQUFLLENBQUMwVCxNQUFNLENBQUNnSixPQUFPLENBQUM1YyxNQUFNLENBQUE7RUFDdkMyYyxVQUFBQSxNQUFNLElBQUl6YyxLQUFLLENBQUMwVCxNQUFNLENBQUNpSixRQUFRLENBQUM3YyxNQUFNLENBQUE7RUFDeEMsU0FBQTtVQUVBbEMsS0FBSyxDQUFDOFosR0FBRyxHQUFHMEUsUUFBUSxDQUFBO1VBQ3BCdmUsTUFBTSxDQUFDNlosR0FBRyxHQUFHK0UsTUFBTSxDQUFBOztFQUVuQjtVQUNBLElBQUksQ0FBQy9lLGFBQWEsQ0FDaEJTLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDK0osR0FBRyxDQUFDdUcsR0FBRyxFQUN6QnRSLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDK0osR0FBRyxDQUFDd0csSUFBSSxFQUMxQjlSLEtBQUssRUFDTEMsTUFDRixDQUFDLENBQUE7VUFDRCxJQUFJLENBQUN5VSxVQUFVLEVBQUUsQ0FBQTtFQUNqQjtFQUNGLE9BQUE7T0FDRCxNQUFNLElBQUluVSxRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQ29LLElBQUksSUFBSSxNQUFNLEVBQUU7RUFDM0MsTUFBQSxJQUFJMUwsTUFBTSxHQUFHLElBQUksQ0FBQ2dhLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUNwQyxNQUFBLElBQUlqYSxLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQ3BDLE1BQUEsSUFBSSxDQUFDaGEsTUFBTSxFQUFFQSxNQUFNLEdBQUdELEtBQUssQ0FBQTtRQUMzQixJQUFJLENBQUNBLEtBQUssRUFBRSxPQUFBO1FBQ1osSUFBSSxDQUFDbVcsY0FBYyxFQUFFLENBQUE7RUFDckIsTUFBQSxJQUFJeEYsS0FBSyxHQUFHMVEsTUFBTSxDQUFDOFosR0FBRyxHQUFHL1osS0FBSyxDQUFDK1osR0FBRyxHQUFHL1osS0FBSyxHQUFHQyxNQUFNLENBQUE7RUFDbkQsTUFBQSxJQUFJMlEsR0FBRyxHQUFHM1EsTUFBTSxDQUFDOFosR0FBRyxHQUFHL1osS0FBSyxDQUFDK1osR0FBRyxHQUFHOVosTUFBTSxHQUFHRCxLQUFLLENBQUE7RUFDakQsTUFBQSxJQUFJNFEsR0FBRyxDQUFDbUosR0FBRyxHQUFHcEosS0FBSyxDQUFDb0osR0FBRyxJQUFJbkosR0FBRyxDQUFDa0osR0FBRyxJQUFJLENBQUMsRUFBRTtVQUN2Q2xKLEdBQUcsQ0FBQ21KLEdBQUcsRUFBRSxDQUFBO0VBQ1gsT0FBQTtFQUVBLE1BQUEsS0FBSyxJQUFJUCxJQUFJLEdBQUc3SSxLQUFLLENBQUNvSixHQUFHLEVBQUVQLElBQUksSUFBSTVJLEdBQUcsQ0FBQ21KLEdBQUcsRUFBRVAsSUFBSSxFQUFFLEVBQUU7RUFDbEQsUUFBQSxJQUFJL1ksS0FBSyxJQUFJLElBQUksQ0FBQ2tTLFNBQVMsQ0FBQzZHLElBQUksQ0FBQyxJQUFJalosUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUNELFNBQVMsRUFBRTtZQUNoRSxJQUFJLENBQUNtUixLQUFLLENBQUMrRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMvRyxLQUFLLENBQUMrRyxJQUFJLENBQUMsQ0FBQ25OLE9BQU8sQ0FDekM5TCxRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQytKLEdBQUcsQ0FBQzRHLE9BQU8sRUFDN0IzUixRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQytKLEdBQUcsQ0FBQ2dFLFdBQVcsQ0FBQ2pELE9BQU8sQ0FDdkMsSUFBSSxFQUNKbU4sSUFBSSxHQUFHN0ksS0FBSyxDQUFDb0osR0FBRyxHQUFHLENBQ3JCLENBQ0YsQ0FBQyxDQUFBO0VBQ0QsVUFBQSxJQUFJLENBQUNoSCxTQUFTLENBQUN5RyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDN0IsU0FBQTtFQUNBLFFBQUEsSUFBSSxDQUFDL1ksS0FBSyxJQUFJLElBQUksQ0FBQ2tTLFNBQVMsQ0FBQzZHLElBQUksQ0FBQyxJQUFJalosUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUNELFNBQVMsRUFBRTtFQUNqRSxVQUFBLElBQUksQ0FBQ21SLEtBQUssQ0FBQytHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQy9HLEtBQUssQ0FBQytHLElBQUksQ0FBQyxDQUFDbk4sT0FBTyxDQUN6QzlMLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDd1EsS0FBSyxDQUFDRyxPQUFPLEVBQy9CM1IsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUN6QyxXQUMxQixDQUFDLENBQUE7RUFDRCxVQUFBLElBQUksQ0FBQ3lELFNBQVMsQ0FBQ3lHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQTtFQUM3QixTQUFBO0VBQ0YsT0FBQTtRQUNBLElBQUksQ0FBQy9FLGdCQUFnQixFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDMEcsWUFBWSxDQUNmO1VBQUVwQixHQUFHLEVBQUVuSixHQUFHLENBQUNtSixHQUFHO1VBQUVELEdBQUcsRUFBRSxJQUFJLENBQUNySCxLQUFLLENBQUM3QixHQUFHLENBQUNtSixHQUFHLENBQUMsQ0FBQzdYLE1BQUFBO0VBQU8sT0FBQyxFQUNqRDtVQUFFNlgsR0FBRyxFQUFFcEosS0FBSyxDQUFDb0osR0FBRztFQUFFRCxRQUFBQSxHQUFHLEVBQUUsQ0FBQTtFQUFFLE9BQzNCLENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQ3BGLFVBQVUsRUFBRSxDQUFBO0VBQ25CLEtBQUE7RUFDRixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0U3VSxFQUFBQSx5QkFBeUJBLEdBQUc7RUFDMUI7RUFDQSxJQUFBLE1BQU04WixHQUFHLEdBQUdwVyxNQUFNLENBQUMwVyxZQUFZLEVBQUUsQ0FBQTtFQUNqQyxJQUFBLElBQUksQ0FBQ04sR0FBRyxJQUFJLENBQUNBLEdBQUcsQ0FBQ1UsU0FBUyxJQUFJLENBQUNWLEdBQUcsQ0FBQ1MsVUFBVSxFQUFFLE9BQU8sS0FBSyxDQUFBOztFQUUzRDs7RUFFQTtNQUNBLElBQ0VULEdBQUcsQ0FBQ3FGLFdBQVcsSUFDZnJGLEdBQUcsQ0FBQ1UsU0FBUyxDQUFDTSxRQUFRLElBQUksQ0FBQyxJQUMzQmhCLEdBQUcsQ0FBQ1ksV0FBVyxJQUFJWixHQUFHLENBQUNVLFNBQVMsQ0FBQ2EsU0FBUyxDQUFDaFosTUFBTSxFQUNqRDtFQUNBLE1BQUEsSUFBSXVZLElBQUksQ0FBQTtFQUNSLE1BQUEsS0FDRUEsSUFBSSxHQUFHZCxHQUFHLENBQUNVLFNBQVMsRUFDcEJJLElBQUksSUFBSUEsSUFBSSxDQUFDM0csV0FBVyxJQUFJLElBQUksRUFDaEMyRyxJQUFJLEdBQUdBLElBQUksQ0FBQ3BILFVBQVUsQ0FDdkIsQ0FBQTtRQUNELElBQ0VvSCxJQUFJLElBQ0pBLElBQUksQ0FBQzNHLFdBQVcsQ0FBQ3hTLFNBQVMsSUFDMUJtWixJQUFJLENBQUMzRyxXQUFXLENBQUN4UyxTQUFTLENBQUM4YyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFFeEQsT0FBTyxJQUFJLENBQUE7RUFDZixLQUFBOztFQUVBO0VBQ0EsSUFBQSxJQUFJYSxRQUFRLEdBQUcsSUFBSSxDQUFDckIscUJBQXFCLENBQUNqRSxHQUFHLENBQUNVLFNBQVMsRUFBRVYsR0FBRyxDQUFDUyxVQUFVLENBQUMsQ0FBQTtFQUN4RSxJQUFBLElBQUksQ0FBQzZFLFFBQVEsRUFBRSxPQUFPLEtBQUssQ0FBQTs7RUFFM0I7RUFDQSxJQUFBLE9BQU9BLFFBQVEsSUFBSUEsUUFBUSxJQUFJLElBQUksQ0FBQzNlLENBQUMsRUFBRTtFQUNyQyxNQUFBLElBQ0UyZSxRQUFRLENBQUMzZCxTQUFTLElBQ2xCLE9BQU8yZCxRQUFRLENBQUMzZCxTQUFTLENBQUM4YyxRQUFRLElBQUksVUFBVSxLQUMvQ2EsUUFBUSxDQUFDM2QsU0FBUyxDQUFDOGMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQy9DYSxRQUFRLENBQUMzZCxTQUFTLENBQUM4YyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFFN0MsT0FBTyxJQUFJLENBQUE7UUFDYmEsUUFBUSxHQUFHQSxRQUFRLENBQUM1TCxVQUFVLENBQUE7RUFDaEMsS0FBQTtFQUVBLElBQUEsT0FBTyxLQUFLLENBQUE7RUFDZCxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0V2VCxFQUFBQSxhQUFhQSxDQUFDK1IsR0FBRyxFQUFFQyxJQUFJLEVBQStCO0VBQUEsSUFBQSxJQUE3QjlSLEtBQUssR0FBQTJFLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsSUFBSSxDQUFBO0VBQUEsSUFBQSxJQUFFMUUsTUFBTSxHQUFBMEUsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxJQUFJLENBQUE7TUFDbEQsSUFBSSxDQUFDM0UsS0FBSyxFQUFFQSxLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO01BQzVDLElBQUksQ0FBQ2hhLE1BQU0sRUFBRUEsTUFBTSxHQUFHLElBQUksQ0FBQ2dhLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUM3QyxJQUFBLElBQUksQ0FBQ2phLEtBQUssSUFBSSxDQUFDQyxNQUFNLElBQUlELEtBQUssQ0FBQytaLEdBQUcsSUFBSTlaLE1BQU0sQ0FBQzhaLEdBQUcsRUFBRSxPQUFBO01BQ2xELElBQUksQ0FBQ2hILFNBQVMsQ0FBQy9TLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQTtFQUVoQyxJQUFBLE1BQU15RSxRQUFRLEdBQUd4ZSxLQUFLLENBQUM4WixHQUFHLEdBQUc3WixNQUFNLENBQUM2WixHQUFHLEdBQUc5WixLQUFLLENBQUM4WixHQUFHLEdBQUc3WixNQUFNLENBQUM2WixHQUFHLENBQUE7RUFDaEUsSUFBQSxNQUFNK0UsTUFBTSxHQUFHN2UsS0FBSyxDQUFDOFosR0FBRyxHQUFHN1osTUFBTSxDQUFDNlosR0FBRyxHQUFHN1osTUFBTSxDQUFDNlosR0FBRyxHQUFHOVosS0FBSyxDQUFDOFosR0FBRyxDQUFBO01BQzlELE1BQU00RSxJQUFJLEdBQUcsSUFBSSxDQUFDak0sS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUMsQ0FBQyxFQUFFOEgsUUFBUSxDQUFDLENBQUNqYyxNQUFNLENBQUNzUCxHQUFHLENBQUMsQ0FBQTtNQUNsRSxNQUFNOE0sR0FBRyxHQUNQRSxNQUFNLElBQUlMLFFBQVEsR0FDZCxFQUFFLEdBQ0YsSUFBSSxDQUFDL0wsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUM4SCxRQUFRLEVBQUVLLE1BQU0sR0FBR0wsUUFBUSxDQUFDLENBQUE7RUFDL0QsSUFBQSxNQUFNSSxLQUFLLEdBQUc5TSxJQUFJLENBQUN2UCxNQUFNLENBQUMsSUFBSSxDQUFDa1EsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUNtSSxNQUFNLENBQUMsQ0FBQyxDQUFBO0VBQy9ELElBQUEsSUFBSSxDQUFDcE0sS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLEdBQUcyRSxJQUFJLENBQUNuYyxNQUFNLENBQUNvYyxHQUFHLEVBQUVDLEtBQUssQ0FBQyxDQUFBO0VBQy9DM2UsSUFBQUEsTUFBTSxDQUFDNlosR0FBRyxHQUFHNEUsSUFBSSxDQUFDeGMsTUFBTSxDQUFBO01BQ3hCbEMsS0FBSyxDQUFDOFosR0FBRyxHQUFHN1osTUFBTSxDQUFDNlosR0FBRyxHQUFHNkUsR0FBRyxDQUFDemMsTUFBTSxDQUFBO01BRW5DLElBQUksQ0FBQ3VTLGdCQUFnQixFQUFFLENBQUE7RUFDdkIsSUFBQSxJQUFJLENBQUMwRyxZQUFZLENBQUNuYixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFBO0VBQ2xDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7SUFDRWlmLGtCQUFrQkEsQ0FBQzNkLE9BQU8sRUFBRTtFQUMxQixJQUFBLElBQUksQ0FBQyxJQUFJLENBQUN5UixnQkFBZ0IsRUFBRSxJQUFJLENBQUNBLGdCQUFnQixHQUFHLElBQUksQ0FBQ3FMLGVBQWUsRUFBRSxDQUFBO0VBQzFFLElBQUEsSUFBSSxDQUFDemIsZUFBZSxDQUFDckIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDeVIsZ0JBQWdCLENBQUN6UixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ2hFLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0VtVCxFQUFBQSxVQUFVQSxHQUFHO0VBQ1gsSUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDbEMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDUyxTQUFTLENBQUNDLE1BQU0sQ0FBQ2hSLE1BQU0sRUFBRSxPQUFBO0VBQ3JELElBQUEsTUFBTXdSLE9BQU8sR0FBRyxJQUFJLENBQUNpQixVQUFVLEVBQUUsQ0FBQTtNQUNqQyxJQUFJLElBQUksQ0FBQ25DLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVEsQ0FBQ3ZNLEtBQUssR0FBR3lOLE9BQU8sQ0FBQTtNQUNoRCxLQUFLLElBQUl5TCxRQUFRLElBQUksSUFBSSxDQUFDbE0sU0FBUyxDQUFDQyxNQUFNLEVBQUU7RUFDMUNpTSxNQUFBQSxRQUFRLENBQUM7RUFDUHpMLFFBQUFBLE9BQU8sRUFBRUEsT0FBTztVQUNoQjBMLFVBQVUsRUFBRSxJQUFJLENBQUNBLFVBQUFBO0VBQ25CLE9BQUMsQ0FBQyxDQUFBO0VBQ0osS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0V4QyxFQUFBQSxhQUFhQSxHQUFHO0VBQ2QsSUFBQSxJQUFJLElBQUksQ0FBQzNKLFNBQVMsQ0FBQ0UsU0FBUyxJQUFJLElBQUksQ0FBQ0YsU0FBUyxDQUFDRSxTQUFTLENBQUNqUixNQUFNLEVBQUU7RUFDL0QsTUFBQSxJQUFJbEMsS0FBSyxHQUFHLElBQUksQ0FBQ2lhLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUNwQyxNQUFBLElBQUloYSxNQUFNLEdBQUcsSUFBSSxDQUFDZ2EsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BDLElBQUluWCxZQUFZLEdBQUcsSUFBSSxDQUFDdWIsZUFBZSxDQUFDcmUsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQTtRQUN0RCxJQUFJLElBQUksQ0FBQytTLGdCQUFnQixFQUFFO1VBQ3pCclIsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDb1IsZ0JBQWdCLEVBQUVsUSxZQUFZLENBQUMsQ0FBQTtFQUNwRCxPQUFDLE1BQU07VUFDTCxJQUFJLENBQUNrUSxnQkFBZ0IsR0FBR3JSLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLEVBQUUsRUFBRWtCLFlBQVksQ0FBQyxDQUFBO0VBQ3pELE9BQUE7UUFDQSxLQUFLLElBQUlxYyxRQUFRLElBQUksSUFBSSxDQUFDbE0sU0FBUyxDQUFDRSxTQUFTLEVBQUU7RUFDN0NnTSxRQUFBQSxRQUFRLENBQUM7RUFDUG5mLFVBQUFBLEtBQUssRUFBRUEsS0FBSztFQUNaQyxVQUFBQSxNQUFNLEVBQUVBLE1BQU07WUFDZDZDLFlBQVksRUFBRSxJQUFJLENBQUNrUSxnQkFBQUE7RUFDckIsU0FBQyxDQUFDLENBQUE7RUFDSixPQUFBO0VBQ0YsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNFL1IsRUFBQUEsZ0JBQWdCQSxDQUFDMEssSUFBSSxFQUFFd1QsUUFBUSxFQUFFO0VBQy9CLElBQUEsSUFBSXhULElBQUksQ0FBQ3ZKLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1FBQ3JDLElBQUksQ0FBQzZRLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDL1EsSUFBSSxDQUFDZ2QsUUFBUSxDQUFDLENBQUE7RUFDdEMsS0FBQTtFQUNBLElBQUEsSUFBSXhULElBQUksQ0FBQ3ZKLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFFO1FBQ2xELElBQUksQ0FBQzZRLFNBQVMsQ0FBQ0UsU0FBUyxDQUFDaFIsSUFBSSxDQUFDZ2QsUUFBUSxDQUFDLENBQUE7RUFDekMsS0FBQTtFQUNGLEdBQUE7RUFDRjs7Ozs7Ozs7Ozs7In0=
|