dgeoutils 2.4.38 → 2.4.40
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/README.md +1 -1
- package/dist/cjs/DPolygon.d.ts +1 -0
- package/dist/cjs/DPolygon.js +28 -1
- package/dist/es2015/DPolygon.js +24 -1
- package/dist/esm/DPolygon.js +28 -1
- package/dist/umd/dgeoutils.js +29 -2
- package/dist/umd/dgeoutils.min.js +1 -1
- package/dist/umd/dgeoutils.min.js.map +1 -1
- package/package.json +1 -1
package/dist/umd/dgeoutils.js
CHANGED
|
@@ -810,6 +810,12 @@
|
|
|
810
810
|
var APPROXIMATION_VALUE = 0.1;
|
|
811
811
|
var MAX_CONVEX_ITERATIONS = 100;
|
|
812
812
|
var CLOSE_TO_INTERSECTION_DISTANCE = 0.001;
|
|
813
|
+
var triangleCenter = function (triangle) {
|
|
814
|
+
var p0 = triangle.at(0);
|
|
815
|
+
var p1 = triangle.at(1);
|
|
816
|
+
var p2 = triangle.at(2);
|
|
817
|
+
return new DPoint((p0.x + p1.x + p2.x) / 3, (p0.y + p1.y + p2.y) / 3);
|
|
818
|
+
};
|
|
813
819
|
var containCalculator = function (poly, p) {
|
|
814
820
|
var e_1, _a, e_2, _b;
|
|
815
821
|
var hasSamePoint = poly.points.some(function (point) { return point.equal(p); });
|
|
@@ -998,6 +1004,19 @@
|
|
|
998
1004
|
enumerable: false,
|
|
999
1005
|
configurable: true
|
|
1000
1006
|
});
|
|
1007
|
+
Object.defineProperty(DPolygon.prototype, "innerCenter", {
|
|
1008
|
+
get: function () {
|
|
1009
|
+
var center = this.center;
|
|
1010
|
+
return this.toTriangles().map(function (t) {
|
|
1011
|
+
var c = triangleCenter(t);
|
|
1012
|
+
c.properties.score = Math.min(c.distance(t.at(0)), c.distance(t.at(1)), c.distance(t.at(2))) + c.distance(center);
|
|
1013
|
+
return c;
|
|
1014
|
+
})
|
|
1015
|
+
.sort(function (a, b) { return a.properties.score - b.properties.score; })[0];
|
|
1016
|
+
},
|
|
1017
|
+
enumerable: false,
|
|
1018
|
+
configurable: true
|
|
1019
|
+
});
|
|
1001
1020
|
Object.defineProperty(DPolygon.prototype, "center", {
|
|
1002
1021
|
get: function () {
|
|
1003
1022
|
return this.leftTop.move(this.size.divide(2));
|
|
@@ -2000,6 +2019,14 @@
|
|
|
2000
2019
|
return res;
|
|
2001
2020
|
};
|
|
2002
2021
|
DPolygon.prototype.toTriangles = function () {
|
|
2022
|
+
var q = this.clone().removeDuplicates()
|
|
2023
|
+
.open();
|
|
2024
|
+
if (q.length < 3) {
|
|
2025
|
+
return [];
|
|
2026
|
+
}
|
|
2027
|
+
if (q.length === 3) {
|
|
2028
|
+
return [q];
|
|
2029
|
+
}
|
|
2003
2030
|
var innerAndNotIntersect = function (poly, p1, p2) {
|
|
2004
2031
|
var l = p1.findLine(p2);
|
|
2005
2032
|
var center = l.center;
|
|
@@ -2027,7 +2054,7 @@
|
|
|
2027
2054
|
}
|
|
2028
2055
|
return undefined;
|
|
2029
2056
|
};
|
|
2030
|
-
var p = this.clone().clockWise.open();
|
|
2057
|
+
var p = this.clone().removeDuplicates().clockWise.open();
|
|
2031
2058
|
while (p.holes.length) {
|
|
2032
2059
|
var h = p.holes.shift()
|
|
2033
2060
|
.clone()
|
|
@@ -4283,4 +4310,4 @@
|
|
|
4283
4310
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4284
4311
|
|
|
4285
4312
|
}));
|
|
4286
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGdlb3V0aWxzLmpzIiwic291cmNlcyI6WyIuLi9lc20vdXRpbHMuanMiLCIuLi9lc20vRE51bWJlcnMuanMiLCIuLi9lc20vRFBvbHlnb25Mb29wLmpzIiwiLi4vZXNtL0RQb2x5Z29uLmpzIiwiLi4vZXNtL0RMaW5lLmpzIiwiLi4vZXNtL0RQb2ludC5qcyIsIi4uL2VzbS9EQ2lyY2xlLmpzIiwiLi4vZXNtL0Zhc3RTZWFyY2guanMiLCIuLi9lc20vVHJhY2VNYXRyaXguanMiLCIuLi9lc20vSW50ZXJwb2xhdGlvbk1hdHJpeC5qcyIsIi4uL2VzbS9EUGxhbmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuZXhwb3J0IHZhciBER2VvID0ge1xuICAgIERFQlVHOiBmYWxzZSxcbiAgICBwYXJzZUZvcm1hdDogJ3h5eidcbn07XG5leHBvcnQgdmFyIHdhcm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGlmIChER2VvLkRFQlVHKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYXJncyksIGZhbHNlKSk7XG4gICAgfVxufTtcbmV4cG9ydCB2YXIgaXNEZWZBbmROb3ROdWxsID0gZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEgIT0gdW5kZWZpbmVkOyB9O1xudmFyIGhvb2sgPSBmdW5jdGlvbiAoc2NvcGUpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjb3BlOyB9OyB9O1xudmFyIHNob3VsZEJlSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgSW50IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVVSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSB8fCAhcC5ndE9yRXF1YWwoRFBvaW50Lnplcm8oKSkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIFVJbnQhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZURlZ3JlZSA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VXb3JsZEdlb2RldGljU3lzdGVtKSB7XG4gICAgICAgIHdhcm4oXCJcXFwiXCIuY29uY2F0KGZ1bmNOYW1lLCBcIlxcXCIgLT4gXFxcIlwiKS5jb25jYXQoYXJnTmFtZSwgXCJcXFwiIHNob3VsZCBiZSBkZWdyZWUhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZVJhZGlhbnMgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlUmFkaWFucykge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgcmFkaWFucyFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xudmFyIHNob3VsZEV4aXN0ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIWlzRGVmQW5kTm90TnVsbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgZXhpc3QhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZU1ldGVycyA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VQc2V1ZG9NZXJjYXRvcikge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgbWV0ZXJzIVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG5leHBvcnQgdmFyIGNoZWNrRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuY05hbWUpIHsgcmV0dXJuICh7XG4gICAgY2hlY2tBcmd1bWVudDogZnVuY3Rpb24gKGFyZ05hbWUpIHtcbiAgICAgICAgaWYgKCFER2VvLkRFQlVHKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlTWV0ZXJzOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlSW50OiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlVUludDogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZVJhZGlhbnM6IGhvb2sodGhpcyksXG4gICAgICAgICAgICAgICAgc2hvdWxkRXhpc3Q6IGhvb2sodGhpcylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBzaG91bGRCZURlZ3JlZSh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZU1ldGVyczogc2hvdWxkQmVNZXRlcnModGhpcywgZnVuY05hbWUsIGFyZ05hbWUpLFxuICAgICAgICAgICAgc2hvdWxkQmVJbnQ6IHNob3VsZEJlSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlVUludDogc2hvdWxkQmVVSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlUmFkaWFuczogc2hvdWxkQmVSYWRpYW5zKHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEV4aXN0OiBzaG91bGRFeGlzdCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSlcbiAgICAgICAgfTtcbiAgICB9XG59KTsgfTtcbmV4cG9ydCB2YXIgY3JlYXRlQXJyYXkgPSBmdW5jdGlvbiAodiwgZmlsbFN5bWJvbCkge1xuICAgIGlmICh0eXBlb2YgZmlsbFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5KHYpLmZpbGwoZmFsc2UpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiBmaWxsU3ltYm9sKGkpOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBcnJheSh2KS5maWxsKGZpbGxTeW1ib2wgIT09IG51bGwgJiYgZmlsbFN5bWJvbCAhPT0gdm9pZCAwID8gZmlsbFN5bWJvbCA6IDApO1xufTtcbmV4cG9ydCB2YXIgY3JlYXRlTWF0cml4ID0gZnVuY3Rpb24gKF9hLCBmaWxsU3ltYm9sKSB7XG4gICAgdmFyIGggPSBfYS5oLCB3ID0gX2EudztcbiAgICBpZiAodHlwZW9mIGZpbGxTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFycmF5KGgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCB5KSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmdW5jdGlvbiAoeCkgeyByZXR1cm4gZmlsbFN5bWJvbCh4LCB5KTsgfSk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQXJyYXkoaClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmaWxsU3ltYm9sKTsgfSk7XG59O1xuZXhwb3J0IHZhciBnYXVzc2lhbkVsaW1pbmF0aW9uID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgIHZhciBuID0gbWF0cml4Lmxlbmd0aDtcbiAgICB2YXIgbWF0cml4Q2xvbmUgPSBjcmVhdGVNYXRyaXgobmV3IERQb2ludChuICsgMSwgbikpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2ldW2pdID09PSAwID8gZ2F1c3NpYW5FbGltaW5hdGlvbi5NSU4gOiBtYXRyaXhbaV1bal07XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSA9IG1hdHJpeFtpXVtqXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKyAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBLID0gbWF0cml4Q2xvbmVbaV1ba10gLyBtYXRyaXhDbG9uZVtrXVtrXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgICAgIG1hdHJpeENsb25lW2ldW2pdIC09IG1hdHJpeENsb25lW2tdW2pdICogSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuICsgMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4Q2xvbmVbaV1bal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgayA9IG4gLSAxOyBrID4gLTE7IGstLSkge1xuICAgICAgICBmb3IgKHZhciBpID0gbjsgaSA+IC0xOyBpLS0pIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgSyA9IG1hdHJpeENsb25lW2ldW2tdIC8gbWF0cml4Q2xvbmVba11ba107XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gbjsgaiA+IC0xOyBqLS0pIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSAtPSBtYXRyaXhDbG9uZVtrXVtqXSAqIEs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGFuc3dlciA9IGNyZWF0ZUFycmF5KG4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGFuc3dlcltpXSA9IG1hdHJpeENsb25lW2ldW25dO1xuICAgIH1cbiAgICByZXR1cm4gYW5zd2VyO1xufTtcbmdhdXNzaWFuRWxpbWluYXRpb24uTUlOID0gMWUtMTA7XG5leHBvcnQgdmFyIGNyZWF0ZUNhbnZhcyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciB3ID0gMDtcbiAgICB2YXIgaCA9IDA7XG4gICAgdmFyIG9mZnNjcmVlbiA9IGZhbHNlO1xuICAgIGlmIChhIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgIHZhciB4ID0gYS54LCB5ID0gYS55O1xuICAgICAgICB3ID0geDtcbiAgICAgICAgaCA9IHk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3ID0gYTtcbiAgICAgICAgaCA9IGE7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIG9mZnNjcmVlbiA9IGI7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBiID09PSAnbnVtYmVyJykge1xuICAgICAgICBoID0gYjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgb2Zmc2NyZWVuID0gYztcbiAgICB9XG4gICAgdmFyIGNhbnZhcyA9IG9mZnNjcmVlbiA/IG5ldyBPZmZzY3JlZW5DYW52YXModywgaCkgOiAoKF9hID0gY3JlYXRlQ2FudmFzLmRvY3VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBkb2N1bWVudCkuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgaWYgKCFvZmZzY3JlZW4pIHtcbiAgICAgICAgY2FudmFzLndpZHRoID0gdztcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGg7XG4gICAgfVxuICAgIHJldHVybiBbY2FudmFzLCBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKV07XG59O1xudmFyIGYgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGIubWFwKGZ1bmN0aW9uIChkKSB7IHJldHVybiBbXS5jb25jYXQoYywgZCk7IH0pOyB9KSksIGZhbHNlKSk7IH07XG5leHBvcnQgdmFyIGNhcnRlc2lhblByb2R1Y3QgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBjID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgY1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIGIgPyBjYXJ0ZXNpYW5Qcm9kdWN0LmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbZihhLCBiKV0sIF9fcmVhZChjKSwgZmFsc2UpKSA6IGE7XG59O1xuZXhwb3J0IHZhciBnZXRDb21iaW5hdGlvbnMgPSBmdW5jdGlvbiAoYXJyKSB7XG4gICAgaWYgKGFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGFyclswXTtcbiAgICB9XG4gICAgdmFyIGFucyA9IFtdO1xuICAgIHZhciBvdGhlckNhc2VzID0gZ2V0Q29tYmluYXRpb25zKGFyci5zbGljZSgxKSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlckNhc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyWzBdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBhbnMucHVzaChfX3NwcmVhZEFycmF5KFthcnJbMF1bal1dLCBfX3JlYWQob3RoZXJDYXNlc1tpXSksIGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFucztcbn07XG5leHBvcnQgdmFyIGRpdiA9IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBNYXRoLmZsb29yKGEgLyBiKTsgfTtcbmV4cG9ydCB2YXIgdG9EZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAodikge1xuICAgIHZhciBkZWdyZWVzID0gTWF0aC5mbG9vcih2KTtcbiAgICB2YXIgdCA9ICh2ICUgMSkgKiA2MDtcbiAgICB2YXIgbWludXRlcyA9IE1hdGguZmxvb3IodCk7XG4gICAgdmFyIHQyID0gKHQgJSAxKSAqIDYwO1xuICAgIHZhciBzZWNvbmRzID0gdDIudG9GaXhlZCgyKTtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoZGVncmVlcywgXCJcXHUwMEIwIFwiKS5jb25jYXQobWludXRlcywgXCInIFwiKS5jb25jYXQoc2Vjb25kcywgXCJcXFwiXCIpO1xufTtcbmV4cG9ydCB2YXIgcGFyc2VEZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAoaSkge1xuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaDtcbiAgICB2YXIgcGFydHMgPSBpLm1hdGNoQWxsKC8oPzx2YWx1ZT4tP1xcZCsoPzx0YWlsPlxcLlxcZHsxLH0pPykoPzx0eXBlPsKwfCd8XCIpL2dtaXUpO1xuICAgIHZhciBkID0gMDtcbiAgICB2YXIgbSA9IDA7XG4gICAgdmFyIHMgPSAwO1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIHBhcnRzXzEgPSBfX3ZhbHVlcyhwYXJ0cyksIHBhcnRzXzFfMSA9IHBhcnRzXzEubmV4dCgpOyAhcGFydHNfMV8xLmRvbmU7IHBhcnRzXzFfMSA9IHBhcnRzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgcGFydCA9IHBhcnRzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgIHN3aXRjaCAoKF9iID0gcGFydCA9PT0gbnVsbCB8fCBwYXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJ0Lmdyb3VwcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICfCsCc6XG4gICAgICAgICAgICAgICAgICAgIGQgPSBOdW1iZXIoKF9kID0gKF9jID0gcGFydCA9PT0gbnVsbCB8fCBwYXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJ0Lmdyb3VwcykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnZhbHVlKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAnMCcpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcXCcnOlxuICAgICAgICAgICAgICAgICAgICBtID0gTnVtYmVyKChfZiA9IChfZSA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS52YWx1ZSkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXCInOlxuICAgICAgICAgICAgICAgICAgICBzID0gTnVtYmVyKChfaCA9IChfZyA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy52YWx1ZSkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHBhcnRzXzFfMSAmJiAhcGFydHNfMV8xLmRvbmUgJiYgKF9hID0gcGFydHNfMS5yZXR1cm4pKSBfYS5jYWxsKHBhcnRzXzEpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgdmFyIGggPSBkIDwgMCA/IC0xIDogMTtcbiAgICByZXR1cm4gZCArIGggKiBtIC8gNjAgKyBoICogcyAvIDM2MDA7XG59O1xuIiwiaW1wb3J0IHsgREVHUkVFX1RPX1BJLCBET1VCTEVfUElfSU5fREVHUkVFLCBQSV9JTl9ERUdSRUUsIFBJX1RPX0RFR1JFRSB9IGZyb20gJy4vRFBvaW50JztcbnZhciBkZWx0YSA9IDAuMDAxO1xudmFyIEROdW1iZXJzID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBETnVtYmVycygpIHtcbiAgICB9XG4gICAgRE51bWJlcnMubGlrZSA9IGZ1bmN0aW9uICh2LCBzLCBkKSB7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IGRlbHRhOyB9XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh2IC0gcykgPCBkO1xuICAgIH07XG4gICAgRE51bWJlcnMubGlrZVplcm8gPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZSh2LCAwKTtcbiAgICB9O1xuICAgIEROdW1iZXJzLmxpa2UyUEkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZShETnVtYmVycy5yYWQyRGVnKHYpLCBET1VCTEVfUElfSU5fREVHUkVFKTtcbiAgICB9O1xuICAgIEROdW1iZXJzLmxpa2VQSSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKEROdW1iZXJzLnJhZDJEZWcodiksIFBJX0lOX0RFR1JFRSk7XG4gICAgfTtcbiAgICBETnVtYmVycy5yYWQyRGVnID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHYgKiBERUdSRUVfVE9fUEk7XG4gICAgfTtcbiAgICBETnVtYmVycy5kZWcyUmFkID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHYgKiBQSV9UT19ERUdSRUU7XG4gICAgfTtcbiAgICByZXR1cm4gRE51bWJlcnM7XG59KCkpO1xuZXhwb3J0IHsgRE51bWJlcnMgfTtcbiIsInZhciBMb29wRnVuY3Rpb25zO1xuKGZ1bmN0aW9uIChMb29wRnVuY3Rpb25zKSB7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZ2V0VGlsZUZyb21Db29yZHNcIl0gPSAwXSA9IFwiZ2V0VGlsZUZyb21Db29yZHNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJnZXRDb29yZHNGcm9tVGlsZVwiXSA9IDFdID0gXCJnZXRDb29yZHNGcm9tVGlsZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImhlaWdodFwiXSA9IDJdID0gXCJoZWlnaHRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRYXCJdID0gM10gPSBcInNldFhcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRZXCJdID0gNF0gPSBcInNldFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRaXCJdID0gNV0gPSBcInNldFpcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGVcIl0gPSA2XSA9IFwicm90YXRlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlM2RYXCJdID0gN10gPSBcInJvdGF0ZTNkWFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdGF0ZTNkWVwiXSA9IDhdID0gXCJyb3RhdGUzZFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGUzZFpcIl0gPSA5XSA9IFwicm90YXRlM2RaXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibW92ZVwiXSA9IDEwXSA9IFwibW92ZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdW5kXCJdID0gMTFdID0gXCJyb3VuZFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImNlaWxcIl0gPSAxMl0gPSBcImNlaWxcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbG9vclwiXSA9IDEzXSA9IFwiZmxvb3JcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ0b0ZpeGVkXCJdID0gMTRdID0gXCJ0b0ZpeGVkXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiYWJzXCJdID0gMTVdID0gXCJhYnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzY2FsZVwiXSA9IDE2XSA9IFwic2NhbGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkaXZpZGVcIl0gPSAxN10gPSBcImRpdmlkZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImRlZ3JlZVRvUmFkaWFuc1wiXSA9IDE4XSA9IFwiZGVncmVlVG9SYWRpYW5zXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicmFkaWFuc1RvRGVncmVlc1wiXSA9IDE5XSA9IFwicmFkaWFuc1RvRGVncmVlc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJhZGlhbnNUb01ldGVyc1wiXSA9IDIwXSA9IFwicmFkaWFuc1RvTWV0ZXJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWV0ZXJzVG9SYWRpYW5zXCJdID0gMjFdID0gXCJtZXRlcnNUb1JhZGlhbnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoaXBQb2ludFwiXSA9IDIyXSA9IFwiaGlwUG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ4UG9pbnRcIl0gPSAyM10gPSBcInhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInlQb2ludFwiXSA9IDI0XSA9IFwieVBvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wid1BvaW50XCJdID0gMjVdID0gXCJ3UG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoUG9pbnRcIl0gPSAyNl0gPSBcImhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInNldElmTGVzc1RoYW5cIl0gPSAyN10gPSBcInNldElmTGVzc1RoYW5cIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtaW51c1wiXSA9IDI4XSA9IFwibWludXNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkZWdyZWVUb01ldGVyc1wiXSA9IDI5XSA9IFwiZGVncmVlVG9NZXRlcnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtZXRlcnNUb0RlZ3JlZVwiXSA9IDMwXSA9IFwibWV0ZXJzVG9EZWdyZWVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbGlwVmVydGljYWxseVwiXSA9IDMxXSA9IFwiZmxpcFZlcnRpY2FsbHlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRQcm9wZXJ0aWVzXCJdID0gMzJdID0gXCJzZXRQcm9wZXJ0aWVzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGl2XCJdID0gMzNdID0gXCJkaXZcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtb2RcIl0gPSAzNF0gPSBcIm1vZFwiO1xufSkoTG9vcEZ1bmN0aW9ucyB8fCAoTG9vcEZ1bmN0aW9ucyA9IHt9KSk7XG52YXIgZGVjb2RlUG9vbFJlY29yZCA9IGZ1bmN0aW9uIChhLCBfYSkge1xuICAgIHZhciBmdW5jdGlvbk5hbWUgPSBfYS5mdW5jdGlvbk5hbWUsIHBvaW50QXJnID0gX2EucG9pbnRBcmcsIG51bWJlclBvaW50QXJnID0gX2EubnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyA9IF9hLm51bWJlckFyZywgc2V0dGVyQXJnID0gX2Euc2V0dGVyQXJnLCBzZXR0ZXJBcmdCeU9iamVjdCA9IF9hLnNldHRlckFyZ0J5T2JqZWN0O1xuICAgIHZhciByZXMgPSBhO1xuICAgIHN3aXRjaCAoZnVuY3Rpb25OYW1lKSB7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5nZXRUaWxlRnJvbUNvb3JkczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZ2V0VGlsZUZyb21Db29yZHMobnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmdldENvb3Jkc0Zyb21UaWxlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhlaWdodDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGVpZ2h0KG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFg6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WChzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WChmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WShzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WShmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFo6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WihzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WihmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RYKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RZKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RaKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLm1vdmU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vdmUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdW5kOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5yb3VuZCgpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5jZWlsOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5jZWlsKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmZsb29yOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5mbG9vcigpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy50b0ZpeGVkOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC50b0ZpeGVkKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmFiczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuYWJzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNjYWxlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zY2FsZShudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGl2aWRlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kaXZpZGUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRpdjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGl2KG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tb2Q6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vZChudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb1JhZGlhbnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMucmFkaWFuc1RvRGVncmVlczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucmFkaWFuc1RvRGVncmVlcygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJhZGlhbnNUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1ldGVyc1RvUmFkaWFucygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oaXBQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGlwUG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAueFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy55UG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnlQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMud1BvaW50OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC53UG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zZXRJZkxlc3NUaGFuKHBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWludXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1pbnVzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvTWV0ZXJzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb0RlZ3JlZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAubWV0ZXJzVG9EZWdyZWUoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZmxpcFZlcnRpY2FsbHk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmZsaXBWZXJ0aWNhbGx5KG51bWJlclBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gdHlwZW9mIHNldHRlckFyZ0J5T2JqZWN0ID09PSAnb2JqZWN0JyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFByb3BlcnRpZXMoc2V0dGVyQXJnQnlPYmplY3QpIDogYShrLCBpbmRleCkuc2V0UHJvcGVydGllcyhmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnQnlPYmplY3QocCwgaW5kZXgpOyB9KTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBEUG9seWdvbkxvb3AgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQb2x5Z29uTG9vcChwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucG9vbCA9IFtdO1xuICAgIH1cbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldExvb3BGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9vbC5yZWR1Y2UoZGVjb2RlUG9vbFJlY29yZCwgZnVuY3Rpb24gKGspIHsgcmV0dXJuIGs7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5tYXAodGhpcy5nZXRMb29wRnVuY3Rpb24oKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFRpbGVGcm9tQ29vcmRzID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmdldFRpbGVGcm9tQ29vcmRzLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6b29tXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0Q29vcmRzRnJvbVRpbGUgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IHpvb21cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaGVpZ2h0LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRYLFxuICAgICAgICAgICAgc2V0dGVyQXJnOiB4XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChzZXR0ZXJBcmdCeU9iamVjdCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllcyxcbiAgICAgICAgICAgIHNldHRlckFyZ0J5T2JqZWN0OiBzZXR0ZXJBcmdCeU9iamVjdFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WSxcbiAgICAgICAgICAgIHNldHRlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WixcbiAgICAgICAgICAgIHNldHRlckFyZzogelxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUzZFggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlM2RYLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm90YXRlM2RZID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWSxcbiAgICAgICAgICAgIG51bWJlckFyZzogYVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZTNkWiA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFosXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubW92ZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm91bmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3VuZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmNlaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5jZWlsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZmxvb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbG9vclxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnRvRml4ZWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICBpZiAobiA9PT0gdm9pZCAwKSB7IG4gPSAyOyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy50b0ZpeGVkLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuYWJzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zY2FsZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdmlkZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdixcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1vZCxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucmFkaWFuc1RvRGVncmVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJhZGlhbnNUb0RlZ3JlZXNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yYWRpYW5zVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tZXRlcnNUb1JhZGlhbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRIaXBQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhpcFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WVBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueVBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0V1BvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMud1BvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0SFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0SWZMZXNzVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuLFxuICAgICAgICAgICAgcG9pbnRBcmc6IHBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5taW51cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1pbnVzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kZWdyZWVUb01ldGVyc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLm1ldGVyc1RvRGVncmVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubWV0ZXJzVG9EZWdyZWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5mbGlwVmVydGljYWxseSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbGlwVmVydGljYWxseSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiBzaXplXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBEUG9seWdvbkxvb3A7XG59KCkpO1xuZXhwb3J0IHsgRFBvbHlnb25Mb29wIH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBETGluZSB9IGZyb20gJy4vRExpbmUnO1xuaW1wb3J0IHsgRENpcmNsZSB9IGZyb20gJy4vRENpcmNsZSc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xuaW1wb3J0IHsgaW8gYXMganN0c0lvLCBvcGVyYXRpb24gfSBmcm9tICdqc3RzJztcbmltcG9ydCB7IERQb2x5Z29uTG9vcCB9IGZyb20gJy4vRFBvbHlnb25Mb29wJztcbmltcG9ydCB7IERHZW8sIGlzRGVmQW5kTm90TnVsbCB9IGZyb20gJy4vdXRpbHMnO1xudmFyIF9hID0gb3BlcmF0aW9uLmJ1ZmZlci5CdWZmZXJQYXJhbWV0ZXJzLCBDQVBfUk9VTkQgPSBfYS5DQVBfUk9VTkQsIENBUF9GTEFUID0gX2EuQ0FQX0ZMQVQsIENBUF9TUVVBUkUgPSBfYS5DQVBfU1FVQVJFO1xuZXhwb3J0IHZhciBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT04gPSAzO1xudmFyIEFQUFJPWElNQVRJT05fVkFMVUUgPSAwLjE7XG52YXIgTUFYX0NPTlZFWF9JVEVSQVRJT05TID0gMTAwO1xudmFyIENMT1NFX1RPX0lOVEVSU0VDVElPTl9ESVNUQU5DRSA9IDAuMDAxO1xudmFyIGNvbnRhaW5DYWxjdWxhdG9yID0gZnVuY3Rpb24gKHBvbHksIHApIHtcbiAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICB2YXIgaGFzU2FtZVBvaW50ID0gcG9seS5wb2ludHMuc29tZShmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJuIHBvaW50LmVxdWFsKHApOyB9KTtcbiAgICBpZiAoaGFzU2FtZVBvaW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfYyA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF9lID0gX19yZWFkKF9kLnZhbHVlLCAzKSwgcG9seWdvbkxpbmUgPSBfZVsyXTtcbiAgICAgICAgICAgIHZhciBvbkJvcmRlciA9IHBvbHlnb25MaW5lLngocCkuZXF1YWwocCkgJiYgcG9seWdvbkxpbmUuaW5SYW5nZShwKTtcbiAgICAgICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgIH1cbiAgICB2YXIgdG90YWxGaSA9IDA7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2YgPSBfX3ZhbHVlcyhwb2x5Lmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF9oID0gX19yZWFkKF9nLnZhbHVlLCAyKSwgX2ogPSBfaFswXSwgeCA9IF9qLngsIHkgPSBfai55LCBfayA9IF9oWzFdLCBhID0gX2sueCwgYiA9IF9rLnk7XG4gICAgICAgICAgICB2YXIgbGluZTEgPSBuZXcgRExpbmUoeCAtIHAueCwgeSAtIHAueSwgMCk7XG4gICAgICAgICAgICB2YXIgbGluZTIgPSBuZXcgRExpbmUoYSAtIHAueCwgYiAtIHAueSwgMCk7XG4gICAgICAgICAgICB2YXIgZmlEaWYgPSBsaW5lMS5maW5kRmkobGluZTIpO1xuICAgICAgICAgICAgaWYgKGxpbmUxLnZlY3RvclByb2R1Y3QobGluZTIpLmMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdG90YWxGaSArPSBmaURpZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsRmkgLT0gZmlEaWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChfZyAmJiAhX2cuZG9uZSAmJiAoX2IgPSBfZi5yZXR1cm4pKSBfYi5jYWxsKF9mKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgfVxuICAgIHZhciBlcHMgPSBNYXRoLlBJIC8gMTAwMDA7XG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xuICAgIHZhciBhYnNUb3RhbEZpID0gTWF0aC5hYnModG90YWxGaSk7XG4gICAgaWYgKGFic1RvdGFsRmkgPCBlcHMpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKE1hdGguYWJzKDIgKiBNYXRoLlBJIC0gYWJzVG90YWxGaSkgPCBlcHMpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY29udGFpbnMyIGZhaWxkJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xudmFyIERQb2x5Z29uID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUG9seWdvbihwUG9pbnRzKSB7XG4gICAgICAgIGlmIChwUG9pbnRzID09PSB2b2lkIDApIHsgcFBvaW50cyA9IFtdOyB9XG4gICAgICAgIHRoaXMucFBvaW50cyA9IHBQb2ludHM7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHt9O1xuICAgICAgICB0aGlzLmhvbGVzID0gW107XG4gICAgICAgIHRoaXMuc2VhcmNoU3RvcmUgPSB7fTtcbiAgICB9XG4gICAgRFBvbHlnb24uYXJyYXlPZlRyaWFuZ2xlc1RvVmVydGljZXMgPSBmdW5jdGlvbiAodHJpYW5nbGVzLCBoZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHRyaWFuZ2xlcy5tYXAoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChpc0RlZkFuZE5vdE51bGwoaGVpZ2h0KSA/IHZcbiAgICAgICAgICAgIC5sb29wKClcbiAgICAgICAgICAgIC5oZWlnaHQoaGVpZ2h0KVxuICAgICAgICAgICAgLnJ1bigpIDogdilcbiAgICAgICAgICAgIC50b0FycmF5T2ZDb29yZHMoKTsgfSlcbiAgICAgICAgICAgIC5mbGF0KDIpO1xuICAgIH07XG4gICAgRFBvbHlnb24ubWluQXJlYVJlY3RhbmdsZVNpemUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgX2EgPSBwb2x5LmNsb25lKCkub3BlbigpLCBmaXJzdCA9IF9hLmZpcnN0LCBzZWNvbmQgPSBfYS5zZWNvbmQsIGxhc3QgPSBfYS5sYXN0O1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludChmaXJzdC5kaXN0YW5jZShzZWNvbmQpLCBmaXJzdC5kaXN0YW5jZShsYXN0KSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi50b0Rhc2ggPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgZV8zLCBfYTtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtwXTtcbiAgICAgICAgdmFyIHRyaWdnZXIgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhwb2x5LnBvaW50cyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnQgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICBwLnB1c2gocG9pbnQuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwb2ludC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgPSAhdHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5wdXNoKHBvaW50LmNsb25lKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIERQb2x5Z29uLm1pbkFyZWFSZWN0YW5nbGVEaXJlY3Rpb24gPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgX2EgPSBwb2x5LmNsb25lKCkub3BlbigpLCBmaXJzdCA9IF9hLmZpcnN0LCBzZWNvbmQgPSBfYS5zZWNvbmQsIGxhc3QgPSBfYS5sYXN0O1xuICAgICAgICBpZiAoIWZpcnN0IHx8ICFzZWNvbmQgfHwgIWxhc3QpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdC5kaXN0YW5jZShzZWNvbmQpID4gZmlyc3QuZGlzdGFuY2UobGFzdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXJzdC5maW5kTGluZShzZWNvbmQpLmdldEZpKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpcnN0LmZpbmRMaW5lKGxhc3QpLmdldEZpKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wYXJzZUZyb21XS1QgPSBmdW5jdGlvbiAod2t0KSB7XG4gICAgICAgIHZhciBkYXRhID0gd2t0LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ1BPTFlHT04nKSA9PT0gMCkge1xuICAgICAgICAgICAgdmFyIHJlZ2V4cCA9IC9QT0xZR09OIFxcKFxcKCg/PGRhdGE+KD86KD8hXFwpXFwpJCkuKSo/KVxcKVxcKSQvbWl1O1xuICAgICAgICAgICAgdmFyIHJlZyA9IHJlZ2V4cC5leGVjKGRhdGEpO1xuICAgICAgICAgICAgdmFyIF9hID0gX19yZWFkKHJlZy5ncm91cHMuZGF0YVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnKSwgKCcpXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gbmV3IERQb2x5Z29uKHAuc3BsaXQoJywgJylcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwYXJlcykgeyByZXR1cm4gRFBvaW50LnBhcnNlKHBhcmVzLnNwbGl0KCcgJykubWFwKE51bWJlcikpOyB9KSk7IH0pKSwgcGF0aCA9IF9hWzBdLCBob2xlcyA9IF9hLnNsaWNlKDEpO1xuICAgICAgICAgICAgaWYgKGhvbGVzICYmIGhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhdGguaG9sZXMgPSBob2xlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignTElORVNUUklORycpID09PSAwKSB7XG4gICAgICAgICAgICB2YXIgcmVnZXhwID0gL0xJTkVTVFJJTkcgXFwoKD88ZGF0YT4oPzooPyFcXCkkKS4pKj8pXFwpJC9taXU7XG4gICAgICAgICAgICB2YXIgcmVnID0gcmVnZXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgICAgICByZXMgPSBuZXcgRFBvbHlnb24ocmVnLmdyb3Vwcy5kYXRhXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsICcpLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gRFBvaW50LnBhcnNlKHQuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKSk7IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5pbmRleE9mKCdQT0lOVCcpID09PSAwKSB7XG4gICAgICAgICAgICByZXMgPSBuZXcgRFBvbHlnb24oW0RQb2ludC5wYXJzZUZyb21XS1QoZGF0YSldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24uY3JlYXRlU3F1YXJlQnlTaXplID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihbRFBvaW50Lnplcm8oKSwgc2l6ZS5jbG9uZSgpLnNldFgoMCksIHNpemUuY2xvbmUoKSwgc2l6ZS5jbG9uZSgpLnNldFkoMCldKS5jbG9zZSgpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmxvb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb25Mb29wKHRoaXMpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJwb2ludHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBQb2ludHM7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIHRoaXMucFBvaW50cyA9IHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5tYXgoYSwgci54KTsgfSwgLUluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1pbihhLCByLngpOyB9LCBJbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFlcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5tYXgoYSwgci55KTsgfSwgLUluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1pbihhLCByLnkpOyB9LCBJbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVmdFRvcC5tb3ZlKHRoaXMuc2l6ZS5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhZIC0gdGhpcy5taW5ZO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJ3XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhYIC0gdGhpcy5taW5YO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJkWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnc7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImV4dGVuZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1pblkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWF4WCwgbWluWSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludChtYXhYLCBtYXhZKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1heFkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWluWCwgbWluWSlcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCB3ID0gX2EudywgaCA9IF9hLmg7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh3LCBoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVmdFRvcFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWluWCwgbWluWSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1pblBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWZ0VG9wO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJyaWdodEJvdHRvbVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWF4WCA9IF9hLm1heFgsIG1heFkgPSBfYS5tYXhZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWF4WCwgbWF4WSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yaWdodEJvdHRvbTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZnVsbExlbmd0aFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5vcGVuKCkucGVyaW1ldGVyO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJwZXJpbWV0ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzQsIF9hO1xuICAgICAgICAgICAgdmFyIHAgPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIHAxID0gX2RbMF0sIHAyID0gX2RbMV07XG4gICAgICAgICAgICAgICAgICAgIHAgKz0gcDEuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzRfMSkgeyBlXzQgPSB7IGVycm9yOiBlXzRfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV80KSB0aHJvdyBlXzQuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJhcmVhXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV81LCBfYTtcbiAgICAgICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuZGVpbnRlcnNlY3Rpb24ubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0geCAqIGIgLSB5ICogYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV81XzEpIHsgZV81ID0geyBlcnJvcjogZV81XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNSkgdGhyb3cgZV81LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoc3VtIC8gMikgLSB0aGlzLmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSArIGhvbGUuYXJlYTsgfSwgMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImRlaW50ZXJzZWN0aW9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV82LCBfYTtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLmNsb3NlKCk7XG4gICAgICAgICAgICB2YXIgc3RvcmUgPSB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgayA9IHAuYXQoaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBzdG9yZVtrXSA9IHN0b3JlW2tdIHx8IFtdO1xuICAgICAgICAgICAgICAgIHN0b3JlW2tdLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RMaW5lID0gcC5hdChpKS5maW5kTGluZShwLmF0KGkgKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWNvbmRMaW5lID0gcC5hdChqKS5maW5kTGluZShwLmF0KGogKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25Qb2ludCA9IGZpcnN0TGluZS5pbnRlcnNlY3Rpb24oc2Vjb25kTGluZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb25Qb2ludCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIV9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGZpcnN0TGluZS5wb2ludHMpLCBmYWxzZSksIF9fcmVhZChzZWNvbmRMaW5lLnBvaW50cyksIGZhbHNlKS5zb21lKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0Lmxpa2UoaW50ZXJzZWN0aW9uUG9pbnQpOyB9KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBwLnJlbW92ZVBhcnQoaSwgaiAtIGkpLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShbaV0sIF9fcmVhZChwYXJ0KSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIoaiwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlcihpLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMjsgaiA8IHAubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIF9sb29wXzEoaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKE9iamVjdC5rZXlzKHN0b3JlKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gc3RvcmVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIChqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbl8xID0gcC5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gcmVjb3JkW2pdIC0gcmVjb3JkW2ogLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBuZXcgRFBvbHlnb24ob3JpZ2luXzEucmVtb3ZlUGFydChyZWNvcmRbaiAtIDFdLCBkKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhbGxJbnNpZGUgPSBwYXJ0LnJlZHVjZShmdW5jdGlvbiAoYSwgZSkgeyByZXR1cm4gYSAmJiBjb250YWluQ2FsY3VsYXRvcihvcmlnaW5fMSwgZSk7IH0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSW5zaWRlICYmIG9yaWdpbl8xLmlzQ2xvY2t3aXNlID09PSBwYXJ0LmlzQ2xvY2t3aXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fMS5pbnNlcnRBZnRlci5hcHBseShvcmlnaW5fMSwgX19zcHJlYWRBcnJheShbcmVjb3JkW2ogLSAxXSAtIDFdLCBfX3JlYWQocGFydC5yZXZlcnNlKCkucG9pbnRzKSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvcmlnaW5fMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gcmVjb3JkLmxlbmd0aCAtIDE7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9vcF8yKGopO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfNl8xKSB7IGVfNiA9IHsgZXJyb3I6IGVfNl8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzYpIHRocm93IGVfNi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInZhbGlkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggPiBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT047XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImZpcnN0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwic2Vjb25kXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGFzdFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXQodGhpcy5sZW5ndGggLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluQXJlYVJlY3RhbmdsZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfNywgX2EsIGVfOCwgX2I7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY29udmV4O1xuICAgICAgICAgICAgdmFyIHJlc3VsdFBvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIHZhciByZXN1bHRBcmVhID0gSW5maW5pdHk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMocC5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZSA9IF9fcmVhZChfZC52YWx1ZSwgMyksIGwgPSBfZVsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQxID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heEhlaWdodCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhIZWlnaHRQb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfZiA9IChlXzggPSB2b2lkIDAsIF9fdmFsdWVzKHAubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaCA9IF9fcmVhZChfZy52YWx1ZSwgNCksIHogPSBfaFswXSwgaSA9IF9oWzNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IGwuZmluZFBvaW50KGwuZmluZFBlcnBlbmRpY3VsYXIoeikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcDEuZGlzdGFuY2Uoeik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gbWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodFBvaW50ID0gejtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBsLmZpbmRQb2ludChsLmZpbmRQZXJwZW5kaWN1bGFyKHAuYXQoaikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBwMS5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID49IG1heFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IHc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aFBvaW50MSA9IHAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIgPSBwMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV84XzEpIHsgZV84ID0geyBlcnJvcjogZV84XzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9nICYmICFfZy5kb25lICYmIChfYiA9IF9mLnJldHVybikpIF9iLmNhbGwoX2YpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzgpIHRocm93IGVfOC5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWF4V2lkdGhQb2ludDEgfHwgIW1heFdpZHRoUG9pbnQyIHx8ICFtYXhIZWlnaHRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoTGluZSA9IG1heFdpZHRoUG9pbnQxLmZpbmRMaW5lKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIxID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIyID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBQb2x5Z29uID0gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoUG9pbnQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJwZW5kaWN1bGFyMi5maW5kUG9pbnQocGVycGVuZGljdWxhcjIuZmluZFBlcnBlbmRpY3VsYXIobWF4SGVpZ2h0UG9pbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnBlbmRpY3VsYXIxLmZpbmRQb2ludChwZXJwZW5kaWN1bGFyMS5maW5kUGVycGVuZGljdWxhcihtYXhIZWlnaHRQb2ludCkpXG4gICAgICAgICAgICAgICAgICAgIF0pLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wUG9seWdvbi5hcmVhIDwgcmVzdWx0QXJlYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UG9seWdvbiA9IHRlbXBQb2x5Z29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJlYSA9IHRlbXBQb2x5Z29uLmFyZWE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV83XzEpIHsgZV83ID0geyBlcnJvcjogZV83XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNykgdGhyb3cgZV83LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0UG9seWdvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiY29udmV4XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5vcGVuKCk7XG4gICAgICAgICAgICB2YXIgaXNDbG9ja3dpc2UgPSBwLmlzQ2xvY2t3aXNlO1xuICAgICAgICAgICAgaWYgKCFpc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgIHAucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGwgPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHAubGFzdDtcbiAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmZpcnN0O1xuICAgICAgICAgICAgICAgIHZhciBwMyA9IHAuc2Vjb25kO1xuICAgICAgICAgICAgICAgIHZhciBkID0gcDIuZmluZElubmVyQW5nbGUocDEsIHAzKTtcbiAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5yZW1vdmVQYXJ0KC0xLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHAubGVuZ3RoKTtcbiAgICAgICAgICAgIHAuY2xvc2UoKTtcbiAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHAgPSBwLmRlaW50ZXJzZWN0aW9uO1xuICAgICAgICAgICAgICAgIGwgPSBwLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHAubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IHAuYXQoaSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmF0KGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDMgPSBwLmF0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBwMi5maW5kSW5uZXJBbmdsZShwMSwgcDMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAucmVtb3ZlUGFydCgtLWksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZXJhdGlvbisrO1xuICAgICAgICAgICAgfSB3aGlsZSAocC5sZW5ndGggIT09IGwgJiYgaXRlcmF0aW9uIDwgTUFYX0NPTlZFWF9JVEVSQVRJT05TKTtcbiAgICAgICAgICAgIGlmICghaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICBwLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJpc0Nsb2Nrd2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfOSwgX2E7XG4gICAgICAgICAgICB2YXIgc3VtID0gMDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICAubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gKGEgLSB4KSAqIChiICsgeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfOV8xKSB7IGVfOSA9IHsgZXJyb3I6IGVfOV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzkpIHRocm93IGVfOS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1bSA8IDA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNsb2NrV2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5yZXZlcnNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm5vSG9sZXNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgICAgICByZXMuaG9sZXMgPSBbXTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24gKGYsIHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5yZWR1Y2UoZiwgdik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKGwsIGluY2x1ZGVPbmx5KSB7XG4gICAgICAgIHZhciBlXzEwLCBfYTtcbiAgICAgICAgaWYgKGluY2x1ZGVPbmx5ID09PSB2b2lkIDApIHsgaW5jbHVkZU9ubHkgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMyksIGxpbmUgPSBfZFsyXTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0ID0gbGluZS5pbnRlcnNlY3Rpb24obCwgMCwgaW5jbHVkZU9ubHkpO1xuICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaW50ZXJzZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTBfMSkgeyBlXzEwID0geyBlcnJvcjogZV8xMF8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMCkgdGhyb3cgZV8xMC5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2V0Q2VudGVyID0gZnVuY3Rpb24gKG5ld0NlbnRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29wKClcbiAgICAgICAgICAgIC5tb3ZlKG5ld0NlbnRlci5jbG9uZSgpLm1vdmUodGhpcy5jZW50ZXIubWludXMoKSkpXG4gICAgICAgICAgICAucnVuKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAodHlwZSwgd2l0aFopIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gRFBvbHlnb24uV0tUX1BPTFlHT047IH1cbiAgICAgICAgaWYgKHdpdGhaID09PSB2b2lkIDApIHsgd2l0aFogPSBmYWxzZTsgfVxuICAgICAgICBpZiAodHlwZSA9PT0gRFBvbHlnb24uV0tUX1BPTFlHT04pIHtcbiAgICAgICAgICAgIHZhciBoID0gJyc7XG4gICAgICAgICAgICBpZiAodGhpcy5ob2xlcyAmJiB0aGlzLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGggPSBcIiwgXCIuY29uY2F0KHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChob2xlKSB7IHJldHVybiBob2xlLnRvU3RyaW5nKCk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIlBPTFlHT04gKChcIi5jb25jYXQodGhpcy5kZWludGVyc2VjdGlvbi5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gXCJcIi5jb25jYXQoci54LCBcIiBcIikuY29uY2F0KHIueSkuY29uY2F0KHdpdGhaID8gXCIgXCIuY29uY2F0KHIueikgOiAnJyk7IH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyksIFwiKVwiKS5jb25jYXQoaCwgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIkxJTkVTVFJJTkcgKFwiLmNvbmNhdCh0aGlzLm1hcEFycmF5KGZ1bmN0aW9uIChyKSB7IHJldHVybiBcIlwiLmNvbmNhdChyLngsIFwiIFwiKS5jb25jYXQoci55KS5jb25jYXQod2l0aFogPyBcIiBcIi5jb25jYXQoci56KSA6ICcnKTsgfSlcbiAgICAgICAgICAgIC5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5wUG9pbnRzLmZpbHRlcihmKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5tYXBBcnJheShmKTtcbiAgICAgICAgdGhpcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLm1hcChmKTsgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm1hcEFycmF5ID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5tYXAoZik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHRoaXMucG9pbnRzLnNvcnQoZik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzWyhpbmRleCAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGhdO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5wb3AoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMucFBvaW50cykucHVzaC5hcHBseShfYSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFyZ3MpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNoaWZ0KCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnBQb2ludHMpLnVuc2hpZnQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChhcmdzKSwgZmFsc2UpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZXZlcnNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBQb2ludHMgPSB0aGlzLnBQb2ludHMucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLmhvbGVzID0gdGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgucmV2ZXJzZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5wUG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5nZXRWYWx1ZSgpOyB9KSArIHRoaXMuaG9sZXNcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGgpIHsgcmV0dXJuIGEgKyBoLmdldFZhbHVlKCk7IH0sICcnKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gci50b1N0cmluZygpOyB9KS5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwMCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmIChwMCAmJiAhdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaChwMC5jbG9uZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDIgJiYgcCAmJiB0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMucG9pbnRzKSwgZmFsc2UpLCBfX3JlYWQocG9seS5wb2ludHMpLCBmYWxzZSkpLmNsb3NlKCk7XG4gICAgICAgIHJlcy5ob2xlcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMuaG9sZXMpLCBmYWxzZSksIF9fcmVhZChwb2x5LmhvbGVzKSwgZmFsc2UpLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9uZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNvbWUoZnVuY3Rpb24gKHEpIHsgcmV0dXJuIHEuZXF1YWwocCk7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKHRoaXMucG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5jbG9uZSgpOyB9KSk7XG4gICAgICAgIHJlcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmNsb25lKCk7IH0pO1xuICAgICAgICByZXMucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKCEocCBpbnN0YW5jZW9mIERQb2x5Z29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCAhPT0gcC5sZW5ndGggfHwgdGhpcy5ob2xlcy5sZW5ndGggIT09IHAuaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0aGlzLnNhbWUocCkgJiZcbiAgICAgICAgICAgIHRoaXMuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIHAuaG9sZXMuc29tZShmdW5jdGlvbiAocEhvbGVzKSB7IHJldHVybiBwSG9sZXMuc2FtZShob2xlKTsgfSk7IH0sIHRydWUpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zYW1lID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIHBDbG9uZSA9IHAuY2xvbmUoKS5jbG9zZSgpO1xuICAgICAgICB2YXIgdGhpc0FzU3RyaW5nID0gdGhpcy5jbG9uZSgpXG4gICAgICAgICAgICAuY2xvc2UoKVxuICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcENsb25lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpc0FzU3RyaW5nID09PSBwQ2xvbmUudG9TdHJpbmcoKSB8fCB0aGlzQXNTdHJpbmcgPT09IHBDbG9uZS5jbG9uZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwQ2xvbmUubmV4dFN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmZpbmRJbmRleCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wb2ludHMuZmluZEluZGV4KGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LmVxdWFsKGEpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wb2ludHMuZmluZEluZGV4KGEpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmFwcHJveGltYXRpb24gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZSA9PT0gdm9pZCAwKSB7IGUgPSBNYXRoLnNxcnQodGhpcy5wZXJpbWV0ZXIpICogQVBQUk9YSU1BVElPTl9WQUxVRTsgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHRoaXMuY2xvbmUoKS5kb3VnbGFzUGV1Y2tlcih0aGlzLnBQb2ludHMsIGUpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5pbnNlcnRBZnRlciA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHBvaW50c1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICAoX2EgPSB0aGlzLnBQb2ludHMpLnNwbGljZS5hcHBseShfYSwgX19zcHJlYWRBcnJheShbaW5kZXggKyAxLCAwXSwgX19yZWFkKHBvaW50cyksIGZhbHNlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVtb3ZlUGFydCA9IGZ1bmN0aW9uIChpbmRleCwgY291bnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5zcGxpY2UoaW5kZXggKyAxLCBjb3VudCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaGFzU2ltcGxlSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGV4dGVuZDEgPSB0aGlzLmV4dGVuZDtcbiAgICAgICAgdmFyIGV4dGVuZDIgPSBwLmV4dGVuZDtcbiAgICAgICAgdmFyIGV4dGVuZDFwb2ludHMgPSBleHRlbmQxLnBvaW50cztcbiAgICAgICAgdmFyIGV4dGVuZDJwb2ludHMgPSBleHRlbmQyLnBvaW50cztcbiAgICAgICAgdmFyIGluMSA9IGV4dGVuZDFwb2ludHMuc29tZShmdW5jdGlvbiAodCkgeyByZXR1cm4gZXh0ZW5kMi5zaW1wbGVJbmNsdWRlKHQpOyB9KTtcbiAgICAgICAgdmFyIGluMiA9IGV4dGVuZDJwb2ludHMuc29tZShmdW5jdGlvbiAodCkgeyByZXR1cm4gZXh0ZW5kMS5zaW1wbGVJbmNsdWRlKHQpOyB9KTtcbiAgICAgICAgcmV0dXJuIGluMSB8fCBpbjI7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW5jbHVkZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbXBsZUluY2x1ZGVYKHApICYmIHRoaXMuc2ltcGxlSW5jbHVkZVkocCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZHJhd1BvbHlnb25PbkNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXMsIGZpbGxDb2xvciwgc3Ryb2tlQ29sb3IsIHNoYWRvd0NvbG9yLCBsaW5lV2lkdGgsIHN0ZXBzKSB7XG4gICAgICAgIGlmIChsaW5lV2lkdGggPT09IHZvaWQgMCkgeyBsaW5lV2lkdGggPSAxOyB9XG4gICAgICAgIGlmIChzdGVwcyA9PT0gdm9pZCAwKSB7IHN0ZXBzID0gdGhpcy5sZW5ndGggLSAxOyB9XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIGlmIChmaWxsQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZmlsbENvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cm9rZUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gc3Ryb2tlQ29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWxsQ29sb3IgfHwgc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdvQnlQYXRoKGN0eCwgc3RlcHMgJSB0aGlzLmxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoc2hhZG93Q29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93Qmx1ciA9IDA7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd09mZnNldFggPSAxO1xuICAgICAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRZID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWxsQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgY3R4LmZpbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5zdHJva2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5jbGVhclBvbHlnb25PbkNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXMpIHtcbiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICB2YXIgb2xkID0gY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuICAgICAgICB0aGlzLmdvQnlQYXRoKGN0eCk7XG4gICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBvbGQ7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY29udGFpbiA9IGZ1bmN0aW9uIChwLCBpc0JvcmRlckluc2lkZSkge1xuICAgICAgICB2YXIgZV8xMSwgX2E7XG4gICAgICAgIGlmIChpc0JvcmRlckluc2lkZSA9PT0gdm9pZCAwKSB7IGlzQm9yZGVySW5zaWRlID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHNpbXBsZUluY2x1ZGUgPSB0aGlzLnNpbXBsZUluY2x1ZGUocCk7XG4gICAgICAgIGlmICghc2ltcGxlSW5jbHVkZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvbkJvcmRlciA9IHRoaXMub25Cb3JkZXIocCk7XG4gICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgcmV0dXJuIGlzQm9yZGVySW5zaWRlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb2x5ID0gdGhpcy5kZWludGVyc2VjdGlvbjtcbiAgICAgICAgdmFyIHRvdGFsRmkgPSAwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhwb2x5Lmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgIHZhciBsaW5lMSA9IG5ldyBETGluZSh4IC0gcC54LCB5IC0gcC55LCAwKTtcbiAgICAgICAgICAgICAgICB2YXIgbGluZTIgPSBuZXcgRExpbmUoYSAtIHAueCwgYiAtIHAueSwgMCk7XG4gICAgICAgICAgICAgICAgdmFyIGZpRGlmID0gbGluZTEuZmluZEZpKGxpbmUyKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZTEudmVjdG9yUHJvZHVjdChsaW5lMikuYyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxGaSArPSBmaURpZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsRmkgLT0gZmlEaWY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzExXzEpIHsgZV8xMSA9IHsgZXJyb3I6IGVfMTFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTEpIHRocm93IGVfMTEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZXBzID0gTWF0aC5QSSAvIDEwMDAwO1xuICAgICAgICB2YXIgYWJzVG90YWxGaSA9IE1hdGguYWJzKHRvdGFsRmkpO1xuICAgICAgICBpZiAoYWJzVG90YWxGaSA8IGVwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKE1hdGguYWJzKDIgKiBNYXRoLlBJIC0gYWJzVG90YWxGaSkgPCBlcHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY29udGFpbnMyIGZhaWxkJyk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUub25Cb3JkZXIgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgZV8xMiwgX2E7XG4gICAgICAgIHZhciBzaW1wbGVJbmNsdWRlID0gdGhpcy5zaW1wbGVJbmNsdWRlKHApO1xuICAgICAgICBpZiAoc2ltcGxlSW5jbHVkZSkge1xuICAgICAgICAgICAgdmFyIHBvbHkgPSB0aGlzLmRlaW50ZXJzZWN0aW9uO1xuICAgICAgICAgICAgdmFyIGhhc1NhbWVQb2ludCA9IHRoaXMucG9pbnRzLnNvbWUoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludC5lcXVhbChwKTsgfSk7XG4gICAgICAgICAgICBpZiAoaGFzU2FtZVBvaW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMyksIHBvbHlnb25MaW5lID0gX2RbMl07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvbkJvcmRlciA9IHBvbHlnb25MaW5lLngocCkuZXF1YWwocCkgJiYgcG9seWdvbkxpbmUuaW5SYW5nZShwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzEyXzEpIHsgZV8xMiA9IHsgZXJyb3I6IGVfMTJfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMikgdGhyb3cgZV8xMi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5uZXh0U3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB0aGlzLnB1c2godGhpcy5zaGlmdCgpKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZW1vdmVEdXBsaWNhdGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcDEgPSB0aGlzLmF0KGkpO1xuICAgICAgICAgICAgdmFyIHAyID0gdGhpcy5hdChpICsgMSk7XG4gICAgICAgICAgICBpZiAocDEuZXF1YWwocDIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVQYXJ0KGksIDEpO1xuICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnRvR2VvSlNPTkZlYXR1cmVDb2xsZWN0aW9uID0gZnVuY3Rpb24gKHBvbHlnb25zLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgICAgICBmZWF0dXJlczogcG9seWdvbnMubWFwKGZ1bmN0aW9uIChwb2x5Z29uKSB7IHJldHVybiBwb2x5Z29uLnRvR2VvSlNPTkZlYXR1cmUoZm9ybWF0KTsgfSlcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnBhcnNlID0gZnVuY3Rpb24gKGEsIGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICBpZiAoYS50eXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGEudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0ZlYXR1cmVDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmVhdHVyZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBEUG9seWdvbi5wYXJzZShmLCBmb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoLmFwcGx5KGFrLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQodCksIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnRmVhdHVyZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBEUG9seWdvbi5wYXJzZShhLmdlb21ldHJ5LCBmb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcHNfMSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBhLnByb3BlcnRpZXMpLCAoYS5pZCA/ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogYS5pZFxuICAgICAgICAgICAgICAgICAgICB9KSA6ICh7fSkpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgcHJvcHNfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCBwcm9wc18xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnTXVsdGlQb2ludCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oYS5jb29yZGluYXRlcy5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnUG9seWdvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGxpbmUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wb2ludHMgPSBsaW5lLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gRFBvaW50LnBhcnNlKGMsIGZvcm1hdCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsuaG9sZXMucHVzaChuZXcgRFBvbHlnb24obGluZS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBuZXcgRFBvbHlnb24oKSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnTXVsdGlMaW5lU3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29vcmRpbmF0ZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgbGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChuZXcgRFBvbHlnb24obGluZS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29vcmRpbmF0ZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2goRFBvbHlnb24ucGFyc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogY29vcmRpbmF0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZvcm1hdCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnR2VvbWV0cnlDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZ2VvbWV0cmllcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKERQb2x5Z29uLnBhcnNlKGxpbmUsIGZvcm1hdCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKGFcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIERQb2ludC5wYXJzZShyLCBmb3JtYXQpOyB9KSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9BcnJheU9mQ29vcmRzID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4gdGhpcy5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gci50b0Nvb3Jkcyhmb3JtYXQpOyB9KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b0dlb0pTT05GZWF0dXJlID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgcHJvcGVydGllczogX19hc3NpZ24oe30sIHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBnZW9tZXRyeTogdGhpcy50b0dlb0pTT04oZm9ybWF0KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICAgICAgICBjb29yZGluYXRlczogX19zcHJlYWRBcnJheShbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9BcnJheU9mQ29vcmRzKGZvcm1hdClcbiAgICAgICAgICAgICAgICBdLCBfX3JlYWQodGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgudG9BcnJheU9mQ29vcmRzKGZvcm1hdCk7IH0pKSwgZmFsc2UpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgICBjb29yZGluYXRlczogdGhpcy50b0FycmF5T2ZDb29yZHMoZm9ybWF0KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRpdmlkZVRvUGllY2VzID0gZnVuY3Rpb24gKHBpZWNlc0NvdW50LCB3aXRoQWx0aXR1ZGUpIHtcbiAgICAgICAgdmFyIGVfMTMsIF9hO1xuICAgICAgICBpZiAod2l0aEFsdGl0dWRlID09PSB2b2lkIDApIHsgd2l0aEFsdGl0dWRlID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIGZ1bGxMZW5ndGggPSB0aGlzLmZ1bGxMZW5ndGg7XG4gICAgICAgIHZhciBwaWVjZUxlbmd0aCA9IGZ1bGxMZW5ndGggLyBwaWVjZXNDb3VudDtcbiAgICAgICAgdmFyIGN1cnJlbnRQaWVjZUxlbmd0aCA9IHBpZWNlTGVuZ3RoO1xuICAgICAgICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIChwMSwgcDIsIGkpIHtcbiAgICAgICAgICAgIHZhciBkID0gcDEuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgaWYgKGQgPT09IGN1cnJlbnRQaWVjZUxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHAyLnByb3BlcnRpZXMucGllY2VCb3JkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQaWVjZUxlbmd0aCA9IHBpZWNlTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZCAtIGN1cnJlbnRQaWVjZUxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgY2lyY2xlID0gbmV3IERDaXJjbGUocDEsIGN1cnJlbnRQaWVjZUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmVfMSA9IHAxLmZpbmRMaW5lKHAyKTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9uUG9pbnQgPSBsaW5lXzEuaW50ZXJzZWN0aW9uV2l0aENpcmNsZShjaXJjbGUpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHApIHsgcmV0dXJuIGxpbmVfMS5pblJhbmdlKHAsIENMT1NFX1RPX0lOVEVSU0VDVElPTl9ESVNUQU5DRSk7IH0pWzBdO1xuICAgICAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50LnByb3BlcnRpZXMucGllY2VCb3JkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXNfMS5pbnNlcnRBZnRlcihpLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhBbHRpdHVkZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDF6ID0gcDEuejtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9uUG9pbnQueiA9IHAxeiAtIChwMXogLSBwMi56KSAqIChwMS5kaXN0YW5jZShpbnRlcnNlY3Rpb25Qb2ludCkgLyBkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFBpZWNlTGVuZ3RoID0gcGllY2VMZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGllY2VMZW5ndGggLT0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRoaXNfMSA9IHRoaXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCA0KSwgcDEgPSBfZFswXSwgcDIgPSBfZFsxXSwgaSA9IF9kWzNdO1xuICAgICAgICAgICAgICAgIF9sb29wXzMocDEsIHAyLCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xM18xKSB7IGVfMTMgPSB7IGVycm9yOiBlXzEzXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEzKSB0aHJvdyBlXzEzLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucHJlcGFyZVRvRmFzdFNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVfMTQsIF9hO1xuICAgICAgICB0aGlzLnNlYXJjaFN0b3JlID0ge307XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucG9pbnRzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9jLnZhbHVlLCB4ID0gX2QueCwgeSA9IF9kLnksIHogPSBfZC56O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzE0XzEpIHsgZV8xNCA9IHsgZXJyb3I6IGVfMTRfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTQpIHRocm93IGVfMTQuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmZhc3RIYXMgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueSwgeiA9IF9hLno7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJncm93aW5nUGllY2VzR2VuZXJhdG9yXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcG9seWdvbiA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciByLCBfYSwgX2IsIHAsIGVfMTVfMTtcbiAgICAgICAgICAgICAgICB2YXIgZV8xNSwgX2M7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfZCkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9kLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC50cnlzLnB1c2goWzEsIDYsIDcsIDhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSA9IF9fdmFsdWVzKHBvbHlnb24ucFBvaW50cyksIF9iID0gX2EubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFfYi5kb25lKSByZXR1cm4gWzMsIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBfYi52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnB1c2gocCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwLnByb3BlcnRpZXMucGllY2VCb3JkZXIpIHJldHVybiBbMywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCByLmNsb25lKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2IgPSBfYS5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszLCAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFszLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXzE1XzEgPSBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZV8xNSA9IHsgZXJyb3I6IGVfMTVfMSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgOF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9iICYmICFfYi5kb25lICYmIChfYyA9IF9hLnJldHVybikpIF9jLmNhbGwoX2EpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTUpIHRocm93IGVfMTUuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzIsIHIuY2xvbmUoKV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlVW5pb24gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlcyA9IHRoaXMuc2ltcGxlTG9naWNGdW5jdGlvbihwLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChyZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBEUG9seWdvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxlTG9naWNGdW5jdGlvbihwLCBmYWxzZSwgZmFsc2UpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZURpZmZlcmVuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaW1wbGVMb2dpY0Z1bmN0aW9uKHAsIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zbWFydFVuaW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGVfMTYsIF9hO1xuICAgICAgICB2YXIgcmVzID0gdGhpcy5jbG9uZSgpLnNpbXBsZVVuaW9uKHApO1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB2YXIgYWxsSG9sZXMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMuaG9sZXMpLCBmYWxzZSksIF9fcmVhZChwLmhvbGVzKSwgZmFsc2UpLCBfX3JlYWQocmVzLmhvbGVzKSwgZmFsc2UpLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9uZSgpOyB9KTtcbiAgICAgICAgICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgZV8xNywgX2I7XG4gICAgICAgICAgICAgICAgdmFyIF9sb29wXzUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5lcXVhbChiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEuc2ltcGxlVW5pb24oYik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxIb2xlcyA9IGFsbEhvbGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gIXYuZXF1YWwoYSkgJiYgIXYuZXF1YWwoYik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSG9sZXMucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYWxsSG9sZXNfMiA9IChlXzE3ID0gdm9pZCAwLCBfX3ZhbHVlcyhhbGxIb2xlcykpLCBhbGxIb2xlc18yXzEgPSBhbGxIb2xlc18yLm5leHQoKTsgIWFsbEhvbGVzXzJfMS5kb25lOyBhbGxIb2xlc18yXzEgPSBhbGxIb2xlc18yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhbGxIb2xlc18yXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBfbG9vcF81KGIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzE3XzEpIHsgZV8xNyA9IHsgZXJyb3I6IGVfMTdfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSG9sZXNfMl8xICYmICFhbGxIb2xlc18yXzEuZG9uZSAmJiAoX2IgPSBhbGxIb2xlc18yLnJldHVybikpIF9iLmNhbGwoYWxsSG9sZXNfMik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE3KSB0aHJvdyBlXzE3LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYWxsSG9sZXNfMSA9IF9fdmFsdWVzKGFsbEhvbGVzKSwgYWxsSG9sZXNfMV8xID0gYWxsSG9sZXNfMS5uZXh0KCk7ICFhbGxIb2xlc18xXzEuZG9uZTsgYWxsSG9sZXNfMV8xID0gYWxsSG9sZXNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBhbGxIb2xlc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIF9sb29wXzQoYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMTZfMSkgeyBlXzE2ID0geyBlcnJvcjogZV8xNl8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbGxIb2xlc18xXzEgJiYgIWFsbEhvbGVzXzFfMS5kb25lICYmIChfYSA9IGFsbEhvbGVzXzEucmV0dXJuKSkgX2EuY2FsbChhbGxIb2xlc18xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE2KSB0aHJvdyBlXzE2LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMuaG9sZXMgPSBhbGxIb2xlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvVHJpYW5nbGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaW5uZXJBbmROb3RJbnRlcnNlY3QgPSBmdW5jdGlvbiAocG9seSwgcDEsIHAyKSB7XG4gICAgICAgICAgICB2YXIgbCA9IHAxLmZpbmRMaW5lKHAyKTtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSBsLmNlbnRlcjtcbiAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25zID0gcG9seS5ob2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGhvbGUpIHsgcmV0dXJuIGEgJiYgQm9vbGVhbihob2xlLmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKTsgfSwgQm9vbGVhbihwb2x5LmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKSk7XG4gICAgICAgICAgICB2YXIgY29udGFpbiA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmICFob2xlXG4gICAgICAgICAgICAgICAgLmNvbnRhaW4oY2VudGVyKTsgfSwgcG9seS5jb250YWluKGNlbnRlcikpO1xuICAgICAgICAgICAgcmV0dXJuICFpbnRlcnNlY3Rpb25zICYmIGNvbnRhaW47XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRUcmlhbmdsZSA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvbHkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcDAgPSBwb2x5LmF0KDApO1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHBvbHkuYXQoMSk7XG4gICAgICAgICAgICAgICAgdmFyIHAyID0gcG9seS5hdCgyKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXJBbmROb3RJbnRlcnNlY3QocG9seSwgcDAsIHAyKSkge1xuICAgICAgICAgICAgICAgICAgICBwb2x5LnJlbW92ZVBhcnQoMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oW1xuICAgICAgICAgICAgICAgICAgICAgICAgcDAuY2xvbmUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAxLmNsb25lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwMi5jbG9uZSgpXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb2x5LnB1c2gocG9seS5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLmNsb2NrV2lzZS5vcGVuKCk7XG4gICAgICAgIHdoaWxlIChwLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFyIGggPSBwLmhvbGVzLnNoaWZ0KClcbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5jbG9ja1dpc2VcbiAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgLmNsb3NlKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXJBbmROb3RJbnRlcnNlY3QocCwgcC5maXJzdCwgaC5maXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlci5hcHBseShwLCBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoWzBdLCBfX3JlYWQoaC5wb2ludHMpLCBmYWxzZSksIFtwLmZpcnN0XSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHAucHVzaChwLnNoaWZ0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKHAubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgdmFyIHRyaWFuZ2xlID0gZ2V0VHJpYW5nbGUocCk7XG4gICAgICAgICAgICBpZiAodHJpYW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCh0cmlhbmdsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2gocCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0VHJpYW5nbGVzUG9pbnRJbmRleGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaW5uZXJBbmROb3RJbnRlcnNlY3QgPSBmdW5jdGlvbiAocG9seSwgcDEsIHAyKSB7XG4gICAgICAgICAgICB2YXIgbCA9IHAxLmZpbmRMaW5lKHAyKTtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSBsLmNlbnRlcjtcbiAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25zID0gcG9seS5ob2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGhvbGUpIHsgcmV0dXJuIGEgJiYgQm9vbGVhbihob2xlLmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKTsgfSwgQm9vbGVhbihwb2x5LmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKSk7XG4gICAgICAgICAgICB2YXIgY29udGFpbiA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmICFob2xlXG4gICAgICAgICAgICAgICAgLmNvbnRhaW4oY2VudGVyKTsgfSwgcG9seS5jb250YWluKGNlbnRlcikpO1xuICAgICAgICAgICAgcmV0dXJuICFpbnRlcnNlY3Rpb25zICYmIGNvbnRhaW47XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRUcmlhbmdsZSA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvbHkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcDAgPSBwb2x5LmF0KDApO1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHBvbHkuYXQoMSk7XG4gICAgICAgICAgICAgICAgdmFyIHAyID0gcG9seS5hdCgyKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXJBbmROb3RJbnRlcnNlY3QocG9seSwgcDAsIHAyKSkge1xuICAgICAgICAgICAgICAgICAgICBwb2x5LnJlbW92ZVBhcnQoMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBwMC5wcm9wZXJ0aWVzLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgcDEucHJvcGVydGllcy5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAyLnByb3BlcnRpZXMuaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9seS5wdXNoKHBvbHkuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgICAgcC5wb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoZikge1xuICAgICAgICAgICAgZi5wcm9wZXJ0aWVzLmluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgfSk7XG4gICAgICAgIHAuaG9sZXMuZm9yRWFjaChmdW5jdGlvbiAoaCkge1xuICAgICAgICAgICAgaC5wUG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgICAgICBmLnByb3BlcnRpZXMuaW5kZXggPSBpbmRleCsrO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBwID0gcC5jbG9ja1dpc2Uub3BlbigpO1xuICAgICAgICB3aGlsZSAocC5ob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBoID0gcC5ob2xlcy5zaGlmdCgpXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAuY2xvY2tXaXNlXG4gICAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgIC5jbG9zZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHAsIHAuZmlyc3QsIGguZmlyc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFswXSwgX19yZWFkKGgucG9pbnRzKSwgZmFsc2UpLCBbcC5maXJzdF0sIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwLnB1c2gocC5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChwLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIHZhciB0cmlhbmdsZSA9IGdldFRyaWFuZ2xlKHApO1xuICAgICAgICAgICAgaWYgKHRyaWFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQodHJpYW5nbGUpLCBmYWxzZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHAucG9pbnRzLm1hcChmdW5jdGlvbiAoZikgeyByZXR1cm4gZi5wcm9wZXJ0aWVzLmluZGV4OyB9KSksIGZhbHNlKSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNsb3NlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QuZXF1YWwodGhpcy5sYXN0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5idWZmZXIgPSBmdW5jdGlvbiAodiwgcXVhZHJhbnRTZWdtZW50cywgdHlwZSkge1xuICAgICAgICBpZiAocXVhZHJhbnRTZWdtZW50cyA9PT0gdm9pZCAwKSB7IHF1YWRyYW50U2VnbWVudHMgPSA2NDsgfVxuICAgICAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSBEUG9seWdvbi5DQVBfUk9VTkQ7IH1cbiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBqc3RzSW8uV0tUUmVhZGVyKCk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIG5vSG9sZXMgPSBfYS5ub0hvbGVzLCBjbG9zZWQgPSBfYS5jbG9zZWQ7XG4gICAgICAgIHZhciBwb2ludHMgPSByZWFkZXJcbiAgICAgICAgICAgIC5yZWFkKG5vSG9sZXMudG9XS1QoY2xvc2VkID8gRFBvbHlnb24uV0tUX1BPTFlHT04gOiBEUG9seWdvbi5XS1RfTElORVNUUklORykpXG4gICAgICAgICAgICAuYnVmZmVyKHYsIHF1YWRyYW50U2VnbWVudHMsIHR5cGUpXG4gICAgICAgICAgICAuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihwb2ludHMubWFwKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHkpO1xuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2lkZUJ1ZmZlcnMgPSBmdW5jdGlvbiAodiwgcXVhZHJhbnRTZWdtZW50cykge1xuICAgICAgICBpZiAocXVhZHJhbnRTZWdtZW50cyA9PT0gdm9pZCAwKSB7IHF1YWRyYW50U2VnbWVudHMgPSA2NDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBmaXJzdCA9IF9hLmZpcnN0LCBsYXN0ID0gX2EubGFzdDtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyKHYsIHF1YWRyYW50U2VnbWVudHMsIERQb2x5Z29uLkNBUF9GTEFUKS5vcGVuKCk7XG4gICAgICAgIHZhciBfYiA9IF9fcmVhZChmaXJzdC5zb3J0QnlEaXN0YW5jZShidWZmZXIpLnBvaW50cy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIucHJvcGVydGllcy5pbmRleDsgfSksIDIpLCBzdGFydDAgPSBfYlswXSwgc3RhcnQxID0gX2JbMV07XG4gICAgICAgIHZhciBfYyA9IF9fcmVhZChsYXN0LnNvcnRCeURpc3RhbmNlKGJ1ZmZlcikucG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5wcm9wZXJ0aWVzLmluZGV4OyB9KSwgMiksIGVuZDAgPSBfY1swXSwgZW5kMSA9IF9jWzFdO1xuICAgICAgICB2YXIgZnJvbVBvaW50ID0gTWF0aC5taW4oTWF0aC5tYXgoc3RhcnQwLCBzdGFydDEpLCBNYXRoLm1heChlbmQwLCBlbmQxKSk7XG4gICAgICAgIHZhciB0b1BvaW50ID0gTWF0aC5tYXgoTWF0aC5taW4oc3RhcnQwLCBzdGFydDEpLCBNYXRoLm1pbihlbmQwLCBlbmQxKSk7XG4gICAgICAgIHZhciBsaW5lUGFydCA9IG5ldyBEUG9seWdvbihidWZmZXIucmVtb3ZlUGFydChmcm9tUG9pbnQgLSAxLCB0b1BvaW50IC0gZnJvbVBvaW50ICsgMSkpO1xuICAgICAgICBidWZmZXIudW5zaGlmdChidWZmZXIucG9wKCkpO1xuICAgICAgICByZXR1cm4gW2xpbmVQYXJ0LnJldmVyc2UoKSwgYnVmZmVyXTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zZXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdHlwZW9mIHYgPT09ICdvYmplY3QnID8gdiA6IHYodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmJlemllciA9IGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwID09PSB2b2lkIDApIHsgc3RlcCA9IDAuMTsgfVxuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTsgaSArPSBzdGVwKSB7XG4gICAgICAgICAgICByZXMucHVzaCh0aGlzLmNsb25lKCkuZ2V0QmV6aWVyUG9pbnQoaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2V0R3Jvd2luZ0hlaWdodCA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgICAgICB2YXIgZnVsbExlbmd0aCA9IHRoaXMuZnVsbExlbmd0aDtcbiAgICAgICAgdmFyIHByZXZQb2ludCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIHZhciBkID0gdG8gLSBmcm9tO1xuICAgICAgICB2YXIgY3VycmVudERpc3RhbmNlID0gMDtcbiAgICAgICAgdGhpcy5sb29wKClcbiAgICAgICAgICAgIC5zZXRaKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICBjdXJyZW50RGlzdGFuY2UgKz0gcHJldlBvaW50LmRpc3RhbmNlKHApO1xuICAgICAgICAgICAgcHJldlBvaW50ID0gcDtcbiAgICAgICAgICAgIHJldHVybiBmcm9tICsgY3VycmVudERpc3RhbmNlIC8gZnVsbExlbmd0aCAqIGQ7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAucnVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmxvb3BQb2ludHNHZW5lcmF0b3IgPSBmdW5jdGlvbiAod2l0aExpbmUpIHtcbiAgICAgICAgaWYgKHdpdGhMaW5lID09PSB2b2lkIDApIHsgd2l0aExpbmUgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaSwgcDEsIHAyO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkgPCB0aGF0Lmxlbmd0aCAtIDEpKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcDEgPSB0aGF0LmF0KGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcDIgPSB0aGF0LmF0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgW3AxLCBwMiwgd2l0aExpbmUgPyBwMS5maW5kTGluZShwMikgOiB1bmRlZmluZWQsIGldXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSAzO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMsIDFdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0QmV6aWVyUG9pbnQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgZV8xOCwgX2E7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3Q7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCBwMSA9IF9kWzBdLCBwMiA9IF9kWzFdO1xuICAgICAgICAgICAgICAgIHAxLm1vdmUocDIuY2xvbmUoKS5tb3ZlKHAxLmNsb25lKCkubWludXMoKSlcbiAgICAgICAgICAgICAgICAgICAgLnNjYWxlKHYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xOF8xKSB7IGVfMTggPSB7IGVycm9yOiBlXzE4XzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE4KSB0aHJvdyBlXzE4LmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmV6aWVyUG9pbnQodik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW5jbHVkZVggPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgeCA9IHAueDtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluWCA8PSB4ICYmIHRoaXMubWF4WCA+PSB4O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUluY2x1ZGVZID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIHkgPSBwLnk7XG4gICAgICAgIHJldHVybiB0aGlzLm1pblkgPD0geSAmJiB0aGlzLm1heFkgPj0geTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5kb3VnbGFzUGV1Y2tlciA9IGZ1bmN0aW9uIChwb2ludHMsIGUpIHtcbiAgICAgICAgdmFyIGRNYXggPSAwO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgZW5kID0gcG9pbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciBsaW5lID0gcG9pbnRzWzBdLmZpbmRMaW5lKHBvaW50c1tlbmRdKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgICAgICAgdmFyIGQgPSBsaW5lLnBlcnBlbmRpY3VsYXJEaXN0YW5jZShwb2ludHNbaV0pO1xuICAgICAgICAgICAgaWYgKGQgPiBkTWF4KSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGRNYXggPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkTWF4ID49IGUpIHtcbiAgICAgICAgICAgIHZhciByZWNSZXN1bHQxID0gdGhpcy5kb3VnbGFzUGV1Y2tlcihwb2ludHMuc2xpY2UoMCwgaW5kZXggKyAxKSwgZSk7XG4gICAgICAgICAgICB2YXIgcmVjUmVzdWx0MiA9IHRoaXMuZG91Z2xhc1BldWNrZXIocG9pbnRzLnNsaWNlKGluZGV4KSwgZSk7XG4gICAgICAgICAgICByZWNSZXN1bHQxLnBvcCgpO1xuICAgICAgICAgICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHJlY1Jlc3VsdDEpLCBmYWxzZSksIF9fcmVhZChyZWNSZXN1bHQyKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcG9pbnRzWzBdLCBwb2ludHNbZW5kXV07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ29CeVBhdGggPSBmdW5jdGlvbiAoY3R4LCBzdGVwcykge1xuICAgICAgICBpZiAoc3RlcHMgPT09IHZvaWQgMCkgeyBzdGVwcyA9IHRoaXMubGVuZ3RoIC0gMTsgfVxuICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLmZpcnN0O1xuICAgICAgICBjdHgubW92ZVRvKHN0YXJ0LngsIHN0YXJ0LnkpO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAoc3RlcHMgJSB0aGlzLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5hdChpKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgY3R4LmxpbmVUbyh4LCB5KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdldEpTVFNHZW9tZXRyeSA9IGZ1bmN0aW9uIChwLCB1bmlvblRoaXMsIHVuaW9uVGhhdCkge1xuICAgICAgICB2YXIgdW5pb25PckludGVyc2VjdGlvbiA9IHVuaW9uVGhhdCA9PT0gdW5pb25UaGlzO1xuICAgICAgICB2YXIgcmVhZGVyID0gbmV3IGpzdHNJby5XS1RSZWFkZXIoKTtcbiAgICAgICAgdmFyIGEgPSByZWFkZXIucmVhZCh0aGlzLm5vSG9sZXMudG9XS1QoKSk7XG4gICAgICAgIHZhciBiID0gcmVhZGVyLnJlYWQocC5ub0hvbGVzLnRvV0tUKCkpO1xuICAgICAgICBpZiAoIXVuaW9uT3JJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBhLmRpZmZlcmVuY2UoYik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodW5pb25UaGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gYS51bmlvbihiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghdW5pb25UaGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbnRlcnNlY3Rpb24oYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVMb2dpY0Z1bmN0aW9uID0gZnVuY3Rpb24gKHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KSB7XG4gICAgICAgIHZhciBlXzE5LCBfYSwgZV8yMCwgX2IsIGVfMjEsIF9jLCBlXzIyLCBfZDtcbiAgICAgICAgdmFyIGMgPSB0aGlzLmdldEpTVFNHZW9tZXRyeShwLCB1bmlvblRoaXMsIHVuaW9uVGhhdCk7XG4gICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXNfMSA9IGMuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlc18xLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjb29yZGluYXRlc18xLnJlZHVjZShmdW5jdGlvbiAoYWssIF9hLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdEluZGV4ID0gYWsubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgRFBvaW50KHgsIHkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3QgPSBha1tsYXN0SW5kZXhdLmZpcnN0O1xuICAgICAgICAgICAgICAgICAgICBpZiAodC5lcXVhbChmaXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb29yZGluYXRlc18xW2luZGV4ICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFBvaW50ID0gbmV3IERQb2ludChjb29yZGluYXRlc18xW2luZGV4ICsgMV0ueCwgY29vcmRpbmF0ZXNfMVtpbmRleCArIDFdLnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChha1tsYXN0SW5kZXhdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChuZXcgRFBvbHlnb24oW25leHRQb2ludF0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBha1tsYXN0SW5kZXhdLnB1c2godCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgIH0sIFtuZXcgRFBvbHlnb24oW25ldyBEUG9pbnQoY29vcmRpbmF0ZXNfMVswXS54LCBjb29yZGluYXRlc18xWzBdLnkpXSldKTtcbiAgICAgICAgICAgICAgICBpZiAodW5pb25UaGF0ICYmIHVuaW9uVGhpcyAmJiByZXN1bHQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzEgPSBfX3ZhbHVlcyhyZXN1bHQpLCByZXN1bHRfMV8xID0gcmVzdWx0XzEubmV4dCgpOyAhcmVzdWx0XzFfMS5kb25lOyByZXN1bHRfMV8xID0gcmVzdWx0XzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHEgPSByZXN1bHRfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbG9vcF82ID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocS5oYXMoci5maXJzdCkgJiYgIXEuZXF1YWwocikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHEuZmluZEluZGV4KHIuZmlyc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9lID0gcS5wb2ludHMpLnNwbGljZS5hcHBseShfZSwgX19zcHJlYWRBcnJheShbaW5kZXgsIDBdLCBfX3JlYWQoci5wb2ludHMpLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoaCkgeyByZXR1cm4gIWguZXF1YWwocik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF8yID0gKGVfMjAgPSB2b2lkIDAsIF9fdmFsdWVzKHJlc3VsdCkpLCByZXN1bHRfMl8xID0gcmVzdWx0XzIubmV4dCgpOyAhcmVzdWx0XzJfMS5kb25lOyByZXN1bHRfMl8xID0gcmVzdWx0XzIubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJlc3VsdF8yXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGVfMSA9IF9sb29wXzYocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzIwXzEpIHsgZV8yMCA9IHsgZXJyb3I6IGVfMjBfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzJfMSAmJiAhcmVzdWx0XzJfMS5kb25lICYmIChfYiA9IHJlc3VsdF8yLnJldHVybikpIF9iLmNhbGwocmVzdWx0XzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yMCkgdGhyb3cgZV8yMC5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzE5XzEpIHsgZV8xOSA9IHsgZXJyb3I6IGVfMTlfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzFfMSAmJiAhcmVzdWx0XzFfMS5kb25lICYmIChfYSA9IHJlc3VsdF8xLnJldHVybikpIF9hLmNhbGwocmVzdWx0XzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE5KSB0aHJvdyBlXzE5LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5sZW5ndGggPiAyOyB9KS5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGguY2xvc2UoKTsgfSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzMgPSBfX3ZhbHVlcyhyZXN1bHQpLCByZXN1bHRfM18xID0gcmVzdWx0XzMubmV4dCgpOyAhcmVzdWx0XzNfMS5kb25lOyByZXN1bHRfM18xID0gcmVzdWx0XzMubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IHJlc3VsdF8zXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xvb3BfNyA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcS5lcXVhbChyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocS5jb250YWluKHIuZmlyc3QsIHRydWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxLmhvbGVzLnB1c2gocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiAhaC5lcXVhbChyKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfNCA9IChlXzIyID0gdm9pZCAwLCBfX3ZhbHVlcyhyZXN1bHQpKSwgcmVzdWx0XzRfMSA9IHJlc3VsdF80Lm5leHQoKTsgIXJlc3VsdF80XzEuZG9uZTsgcmVzdWx0XzRfMSA9IHJlc3VsdF80Lm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJlc3VsdF80XzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZV8yID0gX2xvb3BfNyhyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzIyXzEpIHsgZV8yMiA9IHsgZXJyb3I6IGVfMjJfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzRfMSAmJiAhcmVzdWx0XzRfMS5kb25lICYmIChfZCA9IHJlc3VsdF80LnJldHVybikpIF9kLmNhbGwocmVzdWx0XzQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMjIpIHRocm93IGVfMjIuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzIxXzEpIHsgZV8yMSA9IHsgZXJyb3I6IGVfMjFfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzNfMSAmJiAhcmVzdWx0XzNfMS5kb25lICYmIChfYyA9IHJlc3VsdF8zLnJldHVybikpIF9jLmNhbGwocmVzdWx0XzMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yMSkgdGhyb3cgZV8yMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFswXS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChmdW5jdGlvbiAoZykgeyByZXR1cm4gZy5jbG9zZSgpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIERQb2x5Z29uLkNBUF9ST1VORCA9IENBUF9ST1VORDtcbiAgICBEUG9seWdvbi5DQVBfRkxBVCA9IENBUF9GTEFUO1xuICAgIERQb2x5Z29uLkNBUF9TUVVBUkUgPSBDQVBfU1FVQVJFO1xuICAgIERQb2x5Z29uLldLVF9MSU5FU1RSSU5HID0gJ0xJTkVTVFJJTkcnO1xuICAgIERQb2x5Z29uLldLVF9QT0xZR09OID0gJ1BPTFlHT04nO1xuICAgIHJldHVybiBEUG9seWdvbjtcbn0oKSk7XG5leHBvcnQgeyBEUG9seWdvbiB9O1xuIiwiaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgY2hlY2tGdW5jdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRE51bWJlcnMgfSBmcm9tICcuL0ROdW1iZXJzJztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG52YXIgRExpbmUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERMaW5lKGEsIGIsIGMsIGJlZ2luLCBlbmQpIHtcbiAgICAgICAgaWYgKGJlZ2luID09PSB2b2lkIDApIHsgYmVnaW4gPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChlbmQgPT09IHZvaWQgMCkgeyBlbmQgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIHRoaXMuYSA9IGE7XG4gICAgICAgIHRoaXMuYiA9IGI7XG4gICAgICAgIHRoaXMuYyA9IGM7XG4gICAgICAgIHRoaXMuYmVnaW4gPSBiZWdpbjtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgfVxuICAgIERMaW5lLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBETGluZSh0aGlzLmEsIHRoaXMuYiwgdGhpcy5jLCB0aGlzLmJlZ2luLmNsb25lKCksIHRoaXMuZW5kLmNsb25lKCkpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmZpbmRQZXJwZW5kaWN1bGFyID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZFBlcnBlbmRpY3VsYXInKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuYmVnaW4nKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuYmVnaW4pXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5lbmQnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuZW5kKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApO1xuICAgICAgICByZXR1cm4gbmV3IERMaW5lKC10aGlzLmIsIHRoaXMuYSwgdGhpcy5iICogcC54IC0gdGhpcy5hICogcC55KTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5wZXJwZW5kaWN1bGFyRGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdwZXJwZW5kaWN1bGFyRGlzdGFuY2UnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuYmVnaW4nKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuYmVnaW4pXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5lbmQnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuZW5kKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApO1xuICAgICAgICB2YXIgcGVycGVuZGljdWxhckxpbmUgPSB0aGlzLmZpbmRQZXJwZW5kaWN1bGFyKHApO1xuICAgICAgICB2YXIgdGFyZ2V0UG9pbnQgPSBwZXJwZW5kaWN1bGFyTGluZS5maW5kUG9pbnQodGhpcyk7XG4gICAgICAgIHJldHVybiB0YXJnZXRQb2ludC5kaXN0YW5jZShwKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5pbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAobCwgZCwgaW5jbHVkZU9ubHkpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMDsgfVxuICAgICAgICBpZiAoaW5jbHVkZU9ubHkgPT09IHZvaWQgMCkgeyBpbmNsdWRlT25seSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBwID0gdGhpcy5maW5kUG9pbnQobCk7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICBpZiAoaW5jbHVkZU9ubHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnNpZGVSYW5nZShwLCBkKSAmJiBsLmluc2lkZVJhbmdlKHAsIGQpID8gcCA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pblJhbmdlKHAsIGQpICYmIGwuaW5SYW5nZShwLCBkKSA/IHAgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmludGVyc2VjdGlvbldpdGhDaXJjbGUgPSBmdW5jdGlvbiAoY2lyY2xlKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSBjaXJjbGUuY2VudGVyLCByID0gY2lyY2xlLnI7XG4gICAgICAgIHZhciBwZXIgPSB0aGlzLmZpbmRQZXJwZW5kaWN1bGFyKGNlbnRlcik7XG4gICAgICAgIHZhciB0ID0gdGhpcy5maW5kUG9pbnQocGVyKTtcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gdC5kaXN0YW5jZShjZW50ZXIpO1xuICAgICAgICBpZiAodGhpcy5iZWdpbi5lcXVhbChjZW50ZXIpKSB7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW5kLmVxdWFsKGNlbnRlcikpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlzdGFuY2UgPCByKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjdCA9IGNlbnRlci5kaXN0YW5jZSh0KTtcbiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IE1hdGguc3FydChyICogciAtIGN0ICogY3QpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHQueCA9IHRoaXMuYmVnaW4ueDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIxXzEgPSB0LmNsb25lKCkubW92ZSgwLCAtbW92ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByMl8xID0gdC5jbG9uZSgpLm1vdmUoMCwgbW92ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbcjFfMSwgcjJfMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICAgICAgICAgIHQueSA9IHRoaXMuYmVnaW4ueTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIxXzIgPSB0LmNsb25lKCkubW92ZShtb3ZlLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIyXzIgPSB0LmNsb25lKCkubW92ZSgtbW92ZSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbcjFfMiwgcjJfMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYmVnaW4ubGlrZShjZW50ZXIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmJlZ2luLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLm1vdmVQb2ludChwLCByKSwgdGhpcy5tb3ZlUG9pbnQocCwgLXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmVuZC5saWtlKGNlbnRlcikpIHtcbiAgICAgICAgICAgICAgICB2YXIgcCA9IHRoaXMuZW5kLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLm1vdmVQb2ludChwLCByKSwgdGhpcy5tb3ZlUG9pbnQocCwgLXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzID0gYSAqIGEgKyBiICogYjtcbiAgICAgICAgICAgIHZhciBkID0gciAqIHIgLSBjICogYyAvIHM7XG4gICAgICAgICAgICB2YXIgbXVsdCA9IE1hdGguc3FydChkIC8gcyk7XG4gICAgICAgICAgICB2YXIgcjEgPSB0LmNsb25lKCkubW92ZShiICogbXVsdCwgLWEgKiBtdWx0KTtcbiAgICAgICAgICAgIHZhciByMiA9IHQuY2xvbmUoKS5tb3ZlKC1iICogbXVsdCwgYSAqIG11bHQpO1xuICAgICAgICAgICAgcmV0dXJuIFtyMSwgcjJdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0YW5jZSA9PT0gcikge1xuICAgICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW5SYW5nZSA9IGZ1bmN0aW9uIChwLCBkKSB7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IDA7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgIHZhciB4ID0gcC54LCB5ID0gcC55O1xuICAgICAgICB2YXIgaXNJblggPSB4ID49IG1pblggLSBkICYmIHggPD0gbWF4WCArIGQ7XG4gICAgICAgIHZhciBpc0luWSA9IHkgPj0gbWluWSAtIGQgJiYgeSA8PSBtYXhZICsgZDtcbiAgICAgICAgcmV0dXJuIGlzSW5YICYmIGlzSW5ZO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmluc2lkZVJhbmdlID0gZnVuY3Rpb24gKHAsIGQpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBiZWdpbiA9IF9hLmJlZ2luLCBlbmQgPSBfYS5lbmQ7XG4gICAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UocCwgZCkgJiYgIWJlZ2luLmxpa2UocCwgMC4wMDAwMSkgJiYgIWVuZC5saWtlKHAsIDAuMDAwMDEpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJjZW50ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZ2luXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAuc2V0SWZMZXNzVGhhbih0aGlzLmVuZClcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmVuZFxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1vdmUodGhpcy5iZWdpblxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1pbnVzKCkpXG4gICAgICAgICAgICAgICAgLmFicygpXG4gICAgICAgICAgICAgICAgLm1pbnVzKClcbiAgICAgICAgICAgICAgICAuZGl2aWRlKDIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWluWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuYmVnaW4ueCwgdGhpcy5lbmQueCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcIm1pbllcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmJlZ2luLnksIHRoaXMuZW5kLnkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtYXhYXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5iZWdpbi54LCB0aGlzLmVuZC54KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWF4WVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuYmVnaW4ueSwgdGhpcy5lbmQueSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBETGluZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5hLCBcIiwgXCIpLmNvbmNhdCh0aGlzLmIsIFwiLCBcIikuY29uY2F0KHRoaXMuYywgXCIpXCIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuYSwgdGhpcy5iLCB0aGlzLmNdO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnggPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYyAvIHRoaXMuYSwgcC55KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQocC54LCAtdGhpcy5jIC8gdGhpcy5iKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5iIC8gdGhpcy5hICogcC55IC0gdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnkgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYyAvIHRoaXMuYSwgcC55KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQocC54LCAtdGhpcy5jIC8gdGhpcy5iKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmEgLyB0aGlzLmIgKiBwLnggLSB0aGlzLmMgLyB0aGlzLmIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmZpbmRQb2ludCA9IGZ1bmN0aW9uIChsKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZICYmIGwuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYICYmIGwuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYICYmIGwuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KC1sLmMgLyBsLmEsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZICYmIGwuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KC10aGlzLmMgLyB0aGlzLmEsIC1sLmMgLyBsLmIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICB2YXIgeCA9IC10aGlzLmMgLyB0aGlzLmE7XG4gICAgICAgICAgICByZXR1cm4gbC55KG5ldyBEUG9pbnQoeCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICB2YXIgeSA9IC10aGlzLmMgLyB0aGlzLmI7XG4gICAgICAgICAgICByZXR1cm4gbC54KG5ldyBEUG9pbnQoMCwgeSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICB2YXIgeCA9IC1sLmMgLyBsLmE7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55KG5ldyBEUG9pbnQoeCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICB2YXIgeSA9IC1sLmMgLyBsLmI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54KG5ldyBEUG9pbnQoMCwgeSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXMgPSB0aGlzLnkobmV3IERQb2ludCgobC5jIC8gbC5iIC0gdGhpcy5jIC8gdGhpcy5iKSAvICh0aGlzLmEgLyB0aGlzLmIgLSBsLmEgLyBsLmIpKSk7XG4gICAgICAgIGlmICghaXNGaW5pdGUocmVzLngpICYmICFpc0Zpbml0ZShyZXMueSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImlzUGFyYWxsZWxcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzUGFyYWxsZWxYIHx8IHRoaXMuaXNQYXJhbGxlbFk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImlzUGFyYWxsZWxZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy5iKSA8IDAuMDAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJpc1BhcmFsbGVsWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRoaXMuYSkgPCAwLjAwMTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwicG9pbnRzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gW3RoaXMuYmVnaW4sIHRoaXMuZW5kXTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERMaW5lLnByb3RvdHlwZS5nZXRGaSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZ2V0RmknKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuYmVnaW4nKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuYmVnaW4pXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5lbmQnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuZW5kKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5lbmQuY2xvbmUoKS5tb3ZlKHRoaXMuYmVnaW4uY2xvbmUoKS5taW51cygpKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICB2YXIgdiA9IE1hdGguYXRhbjIoeSwgeCkgLSBNYXRoLlBJO1xuICAgICAgICBpZiAodiA+IDApIHtcbiAgICAgICAgICAgIHYgPSBNYXRoLlBJIC0gdjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKE1hdGguUEkgLSB2KSAlIChNYXRoLlBJICogMik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIF9iID0gX2EuYmVnaW4sIHgxID0gX2IueCwgeTEgPSBfYi55LCBfYyA9IF9hLmVuZCwgeDIgPSBfYy54LCB5MiA9IF9jLnk7XG4gICAgICAgIHJldHVybiBcIkxJTkVTVFJJTkcgKFwiLmNvbmNhdCh4MSwgXCIgXCIpLmNvbmNhdCh5MSwgXCIsIFwiKS5jb25jYXQoeDIsIFwiIFwiKS5jb25jYXQoeTIsIFwiKVwiKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5tb3ZlUG9pbnQgPSBmdW5jdGlvbiAoaSwgaykge1xuICAgICAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoaSk7XG4gICAgICAgIHZhciBwID0gaXNBcnJheSA/IGkgOiBbaV07XG4gICAgICAgIHZhciBkID0gKGlzQXJyYXkgPyBrIDogW2tdKTtcbiAgICAgICAgdmFyIGZpID0gdGhpcy5maW5kRmkobmV3IERMaW5lKDEsIDAsIDApKTtcbiAgICAgICAgdmFyIHRkID0gdGhpcy54KG5ldyBEUG9pbnQoMSwgMSkpLmRpc3RhbmNlKHRoaXMueChuZXcgRFBvaW50KDIsIDIpKSkgLyAyO1xuICAgICAgICB2YXIgc2luQ29zID0gbmV3IERQb2ludChNYXRoLnNpbihmaSksIE1hdGguY29zKGZpKSk7XG4gICAgICAgIHZhciBkdCA9IHNpbkNvcy5jbG9uZSgpLnNjYWxlKHRkKTtcbiAgICAgICAgdmFyIHAxVCA9IHBbMF0uY2xvbmUoKS5tb3ZlKGR0LmNsb25lKCkubWludXMoKSk7XG4gICAgICAgIHZhciBwMlQgPSBwWzBdLmNsb25lKCkubW92ZShkdCk7XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgaWYgKEROdW1iZXJzLmxpa2UodGhpcy55KHAxVCkueSwgcDFULnkpIHx8IEROdW1iZXJzLmxpa2UodGhpcy55KHAyVCkueSwgcDJULnkpKSB7XG4gICAgICAgICAgICByZXMgPSBwLm1hcChmdW5jdGlvbiAodCwgaW5kZXgpIHsgcmV0dXJuIHQuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHNpbkNvcy5jbG9uZSgpLnNjYWxlKGRbaW5kZXhdKSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gcC5tYXAoZnVuY3Rpb24gKHQsIGluZGV4KSB7IHJldHVybiB0LmNsb25lKClcbiAgICAgICAgICAgICAgICAubW92ZShzaW5Db3MuY2xvbmUoKS5zY2FsZShkW2luZGV4XSlcbiAgICAgICAgICAgICAgICAuc2V0WChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IF9hLng7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC14O1xuICAgICAgICAgICAgfSkpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSA/IHJlcyA6IHJlc1swXTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5maW5kRmkgPSBmdW5jdGlvbiAoX2EsIGRlbHRhKSB7XG4gICAgICAgIHZhciBhID0gX2EuYSwgYiA9IF9hLmI7XG4gICAgICAgIGlmIChkZWx0YSA9PT0gdm9pZCAwKSB7IGRlbHRhID0gMS4wMDAxOyB9XG4gICAgICAgIHZhciBfYiA9IHRoaXMsIHEgPSBfYi5hLCB3ID0gX2IuYjtcbiAgICAgICAgdmFyIHZhbCA9IChxICogYSArIHcgKiBiKSAvIChNYXRoLnNxcnQocSAqIHEgKyB3ICogdykgKiBNYXRoLnNxcnQoYSAqIGEgKyBiICogYikpO1xuICAgICAgICBpZiAodmFsID4gMSAmJiB2YWwgPCBkZWx0YSkge1xuICAgICAgICAgICAgdmFsID0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgPCAtMSAmJiB2YWwgPiAtZGVsdGEpIHtcbiAgICAgICAgICAgIHZhbCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLmFjb3ModmFsKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS52ZWN0b3JQcm9kdWN0ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jO1xuICAgICAgICB2YXIgX2IgPSB0aGlzLCBxID0gX2IuYSwgdyA9IF9iLmIsIGUgPSBfYi5jO1xuICAgICAgICByZXR1cm4gbmV3IERMaW5lKHcgKiBjIC0gZSAqIGIsIGUgKiBhIC0gcSAqIGMsIHEgKiBiIC0gdyAqIGEpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmJyZXNlbmhhbXNMaW5lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmJlZ2luLCB4MCA9IF9hLngsIHkwID0gX2EueTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5lbmQsIHgxID0gX2IueCwgeTEgPSBfYi55O1xuICAgICAgICB2YXIgZHggPSBNYXRoLmFicyh4MSAtIHgwKTtcbiAgICAgICAgdmFyIHN4ID0geDAgPCB4MSA/IDEgOiAtMTtcbiAgICAgICAgdmFyIGR5ID0gLU1hdGguYWJzKHkxIC0geTApO1xuICAgICAgICB2YXIgc3kgPSB5MCA8IHkxID8gMSA6IC0xO1xuICAgICAgICB2YXIgZXJyb3IgPSBkeCArIGR5O1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICByZXMucHVzaChuZXcgRFBvaW50KHgwLCB5MCkpO1xuICAgICAgICAgICAgaWYgKHgwID09PSB4MSAmJiB5MCA9PT0geTEpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBlMiA9IDIgKiBlcnJvcjtcbiAgICAgICAgICAgIGlmIChlMiA+PSBkeSkge1xuICAgICAgICAgICAgICAgIGlmICh4MCA9PT0geDEpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVycm9yICs9IGR5O1xuICAgICAgICAgICAgICAgIHgwICs9IHN4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUyIDw9IGR4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHkwID09PSB5MSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXJyb3IgKz0gZHg7XG4gICAgICAgICAgICAgICAgeTAgKz0gc3k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIHJldHVybiBETGluZTtcbn0oKSk7XG5leHBvcnQgeyBETGluZSB9O1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbmltcG9ydCB7IERMaW5lIH0gZnJvbSAnLi9ETGluZSc7XG5pbXBvcnQgeyBEUG9seWdvbiB9IGZyb20gJy4vRFBvbHlnb24nO1xuaW1wb3J0IHsgY2hlY2tGdW5jdGlvbiwgY3JlYXRlQXJyYXksIERHZW8sIGRpdiwgaXNEZWZBbmROb3ROdWxsLCB0b0RlZ3JlZXNNaW51dGVzU2Vjb25kcyB9IGZyb20gJy4vdXRpbHMnO1xudmFyIGRpZmYgPSAwO1xudmFyIHJhZGlhbnNQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG52YXIgcHNldWRvTWVyY2F0b3JQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG52YXIgd29ybGRHZW9kZXRpY1BvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbmV4cG9ydCB2YXIgRUFSVEhfUkFESVVTX0lOX01FVEVSUyA9IDYzNzgxMzc7XG52YXIgRUFSVEhfSU5fTUVURVJTID0gMjAwMzc1MDguMzQ7XG52YXIgREVHUkVFU19JTl9FQVJUSCA9IDE4MDtcbnZhciBNRVRFUlNfSU5fT05FX0RFR1JFRSA9IEVBUlRIX0lOX01FVEVSUyAvIERFR1JFRVNfSU5fRUFSVEg7XG52YXIgREVHUkVFU19JTl9PTkVfTUVURVIgPSBERUdSRUVTX0lOX0VBUlRIIC8gRUFSVEhfSU5fTUVURVJTO1xuZXhwb3J0IHZhciBIQUxGX1BJX0lOX0RFR1JFRSA9IDkwO1xuZXhwb3J0IHZhciBQSV9JTl9ERUdSRUUgPSAxODA7XG5leHBvcnQgdmFyIERPVUJMRV9QSV9JTl9ERUdSRUUgPSAzNjA7XG5leHBvcnQgdmFyIFBJX1RPX0RFR1JFRSA9IE1hdGguUEkgLyBQSV9JTl9ERUdSRUU7XG5leHBvcnQgdmFyIERFR1JFRV9UT19QSSA9IFBJX0lOX0RFR1JFRSAvIE1hdGguUEk7XG52YXIgRFBvaW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUG9pbnQoeCwgeSwgeikge1xuICAgICAgICBpZiAoeCA9PT0gdm9pZCAwKSB7IHggPSAwOyB9XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgdGhpcy56ID0gejtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0ge307XG4gICAgfVxuICAgIERQb2ludC56ZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCgpO1xuICAgIH07XG4gICAgRFBvaW50LnBhcnNlID0gZnVuY3Rpb24gKGMsIGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICB2YXIgX2EgPSBjLCBsYXQgPSBfYS5sYXQsIGxvbiA9IF9hLmxvbiwgX2IgPSBfYS5sbmcsIGxuZyA9IF9iID09PSB2b2lkIDAgPyBsb24gOiBfYiwgYWx0ID0gX2EuYWx0O1xuICAgICAgICBpZiAobGF0ICYmIGxuZykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobG5nLCBsYXQsIGFsdCAhPT0gbnVsbCAmJiBhbHQgIT09IHZvaWQgMCA/IGFsdCA6IDApO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYyA9IGMsIHggPSBfYy54LCB5ID0gX2MueSwgeiA9IF9jLnosIHByb3BlcnRpZXMgPSBfX3Jlc3QoX2MsIFtcInhcIiwgXCJ5XCIsIFwielwiXSk7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoeCkgJiYgaXNEZWZBbmROb3ROdWxsKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6KS5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0ID0gYztcbiAgICAgICAgaWYgKGMudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgICAgICAgdCA9IGMuY29vcmRpbmF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgICAgICAgICB2YXIgZiA9IERQb2ludC5wYXJzZShjLmdlb21ldHJ5LCBmb3JtYXQpO1xuICAgICAgICAgICAgZi5wcm9wZXJ0aWVzID0gX19hc3NpZ24oe30sIGMucHJvcGVydGllcyk7XG4gICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UoL1teeC16XS9nbWl1LCAnJylcbiAgICAgICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGssIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgc3dpdGNoIChrKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgIGEueCA9IChfYSA9IHRbaW5kZXhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgYS55ID0gKF9iID0gdFtpbmRleF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3onOlxuICAgICAgICAgICAgICAgICAgICBhLnogPSB0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9LCBuZXcgRFBvaW50KCkpO1xuICAgIH07XG4gICAgRFBvaW50LnBhcnNlRnJvbVdLVCA9IGZ1bmN0aW9uICh3a3QpIHtcbiAgICAgICAgdmFyIHJlZ2V4cCA9IC9QT0lOVCBcXCgoPzxkYXRhPig/Oig/IVxcKSkuKSo/KVxcKSQvbWl1O1xuICAgICAgICB2YXIgZGF0YSA9IHdrdC50cmltKCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgdmFyIHJlcyA9IHJlZ2V4cC5leGVjKGRhdGEpO1xuICAgICAgICB2YXIgX2EgPSBfX3JlYWQocmVzLmdyb3Vwcy5kYXRhLnNwbGl0KCcgJykubWFwKE51bWJlciksIDMpLCB4ID0gX2FbMF0sIHkgPSBfYVsxXSwgeiA9IF9hWzJdO1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6KTtcbiAgICB9O1xuICAgIERQb2ludC5yYW5kb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KE1hdGgucmFuZG9tKCksIE1hdGgucmFuZG9tKCkpO1xuICAgIH07XG4gICAgRFBvaW50LmdldFRpbGVGcm9tUXVhZEtleSA9IGZ1bmN0aW9uIChxdWFkS2V5KSB7XG4gICAgICAgIHZhciBwID0gbmV3IERQb2ludCgwLCAwLCBxdWFkS2V5Lmxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSBwLno7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBtYXNrID0gMSA8PCAoaSAtIDEpO1xuICAgICAgICAgICAgc3dpdGNoIChxdWFkS2V5W3AueiAtIGldKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgICAgICBwLnggfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgICAgIHAueSB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgICAgICAgICAgcC54IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIHAueSB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUXVhZEtleSBkaWdpdCBzZXF1ZW5jZS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9EZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB0b0RlZ3JlZXNNaW51dGVzU2Vjb25kcyh0aGlzLngpLFxuICAgICAgICAgICAgeTogdG9EZWdyZWVzTWludXRlc1NlY29uZHModGhpcy55KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRUaWxlRnJvbUNvb3JkcyA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIGlmICh6b29tID09PSB2b2lkIDApIHsgem9vbSA9IHRoaXMuejsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRUaWxlRnJvbUNvb3JkcycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcyk7XG4gICAgICAgIHZhciB4ID0gTWF0aC5mbG9vcigodGhpcy54ICsgUElfSU5fREVHUkVFKSAvIERPVUJMRV9QSV9JTl9ERUdSRUUgKiAoTWF0aC5wb3coMiwgem9vbSkpKTtcbiAgICAgICAgdmFyIHkgPSBNYXRoLmZsb29yKCgxIC0gTWF0aC5sb2coTWF0aC50YW4odGhpcy55ICogUElfVE9fREVHUkVFKSArIDEgLyBNYXRoLmNvcyh0aGlzLnkgKiBQSV9UT19ERUdSRUUpKSAvIE1hdGguUEkpIC8gMiAqIChNYXRoLnBvdygyLCB6b29tKSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6b29tKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0UXVhZEtleUZyb21UaWxlID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgaWYgKHpvb20gPT09IHZvaWQgMCkgeyB6b29tID0gdGhpcy56OyB9XG4gICAgICAgIHZhciBxdWFkS2V5ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSB6b29tOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSAwO1xuICAgICAgICAgICAgdmFyIG1hc2sgPSAxIDw8IChpIC0gMSk7XG4gICAgICAgICAgICBpZiAoKHRoaXMueCAmIG1hc2spICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGhpcy55ICYgbWFzaykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBkaWdpdCsrO1xuICAgICAgICAgICAgICAgIGRpZ2l0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWFkS2V5LnB1c2goZGlnaXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxdWFkS2V5LmpvaW4oJycpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRDb29yZHNGcm9tVGlsZSA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIGlmICh6b29tID09PSB2b2lkIDApIHsgem9vbSA9IHRoaXMuejsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRDb29yZHNGcm9tVGlsZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVVSW50KHRoaXMpO1xuICAgICAgICB2YXIgbiA9IE1hdGguUEkgLSAyICogTWF0aC5QSSAqIHRoaXMueSAvIChNYXRoLnBvdygyLCB6b29tKSk7XG4gICAgICAgIHZhciB4ID0gdGhpcy54IC8gKE1hdGgucG93KDIsIHpvb20pKSAqIERPVUJMRV9QSV9JTl9ERUdSRUUgLSBQSV9JTl9ERUdSRUU7XG4gICAgICAgIHZhciB5ID0gUElfSU5fREVHUkVFIC8gTWF0aC5QSSAqIE1hdGguYXRhbigoTWF0aC5leHAobikgLSBNYXRoLmV4cCgtbikpIC8gMik7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHpvb20pO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0Nvb3JkcyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9bXngtel0vZ21pdSwgJycpLnNwbGl0KCcnKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoaykgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHg6IF90aGlzLngsXG4gICAgICAgICAgICB5OiBfdGhpcy55LFxuICAgICAgICAgICAgejogX3RoaXMuelxuICAgICAgICB9KVtrXTsgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIgIT09IHVuZGVmaW5lZDsgfSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogdGhpcy50b0Nvb3Jkcyhmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvR2VvSlNPTkZlYXR1cmUgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB0aGlzLnRvR2VvSlNPTihmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZpbmRMaW5lID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZExpbmUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTGluZShwLmNsb25lKCkubW92ZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnkgLSBwLnkgLSBkaWZmO1xuICAgICAgICB2YXIgYiA9IHAueCAtIHRoaXMueCAtIGRpZmY7XG4gICAgICAgIHZhciBjID0gdGhpcy54ICogcC55IC0gcC54ICogdGhpcy55IC0gZGlmZjtcbiAgICAgICAgaWYgKGEgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRExpbmUoMCwgMSwgYyAvIGIsIHRoaXMsIHApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERMaW5lKDEsIDAsIGMgLyBhLCB0aGlzLCBwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERMaW5lKGEsIGIsIGMsIHRoaXMsIHApO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5maW5kSW5uZXJBbmdsZSA9IGZ1bmN0aW9uIChwMSwgcDMpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZElubmVyQW5nbGUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncDEnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHAxKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwMyk7XG4gICAgICAgIHZhciBhMSA9IHRoaXMuZmluZExpbmUocDEpLmdldEZpKCk7XG4gICAgICAgIHZhciBhMiA9IHRoaXMuZmluZExpbmUocDMpLmdldEZpKCk7XG4gICAgICAgIGlmIChhMiA+PSBhMSkge1xuICAgICAgICAgICAgcmV0dXJuIGEyIC0gYTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEyICsgTWF0aC5QSSAqIDIgLSBhMTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLngsIFwiIFwiKS5jb25jYXQodGhpcy55KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy54LCB0aGlzLnldO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnogPSB6O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgcmV0dXJuIFwiUE9JTlQgKFwiLmNvbmNhdCh4LCBcIiBcIikuY29uY2F0KHksIFwiKVwiKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkaXN0YW5jZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKTtcbiAgICAgICAgdmFyIGR4ID0gcC54IC0gdGhpcy54O1xuICAgICAgICB2YXIgZHkgPSBwLnkgLSB0aGlzLnk7XG4gICAgICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXN0YW5jZTNkID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGlzdGFuY2UzZCcpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMueicpXG4gICAgICAgICAgICAuc2hvdWxkRXhpc3QodGhpcy56KVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AueicpXG4gICAgICAgICAgICAuc2hvdWxkRXhpc3QocC56KTtcbiAgICAgICAgdmFyIGR4ID0gcC54IC0gdGhpcy54O1xuICAgICAgICB2YXIgZHkgPSBwLnkgLSB0aGlzLnk7XG4gICAgICAgIHZhciBkeiA9IHAueiAtIHRoaXMuejtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSArIGR6ICogZHopO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRYID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgdGhpcy54ID0gdHlwZW9mIHggPT09ICdudW1iZXInID8geCA6IHgodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy56ID0gdHlwZW9mIHogPT09ICdudW1iZXInID8geiA6IHoodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24gKHkpIHtcbiAgICAgICAgdGhpcy55ID0gdHlwZW9mIHkgPT09ICdudW1iZXInID8geSA6IHkodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdHlwZW9mIHYgPT09ICdvYmplY3QnID8gdiA6IHYodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLnopO1xuICAgICAgICBwLnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueCA+IHAueCAmJiB0aGlzLnkgPiBwLnk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueCA8IHAueCAmJiB0aGlzLnkgPCBwLnk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmd0T3JFcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KHApIHx8IHRoaXMuZXF1YWwocCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmx0T3JFcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmx0KHApIHx8IHRoaXMuZXF1YWwocCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciB4ID0gdGhpcy54ICogTWF0aC5jb3MoYSkgLSB0aGlzLnkgKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnggKiBNYXRoLnNpbihhKSArIHRoaXMueSAqIE1hdGguY29zKGEpO1xuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlM2RYID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICB0aGlzLnkgPSB5ICogTWF0aC5jb3MoYSkgKyB6ICogTWF0aC5zaW4oYSk7XG4gICAgICAgIHRoaXMueiA9IC15ICogTWF0aC5zaW4oYSkgKyB6ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3RhdGUzZFkgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCB4ID0gX2EueCwgeiA9IF9hLno7XG4gICAgICAgIHRoaXMueCA9IHggKiBNYXRoLmNvcyhhKSArIHogKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdGhpcy56ID0gLXggKiBNYXRoLnNpbihhKSArIHogKiBNYXRoLmNvcyhhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZTNkWiA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdGhpcy54ID0geCAqIE1hdGguY29zKGEpIC0geSAqIE1hdGguc2luKGEpO1xuICAgICAgICB0aGlzLnkgPSAteCAqIE1hdGguc2luKGEpICsgeSAqIE1hdGguY29zKGEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKyB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSArIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICsgeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKyB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKyB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICsgejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGVncmVlVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2RlZ3JlZVRvTWV0ZXJzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgdmFyIHggPSAoKHRoaXMueCArIFBJX0lOX0RFR1JFRSkgJSBET1VCTEVfUElfSU5fREVHUkVFIC0gUElfSU5fREVHUkVFKSAqIE1FVEVSU19JTl9PTkVfREVHUkVFO1xuICAgICAgICB2YXIgeSA9IChNYXRoLmxvZyhNYXRoLnRhbigoKHRoaXMueSArIEhBTEZfUElfSU5fREVHUkVFKSAlIFBJX0lOX0RFR1JFRSkgKlxuICAgICAgICAgICAgKE1hdGguUEkgLyBET1VCTEVfUElfSU5fREVHUkVFKSkpIC8gUElfVE9fREVHUkVFKSAqIE1FVEVSU19JTl9PTkVfREVHUkVFO1xuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWV0ZXJzVG9EZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ21ldGVyc1RvRGVncmVlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgdmFyIGxvbiA9IHRoaXMueCAqIERFR1JFRVNfSU5fT05FX01FVEVSO1xuICAgICAgICB2YXIgbGF0ID0gTWF0aC5hdGFuKE1hdGgucG93KE1hdGguRSwgKCh0aGlzLnkgLyBNRVRFUlNfSU5fT05FX0RFR1JFRSkgKiBQSV9UT19ERUdSRUUpKSkgKlxuICAgICAgICAgICAgKERPVUJMRV9QSV9JTl9ERUdSRUUgLyBNYXRoLlBJKSAtIEhBTEZfUElfSU5fREVHUkVFO1xuICAgICAgICB0aGlzLnggPSBsb247XG4gICAgICAgIHRoaXMueSA9IGxhdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRlZ3JlZVRvUmFkaWFucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGVncmVlVG9SYWRpYW5zJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUoUElfVE9fREVHUkVFKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucmFkaWFuc1RvRGVncmVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbigncmFkaWFuc1RvRGVncmVlcycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVSYWRpYW5zKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZShERUdSRUVfVE9fUEkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yYWRpYW5zVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ3JhZGlhbnNUb01ldGVycycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVSYWRpYW5zKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5yYWRpYW5zVG9EZWdyZWVzKCkuZGVncmVlVG9NZXRlcnMoKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWV0ZXJzVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdtZXRlcnNUb1JhZGlhbnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRlcnNUb0RlZ3JlZSgpLmRlZ3JlZVRvUmFkaWFucygpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5yb3VuZCh0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLnJvdW5kKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLmNlaWwodGhpcy54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5jZWlsKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5mbG9vciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5mbG9vcih0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLmZsb29yKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0ZpeGVkID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgaWYgKG4gPT09IHZvaWQgMCkgeyBuID0gMjsgfVxuICAgICAgICB0aGlzLnggPSBwYXJzZUZsb2F0KHRoaXMueC50b0ZpeGVkKG4pKTtcbiAgICAgICAgdGhpcy55ID0gcGFyc2VGbG9hdCh0aGlzLnkudG9GaXhlZChuKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGguYWJzKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGguYWJzKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKiB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAqIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICogeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKiB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKiB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICogejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAvIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55IC8geC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogLyB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAvIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAvIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogLyB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICUgeC54O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgJSB4Lnk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAlIHguejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICUgeDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICUgeTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAlIHo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSBkaXYodGhpcy54LCB4LngpO1xuICAgICAgICAgICAgeVYgPSBkaXYodGhpcy55LCB4LnkpO1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSBkaXYodGhpcy56LCB4LnopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSBkaXYodGhpcy54LCB4KTtcbiAgICAgICAgICAgIHlWID0gZGl2KHRoaXMueSwgeSk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSBkaXYodGhpcy56LCB6KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy54ID09PSBwLnggJiYgdGhpcy55ID09PSBwLnkgJiYgdGhpcy56ID09PSBwLno7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmxpa2UgPSBmdW5jdGlvbiAocCwgZCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IDAuMDAxOyB9XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGlrZVggPSBNYXRoLmFicyh0aGlzLnggLSBwLngpIDwgZDtcbiAgICAgICAgdmFyIGxpa2VZID0gTWF0aC5hYnModGhpcy55IC0gcC55KSA8IGQ7XG4gICAgICAgIHZhciBsaWtlWiA9IE1hdGguYWJzKCgoX2IgPSAoX2EgPSB0aGlzLnopICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHAueikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMCkgLSAoKF9kID0gKF9jID0gcC56KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLnopICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDApKSA8IGQ7XG4gICAgICAgIHJldHVybiBsaWtlWCAmJiBsaWtlWSAmJiBsaWtlWjtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZmxpcFZlcnRpY2FsbHkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICB2YXIgdiA9IHNpemU7XG4gICAgICAgIGlmIChzaXplIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2ID0gc2l6ZS55O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueSA9IHYgLSB0aGlzLnk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVJhZGlhbnNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChyYWRpYW5zUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByYWRpYW5zUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLU1hdGguUEksIC1NYXRoLlBJIC8gMiksIG5ldyBEUG9pbnQoTWF0aC5QSSwgTWF0aC5QSSAvIDIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByYWRpYW5zUG9seWdvbi5zaW1wbGVJbmNsdWRlKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVdvcmxkR2VvZGV0aWNTeXN0ZW1cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh3b3JsZEdlb2RldGljUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB3b3JsZEdlb2RldGljUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLTE4MCwgLTkwKSwgbmV3IERQb2ludCgxODAsIDkwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMubGlrZVJhZGlhbnMgJiYgd29ybGRHZW9kZXRpY1BvbHlnb24uc2ltcGxlSW5jbHVkZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxpa2VQc2V1ZG9NZXJjYXRvclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHBzZXVkb01lcmNhdG9yUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBwc2V1ZG9NZXJjYXRvclBvbHlnb24ucHVzaChuZXcgRFBvaW50KC0yMDAyNjM3Ni4zOSwgLTIwMDQ4OTY2LjEwKSwgbmV3IERQb2ludCgyMDAyNjM3Ni4zOSwgMjAwNDg5NjYuMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5saWtlUmFkaWFucyAmJiAhdGhpcy5saWtlV29ybGRHZW9kZXRpY1N5c3RlbSAmJiBwc2V1ZG9NZXJjYXRvclBvbHlnb24uc2ltcGxlSW5jbHVkZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIndcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLng7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh5KSB7XG4gICAgICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiYXJlYVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tGdW5jdGlvbignYXJlYScpXG4gICAgICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLncgKiB0aGlzLmg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoaXBcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNoZWNrRnVuY3Rpb24oJ2hpcCcpXG4gICAgICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy53ICogdGhpcy53ICsgdGhpcy5oICogdGhpcy5oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIm1pblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMueCwgdGhpcy55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIm1heFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMueCwgdGhpcy55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhpcFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaGlwID0gdGhpcy5oaXA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChoaXAsIGhpcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ4UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB4ID0gdGhpcy54O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ5UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gdGhpcy55O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeSwgeSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ3UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnhQb2ludDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueVBvaW50O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGF0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnkgPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibG5nXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnggPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibG9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnggPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiYWx0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnogPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvaW50LnByb3RvdHlwZS5zaW1wbGUgPSBmdW5jdGlvbiAoeEtleSwgeUtleSwgektleSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoeEtleSA9PT0gdm9pZCAwKSB7IHhLZXkgPSAneCc7IH1cbiAgICAgICAgaWYgKHlLZXkgPT09IHZvaWQgMCkgeyB5S2V5ID0gJ3knOyB9XG4gICAgICAgIGlmICh6S2V5ID09PSB2b2lkIDApIHsgektleSA9ICd6JzsgfVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oKF9hID0ge30sIF9hW3hLZXldID0gdGhpcy54LCBfYVt5S2V5XSA9IHRoaXMueSwgX2EpLCAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgPyAoX2IgPSB7fSxcbiAgICAgICAgICAgIF9iW3pLZXldID0gdGhpcy56LFxuICAgICAgICAgICAgX2IpIDoge30pKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0SWZMZXNzVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGgubWF4KHRoaXMueCwgcC54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5tYXgodGhpcy55LCBwLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0SWZNb3JlVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGgubWluKHRoaXMueCwgcC54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5taW4odGhpcy55LCBwLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWludXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlKC0xKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUub3J0aG9kcm9taWNQYXRoID0gZnVuY3Rpb24gKHBvaW50LCBwb2ludHNDb3VudCkge1xuICAgICAgICBpZiAocG9pbnRzQ291bnQgPT09IHZvaWQgMCkgeyBwb2ludHNDb3VudCA9IDM2MDsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdvcnRob2Ryb21pY1BhdGgnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncG9pbnQnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHBvaW50KTtcbiAgICAgICAgdmFyIHQgPSB0aGlzLmNsb25lKCkuZGVncmVlVG9SYWRpYW5zKCk7XG4gICAgICAgIHZhciBwID0gcG9pbnQuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKTtcbiAgICAgICAgdmFyIGQgPSBNYXRoLnNpbihwLnggLSB0LngpO1xuICAgICAgICB2YXIgc3RlcCA9IChwLnggLSB0LngpIC8gKHBvaW50c0NvdW50IC0gMSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oY3JlYXRlQXJyYXkocG9pbnRzQ291bnQpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICB2YXIgeCA9IHQueCArIHN0ZXAgKiBpO1xuICAgICAgICAgICAgdmFyIHkgPSBNYXRoLmF0YW4oKE1hdGgudGFuKHQueSkgKiBNYXRoLnNpbihwLnggLSB4KSkgLyBkICtcbiAgICAgICAgICAgICAgICAoTWF0aC50YW4ocC55KSAqIE1hdGguc2luKHggLSB0LngpKSAvIGQpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSkucmFkaWFuc1RvRGVncmVlcygpO1xuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNvcnRCeURpc3RhbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHBcbiAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChkLCBpbmRleCkge1xuICAgICAgICAgICAgZC5wcm9wZXJ0aWVzLmRpc3RhbmNlID0gZC5kaXN0YW5jZShfdGhpcyk7XG4gICAgICAgICAgICBkLnByb3BlcnRpZXMuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHJldHVybiBkO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEucHJvcGVydGllcy5kaXN0YW5jZSAtIGIucHJvcGVydGllcy5kaXN0YW5jZTsgfSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmNhbGN1bGF0ZUFsdGl0dWRlQnlEaXN0YW5jZUJldHdlZW5Qb2ludHMgPSBmdW5jdGlvbiAocDEsIHAyKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIGlmIChwMS5hbHQgPT09IHAyLmFsdCkge1xuICAgICAgICAgICAgdGhpcy5hbHQgPSBwMS5hbHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbWluQWx0ID0gTWF0aC5taW4oKF9hID0gcDEuYWx0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwLCAoX2IgPSBwMi5hbHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApO1xuICAgICAgICAgICAgdmFyIG1heEFsdCA9IE1hdGgubWF4KChfYyA9IHAxLmFsdCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMCwgKF9kID0gcDIuYWx0KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwKTtcbiAgICAgICAgICAgIHZhciBkQWx0ID0gbWF4QWx0IC0gbWluQWx0O1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlMSA9IHRoaXMuZGlzdGFuY2UocDEpO1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlMiA9IHRoaXMuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgdmFyIHRvdGFsRGlzdGFuY2UgPSBkaXN0YW5jZTEgKyBkaXN0YW5jZTI7XG4gICAgICAgICAgICBpZiAoKChfZSA9IHAxLmFsdCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMCkgPT09IG1pbkFsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWx0ID0gbWluQWx0ICsgZGlzdGFuY2UxIC8gdG90YWxEaXN0YW5jZSAqIGRBbHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsdCA9IG1pbkFsdCArIGRpc3RhbmNlMiAvIHRvdGFsRGlzdGFuY2UgKiBkQWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIERQb2ludDtcbn0oKSk7XG5leHBvcnQgeyBEUG9pbnQgfTtcbiIsImltcG9ydCB7IERQb2ludCwgRUFSVEhfUkFESVVTX0lOX01FVEVSUyB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBjaGVja0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG52YXIgRENpcmNsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRENpcmNsZShjZW50ZXIsIHIpIHtcbiAgICAgICAgaWYgKGNlbnRlciA9PT0gdm9pZCAwKSB7IGNlbnRlciA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKHIgPT09IHZvaWQgMCkgeyByID0gMDsgfVxuICAgICAgICB0aGlzLmNlbnRlciA9IGNlbnRlcjtcbiAgICAgICAgdGhpcy5yID0gcjtcbiAgICB9XG4gICAgRENpcmNsZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5jZW50ZXIudG9TdHJpbmcoKSwgXCIsIFwiKS5jb25jYXQodGhpcy5yLCBcIilcIik7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHsgY2VudGVyOiB0aGlzLmNlbnRlciwgcjogdGhpcy5yIH07XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEQ2lyY2xlKHRoaXMuY2VudGVyLCB0aGlzLnIpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvaW50cyA9IGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKGMpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5jZW50ZXIsIHgwID0gX2IueCwgeTAgPSBfYi55LCByMCA9IF9hLnI7XG4gICAgICAgIHZhciBfYyA9IGMuY2VudGVyLCB4MSA9IF9jLngsIHkxID0gX2MueSwgcjEgPSBjLnI7XG4gICAgICAgIHZhciByMDIgPSByMCAqIHIwO1xuICAgICAgICB2YXIgZCA9IHRoaXMuY2VudGVyLmRpc3RhbmNlKGMuY2VudGVyKTtcbiAgICAgICAgdmFyIGEgPSAocjAyIC0gcjEgKiByMSArIGQgKiBkKSAvICgyICogZCk7XG4gICAgICAgIHZhciBoID0gTWF0aC5zcXJ0KHIwMiAtIGEgKiBhKTtcbiAgICAgICAgdmFyIGFkID0gYSAvIGQ7XG4gICAgICAgIHZhciBkeSA9IHkxIC0geTA7XG4gICAgICAgIHZhciBkeCA9IHgxIC0geDA7XG4gICAgICAgIHZhciBoZCA9IGggLyBkO1xuICAgICAgICB2YXIgeDIgPSB4MCArIGFkICogKHgxIC0geDApO1xuICAgICAgICB2YXIgeTIgPSB5MCArIGFkICogKHkxIC0geTApO1xuICAgICAgICB2YXIgeDMxID0geDIgKyBoZCAqIGR5O1xuICAgICAgICB2YXIgeTMxID0geTIgLSBoZCAqIGR4O1xuICAgICAgICB2YXIgeDMyID0geDIgLSBoZCAqIGR5O1xuICAgICAgICB2YXIgeTMyID0geTIgKyBoZCAqIGR4O1xuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIGlmICghaXNOYU4oeDMxKSAmJiAhaXNOYU4oeTMxKSkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERQb2ludCh4MzEsIHkzMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4oeDMyKSAmJiAhaXNOYU4oeTMyKSAmJiAhKHgzMSA9PT0geDMyICYmIHkzMSA9PT0geTMyKSkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERQb2ludCh4MzIsIHkzMikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgY2VudGVyID0gX2EuY2VudGVyLCByID0gX2EucjtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VudGVyLmVxdWFsKGNlbnRlcikgJiYgdGhpcy5yID09PSByO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvbHlnb25JbnNpZGUgPSBmdW5jdGlvbiAocG9pbnRDb3VudCwgc3RhcnRBbmdsZSwgc3RvcEFuZ2xlKSB7XG4gICAgICAgIGlmIChwb2ludENvdW50ID09PSB2b2lkIDApIHsgcG9pbnRDb3VudCA9IDY0OyB9XG4gICAgICAgIGlmIChzdGFydEFuZ2xlID09PSB2b2lkIDApIHsgc3RhcnRBbmdsZSA9IDA7IH1cbiAgICAgICAgaWYgKHN0b3BBbmdsZSA9PT0gdm9pZCAwKSB7IHN0b3BBbmdsZSA9IDIgKiBNYXRoLlBJOyB9XG4gICAgICAgIHZhciBzdGVwID0gMiAqIE1hdGguUEkgLyBwb2ludENvdW50O1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIHZhciBhbmdsZSA9IHN0YXJ0QW5nbGU7XG4gICAgICAgIHdoaWxlIChhbmdsZSA8IHN0b3BBbmdsZSAtIHN0ZXApIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKG5ldyBEUG9pbnQodGhpcy5yKS5zY2FsZShNYXRoLmNvcyhhbmdsZSksIE1hdGguc2luKGFuZ2xlKSlcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmNlbnRlcikpO1xuICAgICAgICAgICAgYW5nbGUgKz0gc3RlcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgeCA9IHRoaXMuciAqIE1hdGguY29zKHN0b3BBbmdsZSkgKyB0aGlzLmNlbnRlci54O1xuICAgICAgICB2YXIgeSA9IHRoaXMuciAqIE1hdGguc2luKHN0b3BBbmdsZSkgKyB0aGlzLmNlbnRlci55O1xuICAgICAgICBwb2ludHMucHVzaChuZXcgRFBvaW50KHgsIHkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihwb2ludHMpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvbHlnb25JbnNpZGVPblNwaGVyZSA9IGZ1bmN0aW9uIChwb2ludENvdW50LCBzdGFydEFuZ2xlLCBzdG9wQW5nbGUpIHtcbiAgICAgICAgaWYgKHBvaW50Q291bnQgPT09IHZvaWQgMCkgeyBwb2ludENvdW50ID0gNjQ7IH1cbiAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPT09IHZvaWQgMCkgeyBzdGFydEFuZ2xlID0gMDsgfVxuICAgICAgICBpZiAoc3RvcEFuZ2xlID09PSB2b2lkIDApIHsgc3RvcEFuZ2xlID0gMiAqIE1hdGguUEk7IH1cbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZFBvbHlnb25JbnNpZGVPblNwaGVyZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgnY2VudGVyJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzLmNlbnRlcik7XG4gICAgICAgIHZhciBzdGVwID0gMiAqIE1hdGguUEkgLyBwb2ludENvdW50O1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIHZhciBhbmdsZSA9IHN0YXJ0QW5nbGU7XG4gICAgICAgIHdoaWxlIChhbmdsZSA8IHN0b3BBbmdsZSAtIHN0ZXApIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKHRoaXMuc3BoZXJlT2Zmc2V0KGFuZ2xlKSk7XG4gICAgICAgICAgICBhbmdsZSArPSBzdGVwO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50cy5wdXNoKHRoaXMuc3BoZXJlT2Zmc2V0KHN0b3BBbmdsZSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHBvaW50cyk7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5zcGhlcmVPZmZzZXQgPSBmdW5jdGlvbiAoYmVhcmluZywgZWFydGhSYWRpdXMpIHtcbiAgICAgICAgaWYgKGVhcnRoUmFkaXVzID09PSB2b2lkIDApIHsgZWFydGhSYWRpdXMgPSBFQVJUSF9SQURJVVNfSU5fTUVURVJTOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMuY2VudGVyLmNsb25lKCkuZGVncmVlVG9SYWRpYW5zKCksIGxvbjEgPSBfYS54LCBsYXQxID0gX2EueTtcbiAgICAgICAgdmFyIGRCeVIgPSB0aGlzLnIgLyBlYXJ0aFJhZGl1cztcbiAgICAgICAgdmFyIGxhdCA9IE1hdGguYXNpbihNYXRoLnNpbihsYXQxKSAqIE1hdGguY29zKGRCeVIpICtcbiAgICAgICAgICAgIE1hdGguY29zKGxhdDEpICogTWF0aC5zaW4oZEJ5UikgKiBNYXRoLmNvcyhiZWFyaW5nKSk7XG4gICAgICAgIHZhciBsb24gPSBsb24xICtcbiAgICAgICAgICAgIE1hdGguYXRhbjIoTWF0aC5zaW4oYmVhcmluZykgKiBNYXRoLnNpbihkQnlSKSAqIE1hdGguY29zKGxhdDEpLCBNYXRoLmNvcyhkQnlSKSAtIE1hdGguc2luKGxhdDEpICogTWF0aC5zaW4obGF0KSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KGxvbiwgbGF0KS5yYWRpYW5zVG9EZWdyZWVzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRENpcmNsZTtcbn0oKSk7XG5leHBvcnQgeyBEQ2lyY2xlIH07XG4iLCJ2YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgRmFzdFNlYXJjaCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmFzdFNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgIH1cbiAgICBGYXN0U2VhcmNoLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgcG9pbnRzXzEgPSBfX3ZhbHVlcyhwb2ludHMpLCBwb2ludHNfMV8xID0gcG9pbnRzXzEubmV4dCgpOyAhcG9pbnRzXzFfMS5kb25lOyBwb2ludHNfMV8xID0gcG9pbnRzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9iID0gcG9pbnRzXzFfMS52YWx1ZSwgeCA9IF9iLngsIHkgPSBfYi55LCB6ID0gX2IuejtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50c18xXzEgJiYgIXBvaW50c18xXzEuZG9uZSAmJiAoX2EgPSBwb2ludHNfMS5yZXR1cm4pKSBfYS5jYWxsKHBvaW50c18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRmFzdFNlYXJjaC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55LCB6ID0gX2EuejtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdW3ldKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ107XG4gICAgfTtcbiAgICByZXR1cm4gRmFzdFNlYXJjaDtcbn0oKSk7XG5leHBvcnQgeyBGYXN0U2VhcmNoIH07XG4iLCJ2YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBEUG9seWdvbiwgTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBGYXN0U2VhcmNoIH0gZnJvbSAnLi9GYXN0U2VhcmNoJztcbmltcG9ydCB7IGNyZWF0ZUFycmF5IH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgdmFyIFRyYWNlTWF0cml4VmFsdWVzO1xuKGZ1bmN0aW9uIChUcmFjZU1hdHJpeFZhbHVlcykge1xuICAgIFRyYWNlTWF0cml4VmFsdWVzW1RyYWNlTWF0cml4VmFsdWVzW1wiZlwiXSA9IDBdID0gXCJmXCI7XG4gICAgVHJhY2VNYXRyaXhWYWx1ZXNbVHJhY2VNYXRyaXhWYWx1ZXNbXCJ0XCJdID0gMV0gPSBcInRcIjtcbn0pKFRyYWNlTWF0cml4VmFsdWVzIHx8IChUcmFjZU1hdHJpeFZhbHVlcyA9IHt9KSk7XG52YXIgZ2V0QnlQb3NpdGlvbiA9IGZ1bmN0aW9uIChtLCBwLCBkZWZhdWx0VmFsdWUpIHtcbiAgICBpZiAoZGVmYXVsdFZhbHVlID09PSB2b2lkIDApIHsgZGVmYXVsdFZhbHVlID0gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfVxuICAgIGlmIChtW3AueV0gPT09IHVuZGVmaW5lZCB8fCBtW3AueV1bcC54XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBtW3AueV1bcC54XTtcbn07XG52YXIgc2V0QnlQb3NpdGlvbiA9IGZ1bmN0aW9uIChtLCBwLCB2YWx1ZSkge1xuICAgIGlmIChtW3AueV0gPT09IHVuZGVmaW5lZCB8fCBtW3AueV1bcC54XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgbVtwLnldW3AueF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gbVtwLnldW3AueF07XG59O1xudmFyIFRyYWNlTWF0cml4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUcmFjZU1hdHJpeChzLCBmKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuYXBwcm94aW1hdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuZmluZEdyb3VwQnlJbmRleCA9IGZ1bmN0aW9uIChtLCBzKSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICBpZiAocyAmJiBnZXRCeVBvc2l0aW9uKG0sIHMpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgoX3RoaXMuc2l6ZSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfSk7XG4gICAgICAgICAgICAgICAgc2V0QnlQb3NpdGlvbihtYXJrZWQsIHMsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChzdGFydEluZGV4IDwgcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJlcy5hdChzdGFydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IC0xOyBpIDwgMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gLTE7IGogPCAyOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoci54ICsgaSwgci55ICsgaik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldEJ5UG9zaXRpb24obWFya2VkLCB0LCBUcmFjZU1hdHJpeFZhbHVlcy50KSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCeVBvc2l0aW9uKG0sIHQsIFRyYWNlTWF0cml4VmFsdWVzLmYpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCeVBvc2l0aW9uKG1hcmtlZCwgdCwgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpbmRBbGxHcm91cHNJbk1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgICB2YXIgZmlyc3RNYXJrID0gX3RoaXMuZmluZE1hcmtlZChtKTtcbiAgICAgICAgICAgIGlmICghZmlyc3RNYXJrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGdyb3VwID0gX3RoaXMuZmluZEdyb3VwQnlJbmRleChtLCBmaXJzdE1hcmspO1xuICAgICAgICAgICAgdmFyIGdyb3VwcyA9IFtncm91cF07XG4gICAgICAgICAgICB2YXIgZ3JvdXBTdW0gPSBncm91cC5sZW5ndGg7XG4gICAgICAgICAgICB2YXIgYWxsR3JvdXBzID0gX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGdyb3VwLnBvaW50cyksIGZhbHNlKTtcbiAgICAgICAgICAgIHZhciBmcyA9IG5ldyBGYXN0U2VhcmNoKCk7XG4gICAgICAgICAgICBmcy5hZGQoYWxsR3JvdXBzKTtcbiAgICAgICAgICAgIHdoaWxlIChncm91cFN1bSA8IF90aGlzLnRvdGFsQ291bnRJbk1hdHJpeChtKSkge1xuICAgICAgICAgICAgICAgIHZhciBtYXJrID0gX3RoaXMuZmluZE1hcmtlZChtKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAobWFyayAmJiBmcy5maW5kKG1hcmspKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmsgPSBfdGhpcy5maW5kTWFya2VkKG0sIG1hcmspO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbmV4dEdyb3VwID0gX3RoaXMuZmluZEdyb3VwQnlJbmRleChtLCBtYXJrKTtcbiAgICAgICAgICAgICAgICBncm91cFN1bSArPSBuZXh0R3JvdXAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGFsbEdyb3VwcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFsbEdyb3VwcyksIGZhbHNlKSwgX19yZWFkKG5leHRHcm91cC5wb2ludHMpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZnMuYWRkKG5leHRHcm91cC5wb2ludHMpO1xuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKG5leHRHcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzLmZpbHRlcihmdW5jdGlvbiAoZykgeyByZXR1cm4gZy5sZW5ndGggPiAyOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50cmFjZUdyb3VwID0gZnVuY3Rpb24gKG0sIGdyb3VwKSB7XG4gICAgICAgICAgICB2YXIgdHJhY2VEaXJlY3Rpb25zID0gW1xuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIC0xKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIC0xKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIC0xKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIChkICsgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aCArIDEpICUgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aDsgfTtcbiAgICAgICAgICAgIHZhciByaWdodCA9IGZ1bmN0aW9uIChkKSB7IHJldHVybiAoZCArIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGggLSAxKSAlIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGg7IH07XG4gICAgICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHZhciB0ID0gZ3JvdXAuYXQoMCkuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFt0LCB0LCB0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gMDtcbiAgICAgICAgICAgIHZhciBwcmV2RGlyZWN0aW9uID0gSW5maW5pdHk7XG4gICAgICAgICAgICB2YXIgcCA9IGdyb3VwLmF0KDApO1xuICAgICAgICAgICAgd2hpbGUgKCFwLmVxdWFsKGdyb3VwLmF0KDApKSB8fCBwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBnZXRCeVBvc2l0aW9uKG0sIHAuY2xvbmUoKS5tb3ZlKHRyYWNlRGlyZWN0aW9uc1tkaXJlY3Rpb25dKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0TmVpZ2hib3VyVmFsdWUgPSBnZXRCeVBvc2l0aW9uKG0sIHAuY2xvbmUoKS5tb3ZlKHRyYWNlRGlyZWN0aW9uc1tsZWZ0KGRpcmVjdGlvbildKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQgJiYgbmV4dE5laWdoYm91clZhbHVlID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSByaWdodChkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJldkRpcmVjdGlvbiAhPT0gZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICBwcmV2RGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwID0gcC5jbG9uZSgpLm1vdmUodHJhY2VEaXJlY3Rpb25zW2RpcmVjdGlvbl0pO1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IGxlZnQobGVmdChkaXJlY3Rpb24pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfdGhpcy5hcHByb3hpbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50cy5hcHByb3hpbWF0aW9uKCkuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwb2ludHMuY2xvbmUoKS5jbG9zZSgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNyZWF0ZUhvbGVNYXRyaXggPSBmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICAgICAgdmFyIGZ1bGxUcmFjZURpcmVjdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgtMSwgMCksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgwLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgLTEpXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZ3JvdXAucHJlcGFyZVRvRmFzdFNlYXJjaCgpO1xuICAgICAgICAgICAgdmFyIHRtcE1hdHJpeCA9IFRyYWNlTWF0cml4XG4gICAgICAgICAgICAgICAgLmNyZWF0ZU1hdHJpeChfdGhpcy5zaXplLCBmdW5jdGlvbiAocCkgeyByZXR1cm4gZ3JvdXAuZmFzdEhhcyhwKSA/IFRyYWNlTWF0cml4VmFsdWVzLnQgOiBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9KTtcbiAgICAgICAgICAgIHZhciBzdGFydENvb3JkcyA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdGhpcy5zaXplLnc7IGkrKykge1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludChpLCAtMSkpO1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludChpLCBfdGhpcy5zaXplLmgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3RoaXMuc2l6ZS5oOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoLTEsIGkpKTtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoX3RoaXMuc2l6ZS53LCBpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoc3RhcnRDb29yZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvaW50ID0gc3RhcnRDb29yZHMucG9wKCk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZnVsbFRyYWNlRGlyZWN0aW9uc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoZnVsbFRyYWNlRGlyZWN0aW9ucykpLCBmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMSA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMS5uZXh0KCk7ICFmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMS5kb25lOyBmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMSA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXBQb2ludCA9IHBvaW50LmNsb25lKCkubW92ZShkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZ2V0QnlQb3NpdGlvbih0bXBNYXRyaXgsIHRtcFBvaW50LCBUcmFjZU1hdHJpeFZhbHVlcy50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJ5UG9zaXRpb24odG1wTWF0cml4LCB0bXBQb2ludCwgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaCh0bXBQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMSAmJiAhZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEuZG9uZSAmJiAoX2EgPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzEucmV0dXJuKSkgX2EuY2FsbChmdWxsVHJhY2VEaXJlY3Rpb25zXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdCA9IF90aGlzLnJldmVyc2VNYXRyaXgodG1wTWF0cml4KTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy50b3RhbENvdW50SW5NYXRyaXgodCkgPyB0IDogbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zaXplID0gcy5jbG9uZSgpLnNjYWxlKDQpO1xuICAgICAgICB2YXIgdCA9IFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCh0aGlzLnNpemUsIGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBwLmNsb25lKCkubW9kKDQpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICBpZiAoWzEsIDJdLmluY2x1ZGVzKHgpICYmIFsxLCAyXS5pbmNsdWRlcyh5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmKHAuY2xvbmUoKS5kaXYoNCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFRyYWNlTWF0cml4VmFsdWVzLmY7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm0gPSBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgodGhpcy5zaXplKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLnNpemUueSAtIDE7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCB0aGlzLnNpemUueCAtIDE7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0W2ldW2pdID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpIC0gMV1baiAtIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2kgLSAxXVtqXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpIC0gMV1baiArIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2ldW2ogLSAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpXVtqXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpXVtqICsgMV0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSArIDFdW2ogLSAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpICsgMV1bal0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSArIDFdW2ogKyAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS5mdWxsTWF0cml4VHJhY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBncm91cHMgPSB0aGlzLmZpbmRBbGxHcm91cHNJbk1hdHJpeCh0aGlzLm0pO1xuICAgICAgICB2YXIgcGF0aHMgPSBncm91cHMubWFwKGZ1bmN0aW9uIChnKSB7IHJldHVybiBfdGhpcy50cmFjZUdyb3VwKF90aGlzLm0sIGcpOyB9KTtcbiAgICAgICAgdmFyIGhvbGVNYXRyaXhzID0gZ3JvdXBzLm1hcCh0aGlzLmNyZWF0ZUhvbGVNYXRyaXgpO1xuICAgICAgICB2YXIgaG9sZXNHcm91cHMgPSBob2xlTWF0cml4cy5tYXAoZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG0gJiYgX3RoaXMuZmluZEFsbEdyb3Vwc0luTWF0cml4KG0pOyB9KTtcbiAgICAgICAgdmFyIGhvbGVzUGF0aHMgPSBob2xlc0dyb3Vwcy5tYXAoZnVuY3Rpb24gKGhnLCBpbmRleCkgeyByZXR1cm4gaGcgJiYgaGcubWFwKGZ1bmN0aW9uIChnKSB7IHJldHVybiBfdGhpc1xuICAgICAgICAgICAgLnRyYWNlR3JvdXAoaG9sZU1hdHJpeHNbaW5kZXhdLCBnKTsgfSkuZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLmxlbmd0aCA+IE1JTl9QT0lOVFNfSU5fVkFMSURfUE9MWUdPTjsgfSk7IH0pO1xuICAgICAgICByZXR1cm4gZ3JvdXBzLm1hcChmdW5jdGlvbiAoZywgaW5kZXgpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSBwYXRoc1tpbmRleF07XG4gICAgICAgICAgICBpZiAoaG9sZXNHcm91cHNbaW5kZXhdICYmIGhvbGVzR3JvdXBzW2luZGV4XS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXMuaG9sZXMgPSBob2xlc1BhdGhzW2luZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMubG9vcCgpXG4gICAgICAgICAgICAgICAgLmRpdmlkZSg0KVxuICAgICAgICAgICAgICAgIC5yb3VuZCgpXG4gICAgICAgICAgICAgICAgLnJ1bigpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS5yZXZlcnNlTWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCh0aGlzLnNpemUsIGZ1bmN0aW9uIChwKSB7IHJldHVybiBnZXRCeVBvc2l0aW9uKG0sIHApID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mID8gVHJhY2VNYXRyaXhWYWx1ZXMudCA6IFRyYWNlTWF0cml4VmFsdWVzLmY7IH0pO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLmZpbmRNYXJrZWQgPSBmdW5jdGlvbiAobSwgaW5pdCkge1xuICAgICAgICB2YXIgcyA9IHRoaXMuc2l6ZTtcbiAgICAgICAgdmFyIGluaSA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMudzsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHMuaDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbmkgJiYgaW5pdCkge1xuICAgICAgICAgICAgICAgICAgICBpID0gaW5pdC54O1xuICAgICAgICAgICAgICAgICAgICBqID0gaW5pdC55O1xuICAgICAgICAgICAgICAgICAgICBpbmkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGdldEJ5UG9zaXRpb24obSwgbmV3IERQb2ludChpLCBqKSkgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoaSwgaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLnRvdGFsQ291bnRJbk1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHZhciByZXMgPSAwO1xuICAgICAgICB2YXIgcyA9IHRoaXMuc2l6ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnc7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzLmg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChnZXRCeVBvc2l0aW9uKG0sIG5ldyBEUG9pbnQoaSwgaikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXguY3JlYXRlTWF0cml4ID0gZnVuY3Rpb24gKHNpemUsIGYpIHtcbiAgICAgICAgaWYgKGYgPT09IHZvaWQgMCkgeyBmID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfTsgfVxuICAgICAgICByZXR1cm4gY3JlYXRlQXJyYXkoc2l6ZS5oKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodiwgaSkgeyByZXR1cm4gY3JlYXRlQXJyYXkoc2l6ZS53KS5tYXAoZnVuY3Rpb24gKHYyLCBqKSB7IHJldHVybiBmKG5ldyBEUG9pbnQoaiwgaSkpOyB9KTsgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gVHJhY2VNYXRyaXg7XG59KCkpO1xuZXhwb3J0IHsgVHJhY2VNYXRyaXggfTtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5pbXBvcnQgeyBEUG9seWdvbiB9IGZyb20gJy4vRFBvbHlnb24nO1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgaXNEZWZBbmROb3ROdWxsIH0gZnJvbSAnLi91dGlscyc7XG52YXIgSW50ZXJwb2xhdGlvbk1hdHJpeCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gSW50ZXJwb2xhdGlvbk1hdHJpeChiYm94TGlrZSwgc3RlcFNpemUsIGtleXMsIHApIHtcbiAgICAgICAgaWYgKHAgPT09IHZvaWQgMCkgeyBwID0gMjsgfVxuICAgICAgICB0aGlzLnN0ZXBTaXplID0gc3RlcFNpemU7XG4gICAgICAgIHRoaXMucCA9IHA7XG4gICAgICAgIHRoaXMucG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuY2VsbHMgPSB7fTtcbiAgICAgICAgdGhpcy5hbGxDZWxscyA9IFtdO1xuICAgICAgICB0aGlzLm1pblBvaW50ID0gYmJveExpa2UubWluUG9pbnQ7XG4gICAgICAgIHRoaXMubWF4UG9pbnQgPSBiYm94TGlrZS5tYXhQb2ludDtcbiAgICAgICAgdGhpcy5zaXplUG9seSA9IERQb2x5Z29uLmNyZWF0ZVNxdWFyZUJ5U2l6ZShuZXcgRFBvaW50KHRoaXMuc3RlcFNpemUpKTtcbiAgICAgICAgdGhpcy5zaXplID0gdGhpcy5tYXhQb2ludC5jbG9uZSgpLm1vdmUodGhpcy5taW5Qb2ludC5jbG9uZSgpLm1pbnVzKCkpXG4gICAgICAgICAgICAuZGl2aWRlKHRoaXMuc3RlcFNpemUpXG4gICAgICAgICAgICAuY2VpbCgpO1xuICAgICAgICB0aGlzLmtleXMgPSBBcnJheS5pc0FycmF5KGtleXMpID8ga2V5cyA6IFtrZXlzXTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUNlbGxzKCk7XG4gICAgfVxuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLnNldEtub3duUG9pbnRzID0gZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnBvaW50cyA9IHBvaW50cyBpbnN0YW5jZW9mIERQb2x5Z29uID8gcG9pbnRzLnBvaW50cyA6IHBvaW50cztcbiAgICAgICAgdGhpcy5taW5Qb2ludC5zZXRQcm9wZXJ0aWVzKHRoaXMucG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYSwgdikgeyByZXR1cm4gX3RoaXMua2V5c1xuICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYWEsIGspIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGFhW2tdID0gTWF0aC5taW4oKF9hID0gYVtrXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogSW5maW5pdHksIHYucHJvcGVydGllc1trXSk7XG4gICAgICAgICAgICByZXR1cm4gYWE7XG4gICAgICAgIH0sIGEpOyB9LCB7fSkpO1xuICAgICAgICB0aGlzLm1heFBvaW50LnNldFByb3BlcnRpZXModGhpcy5wb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhLCB2KSB7IHJldHVybiBfdGhpcy5rZXlzXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChhYSwgaykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYWFba10gPSBNYXRoLm1heCgoX2EgPSBhW2tdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAtSW5maW5pdHksIHYucHJvcGVydGllc1trXSk7XG4gICAgICAgICAgICByZXR1cm4gYWE7XG4gICAgICAgIH0sIGEpOyB9LCB7fSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLnBvc2l0aW9uVG9DZWxsQ29vcmRzID0gZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQuY2xvbmUoKVxuICAgICAgICAgICAgLm1vdmUodGhpcy5taW5Qb2ludC5jbG9uZSgpLm1pbnVzKCkpXG4gICAgICAgICAgICAuZGl2aWRlKHRoaXMuc3RlcFNpemUpXG4gICAgICAgICAgICAuZmxvb3IoKTtcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLmNhbGN1bGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRLbm93blZhbHVlcygpO1xuICAgICAgICB0aGlzLmludGVycG9sYXRlVmFsdWVzKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuZ2V0Q2VsbFZhbHVlID0gZnVuY3Rpb24gKF9hLCBrZXkpIHtcbiAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdmFyIGNlbGwgPSB0aGlzLmNlbGxzW3hdW3ldO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGspIHtcbiAgICAgICAgICAgICAgICAgICAgYVtrXSA9IGNlbGwucHJvcGVydGllc1trXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNlbGwucHJvcGVydGllc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7fSwgY2VsbC5wcm9wZXJ0aWVzKTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZSwgXCJnZXRDZWxsRGF0YVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsQ2VsbHMucmVkdWNlKGZ1bmN0aW9uIChhLCBjKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gYy5wcm9wZXJ0aWVzLCB4ID0gX2EueCwgeSA9IF9hLnksIHByb3BzID0gX19yZXN0KF9hLCBbXCJ4XCIsIFwieVwiXSk7XG4gICAgICAgICAgICAgICAgYVt4XSA9IGFbeF0gfHwge307XG4gICAgICAgICAgICAgICAgYVt4XVt5XSA9IF9fYXNzaWduKHt9LCBwcm9wcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUsIFwiYWxsQ2VsbHNDbG9uZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsQ2VsbHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwLmNsb25lKCk7IH0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuaW50ZXJwb2xhdGVWYWx1ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLnBvaW50cy5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIF90aGlzLnBvc2l0aW9uVG9DZWxsQ29vcmRzKHApOyB9KTtcbiAgICAgICAgdGhpcy5hbGxDZWxscy5mb3JFYWNoKGZ1bmN0aW9uIChjZWxsKSB7XG4gICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoY2VsbC5wcm9wZXJ0aWVzLngsIGNlbGwucHJvcGVydGllcy55KTtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZXMgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBNYXRoLnBvdyh0LmRpc3RhbmNlKHApLCBfdGhpcy5wKTsgfSk7XG4gICAgICAgICAgICBfdGhpcy5rZXlzLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKGNlbGwucHJvcGVydGllc1trXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgX2EgPSBfX3JlYWQoZGlzdGFuY2VzLnJlZHVjZShmdW5jdGlvbiAoYSwgZCwgaSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKF90aGlzLnBvaW50c1tpXS5wcm9wZXJ0aWVzW2tdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYVswXSArPSBfdGhpcy5wb2ludHNbaV0ucHJvcGVydGllc1trXSAvIGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBhWzFdICs9IDEgLyBkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0sIFswLCAwXSksIDIpLCB2YWx1ZVN1bSA9IF9hWzBdLCBvbmVTdW0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBjZWxsLnByb3BlcnRpZXNba10gPSB2YWx1ZVN1bSAvIG9uZVN1bTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLnNldEtub3duVmFsdWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5wb3NpdGlvblRvQ2VsbENvb3JkcyhwKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgX3RoaXMua2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2VsbHNbeF1beV0ucHJvcGVydGllc1trXSA9IHAucHJvcGVydGllc1trXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLmdlbmVyYXRlQ2VsbHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSB0aGlzLm1pblBvaW50LngsIHggPSAwOyBpIDwgdGhpcy5tYXhQb2ludC54OyBpICs9IHRoaXMuc3RlcFNpemUsIHgrKykge1xuICAgICAgICAgICAgdGhpcy5jZWxsc1t4XSA9IHRoaXMuY2VsbHNbeF0gfHwge307XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gdGhpcy5taW5Qb2ludC55LCB5ID0gMDsgaiA8IHRoaXMubWF4UG9pbnQueTsgaiArPSB0aGlzLnN0ZXBTaXplLCB5KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuc2l6ZVBvbHlcbiAgICAgICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAgICAgLmxvb3AoKVxuICAgICAgICAgICAgICAgICAgICAubW92ZShpLCBqKVxuICAgICAgICAgICAgICAgICAgICAucnVuKClcbiAgICAgICAgICAgICAgICAgICAgLnNldFByb3BlcnRpZXMoe1xuICAgICAgICAgICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgICAgICAgICB5OiB5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZWxsc1t4XVt5XSA9IHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGxDZWxscy5wdXNoKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk1hdHJpeDtcbn0oKSk7XG5leHBvcnQgeyBJbnRlcnBvbGF0aW9uTWF0cml4IH07XG4iLCJ2YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBnYXVzc2lhbkVsaW1pbmF0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xudmFyIERQbGFuZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpIHtcbiAgICAgICAgaWYgKHAxID09PSB2b2lkIDApIHsgcDEgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChwMiA9PT0gdm9pZCAwKSB7IHAyID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICBpZiAocDMgPT09IHZvaWQgMCkgeyBwMyA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgdGhpcy5hID0gYTtcbiAgICAgICAgdGhpcy5iID0gYjtcbiAgICAgICAgdGhpcy5jID0gYztcbiAgICAgICAgdGhpcy5kID0gZDtcbiAgICAgICAgdGhpcy5wMSA9IHAxO1xuICAgICAgICB0aGlzLnAyID0gcDI7XG4gICAgICAgIHRoaXMucDMgPSBwMztcbiAgICB9XG4gICAgRFBsYW5lLmZpbmQgPSBmdW5jdGlvbiAocDEsIHAyLCBwMykge1xuICAgICAgICBpZiAocDEueCA9PT0gcDIueCAmJiBwMi54ID09PSBwMy54KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQbGFuZSgxLCAwLCAwLCAtcDEueCwgcDEsIHAyLCBwMyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAxLnkgPT09IHAyLnkgJiYgcDIueSA9PT0gcDMueSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoMCwgMSwgMCwgLXAxLnksIHAxLCBwMiwgcDMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwMS56ID09PSBwMi56ICYmIHAyLnogPT09IHAzLnopIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBsYW5lKDAsIDAsIDEsIC1wMS56LCBwMSwgcDIsIHAzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZCA9IDE7XG4gICAgICAgIHZhciBfYSA9IF9fcmVhZChnYXVzc2lhbkVsaW1pbmF0aW9uKFtcbiAgICAgICAgICAgIFtwMS54LCBwMS55LCBwMS56LCAtZF0sXG4gICAgICAgICAgICBbcDIueCwgcDIueSwgcDIueiwgLWRdLFxuICAgICAgICAgICAgW3AzLngsIHAzLnksIHAzLnosIC1kXVxuICAgICAgICBdKSwgMyksIGEgPSBfYVswXSwgYiA9IF9hWzFdLCBjID0gX2FbMl07XG4gICAgICAgIHJldHVybiBuZXcgRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS54ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHkgPSBwLnksIHogPSBwLno7XG4gICAgICAgICAgICBwLnggPSAtKGIgKiB5ICsgYyAqIHogKyBkKSAvIGE7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLngodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS55ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHggPSBwLngsIHogPSBwLno7XG4gICAgICAgICAgICBwLnkgPSAtKGEgKiB4ICsgYyAqIHogKyBkKSAvIGI7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLnkodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS56ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHggPSBwLngsIHkgPSBwLnk7XG4gICAgICAgICAgICBwLnogPSAtKGEgKiB4ICsgYiAqIHkgKyBkKSAvIGM7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLnoodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQsIHAxID0gX2EucDEsIHAyID0gX2EucDIsIHAzID0gX2EucDM7XG4gICAgICAgIHJldHVybiBuZXcgRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5kaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2YXIgeCA9IHAueCwgeSA9IHAueSwgeiA9IHAuejtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGFfMSA9IF9hLmEsIGJfMSA9IF9hLmIsIGNfMSA9IF9hLmMsIGRfMSA9IF9hLmQ7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoYV8xICogeCArIGJfMSAqIHkgKyBjXzEgKiB6ICsgZF8xKSAvIE1hdGguc3FydChhXzEgKiBhXzEgKyBiXzEgKiBiXzEgKyBjXzEgKiBjXzEpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYiA9IHAsIGEgPSBfYi5hLCBiID0gX2IuYiwgYyA9IF9iLmMsIGQgPSBfYi5kO1xuICAgICAgICB2YXIgciA9IHRoaXMuZDtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGQgLSByKSAvIE1hdGguc3FydChhICogYSArIGIgKiBiICsgYyAqIGMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UoYSwgcSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoYiwgdykgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoYywgZSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoZCwgcik7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnNhbWUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgYSA9IHAuYSwgYiA9IHAuYiwgYyA9IHAuYywgZCA9IHAuZDtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgcSA9IF9hLmEsIHcgPSBfYS5iLCBlID0gX2EuYywgciA9IF9hLmQ7XG4gICAgICAgIHZhciB0ID0gYSAvIHE7XG4gICAgICAgIHZhciB5ID0gYiAvIHc7XG4gICAgICAgIHZhciB1ID0gYyAvIGU7XG4gICAgICAgIHZhciBpID0gZCAvIHI7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKHQsIHkpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIHUpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIGMpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIGkpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5wYXJhbGxlbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgdmFyIHQgPSBhIC8gcTtcbiAgICAgICAgdmFyIHkgPSBiIC8gdztcbiAgICAgICAgdmFyIHUgPSBjIC8gZTtcbiAgICAgICAgdmFyIGkgPSBkIC8gcjtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UodCwgeSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgdSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgYykgJiZcbiAgICAgICAgICAgICFETnVtYmVycy5saWtlKHQsIGkpO1xuICAgIH07XG4gICAgcmV0dXJuIERQbGFuZTtcbn0oKSk7XG5leHBvcnQgeyBEUGxhbmUgfTtcbiJdLCJuYW1lcyI6WyJfX3JlYWQiLCJ0aGlzIiwiX19zcHJlYWRBcnJheSIsIl9fdmFsdWVzIiwiX19hc3NpZ24iLCJvcGVyYXRpb24iLCJqc3RzSW8iLCJfX3Jlc3QiLCJUcmFjZU1hdHJpeFZhbHVlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQUEsSUFBSUEsUUFBTSxHQUFHLENBQUNDLFNBQUksSUFBSUEsU0FBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLElBQUk7SUFDUixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRixLQUFLO0lBQ0wsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQzNDLFlBQVk7SUFDWixRQUFRLElBQUk7SUFDWixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxTQUFTO0lBQ1QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDekMsS0FBSztJQUNMLElBQUksT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDLENBQUM7SUFDRixJQUFJQyxlQUFhLEdBQUcsQ0FBQ0QsU0FBSSxJQUFJQSxTQUFJLENBQUMsYUFBYSxLQUFLLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7SUFDOUUsSUFBSSxJQUFJLElBQUksSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6RixRQUFRLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO0lBQ2hDLFlBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFNBQVM7SUFDVCxLQUFLO0lBQ0wsSUFBSSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQztJQUNGLElBQUlFLFVBQVEsR0FBRyxDQUFDRixTQUFJLElBQUlBLFNBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLEVBQUU7SUFDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPO0lBQ2xELFFBQVEsSUFBSSxFQUFFLFlBQVk7SUFDMUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDL0MsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxTQUFTO0lBQ1QsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsR0FBRyx5QkFBeUIsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQzNGLENBQUMsQ0FBQztBQUVRLFFBQUMsSUFBSSxHQUFHO0lBQ2xCLElBQUksS0FBSyxFQUFFLEtBQUs7SUFDaEIsSUFBSSxXQUFXLEVBQUUsS0FBSztJQUN0QixFQUFFO0lBQ0ssSUFBSSxJQUFJLEdBQUcsWUFBWTtJQUM5QixJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ2xELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxLQUFLO0lBQ0wsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7SUFDcEIsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUVDLGVBQWEsQ0FBQyxFQUFFLEVBQUVGLFFBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVFLEtBQUs7SUFDTCxDQUFDLENBQUM7QUFDUSxRQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHO0lBQ3JFLElBQUksSUFBSSxHQUFHLFVBQVUsS0FBSyxFQUFFLEVBQUUsT0FBTyxZQUFZLEVBQUUsT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0RSxJQUFJLFdBQVcsR0FBRyxVQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRTtJQUM1RSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFO0lBQzFCLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ25CLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLEtBQUs7SUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDTCxJQUFJLFlBQVksR0FBRyxVQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRTtJQUM3RSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFO0lBQzFCLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUNsRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUN0RixLQUFLO0lBQ0wsSUFBSSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ0wsSUFBSSxjQUFjLEdBQUcsVUFBVSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUU7SUFDL0UsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixFQUFFO0lBQ3BDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLEtBQUs7SUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDTCxJQUFJLGVBQWUsR0FBRyxVQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRTtJQUNoRixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO0lBQ3hCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLEtBQUs7SUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDTCxJQUFJLFdBQVcsR0FBRyxVQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRTtJQUM1RSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDN0IsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDcEYsS0FBSztJQUNMLElBQUksT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNMLElBQUksY0FBYyxHQUFHLFVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFO0lBQy9FLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRTtJQUMvQixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUN4RixLQUFLO0lBQ0wsSUFBSSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ0UsSUFBSSxhQUFhLEdBQUcsVUFBVSxRQUFRLEVBQUUsRUFBRSxRQUFRO0lBQ3pELElBQUksYUFBYSxFQUFFLFVBQVUsT0FBTyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7SUFDekIsWUFBWSxPQUFPO0lBQ25CLGdCQUFnQixjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMxQyxnQkFBZ0IsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDMUMsZ0JBQWdCLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLGdCQUFnQixZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QyxnQkFBZ0IsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0MsZ0JBQWdCLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLGFBQWEsQ0FBQztJQUNkLFNBQVM7SUFDVCxRQUFRLE9BQU87SUFDZixZQUFZLGNBQWMsRUFBRSxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDbkUsWUFBWSxjQUFjLEVBQUUsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQ25FLFlBQVksV0FBVyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztJQUM3RCxZQUFZLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDL0QsWUFBWSxlQUFlLEVBQUUsZUFBZSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQ3JFLFlBQVksV0FBVyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztJQUM3RCxTQUFTLENBQUM7SUFDVixLQUFLO0lBQ0wsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNJLFFBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRTtJQUNsRCxJQUFJLElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxFQUFFO0lBQzFDLFFBQVEsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLGFBQWEsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELEtBQUs7SUFDTCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RixFQUFFO0FBQ1EsUUFBQyxZQUFZLEdBQUcsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFO0lBQ3BELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxFQUFFO0lBQzFDLFFBQVEsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzdCLGFBQWEsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sV0FBVyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RyxLQUFLO0lBQ0wsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFHLENBQUMsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRSxFQUFFO0FBQ1EsUUFBQyxtQkFBbUIsR0FBRyxVQUFVLE1BQU0sRUFBRTtJQUNuRCxJQUFJLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDMUIsSUFBSSxJQUFJLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3hDLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN4QyxZQUFZLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsU0FBUztJQUNULFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsWUFBWSxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsZ0JBQWdCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNELGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsZ0JBQWdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsYUFBYTtJQUNiLFNBQVM7SUFDVCxLQUFLO0lBQ0wsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JDLFlBQVksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxTQUFTO0lBQ1QsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pDLFlBQVksSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6QyxnQkFBZ0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0QsYUFBYTtJQUNiLFNBQVM7SUFDVCxLQUFLO0lBQ0wsSUFBSSxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLO0lBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztJQUNsQixFQUFFO0lBQ0YsbUJBQW1CLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUN0QixRQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzdDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDWCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUU7SUFDN0IsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLEtBQUs7SUFDTCxTQUFTO0lBQ1QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsS0FBSztJQUNMLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxTQUFTLEVBQUU7SUFDaEMsUUFBUSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLEtBQUs7SUFDTCxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO0lBQ3BDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLEtBQUs7SUFDTCxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUyxFQUFFO0lBQ2hDLFFBQVEsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUN0QixLQUFLO0lBQ0wsSUFBSSxJQUFJLE1BQU0sR0FBRyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsWUFBWSxDQUFDLFFBQVEsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFKLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtJQUNwQixRQUFRLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDMUIsS0FBSztJQUNMLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0MsRUFBRTtJQUNGLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFRSxlQUFhLENBQUMsRUFBRSxFQUFFRixRQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNqSyxRQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM5QyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNmLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDbEQsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxLQUFLO0lBQ0wsSUFBSSxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUVFLGVBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRUYsUUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlGLEVBQUU7QUFDUSxRQUFDLGVBQWUsR0FBRyxVQUFVLEdBQUcsRUFBRTtJQUM1QyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDMUIsUUFBUSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixLQUFLO0lBQ0wsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDakIsSUFBSSxJQUFJLFVBQVUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEQsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoRCxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUNFLGVBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFRixRQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRSxTQUFTO0lBQ1QsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixFQUFFO0lBQ0ssSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEQsSUFBSSx1QkFBdUIsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNsRCxJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxJQUFJLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsSUFBSSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLElBQUksT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQyxDQUFDO0FBQ1EsUUFBQywwQkFBMEIsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNyRCxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNoQixJQUFJLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25DLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBQ2xGLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksSUFBSTtJQUNSLFFBQVEsS0FBSyxJQUFJLE9BQU8sR0FBR0csVUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDckgsWUFBWSxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLFlBQVksUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUk7SUFDL0gsZ0JBQWdCLEtBQUssR0FBRztJQUN4QixvQkFBb0IsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN6TCxvQkFBb0IsTUFBTTtJQUMxQixnQkFBZ0IsS0FBSyxJQUFJO0lBQ3pCLG9CQUFvQixDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3pMLG9CQUFvQixNQUFNO0lBQzFCLGdCQUFnQixLQUFLLEdBQUc7SUFDeEIsb0JBQW9CLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDekwsb0JBQW9CLE1BQU07SUFDMUIsZ0JBQWdCLFFBQVE7SUFDeEIsYUFBYTtJQUNiLFNBQVM7SUFDVCxLQUFLO0lBQ0wsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQzdDLFlBQVk7SUFDWixRQUFRLElBQUk7SUFDWixZQUFZLElBQUksU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEYsU0FBUztJQUNULGdCQUFnQixFQUFFLElBQUksR0FBRyxFQUFFLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQzdDLEtBQUs7SUFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDekM7O0lDdlFBLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNmLFFBQUMsUUFBUSxJQUFJLFlBQVk7SUFDNUIsSUFBSSxTQUFTLFFBQVEsR0FBRztJQUN4QixLQUFLO0lBQ0wsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdkMsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtJQUN4QyxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNyQyxRQUFRLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3BDLFFBQVEsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN2RSxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDbkMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNoRSxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDcEMsUUFBUSxPQUFPLENBQUMsR0FBRyxZQUFZLENBQUM7SUFDaEMsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3BDLFFBQVEsT0FBTyxDQUFDLEdBQUcsWUFBWSxDQUFDO0lBQ2hDLEtBQUssQ0FBQztJQUNOLElBQUksT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQyxFQUFFOztJQ3pCSCxJQUFJLGFBQWEsQ0FBQztJQUNsQixDQUFDLFVBQVUsYUFBYSxFQUFFO0lBQzFCLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0lBQ2hGLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO0lBQ2hGLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDMUQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN0RCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3RELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdEQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUMxRCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ2hFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7SUFDaEUsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUNoRSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3ZELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDekQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN2RCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3pELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDN0QsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNyRCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3pELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDM0QsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7SUFDN0UsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUM7SUFDL0UsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7SUFDN0UsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7SUFDN0UsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUMvRCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDM0QsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUMzRCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUM7SUFDekUsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUN6RCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzRSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzRSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzRSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDO0lBQ3pFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDckQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNyRCxDQUFDLEVBQUUsYUFBYSxLQUFLLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLElBQUksZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ3hDLElBQUksSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDak0sSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDaEIsSUFBSSxRQUFRLFlBQVk7SUFDeEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxpQkFBaUI7SUFDNUMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pELFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLGlCQUFpQjtJQUM1QyxZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFELGlCQUFpQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsWUFBWSxNQUFNO0lBQ2xCLFFBQVEsS0FBSyxhQUFhLENBQUMsTUFBTTtJQUNqQyxZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFELGlCQUFpQixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLElBQUk7SUFDL0IsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxPQUFPLFNBQVMsS0FBSyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUYsaUJBQWlCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckcsWUFBWSxNQUFNO0lBQ2xCLFFBQVEsS0FBSyxhQUFhLENBQUMsSUFBSTtJQUMvQixZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLE9BQU8sU0FBUyxLQUFLLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRixpQkFBaUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxJQUFJO0lBQy9CLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sT0FBTyxTQUFTLEtBQUssUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFGLGlCQUFpQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JHLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLE1BQU07SUFDakMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxTQUFTO0lBQ3BDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDekMsWUFBWSxNQUFNO0lBQ2xCLFFBQVEsS0FBSyxhQUFhLENBQUMsU0FBUztJQUNwQyxZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFELGlCQUFpQixTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pDLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLFNBQVM7SUFDcEMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN6QyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxJQUFJO0lBQy9CLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BELFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLEtBQUs7SUFDaEMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVCLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLElBQUk7SUFDL0IsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNCLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLEtBQUs7SUFDaEMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVCLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLE9BQU87SUFDbEMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2QyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxHQUFHO0lBQzlCLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxQixZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxLQUFLO0lBQ2hDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLEtBQUssQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JELFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLE1BQU07SUFDakMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEQsWUFBWSxNQUFNO0lBQ2xCLFFBQVEsS0FBSyxhQUFhLENBQUMsR0FBRztJQUM5QixZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFELGlCQUFpQixHQUFHLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNuRCxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxHQUFHO0lBQzlCLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLEdBQUcsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ25ELFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLGVBQWU7SUFDMUMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLGdCQUFnQjtJQUMzQyxZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFELGlCQUFpQixnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxlQUFlO0lBQzFDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxlQUFlO0lBQzFDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxRQUFRO0lBQ25DLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDN0IsWUFBWSxNQUFNO0lBQ2xCLFFBQVEsS0FBSyxhQUFhLENBQUMsTUFBTTtJQUNqQyxZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFELGlCQUFpQixNQUFNLENBQUMsRUFBRSxDQUFDO0lBQzNCLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLE1BQU07SUFDakMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUMzQixZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxNQUFNO0lBQ2pDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDM0IsWUFBWSxNQUFNO0lBQ2xCLFFBQVEsS0FBSyxhQUFhLENBQUMsTUFBTTtJQUNqQyxZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzFELGlCQUFpQixNQUFNLENBQUMsRUFBRSxDQUFDO0lBQzNCLFlBQVksTUFBTTtJQUNsQixRQUFRLEtBQUssYUFBYSxDQUFDLGFBQWE7SUFDeEMsWUFBWSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUMxRCxpQkFBaUIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxLQUFLO0lBQ2hDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QixZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxjQUFjO0lBQ3pDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxjQUFjO0lBQ3pDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNyQyxZQUFZLE1BQU07SUFDbEIsUUFBUSxLQUFLLGFBQWEsQ0FBQyxjQUFjO0lBQ3pDLFlBQVksR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDMUQsaUJBQWlCLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbkQsWUFBWSxNQUFNO0lBQ2xCLFFBQVEsS0FBSyxhQUFhLENBQUMsYUFBYTtJQUN4QyxZQUFZLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLE9BQU8saUJBQWlCLEtBQUssUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ2xHLGlCQUFpQixhQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2SSxZQUFZLE1BQU07SUFDbEIsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLENBQUM7QUFDQyxRQUFDLFlBQVksSUFBSSxZQUFZO0lBQ2hDLElBQUksU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2QixLQUFLO0lBQ0wsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxZQUFZO0lBQ3pELFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsWUFBWTtJQUM3QyxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDdkQsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLFVBQVUsSUFBSSxFQUFFO0lBQy9ELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLGlCQUFpQjtJQUN6RCxZQUFZLFNBQVMsRUFBRSxJQUFJO0lBQzNCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEdBQUcsVUFBVSxJQUFJLEVBQUU7SUFDL0QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsaUJBQWlCO0lBQ3pELFlBQVksU0FBUyxFQUFFLElBQUk7SUFDM0IsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDakQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsTUFBTTtJQUM5QyxZQUFZLFNBQVMsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQy9DLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLElBQUk7SUFDNUMsWUFBWSxTQUFTLEVBQUUsQ0FBQztJQUN4QixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLGlCQUFpQixFQUFFO0lBQ3hFLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLGFBQWE7SUFDckQsWUFBWSxpQkFBaUIsRUFBRSxpQkFBaUI7SUFDaEQsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDL0MsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsSUFBSTtJQUM1QyxZQUFZLFNBQVMsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQy9DLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLElBQUk7SUFDNUMsWUFBWSxTQUFTLEVBQUUsQ0FBQztJQUN4QixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNqRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBQzlDLFlBQVksU0FBUyxFQUFFLENBQUM7SUFDeEIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDcEQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsU0FBUztJQUNqRCxZQUFZLFNBQVMsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3BELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLFNBQVM7SUFDakQsWUFBWSxTQUFTLEVBQUUsQ0FBQztJQUN4QixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNwRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxTQUFTO0lBQ2pELFlBQVksU0FBUyxFQUFFLENBQUM7SUFDeEIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2xELFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDcEMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsSUFBSTtJQUM1QyxZQUFZLGNBQWMsRUFBRSxDQUFDO0lBQzdCLFlBQVksU0FBUyxFQUFFLENBQUM7SUFDeEIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtJQUMvQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxLQUFLO0lBQzdDLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVk7SUFDOUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsSUFBSTtJQUM1QyxTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0lBQy9DLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLEtBQUs7SUFDN0MsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDbEQsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNwQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxPQUFPO0lBQy9DLFlBQVksU0FBUyxFQUFFLENBQUM7SUFDeEIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsWUFBWTtJQUM3QyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxHQUFHO0lBQzNDLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuRCxRQUFRLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3BDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLEtBQUs7SUFDN0MsWUFBWSxjQUFjLEVBQUUsQ0FBQztJQUM3QixZQUFZLFNBQVMsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNwRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBQzlDLFlBQVksY0FBYyxFQUFFLENBQUM7SUFDN0IsWUFBWSxTQUFTLEVBQUUsQ0FBQztJQUN4QixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDakQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsR0FBRztJQUMzQyxZQUFZLGNBQWMsRUFBRSxDQUFDO0lBQzdCLFlBQVksU0FBUyxFQUFFLENBQUM7SUFDeEIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2pELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLEdBQUc7SUFDM0MsWUFBWSxjQUFjLEVBQUUsQ0FBQztJQUM3QixZQUFZLFNBQVMsRUFBRSxDQUFDO0lBQ3hCLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFlBQVk7SUFDekQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsZUFBZTtJQUN2RCxTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFlBQVk7SUFDMUQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsZ0JBQWdCO0lBQ3hELFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFlBQVk7SUFDekQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsZUFBZTtJQUN2RCxTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxZQUFZO0lBQ3pELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLGVBQWU7SUFDdkQsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtJQUNyRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxRQUFRO0lBQ2hELFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVk7SUFDbkQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsTUFBTTtJQUM5QyxTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxZQUFZO0lBQ25ELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLE1BQU07SUFDOUMsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWTtJQUNuRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBQzlDLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVk7SUFDbkQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsTUFBTTtJQUM5QyxTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN4RCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxhQUFhO0lBQ3JELFlBQVksUUFBUSxFQUFFLENBQUM7SUFDdkIsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtJQUMvQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFlBQVksWUFBWSxFQUFFLGFBQWEsQ0FBQyxLQUFLO0lBQzdDLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFlBQVk7SUFDeEQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsY0FBYztJQUN0RCxTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxZQUFZO0lBQ3hELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkIsWUFBWSxZQUFZLEVBQUUsYUFBYSxDQUFDLGNBQWM7SUFDdEQsU0FBUyxDQUFDLENBQUM7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxJQUFJLEVBQUU7SUFDNUQsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixZQUFZLFlBQVksRUFBRSxhQUFhLENBQUMsY0FBYztJQUN0RCxZQUFZLGNBQWMsRUFBRSxJQUFJO0lBQ2hDLFNBQVMsQ0FBQyxDQUFDO0lBQ1gsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUMsRUFBRTs7SUNsYkgsSUFBSUMsVUFBUSxHQUFHLENBQUNILFNBQUksSUFBSUEsU0FBSSxDQUFDLFFBQVEsS0FBSyxZQUFZO0lBQ3RELElBQUlHLFVBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxFQUFFO0lBQzVDLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0QsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFlBQVksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQztJQUNqQixLQUFLLENBQUM7SUFDTixJQUFJLE9BQU9BLFVBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQztJQUNGLElBQUksV0FBVyxHQUFHLENBQUNILFNBQUksSUFBSUEsU0FBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLE9BQU8sRUFBRSxJQUFJLEVBQUU7SUFDekUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7SUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztJQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMs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RUFBRSxFQUFFLEVBQUUsRUFBRTtJQUN0RCxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFRSxlQUFhLENBQUMsRUFBRSxFQUFFRixRQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7SUFDM0MsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0lBQzdDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDZixRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3RELFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUVFLGVBQWEsQ0FBQyxFQUFFLEVBQUVGLFFBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdGLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWTtJQUM3QyxRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRSxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtJQUM5QyxRQUFRLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSztJQUNwRixhQUFhLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZFLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtJQUM5QyxRQUFRLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hHLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtJQUMzQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDNUIsUUFBUSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7SUFDaEMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtJQUMxQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDM0IsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ2pELFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxJQUFJLEVBQUU7SUFDN0MsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQ0UsZUFBYSxDQUFDQSxlQUFhLENBQUMsRUFBRSxFQUFFRixRQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFQSxRQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakksUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHRSxlQUFhLENBQUNBLGVBQWEsQ0FBQyxFQUFFLEVBQUVGLFFBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUVBLFFBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkosUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzFDLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0RSxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7SUFDM0MsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkUsUUFBUSxHQUFHLENBQUMsVUFBVSxHQUFHSSxVQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDNUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLFFBQVEsQ0FBQyxFQUFFO0lBQ3RDLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7SUFDOUUsWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsUUFBUSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxNQUFNLEVBQUUsRUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO0lBQ3hJLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDM0MsUUFBUSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsUUFBUSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFO0lBQ3ZDLGFBQWEsS0FBSyxFQUFFO0lBQ3BCLGFBQWEsUUFBUSxFQUFFLENBQUM7SUFDeEIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoRCxZQUFZLElBQUksWUFBWSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxZQUFZLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRTtJQUMvRixpQkFBaUIsUUFBUSxFQUFFLEVBQUU7SUFDN0IsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ2hELFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RSxTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDcEQsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFO0lBQ2xGLFFBQVEsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsS0FBSyxFQUFFO0lBQ3RELFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDZixRQUFRLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUN4QixRQUFRLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3RELFlBQVksTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsU0FBUztJQUNULFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRUYsZUFBYSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUYsUUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbkcsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDNUQsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzVELFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNsQyxRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDL0IsUUFBUSxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzNDLFFBQVEsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxRQUFRLElBQUksR0FBRyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEYsUUFBUSxJQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzFCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDcEQsUUFBUSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEdBQUcsVUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtJQUN0SCxRQUFRLElBQUksU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3BELFFBQVEsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtJQUMxRCxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDN0IsWUFBWSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLFlBQVksSUFBSSxTQUFTLEVBQUU7SUFDM0IsZ0JBQWdCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzFDLGFBQWE7SUFDYixZQUFZLElBQUksV0FBVyxFQUFFO0lBQzdCLGdCQUFnQixHQUFHLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUM5QyxhQUFhO0lBQ2IsWUFBWSxJQUFJLFNBQVMsRUFBRTtJQUMzQixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDMUMsYUFBYTtJQUNiLFlBQVksSUFBSSxTQUFTLElBQUksV0FBVyxFQUFFO0lBQzFDLGdCQUFnQixHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsYUFBYTtJQUNiLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxZQUFZLElBQUksV0FBVyxFQUFFO0lBQzdCLGdCQUFnQixHQUFHLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUM5QyxnQkFBZ0IsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkMsZ0JBQWdCLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLGdCQUFnQixHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN0QyxhQUFhO0lBQ2IsWUFBWSxJQUFJLFNBQVMsRUFBRTtJQUMzQixnQkFBZ0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsYUFBYTtJQUNiLFlBQVksSUFBSSxXQUFXLEVBQUU7SUFDN0IsZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLG9CQUFvQixHQUFHLFVBQVUsTUFBTSxFQUFFO0lBQ2hFLFFBQVEsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQztJQUMvQyxRQUFRLEdBQUcsQ0FBQyx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztJQUN6RCxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsUUFBUSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkIsUUFBUSxHQUFHLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0lBQzNDLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUUsY0FBYyxFQUFFO0lBQzlELFFBQVEsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxjQUFjLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxjQUFjLEdBQUcsS0FBSyxDQUFDLEVBQUU7SUFDbEUsUUFBUSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtJQUM1QixZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7SUFDVCxRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxJQUFJLFFBQVEsRUFBRTtJQUN0QixZQUFZLE9BQU8sY0FBYyxDQUFDO0lBQ2xDLFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDdkMsUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDeEIsUUFBUSxJQUFJO0lBQ1osWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHRyxVQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDNUcsZ0JBQWdCLElBQUksRUFBRSxHQUFHSCxRQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0csZ0JBQWdCLElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELGdCQUFnQixJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDdEQsb0JBQW9CLE9BQU8sSUFBSSxLQUFLLENBQUM7SUFDckMsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixvQkFBb0IsT0FBTyxJQUFJLEtBQUssQ0FBQztJQUNyQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLE9BQU8sTUFBTSxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDcEQsZ0JBQWdCO0lBQ2hCLFlBQVksSUFBSTtJQUNoQixnQkFBZ0IsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxhQUFhO0lBQ2Isb0JBQW9CLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDbkQsU0FBUztJQUNULFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDbEMsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLFFBQVEsSUFBSSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzlCLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULGFBQWEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEdBQUcsRUFBRTtJQUMzRCxZQUFZLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLFNBQVM7SUFDVCxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMzQyxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQy9DLFFBQVEsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksYUFBYSxFQUFFO0lBQzNCLFlBQVksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMzQyxZQUFZLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLFlBQVksSUFBSSxZQUFZLEVBQUU7SUFDOUIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLElBQUk7SUFDaEIsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLEdBQUdHLFVBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDcEgsb0JBQW9CLElBQUksRUFBRSxHQUFHSCxRQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLG9CQUFvQixJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLG9CQUFvQixJQUFJLFFBQVEsRUFBRTtJQUNsQyx3QkFBd0IsT0FBTyxJQUFJLENBQUM7SUFDcEMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxPQUFPLE1BQU0sRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3hELG9CQUFvQjtJQUNwQixnQkFBZ0IsSUFBSTtJQUNwQixvQkFBb0IsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxpQkFBaUI7SUFDakIsd0JBQXdCLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDdkQsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsWUFBWTtJQUMvQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsWUFBWTtJQUN0RCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsRCxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwQyxZQUFZLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM5QixnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO0lBQ3BCLGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQywwQkFBMEIsR0FBRyxVQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUU7SUFDdEUsUUFBUSxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7SUFDN0QsUUFBUSxPQUFPO0lBQ2YsWUFBWSxJQUFJLEVBQUUsbUJBQW1CO0lBQ3JDLFlBQVksUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbkcsU0FBUyxDQUFDO0lBQ1YsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUM3RCxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtJQUNwQixZQUFZLFFBQVEsQ0FBQyxDQUFDLElBQUk7SUFDMUIsZ0JBQWdCLEtBQUssbUJBQW1CO0lBQ3hDLG9CQUFvQixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUM5RCx3QkFBd0IsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsd0JBQXdCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUM5Qyw0QkFBNEIsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFRSxlQUFhLENBQUMsRUFBRSxFQUFFRixRQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRix5QkFBeUI7SUFDekIsNkJBQTZCO0lBQzdCLDRCQUE0QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLHlCQUF5QjtJQUN6Qix3QkFBd0IsT0FBTyxFQUFFLENBQUM7SUFDbEMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0IsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO0lBQ2hDLG9CQUFvQixJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0Qsb0JBQW9CLElBQUksT0FBTyxHQUFHSSxVQUFRLENBQUNBLFVBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUk7SUFDaEYsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoQyxxQkFBcUIsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2hDLG9CQUFvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDMUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxNQUFNLEVBQUU7SUFDcEQsNEJBQTRCLE1BQU0sQ0FBQyxVQUFVLEdBQUdBLFVBQVEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEUseUJBQXlCLENBQUMsQ0FBQztJQUMzQixxQkFBcUI7SUFDckIseUJBQXlCO0lBQ3pCLHdCQUF3QixDQUFDLENBQUMsVUFBVSxHQUFHQSxVQUFRLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELHFCQUFxQjtJQUNyQixvQkFBb0IsT0FBTyxDQUFDLENBQUM7SUFDN0IsaUJBQWlCO0lBQ2pCLGdCQUFnQixLQUFLLFlBQVksQ0FBQztJQUNsQyxnQkFBZ0IsS0FBSyxZQUFZO0lBQ2pDLG9CQUFvQixPQUFPLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdHLGdCQUFnQixLQUFLLFNBQVM7SUFDOUIsb0JBQW9CLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtJQUMzRSx3QkFBd0IsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0lBQ3pDLDRCQUE0QixFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLHlCQUF5QjtJQUN6Qiw2QkFBNkI7SUFDN0IsNEJBQTRCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwSCx5QkFBeUI7SUFDekIsd0JBQXdCLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLHFCQUFxQixFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN2QyxnQkFBZ0IsS0FBSyxpQkFBaUI7SUFDdEMsb0JBQW9CLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFO0lBQ3BFLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyx3QkFBd0IsT0FBTyxFQUFFLENBQUM7SUFDbEMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0IsZ0JBQWdCLEtBQUssY0FBYztJQUNuQyxvQkFBb0IsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUU7SUFDM0Usd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUMvQyw0QkFBNEIsSUFBSSxFQUFFLFNBQVM7SUFDM0MsNEJBQTRCLFdBQVcsRUFBRSxXQUFXO0lBQ3BELHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEMsd0JBQXdCLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLGdCQUFnQixLQUFLLG9CQUFvQjtJQUN6QyxvQkFBb0IsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUU7SUFDbkUsd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RCx3QkFBd0IsT0FBTyxFQUFFLENBQUM7SUFDbEMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFM0IsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQztJQUM3QixhQUFhLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRSxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsZUFBZSxHQUFHLFVBQVUsTUFBTSxFQUFFO0lBQzNELFFBQVEsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQzdELFFBQVEsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLE1BQU0sRUFBRTtJQUM1RCxRQUFRLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUM3RCxRQUFRLE9BQU87SUFDZixZQUFZLElBQUksRUFBRSxTQUFTO0lBQzNCLFlBQVksVUFBVSxFQUFFQSxVQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDckQsWUFBWSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsU0FBUyxDQUFDO0lBQ1YsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLE1BQU0sRUFBRTtJQUNyRCxRQUFRLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUM3RCxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtJQUN6QixZQUFZLE9BQU87SUFDbkIsZ0JBQWdCLElBQUksRUFBRSxTQUFTO0lBQy9CLGdCQUFnQixXQUFXLEVBQUVGLGVBQWEsQ0FBQztJQUMzQyxvQkFBb0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDaEQsaUJBQWlCLEVBQUVGLFFBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNyRyxhQUFhLENBQUM7SUFDZCxTQUFTO0lBQ1QsUUFBUSxPQUFPO0lBQ2YsWUFBWSxJQUFJLEVBQUUsWUFBWTtJQUM5QixZQUFZLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztJQUNyRCxTQUFTLENBQUM7SUFDVixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFVBQVUsV0FBVyxFQUFFLFlBQVksRUFBRTtJQUM3RSxRQUFRLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksWUFBWSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFO0lBQzlELFFBQVEsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QyxRQUFRLElBQUksV0FBVyxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUM7SUFDbkQsUUFBUSxJQUFJLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztJQUM3QyxRQUFRLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDM0MsWUFBWSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLFlBQVksSUFBSSxDQUFDLEtBQUssa0JBQWtCLEVBQUU7SUFDMUMsZ0JBQWdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNqRCxnQkFBZ0Isa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0lBQ2pELGFBQWE7SUFDYixpQkFBaUIsSUFBSSxDQUFDLEdBQUcsa0JBQWtCLEdBQUcsQ0FBQyxFQUFFO0lBQ2pELGdCQUFnQixJQUFJLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUNqRSxnQkFBZ0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxnQkFBZ0IsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO0lBQzdFLHFCQUFxQixNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLDhCQUE4QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0csZ0JBQWdCLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ2hFLGdCQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pELGdCQUFnQixJQUFJLFlBQVksRUFBRTtJQUNsQyxvQkFBb0IsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxvQkFBb0IsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRyxpQkFBaUI7SUFDakIsZ0JBQWdCLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztJQUNqRCxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLGdCQUFnQixrQkFBa0IsSUFBSSxDQUFDLENBQUM7SUFDeEMsYUFBYTtJQUNiLFNBQVMsQ0FBQztJQUNWLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsSUFBSTtJQUNaLFlBQVksS0FBSyxJQUFJLEVBQUUsR0FBR0csVUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0lBQzVHLGdCQUFnQixJQUFJLEVBQUUsR0FBR0gsUUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsZ0JBQWdCLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxPQUFPLE1BQU0sRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3BELGdCQUFnQjtJQUNoQixZQUFZLElBQUk7SUFDaEIsZ0JBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEUsYUFBYTtJQUNiLG9CQUFvQixFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ25ELFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsR0FBRyxZQUFZO0lBQ3pELFFBQVEsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDOUIsUUFBUSxJQUFJO0lBQ1osWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHRyxVQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDM0YsZ0JBQWdCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzFDLG9CQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM3QyxpQkFBaUI7SUFDakIsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzdDLG9CQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNoRCxpQkFBaUI7SUFDakIsZ0JBQWdCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNoRSxhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsT0FBTyxNQUFNLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNwRCxnQkFBZ0I7SUFDaEIsWUFBWSxJQUFJO0lBQ2hCLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLGFBQWE7SUFDYixvQkFBb0IsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNuRCxTQUFTO0lBQ1QsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFVLEVBQUUsRUFBRTtJQUMvQyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNsQyxZQUFZLE9BQU8sS0FBSyxDQUFDO0lBQ3pCLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3JDLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxFQUFFO0lBQ3ZELFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQztJQUN4RCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSx3QkFBd0IsRUFBRTtJQUN4RSxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQy9CLFlBQVksT0FBTyxZQUFZO0lBQy9CLGdCQUFnQixJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDekMsZ0JBQWdCLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUM3QixnQkFBZ0IsT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQ3ZELG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxLQUFLO0lBQ3BDLHdCQUF3QixLQUFLLENBQUM7SUFDOUIsNEJBQTRCLENBQUMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQy9DLDRCQUE0QixFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN6Qyx3QkFBd0IsS0FBSyxDQUFDO0lBQzlCLDRCQUE0QixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsNEJBQTRCLEVBQUUsR0FBR0EsVUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNFLDRCQUE0QixFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN6Qyx3QkFBd0IsS0FBSyxDQUFDO0lBQzlCLDRCQUE0QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsNEJBQTRCLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3pDLDRCQUE0QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLDRCQUE0QixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSw0QkFBNEIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRCx3QkFBd0IsS0FBSyxDQUFDO0lBQzlCLDRCQUE0QixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsNEJBQTRCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLHdCQUF3QixLQUFLLENBQUM7SUFDOUIsNEJBQTRCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsNEJBQTRCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsd0JBQXdCLEtBQUssQ0FBQztJQUM5Qiw0QkFBNEIsTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQyw0QkFBNEIsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3JELDRCQUE0QixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLHdCQUF3QixLQUFLLENBQUM7SUFDOUIsNEJBQTRCLElBQUk7SUFDaEMsZ0NBQWdDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEYsNkJBQTZCO0lBQzdCLG9DQUFvQyxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ25FLDRCQUE0QixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDdEQscUJBQXFCO0lBQ3JCLGlCQUFpQixDQUFDLENBQUM7SUFDbkIsYUFBYSxDQUFDO0lBQ2QsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDbEQsUUFBUSxJQUFJO0lBQ1osWUFBWSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxZQUFZLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtJQUM5QixnQkFBZ0IsT0FBTyxJQUFJLENBQUM7SUFDNUIsYUFBYTtJQUNiLFlBQVksSUFBSSxHQUFHLFlBQVksUUFBUSxFQUFFO0lBQ3pDLGdCQUFnQixPQUFPLEdBQUcsQ0FBQztJQUMzQixhQUFhO0lBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQztJQUN4QixTQUFTO0lBQ1QsUUFBUSxPQUFPLEVBQUUsRUFBRTtJQUNuQixZQUFZLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLFNBQVM7SUFDVCxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDekQsUUFBUSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN2RCxRQUFRLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNqRCxRQUFRLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsUUFBUSxJQUFJLEdBQUcsRUFBRTtJQUNqQixZQUFZLElBQUksUUFBUSxHQUFHRCxlQUFhLENBQUNBLGVBQWEsQ0FBQ0EsZUFBYSxDQUFDLEVBQUUsRUFBRUYsUUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRUEsUUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRUEsUUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoTSxZQUFZLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3ZDLGdCQUFnQixJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7SUFDN0IsZ0JBQWdCLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzNDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDcEMsd0JBQXdCLE9BQU8sVUFBVSxDQUFDO0lBQzFDLHFCQUFxQjtJQUNyQixvQkFBb0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxvQkFBb0IsSUFBSSxDQUFDLEVBQUU7SUFDM0Isd0JBQXdCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLHdCQUF3QixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztJQUNsQixnQkFBZ0IsSUFBSTtJQUNwQixvQkFBb0IsS0FBSyxJQUFJLFVBQVUsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUVHLFVBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDdkssd0JBQXdCLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkQsd0JBQXdCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQixPQUFPLE1BQU0sRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQzVELHdCQUF3QjtJQUN4QixvQkFBb0IsSUFBSTtJQUN4Qix3QkFBd0IsSUFBSSxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoSCxxQkFBcUI7SUFDckIsNEJBQTRCLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDM0QsaUJBQWlCO0lBQ2pCLGFBQWEsQ0FBQztJQUNkLFlBQVksSUFBSTtJQUNoQixnQkFBZ0IsS0FBSyxJQUFJLFVBQVUsR0FBR0EsVUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDbEosb0JBQW9CLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDL0Msb0JBQW9CLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksT0FBTyxNQUFNLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUN4RCxvQkFBb0I7SUFDcEIsZ0JBQWdCLElBQUk7SUFDcEIsb0JBQW9CLElBQUksWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUcsaUJBQWlCO0lBQ2pCLHdCQUF3QixFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3ZELGFBQWE7SUFDYixZQUFZLEdBQUcsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLFNBQVM7SUFDVCxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtJQUNqRCxRQUFRLElBQUksb0JBQW9CLEdBQUcsVUFBVSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUMzRCxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsWUFBWSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ2xDLFlBQVksSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFDL0csaUJBQWlCLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFO0lBQy9FLGlCQUFpQixZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEQsWUFBWSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUk7SUFDbEYsaUJBQWlCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUM7SUFDN0MsU0FBUyxDQUFDO0lBQ1YsUUFBUSxJQUFJLFdBQVcsR0FBRyxVQUFVLElBQUksRUFBRTtJQUMxQyxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xELGdCQUFnQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLGdCQUFnQixJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDeEQsb0JBQW9CLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLG9CQUFvQixPQUFPLElBQUksUUFBUSxDQUFDO0lBQ3hDLHdCQUF3QixFQUFFLENBQUMsS0FBSyxFQUFFO0lBQ2xDLHdCQUF3QixFQUFFLENBQUMsS0FBSyxFQUFFO0lBQ2xDLHdCQUF3QixFQUFFLENBQUMsS0FBSyxFQUFFO0lBQ2xDLHFCQUFxQixDQUFDLENBQUM7SUFDdkIsaUJBQWlCO0lBQ2pCLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLGFBQWE7SUFDYixZQUFZLE9BQU8sU0FBUyxDQUFDO0lBQzdCLFNBQVMsQ0FBQztJQUNWLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7SUFDL0IsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtJQUNuQyxpQkFBaUIsS0FBSyxFQUFFO0lBQ3hCLGlCQUFpQixTQUFTO0lBQzFCLGlCQUFpQixPQUFPLEVBQUU7SUFDMUIsaUJBQWlCLEtBQUssRUFBRSxDQUFDO0lBQ3pCLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsZ0JBQWdCLElBQUksb0JBQW9CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQy9ELG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUVELGVBQWEsQ0FBQ0EsZUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVGLFFBQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6SCxvQkFBb0IsTUFBTTtJQUMxQixpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDbEMsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDN0IsWUFBWSxJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsWUFBWSxJQUFJLFFBQVEsRUFBRTtJQUMxQixnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsR0FBRyxZQUFZO0lBQzlELFFBQVEsSUFBSSxvQkFBb0IsR0FBRyxVQUFVLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQzNELFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxZQUFZLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsWUFBWSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRTtJQUMvRyxpQkFBaUIsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUU7SUFDL0UsaUJBQWlCLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRCxZQUFZLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSTtJQUNsRixpQkFBaUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQztJQUM3QyxTQUFTLENBQUM7SUFDVixRQUFRLElBQUksV0FBVyxHQUFHLFVBQVUsSUFBSSxFQUFFO0lBQzFDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsZ0JBQWdCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsZ0JBQWdCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsZ0JBQWdCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsZ0JBQWdCLElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUN4RCxvQkFBb0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsb0JBQW9CLE9BQU87SUFDM0Isd0JBQXdCLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSztJQUMzQyx3QkFBd0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLO0lBQzNDLHdCQUF3QixFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUs7SUFDM0MscUJBQXFCLENBQUM7SUFDdEIsaUJBQWlCO0lBQ2pCLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLGFBQWE7SUFDYixZQUFZLE9BQU8sU0FBUyxDQUFDO0lBQzdCLFNBQVMsQ0FBQztJQUNWLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDdEMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUN6QyxTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDckMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUMzQyxnQkFBZ0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDN0MsYUFBYSxDQUFDLENBQUM7SUFDZixTQUFTLENBQUMsQ0FBQztJQUNYLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO0lBQy9CLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUU7SUFDbkMsaUJBQWlCLEtBQUssRUFBRTtJQUN4QixpQkFBaUIsU0FBUztJQUMxQixpQkFBaUIsT0FBTyxFQUFFO0lBQzFCLGlCQUFpQixLQUFLLEVBQUUsQ0FBQztJQUN6QixZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9DLGdCQUFnQixJQUFJLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUMvRCxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFRSxlQUFhLENBQUNBLGVBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFRixRQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekgsb0JBQW9CLE1BQU07SUFDMUIsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQzdCLFlBQVksSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFlBQVksSUFBSSxRQUFRLEVBQUU7SUFDMUIsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRUUsZUFBYSxDQUFDLEVBQUUsRUFBRUYsUUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDaEYsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRUUsZUFBYSxDQUFDLEVBQUUsRUFBRUYsUUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekgsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7SUFDeEQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9DLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRTtJQUNyRSxRQUFRLElBQUksZ0JBQWdCLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsRUFBRTtJQUNuRSxRQUFRLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUMzRCxRQUFRLElBQUksTUFBTSxHQUFHLElBQUlNLE9BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNoRSxRQUFRLElBQUksTUFBTSxHQUFHLE1BQU07SUFDM0IsYUFBYSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekYsYUFBYSxNQUFNLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQztJQUM5QyxhQUFhLGNBQWMsRUFBRSxDQUFDO0lBQzlCLFFBQVEsT0FBTyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFO0lBQ3JELFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDWixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFO0lBQ3BFLFFBQVEsSUFBSSxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxFQUFFO0lBQ25FLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3hELFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hGLFFBQVEsSUFBSSxFQUFFLEdBQUdOLFFBQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqSixRQUFRLElBQUksRUFBRSxHQUFHQSxRQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUksUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0UsUUFBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLFFBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxRQUFRLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNwRCxRQUFRLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsSUFBSSxFQUFFO0lBQ2hELFFBQVEsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7SUFDNUMsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO0lBQzFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLFVBQVUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUM5RCxRQUFRLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekMsUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25DLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDbkIsYUFBYSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7SUFDL0IsWUFBWSxlQUFlLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDMUIsWUFBWSxPQUFPLElBQUksR0FBRyxlQUFlLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUMzRCxTQUFTLENBQUM7SUFDVixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLG1CQUFtQixHQUFHLFVBQVUsUUFBUSxFQUFFO0lBQ2pFLFFBQVEsSUFBSSxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUU7SUFDdEQsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7SUFDeEIsUUFBUSxPQUFPLFlBQVk7SUFDM0IsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFCLFlBQVksT0FBTyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQ25ELGdCQUFnQixRQUFRLEVBQUUsQ0FBQyxLQUFLO0lBQ2hDLG9CQUFvQixLQUFLLENBQUM7SUFDMUIsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsd0JBQXdCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLG9CQUFvQixLQUFLLENBQUM7SUFDMUIsd0JBQXdCLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLHdCQUF3QixFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4Qyx3QkFBd0IsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLHdCQUF3QixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixvQkFBb0IsS0FBSyxDQUFDO0lBQzFCLHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsd0JBQXdCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLG9CQUFvQixLQUFLLENBQUM7SUFDMUIsd0JBQXdCLENBQUMsRUFBRSxDQUFDO0lBQzVCLHdCQUF3QixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLG9CQUFvQixLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsaUJBQWlCO0lBQ2pCLGFBQWEsQ0FBQyxDQUFDO0lBQ2YsU0FBUyxDQUFDO0lBQ1YsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNyRCxRQUFRLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDL0IsWUFBWSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDOUIsU0FBUztJQUNULFFBQVEsSUFBSTtJQUNaLFlBQVksS0FBSyxJQUFJLEVBQUUsR0FBR0csVUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0lBQzVHLGdCQUFnQixJQUFJLEVBQUUsR0FBR0gsUUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNELHFCQUFxQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsT0FBTyxNQUFNLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNwRCxnQkFBZ0I7SUFDaEIsWUFBWSxJQUFJO0lBQ2hCLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLGFBQWE7SUFDYixvQkFBb0IsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNuRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkIsUUFBUSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNyRCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ2hELEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDckQsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNoRCxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFVBQVUsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUM3RCxRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNyQixRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUU7SUFDMUIsZ0JBQWdCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDMUIsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUM7SUFDekIsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtJQUN2QixZQUFZLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLFlBQVksSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLFlBQVksVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzdCLFlBQVksT0FBT0UsZUFBYSxDQUFDQSxlQUFhLENBQUMsRUFBRSxFQUFFRixRQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUVBLFFBQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRyxTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFO0lBQ3hELFFBQVEsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtJQUMxRCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDL0IsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFlBQVksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsU0FBUztJQUNULEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtJQUM1RSxRQUFRLElBQUksbUJBQW1CLEdBQUcsU0FBUyxLQUFLLFNBQVMsQ0FBQztJQUMxRCxRQUFRLElBQUksTUFBTSxHQUFHLElBQUlNLE9BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QyxRQUFRLElBQUksQ0FBQyxHQUFH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LENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRixLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7SUFDM0MsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3JDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNyQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUM5QixZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FB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QUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pGLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFH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SSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN2QyxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3ZDLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRTtJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENB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QUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDckMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZDLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUyxDQUFDO0lBQ1YsYUFBYSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsd0NBQXdDLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ2xGLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9CLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUU7SUFDL0IsWUFBWSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDOUIsU0FBUztJQUNULGFBQWE7SUFDYixZQUFZLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0SSxZQUFZLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcs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Q0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkUsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkMsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFB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QUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLElBQUk7SUFDMUYsYUFBYSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ3JDLFlBQVksSUFBSSxFQUFFLENBQUM7SUFDbkIsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRyxZQUFZLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLElBQUk7SUFDMUYsYUFBYSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ3JDLFlBQVksSUFBSSxFQUFFLENBQUM7SUFDbkIsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLFlBQVksT0FBTyxFQUFFLENBQUM7SUFDdEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUs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RSxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLEtBQUs7SUFDTCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUN4QyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtJQUM1QyxZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzVDLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDNUMsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixRQUFRLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztJQUM1QyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN0QyxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxZQUFZLE1BQU0sRUFBRTtJQUNqQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDdEMsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUU7SUFDakMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0lBQ3pDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xHLFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzdDLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUcsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDN0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
|
|
4313
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGdlb3V0aWxzLmpzIiwic291cmNlcyI6WyIuLi9lc20vdXRpbHMuanMiLCIuLi9lc20vRE51bWJlcnMuanMiLCIuLi9lc20vRFBvbHlnb25Mb29wLmpzIiwiLi4vZXNtL0RQb2x5Z29uLmpzIiwiLi4vZXNtL0RMaW5lLmpzIiwiLi4vZXNtL0RQb2ludC5qcyIsIi4uL2VzbS9EQ2lyY2xlLmpzIiwiLi4vZXNtL0Zhc3RTZWFyY2guanMiLCIuLi9lc20vVHJhY2VNYXRyaXguanMiLCIuLi9lc20vSW50ZXJwb2xhdGlvbk1hdHJpeC5qcyIsIi4uL2VzbS9EUGxhbmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuZXhwb3J0IHZhciBER2VvID0ge1xuICAgIERFQlVHOiBmYWxzZSxcbiAgICBwYXJzZUZvcm1hdDogJ3h5eidcbn07XG5leHBvcnQgdmFyIHdhcm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGlmIChER2VvLkRFQlVHKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYXJncyksIGZhbHNlKSk7XG4gICAgfVxufTtcbmV4cG9ydCB2YXIgaXNEZWZBbmROb3ROdWxsID0gZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEgIT0gdW5kZWZpbmVkOyB9O1xudmFyIGhvb2sgPSBmdW5jdGlvbiAoc2NvcGUpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjb3BlOyB9OyB9O1xudmFyIHNob3VsZEJlSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgSW50IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVVSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSB8fCAhcC5ndE9yRXF1YWwoRFBvaW50Lnplcm8oKSkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIFVJbnQhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZURlZ3JlZSA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VXb3JsZEdlb2RldGljU3lzdGVtKSB7XG4gICAgICAgIHdhcm4oXCJcXFwiXCIuY29uY2F0KGZ1bmNOYW1lLCBcIlxcXCIgLT4gXFxcIlwiKS5jb25jYXQoYXJnTmFtZSwgXCJcXFwiIHNob3VsZCBiZSBkZWdyZWUhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZVJhZGlhbnMgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlUmFkaWFucykge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgcmFkaWFucyFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xudmFyIHNob3VsZEV4aXN0ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIWlzRGVmQW5kTm90TnVsbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgZXhpc3QhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZU1ldGVycyA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VQc2V1ZG9NZXJjYXRvcikge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgbWV0ZXJzIVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG5leHBvcnQgdmFyIGNoZWNrRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuY05hbWUpIHsgcmV0dXJuICh7XG4gICAgY2hlY2tBcmd1bWVudDogZnVuY3Rpb24gKGFyZ05hbWUpIHtcbiAgICAgICAgaWYgKCFER2VvLkRFQlVHKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlTWV0ZXJzOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlSW50OiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlVUludDogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZVJhZGlhbnM6IGhvb2sodGhpcyksXG4gICAgICAgICAgICAgICAgc2hvdWxkRXhpc3Q6IGhvb2sodGhpcylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBzaG91bGRCZURlZ3JlZSh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZU1ldGVyczogc2hvdWxkQmVNZXRlcnModGhpcywgZnVuY05hbWUsIGFyZ05hbWUpLFxuICAgICAgICAgICAgc2hvdWxkQmVJbnQ6IHNob3VsZEJlSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlVUludDogc2hvdWxkQmVVSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlUmFkaWFuczogc2hvdWxkQmVSYWRpYW5zKHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEV4aXN0OiBzaG91bGRFeGlzdCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSlcbiAgICAgICAgfTtcbiAgICB9XG59KTsgfTtcbmV4cG9ydCB2YXIgY3JlYXRlQXJyYXkgPSBmdW5jdGlvbiAodiwgZmlsbFN5bWJvbCkge1xuICAgIGlmICh0eXBlb2YgZmlsbFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5KHYpLmZpbGwoZmFsc2UpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiBmaWxsU3ltYm9sKGkpOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBcnJheSh2KS5maWxsKGZpbGxTeW1ib2wgIT09IG51bGwgJiYgZmlsbFN5bWJvbCAhPT0gdm9pZCAwID8gZmlsbFN5bWJvbCA6IDApO1xufTtcbmV4cG9ydCB2YXIgY3JlYXRlTWF0cml4ID0gZnVuY3Rpb24gKF9hLCBmaWxsU3ltYm9sKSB7XG4gICAgdmFyIGggPSBfYS5oLCB3ID0gX2EudztcbiAgICBpZiAodHlwZW9mIGZpbGxTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFycmF5KGgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCB5KSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmdW5jdGlvbiAoeCkgeyByZXR1cm4gZmlsbFN5bWJvbCh4LCB5KTsgfSk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQXJyYXkoaClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmaWxsU3ltYm9sKTsgfSk7XG59O1xuZXhwb3J0IHZhciBnYXVzc2lhbkVsaW1pbmF0aW9uID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgIHZhciBuID0gbWF0cml4Lmxlbmd0aDtcbiAgICB2YXIgbWF0cml4Q2xvbmUgPSBjcmVhdGVNYXRyaXgobmV3IERQb2ludChuICsgMSwgbikpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2ldW2pdID09PSAwID8gZ2F1c3NpYW5FbGltaW5hdGlvbi5NSU4gOiBtYXRyaXhbaV1bal07XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSA9IG1hdHJpeFtpXVtqXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKyAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBLID0gbWF0cml4Q2xvbmVbaV1ba10gLyBtYXRyaXhDbG9uZVtrXVtrXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgICAgIG1hdHJpeENsb25lW2ldW2pdIC09IG1hdHJpeENsb25lW2tdW2pdICogSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuICsgMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4Q2xvbmVbaV1bal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgayA9IG4gLSAxOyBrID4gLTE7IGstLSkge1xuICAgICAgICBmb3IgKHZhciBpID0gbjsgaSA+IC0xOyBpLS0pIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgSyA9IG1hdHJpeENsb25lW2ldW2tdIC8gbWF0cml4Q2xvbmVba11ba107XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gbjsgaiA+IC0xOyBqLS0pIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSAtPSBtYXRyaXhDbG9uZVtrXVtqXSAqIEs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGFuc3dlciA9IGNyZWF0ZUFycmF5KG4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGFuc3dlcltpXSA9IG1hdHJpeENsb25lW2ldW25dO1xuICAgIH1cbiAgICByZXR1cm4gYW5zd2VyO1xufTtcbmdhdXNzaWFuRWxpbWluYXRpb24uTUlOID0gMWUtMTA7XG5leHBvcnQgdmFyIGNyZWF0ZUNhbnZhcyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciB3ID0gMDtcbiAgICB2YXIgaCA9IDA7XG4gICAgdmFyIG9mZnNjcmVlbiA9IGZhbHNlO1xuICAgIGlmIChhIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgIHZhciB4ID0gYS54LCB5ID0gYS55O1xuICAgICAgICB3ID0geDtcbiAgICAgICAgaCA9IHk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3ID0gYTtcbiAgICAgICAgaCA9IGE7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIG9mZnNjcmVlbiA9IGI7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBiID09PSAnbnVtYmVyJykge1xuICAgICAgICBoID0gYjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgb2Zmc2NyZWVuID0gYztcbiAgICB9XG4gICAgdmFyIGNhbnZhcyA9IG9mZnNjcmVlbiA/IG5ldyBPZmZzY3JlZW5DYW52YXModywgaCkgOiAoKF9hID0gY3JlYXRlQ2FudmFzLmRvY3VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBkb2N1bWVudCkuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgaWYgKCFvZmZzY3JlZW4pIHtcbiAgICAgICAgY2FudmFzLndpZHRoID0gdztcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGg7XG4gICAgfVxuICAgIHJldHVybiBbY2FudmFzLCBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKV07XG59O1xudmFyIGYgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGIubWFwKGZ1bmN0aW9uIChkKSB7IHJldHVybiBbXS5jb25jYXQoYywgZCk7IH0pOyB9KSksIGZhbHNlKSk7IH07XG5leHBvcnQgdmFyIGNhcnRlc2lhblByb2R1Y3QgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBjID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgY1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIGIgPyBjYXJ0ZXNpYW5Qcm9kdWN0LmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbZihhLCBiKV0sIF9fcmVhZChjKSwgZmFsc2UpKSA6IGE7XG59O1xuZXhwb3J0IHZhciBnZXRDb21iaW5hdGlvbnMgPSBmdW5jdGlvbiAoYXJyKSB7XG4gICAgaWYgKGFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGFyclswXTtcbiAgICB9XG4gICAgdmFyIGFucyA9IFtdO1xuICAgIHZhciBvdGhlckNhc2VzID0gZ2V0Q29tYmluYXRpb25zKGFyci5zbGljZSgxKSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlckNhc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyWzBdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBhbnMucHVzaChfX3NwcmVhZEFycmF5KFthcnJbMF1bal1dLCBfX3JlYWQob3RoZXJDYXNlc1tpXSksIGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFucztcbn07XG5leHBvcnQgdmFyIGRpdiA9IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBNYXRoLmZsb29yKGEgLyBiKTsgfTtcbmV4cG9ydCB2YXIgdG9EZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAodikge1xuICAgIHZhciBkZWdyZWVzID0gTWF0aC5mbG9vcih2KTtcbiAgICB2YXIgdCA9ICh2ICUgMSkgKiA2MDtcbiAgICB2YXIgbWludXRlcyA9IE1hdGguZmxvb3IodCk7XG4gICAgdmFyIHQyID0gKHQgJSAxKSAqIDYwO1xuICAgIHZhciBzZWNvbmRzID0gdDIudG9GaXhlZCgyKTtcbiAgICByZXR1cm4gXCJcIi5jb25jYXQoZGVncmVlcywgXCJcXHUwMEIwIFwiKS5jb25jYXQobWludXRlcywgXCInIFwiKS5jb25jYXQoc2Vjb25kcywgXCJcXFwiXCIpO1xufTtcbmV4cG9ydCB2YXIgcGFyc2VEZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAoaSkge1xuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaDtcbiAgICB2YXIgcGFydHMgPSBpLm1hdGNoQWxsKC8oPzx2YWx1ZT4tP1xcZCsoPzx0YWlsPlxcLlxcZHsxLH0pPykoPzx0eXBlPsKwfCd8XCIpL2dtaXUpO1xuICAgIHZhciBkID0gMDtcbiAgICB2YXIgbSA9IDA7XG4gICAgdmFyIHMgPSAwO1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIHBhcnRzXzEgPSBfX3ZhbHVlcyhwYXJ0cyksIHBhcnRzXzFfMSA9IHBhcnRzXzEubmV4dCgpOyAhcGFydHNfMV8xLmRvbmU7IHBhcnRzXzFfMSA9IHBhcnRzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgcGFydCA9IHBhcnRzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgIHN3aXRjaCAoKF9iID0gcGFydCA9PT0gbnVsbCB8fCBwYXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJ0Lmdyb3VwcykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICfCsCc6XG4gICAgICAgICAgICAgICAgICAgIGQgPSBOdW1iZXIoKF9kID0gKF9jID0gcGFydCA9PT0gbnVsbCB8fCBwYXJ0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJ0Lmdyb3VwcykgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLnZhbHVlKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAnMCcpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcXCcnOlxuICAgICAgICAgICAgICAgICAgICBtID0gTnVtYmVyKChfZiA9IChfZSA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS52YWx1ZSkgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXCInOlxuICAgICAgICAgICAgICAgICAgICBzID0gTnVtYmVyKChfaCA9IChfZyA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9nID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZy52YWx1ZSkgIT09IG51bGwgJiYgX2ggIT09IHZvaWQgMCA/IF9oIDogJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHBhcnRzXzFfMSAmJiAhcGFydHNfMV8xLmRvbmUgJiYgKF9hID0gcGFydHNfMS5yZXR1cm4pKSBfYS5jYWxsKHBhcnRzXzEpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgdmFyIGggPSBkIDwgMCA/IC0xIDogMTtcbiAgICByZXR1cm4gZCArIGggKiBtIC8gNjAgKyBoICogcyAvIDM2MDA7XG59O1xuIiwiaW1wb3J0IHsgREVHUkVFX1RPX1BJLCBET1VCTEVfUElfSU5fREVHUkVFLCBQSV9JTl9ERUdSRUUsIFBJX1RPX0RFR1JFRSB9IGZyb20gJy4vRFBvaW50JztcbnZhciBkZWx0YSA9IDAuMDAxO1xudmFyIEROdW1iZXJzID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBETnVtYmVycygpIHtcbiAgICB9XG4gICAgRE51bWJlcnMubGlrZSA9IGZ1bmN0aW9uICh2LCBzLCBkKSB7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IGRlbHRhOyB9XG4gICAgICAgIHJldHVybiBNYXRoLmFicyh2IC0gcykgPCBkO1xuICAgIH07XG4gICAgRE51bWJlcnMubGlrZVplcm8gPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZSh2LCAwKTtcbiAgICB9O1xuICAgIEROdW1iZXJzLmxpa2UyUEkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZShETnVtYmVycy5yYWQyRGVnKHYpLCBET1VCTEVfUElfSU5fREVHUkVFKTtcbiAgICB9O1xuICAgIEROdW1iZXJzLmxpa2VQSSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKEROdW1iZXJzLnJhZDJEZWcodiksIFBJX0lOX0RFR1JFRSk7XG4gICAgfTtcbiAgICBETnVtYmVycy5yYWQyRGVnID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHYgKiBERUdSRUVfVE9fUEk7XG4gICAgfTtcbiAgICBETnVtYmVycy5kZWcyUmFkID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIHYgKiBQSV9UT19ERUdSRUU7XG4gICAgfTtcbiAgICByZXR1cm4gRE51bWJlcnM7XG59KCkpO1xuZXhwb3J0IHsgRE51bWJlcnMgfTtcbiIsInZhciBMb29wRnVuY3Rpb25zO1xuKGZ1bmN0aW9uIChMb29wRnVuY3Rpb25zKSB7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZ2V0VGlsZUZyb21Db29yZHNcIl0gPSAwXSA9IFwiZ2V0VGlsZUZyb21Db29yZHNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJnZXRDb29yZHNGcm9tVGlsZVwiXSA9IDFdID0gXCJnZXRDb29yZHNGcm9tVGlsZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImhlaWdodFwiXSA9IDJdID0gXCJoZWlnaHRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRYXCJdID0gM10gPSBcInNldFhcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRZXCJdID0gNF0gPSBcInNldFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRaXCJdID0gNV0gPSBcInNldFpcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGVcIl0gPSA2XSA9IFwicm90YXRlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlM2RYXCJdID0gN10gPSBcInJvdGF0ZTNkWFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdGF0ZTNkWVwiXSA9IDhdID0gXCJyb3RhdGUzZFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGUzZFpcIl0gPSA5XSA9IFwicm90YXRlM2RaXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibW92ZVwiXSA9IDEwXSA9IFwibW92ZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdW5kXCJdID0gMTFdID0gXCJyb3VuZFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImNlaWxcIl0gPSAxMl0gPSBcImNlaWxcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbG9vclwiXSA9IDEzXSA9IFwiZmxvb3JcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ0b0ZpeGVkXCJdID0gMTRdID0gXCJ0b0ZpeGVkXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiYWJzXCJdID0gMTVdID0gXCJhYnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzY2FsZVwiXSA9IDE2XSA9IFwic2NhbGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkaXZpZGVcIl0gPSAxN10gPSBcImRpdmlkZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImRlZ3JlZVRvUmFkaWFuc1wiXSA9IDE4XSA9IFwiZGVncmVlVG9SYWRpYW5zXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicmFkaWFuc1RvRGVncmVlc1wiXSA9IDE5XSA9IFwicmFkaWFuc1RvRGVncmVlc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJhZGlhbnNUb01ldGVyc1wiXSA9IDIwXSA9IFwicmFkaWFuc1RvTWV0ZXJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWV0ZXJzVG9SYWRpYW5zXCJdID0gMjFdID0gXCJtZXRlcnNUb1JhZGlhbnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoaXBQb2ludFwiXSA9IDIyXSA9IFwiaGlwUG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ4UG9pbnRcIl0gPSAyM10gPSBcInhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInlQb2ludFwiXSA9IDI0XSA9IFwieVBvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wid1BvaW50XCJdID0gMjVdID0gXCJ3UG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoUG9pbnRcIl0gPSAyNl0gPSBcImhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInNldElmTGVzc1RoYW5cIl0gPSAyN10gPSBcInNldElmTGVzc1RoYW5cIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtaW51c1wiXSA9IDI4XSA9IFwibWludXNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkZWdyZWVUb01ldGVyc1wiXSA9IDI5XSA9IFwiZGVncmVlVG9NZXRlcnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtZXRlcnNUb0RlZ3JlZVwiXSA9IDMwXSA9IFwibWV0ZXJzVG9EZWdyZWVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbGlwVmVydGljYWxseVwiXSA9IDMxXSA9IFwiZmxpcFZlcnRpY2FsbHlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRQcm9wZXJ0aWVzXCJdID0gMzJdID0gXCJzZXRQcm9wZXJ0aWVzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGl2XCJdID0gMzNdID0gXCJkaXZcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtb2RcIl0gPSAzNF0gPSBcIm1vZFwiO1xufSkoTG9vcEZ1bmN0aW9ucyB8fCAoTG9vcEZ1bmN0aW9ucyA9IHt9KSk7XG52YXIgZGVjb2RlUG9vbFJlY29yZCA9IGZ1bmN0aW9uIChhLCBfYSkge1xuICAgIHZhciBmdW5jdGlvbk5hbWUgPSBfYS5mdW5jdGlvbk5hbWUsIHBvaW50QXJnID0gX2EucG9pbnRBcmcsIG51bWJlclBvaW50QXJnID0gX2EubnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyA9IF9hLm51bWJlckFyZywgc2V0dGVyQXJnID0gX2Euc2V0dGVyQXJnLCBzZXR0ZXJBcmdCeU9iamVjdCA9IF9hLnNldHRlckFyZ0J5T2JqZWN0O1xuICAgIHZhciByZXMgPSBhO1xuICAgIHN3aXRjaCAoZnVuY3Rpb25OYW1lKSB7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5nZXRUaWxlRnJvbUNvb3JkczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZ2V0VGlsZUZyb21Db29yZHMobnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmdldENvb3Jkc0Zyb21UaWxlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhlaWdodDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGVpZ2h0KG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFg6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WChzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WChmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WShzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WShmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFo6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WihzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WihmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RYKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RZKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RaKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLm1vdmU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vdmUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdW5kOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5yb3VuZCgpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5jZWlsOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5jZWlsKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmZsb29yOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5mbG9vcigpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy50b0ZpeGVkOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC50b0ZpeGVkKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmFiczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuYWJzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNjYWxlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zY2FsZShudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGl2aWRlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kaXZpZGUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRpdjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGl2KG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tb2Q6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vZChudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb1JhZGlhbnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMucmFkaWFuc1RvRGVncmVlczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucmFkaWFuc1RvRGVncmVlcygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJhZGlhbnNUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1ldGVyc1RvUmFkaWFucygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oaXBQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGlwUG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAueFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy55UG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnlQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMud1BvaW50OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC53UG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zZXRJZkxlc3NUaGFuKHBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWludXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1pbnVzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvTWV0ZXJzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb0RlZ3JlZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAubWV0ZXJzVG9EZWdyZWUoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZmxpcFZlcnRpY2FsbHk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmZsaXBWZXJ0aWNhbGx5KG51bWJlclBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gdHlwZW9mIHNldHRlckFyZ0J5T2JqZWN0ID09PSAnb2JqZWN0JyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFByb3BlcnRpZXMoc2V0dGVyQXJnQnlPYmplY3QpIDogYShrLCBpbmRleCkuc2V0UHJvcGVydGllcyhmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnQnlPYmplY3QocCwgaW5kZXgpOyB9KTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBEUG9seWdvbkxvb3AgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQb2x5Z29uTG9vcChwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucG9vbCA9IFtdO1xuICAgIH1cbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldExvb3BGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9vbC5yZWR1Y2UoZGVjb2RlUG9vbFJlY29yZCwgZnVuY3Rpb24gKGspIHsgcmV0dXJuIGs7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5tYXAodGhpcy5nZXRMb29wRnVuY3Rpb24oKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFRpbGVGcm9tQ29vcmRzID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmdldFRpbGVGcm9tQ29vcmRzLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6b29tXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0Q29vcmRzRnJvbVRpbGUgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IHpvb21cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaGVpZ2h0LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRYLFxuICAgICAgICAgICAgc2V0dGVyQXJnOiB4XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChzZXR0ZXJBcmdCeU9iamVjdCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllcyxcbiAgICAgICAgICAgIHNldHRlckFyZ0J5T2JqZWN0OiBzZXR0ZXJBcmdCeU9iamVjdFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WSxcbiAgICAgICAgICAgIHNldHRlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WixcbiAgICAgICAgICAgIHNldHRlckFyZzogelxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUzZFggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlM2RYLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm90YXRlM2RZID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWSxcbiAgICAgICAgICAgIG51bWJlckFyZzogYVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZTNkWiA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFosXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubW92ZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm91bmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3VuZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmNlaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5jZWlsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZmxvb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbG9vclxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnRvRml4ZWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICBpZiAobiA9PT0gdm9pZCAwKSB7IG4gPSAyOyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy50b0ZpeGVkLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuYWJzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zY2FsZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdmlkZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdixcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1vZCxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucmFkaWFuc1RvRGVncmVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJhZGlhbnNUb0RlZ3JlZXNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yYWRpYW5zVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tZXRlcnNUb1JhZGlhbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRIaXBQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhpcFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WVBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueVBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0V1BvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMud1BvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0SFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0SWZMZXNzVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuLFxuICAgICAgICAgICAgcG9pbnRBcmc6IHBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5taW51cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1pbnVzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kZWdyZWVUb01ldGVyc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLm1ldGVyc1RvRGVncmVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubWV0ZXJzVG9EZWdyZWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5mbGlwVmVydGljYWxseSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbGlwVmVydGljYWxseSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiBzaXplXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBEUG9seWdvbkxvb3A7XG59KCkpO1xuZXhwb3J0IHsgRFBvbHlnb25Mb29wIH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBETGluZSB9IGZyb20gJy4vRExpbmUnO1xuaW1wb3J0IHsgRENpcmNsZSB9IGZyb20gJy4vRENpcmNsZSc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xuaW1wb3J0IHsgaW8gYXMganN0c0lvLCBvcGVyYXRpb24gfSBmcm9tICdqc3RzJztcbmltcG9ydCB7IERQb2x5Z29uTG9vcCB9IGZyb20gJy4vRFBvbHlnb25Mb29wJztcbmltcG9ydCB7IERHZW8sIGlzRGVmQW5kTm90TnVsbCB9IGZyb20gJy4vdXRpbHMnO1xudmFyIF9hID0gb3BlcmF0aW9uLmJ1ZmZlci5CdWZmZXJQYXJhbWV0ZXJzLCBDQVBfUk9VTkQgPSBfYS5DQVBfUk9VTkQsIENBUF9GTEFUID0gX2EuQ0FQX0ZMQVQsIENBUF9TUVVBUkUgPSBfYS5DQVBfU1FVQVJFO1xuZXhwb3J0IHZhciBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT04gPSAzO1xudmFyIEFQUFJPWElNQVRJT05fVkFMVUUgPSAwLjE7XG52YXIgTUFYX0NPTlZFWF9JVEVSQVRJT05TID0gMTAwO1xudmFyIENMT1NFX1RPX0lOVEVSU0VDVElPTl9ESVNUQU5DRSA9IDAuMDAxO1xudmFyIHRyaWFuZ2xlQ2VudGVyID0gZnVuY3Rpb24gKHRyaWFuZ2xlKSB7XG4gICAgdmFyIHAwID0gdHJpYW5nbGUuYXQoMCk7XG4gICAgdmFyIHAxID0gdHJpYW5nbGUuYXQoMSk7XG4gICAgdmFyIHAyID0gdHJpYW5nbGUuYXQoMik7XG4gICAgcmV0dXJuIG5ldyBEUG9pbnQoKHAwLnggKyBwMS54ICsgcDIueCkgLyAzLCAocDAueSArIHAxLnkgKyBwMi55KSAvIDMpO1xufTtcbnZhciBjb250YWluQ2FsY3VsYXRvciA9IGZ1bmN0aW9uIChwb2x5LCBwKSB7XG4gICAgdmFyIGVfMSwgX2EsIGVfMiwgX2I7XG4gICAgdmFyIGhhc1NhbWVQb2ludCA9IHBvbHkucG9pbnRzLnNvbWUoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludC5lcXVhbChwKTsgfSk7XG4gICAgaWYgKGhhc1NhbWVQb2ludCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2MgPSBfX3ZhbHVlcyhwb2x5Lmxvb3BQb2ludHNHZW5lcmF0b3IodHJ1ZSkoKSksIF9kID0gX2MubmV4dCgpOyAhX2QuZG9uZTsgX2QgPSBfYy5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBfZSA9IF9fcmVhZChfZC52YWx1ZSwgMyksIHBvbHlnb25MaW5lID0gX2VbMl07XG4gICAgICAgICAgICB2YXIgb25Cb3JkZXIgPSBwb2x5Z29uTGluZS54KHApLmVxdWFsKHApICYmIHBvbHlnb25MaW5lLmluUmFuZ2UocCk7XG4gICAgICAgICAgICBpZiAob25Cb3JkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgdmFyIHRvdGFsRmkgPSAwO1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9mID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9nID0gX2YubmV4dCgpOyAhX2cuZG9uZTsgX2cgPSBfZi5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBfaCA9IF9fcmVhZChfZy52YWx1ZSwgMiksIF9qID0gX2hbMF0sIHggPSBfai54LCB5ID0gX2oueSwgX2sgPSBfaFsxXSwgYSA9IF9rLngsIGIgPSBfay55O1xuICAgICAgICAgICAgdmFyIGxpbmUxID0gbmV3IERMaW5lKHggLSBwLngsIHkgLSBwLnksIDApO1xuICAgICAgICAgICAgdmFyIGxpbmUyID0gbmV3IERMaW5lKGEgLSBwLngsIGIgLSBwLnksIDApO1xuICAgICAgICAgICAgdmFyIGZpRGlmID0gbGluZTEuZmluZEZpKGxpbmUyKTtcbiAgICAgICAgICAgIGlmIChsaW5lMS52ZWN0b3JQcm9kdWN0KGxpbmUyKS5jID4gMCkge1xuICAgICAgICAgICAgICAgIHRvdGFsRmkgKz0gZmlEaWY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b3RhbEZpIC09IGZpRGlmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlXzJfMSkgeyBlXzIgPSB7IGVycm9yOiBlXzJfMSB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoX2cgJiYgIV9nLmRvbmUgJiYgKF9iID0gX2YucmV0dXJuKSkgX2IuY2FsbChfZik7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgIH1cbiAgICB2YXIgZXBzID0gTWF0aC5QSSAvIDEwMDAwO1xuICAgIHZhciByZXN1bHQgPSBmYWxzZTtcbiAgICB2YXIgYWJzVG90YWxGaSA9IE1hdGguYWJzKHRvdGFsRmkpO1xuICAgIGlmIChhYnNUb3RhbEZpIDwgZXBzKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgIH1cbiAgICBlbHNlIGlmIChNYXRoLmFicygyICogTWF0aC5QSSAtIGFic1RvdGFsRmkpIDwgZXBzKSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRhaW5zMiBmYWlsZCcpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbnZhciBEUG9seWdvbiA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRFBvbHlnb24ocFBvaW50cykge1xuICAgICAgICBpZiAocFBvaW50cyA9PT0gdm9pZCAwKSB7IHBQb2ludHMgPSBbXTsgfVxuICAgICAgICB0aGlzLnBQb2ludHMgPSBwUG9pbnRzO1xuICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSB7fTtcbiAgICAgICAgdGhpcy5ob2xlcyA9IFtdO1xuICAgICAgICB0aGlzLnNlYXJjaFN0b3JlID0ge307XG4gICAgfVxuICAgIERQb2x5Z29uLmFycmF5T2ZUcmlhbmdsZXNUb1ZlcnRpY2VzID0gZnVuY3Rpb24gKHRyaWFuZ2xlcywgaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB0cmlhbmdsZXMubWFwKGZ1bmN0aW9uICh2KSB7IHJldHVybiAoaXNEZWZBbmROb3ROdWxsKGhlaWdodCkgPyB2XG4gICAgICAgICAgICAubG9vcCgpXG4gICAgICAgICAgICAuaGVpZ2h0KGhlaWdodClcbiAgICAgICAgICAgIC5ydW4oKSA6IHYpXG4gICAgICAgICAgICAudG9BcnJheU9mQ29vcmRzKCk7IH0pXG4gICAgICAgICAgICAuZmxhdCgyKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLm1pbkFyZWFSZWN0YW5nbGVTaXplID0gZnVuY3Rpb24gKHBvbHkpIHtcbiAgICAgICAgdmFyIF9hID0gcG9seS5jbG9uZSgpLm9wZW4oKSwgZmlyc3QgPSBfYS5maXJzdCwgc2Vjb25kID0gX2Euc2Vjb25kLCBsYXN0ID0gX2EubGFzdDtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoZmlyc3QuZGlzdGFuY2Uoc2Vjb25kKSwgZmlyc3QuZGlzdGFuY2UobGFzdCkpO1xuICAgIH07XG4gICAgRFBvbHlnb24udG9EYXNoID0gZnVuY3Rpb24gKHBvbHkpIHtcbiAgICAgICAgdmFyIGVfMywgX2E7XG4gICAgICAgIHZhciBwID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIHZhciByZXN1bHQgPSBbcF07XG4gICAgICAgIHZhciB0cmlnZ2VyID0gdHJ1ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMocG9seS5wb2ludHMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvaW50ID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5wdXNoKHBvaW50LmNsb25lKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocG9pbnQucHJvcGVydGllcy5waWVjZUJvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyID0gIXRyaWdnZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAucHVzaChwb2ludC5jbG9uZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8zXzEpIHsgZV8zID0geyBlcnJvcjogZV8zXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzMpIHRocm93IGVfMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBEUG9seWdvbi5taW5BcmVhUmVjdGFuZ2xlRGlyZWN0aW9uID0gZnVuY3Rpb24gKHBvbHkpIHtcbiAgICAgICAgdmFyIF9hID0gcG9seS5jbG9uZSgpLm9wZW4oKSwgZmlyc3QgPSBfYS5maXJzdCwgc2Vjb25kID0gX2Euc2Vjb25kLCBsYXN0ID0gX2EubGFzdDtcbiAgICAgICAgaWYgKCFmaXJzdCB8fCAhc2Vjb25kIHx8ICFsYXN0KSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3QuZGlzdGFuY2Uoc2Vjb25kKSA+IGZpcnN0LmRpc3RhbmNlKGxhc3QpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlyc3QuZmluZExpbmUoc2Vjb25kKS5nZXRGaSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdC5maW5kTGluZShsYXN0KS5nZXRGaSgpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucGFyc2VGcm9tV0tUID0gZnVuY3Rpb24gKHdrdCkge1xuICAgICAgICB2YXIgZGF0YSA9IHdrdC50cmltKCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICBpZiAoZGF0YS5pbmRleE9mKCdQT0xZR09OJykgPT09IDApIHtcbiAgICAgICAgICAgIHZhciByZWdleHAgPSAvUE9MWUdPTiBcXChcXCgoPzxkYXRhPig/Oig/IVxcKVxcKSQpLikqPylcXClcXCkkL21pdTtcbiAgICAgICAgICAgIHZhciByZWcgPSByZWdleHAuZXhlYyhkYXRhKTtcbiAgICAgICAgICAgIHZhciBfYSA9IF9fcmVhZChyZWcuZ3JvdXBzLmRhdGFcbiAgICAgICAgICAgICAgICAuc3BsaXQoJyksICgnKVxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIG5ldyBEUG9seWdvbihwLnNwbGl0KCcsICcpXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocGFyZXMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShwYXJlcy5zcGxpdCgnICcpLm1hcChOdW1iZXIpKTsgfSkpOyB9KSksIHBhdGggPSBfYVswXSwgaG9sZXMgPSBfYS5zbGljZSgxKTtcbiAgICAgICAgICAgIGlmIChob2xlcyAmJiBob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwYXRoLmhvbGVzID0gaG9sZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMgPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ0xJTkVTVFJJTkcnKSA9PT0gMCkge1xuICAgICAgICAgICAgdmFyIHJlZ2V4cCA9IC9MSU5FU1RSSU5HIFxcKCg/PGRhdGE+KD86KD8hXFwpJCkuKSo/KVxcKSQvbWl1O1xuICAgICAgICAgICAgdmFyIHJlZyA9IHJlZ2V4cC5leGVjKGRhdGEpO1xuICAgICAgICAgICAgcmVzID0gbmV3IERQb2x5Z29uKHJlZy5ncm91cHMuZGF0YVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnLCAnKS5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIERQb2ludC5wYXJzZSh0LnNwbGl0KCcgJykubWFwKE51bWJlcikpOyB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignUE9JTlQnKSA9PT0gMCkge1xuICAgICAgICAgICAgcmVzID0gbmV3IERQb2x5Z29uKFtEUG9pbnQucGFyc2VGcm9tV0tUKGRhdGEpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLmNyZWF0ZVNxdWFyZUJ5U2l6ZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oW0RQb2ludC56ZXJvKCksIHNpemUuY2xvbmUoKS5zZXRYKDApLCBzaXplLmNsb25lKCksIHNpemUuY2xvbmUoKS5zZXRZKDApXSkuY2xvc2UoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5sb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uTG9vcCh0aGlzKTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwicG9pbnRzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICB0aGlzLnBQb2ludHMgPSBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJtYXhYXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHIpIHsgcmV0dXJuIE1hdGgubWF4KGEsIHIueCk7IH0sIC1JbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1pblhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5taW4oYSwgci54KTsgfSwgSW5maW5pdHkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJtYXhZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHIpIHsgcmV0dXJuIE1hdGgubWF4KGEsIHIueSk7IH0sIC1JbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1pbllcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5taW4oYSwgci55KTsgfSwgSW5maW5pdHkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJpbm5lckNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNlbnRlciA9IHRoaXMuY2VudGVyO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9UcmlhbmdsZXMoKS5tYXAoZnVuY3Rpb24gKHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgYyA9IHRyaWFuZ2xlQ2VudGVyKHQpO1xuICAgICAgICAgICAgICAgIGMucHJvcGVydGllcy5zY29yZSA9IE1hdGgubWluKGMuZGlzdGFuY2UodC5hdCgwKSksIGMuZGlzdGFuY2UodC5hdCgxKSksIGMuZGlzdGFuY2UodC5hdCgyKSkpICsgYy5kaXN0YW5jZShjZW50ZXIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wcm9wZXJ0aWVzLnNjb3JlIC0gYi5wcm9wZXJ0aWVzLnNjb3JlOyB9KVswXTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiY2VudGVyXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWZ0VG9wLm1vdmUodGhpcy5zaXplLmRpdmlkZSgyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heFkgLSB0aGlzLm1pblk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIndcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1heFggLSB0aGlzLm1pblg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImRZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJkWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZXh0ZW5kXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBtaW5YID0gX2EubWluWCwgbWluWSA9IF9hLm1pblksIG1heFggPSBfYS5tYXhYLCBtYXhZID0gX2EubWF4WTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oW1xuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWluWCwgbWluWSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludChtYXhYLCBtaW5ZKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1heFgsIG1heFkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWluWCwgbWF4WSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludChtaW5YLCBtaW5ZKVxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInNpemVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIHcgPSBfYS53LCBoID0gX2EuaDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHcsIGgpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJsZWZ0VG9wXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBtaW5YID0gX2EubWluWCwgbWluWSA9IF9hLm1pblk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChtaW5YLCBtaW5ZKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluUG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxlZnRUb3A7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInJpZ2h0Qm90dG9tXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChtYXhYLCBtYXhZKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWF4UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJpZ2h0Qm90dG9tO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJsZW5ndGhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMubGVuZ3RoO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJmdWxsTGVuZ3RoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm9wZW4oKS5wZXJpbWV0ZXI7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInBlcmltZXRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfNCwgX2E7XG4gICAgICAgICAgICB2YXIgcCA9IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgcDEgPSBfZFswXSwgcDIgPSBfZFsxXTtcbiAgICAgICAgICAgICAgICAgICAgcCArPSBwMS5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfNF8xKSB7IGVfNCA9IHsgZXJyb3I6IGVfNF8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImFyZWFcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzUsIF9hO1xuICAgICAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5kZWludGVyc2VjdGlvbi5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgX2UgPSBfZFswXSwgeCA9IF9lLngsIHkgPSBfZS55LCBfZiA9IF9kWzFdLCBhID0gX2YueCwgYiA9IF9mLnk7XG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSB4ICogYiAtIHkgKiBhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzVfMSkgeyBlXzUgPSB7IGVycm9yOiBlXzVfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV81KSB0aHJvdyBlXzUuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhzdW0gLyAyKSAtIHRoaXMuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICsgaG9sZS5hcmVhOyB9LCAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZGVpbnRlcnNlY3Rpb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzYsIF9hO1xuICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmNsb25lKCkuY2xvc2UoKTtcbiAgICAgICAgICAgIHZhciBzdG9yZSA9IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBrID0gcC5hdChpKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIHN0b3JlW2tdID0gc3RvcmVba10gfHwgW107XG4gICAgICAgICAgICAgICAgc3RvcmVba10ucHVzaChpKTtcbiAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChqKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaXJzdExpbmUgPSBwLmF0KGkpLmZpbmRMaW5lKHAuYXQoaSArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlY29uZExpbmUgPSBwLmF0KGopLmZpbmRMaW5lKHAuYXQoaiArIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGludGVyc2VjdGlvblBvaW50ID0gZmlyc3RMaW5lLmludGVyc2VjdGlvbihzZWNvbmRMaW5lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvblBvaW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoZmlyc3RMaW5lLnBvaW50cyksIGZhbHNlKSwgX19yZWFkKHNlY29uZExpbmUucG9pbnRzKSwgZmFsc2UpLnNvbWUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHQubGlrZShpbnRlcnNlY3Rpb25Qb2ludCk7IH0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydCA9IHAucmVtb3ZlUGFydChpLCBqIC0gaSkucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlci5hcHBseShwLCBfX3NwcmVhZEFycmF5KFtpXSwgX19yZWFkKHBhcnQpLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlcihqLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmluc2VydEFmdGVyKGksIGludGVyc2VjdGlvblBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGkgKyAyOyBqIDwgcC5sZW5ndGggLSAxOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgX2xvb3BfMShqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoT2JqZWN0LmtleXMoc3RvcmUpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gX2MudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWNvcmQgPSBzdG9yZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbG9vcF8yID0gZnVuY3Rpb24gKGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3JpZ2luXzEgPSBwLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSByZWNvcmRbal0gLSByZWNvcmRbaiAtIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydCA9IG5ldyBEUG9seWdvbihvcmlnaW5fMS5yZW1vdmVQYXJ0KHJlY29yZFtqIC0gMV0sIGQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFsbEluc2lkZSA9IHBhcnQucmVkdWNlKGZ1bmN0aW9uIChhLCBlKSB7IHJldHVybiBhICYmIGNvbnRhaW5DYWxjdWxhdG9yKG9yaWdpbl8xLCBlKTsgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxJbnNpZGUgJiYgb3JpZ2luXzEuaXNDbG9ja3dpc2UgPT09IHBhcnQuaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl8xLmluc2VydEFmdGVyLmFwcGx5KG9yaWdpbl8xLCBfX3NwcmVhZEFycmF5KFtyZWNvcmRbaiAtIDFdIC0gMV0sIF9fcmVhZChwYXJ0LnJldmVyc2UoKS5wb2ludHMpLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG9yaWdpbl8xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSByZWNvcmQubGVuZ3RoIC0gMTsgaiA+IDA7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb29wXzIoaik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV82XzEpIHsgZV82ID0geyBlcnJvcjogZV82XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNikgdGhyb3cgZV82LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwidmFsaWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA+IE1JTl9QT0lOVFNfSU5fVkFMSURfUE9MWUdPTjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZmlyc3RcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0KDApO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJzZWNvbmRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0KDEpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJsYXN0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCh0aGlzLmxlbmd0aCAtIDEpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJtaW5BcmVhUmVjdGFuZ2xlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV83LCBfYSwgZV84LCBfYjtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5jb252ZXg7XG4gICAgICAgICAgICB2YXIgcmVzdWx0UG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdEFyZWEgPSBJbmZpbml0eTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2MgPSBfX3ZhbHVlcyhwLmxvb3BQb2ludHNHZW5lcmF0b3IodHJ1ZSkoKSksIF9kID0gX2MubmV4dCgpOyAhX2QuZG9uZTsgX2QgPSBfYy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9lID0gX19yZWFkKF9kLnZhbHVlLCAzKSwgbCA9IF9lWzJdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF4V2lkdGggPSAwO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF4V2lkdGhQb2ludDEgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF4V2lkdGhQb2ludDIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heEhlaWdodFBvaW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9mID0gKGVfOCA9IHZvaWQgMCwgX192YWx1ZXMocC5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSkpLCBfZyA9IF9mLm5leHQoKTsgIV9nLmRvbmU7IF9nID0gX2YubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9oID0gX19yZWFkKF9nLnZhbHVlLCA0KSwgeiA9IF9oWzBdLCBpID0gX2hbM107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAxID0gbC5maW5kUG9pbnQobC5maW5kUGVycGVuZGljdWxhcih6KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGggPSBwMS5kaXN0YW5jZSh6KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA+PSBtYXhIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gaDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0UG9pbnQgPSB6O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaTsgaiA8IHAubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwMiA9IGwuZmluZFBvaW50KGwuZmluZFBlcnBlbmRpY3VsYXIocC5hdChqKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHAxLmRpc3RhbmNlKHAyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHcgPj0gbWF4V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoID0gdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoUG9pbnQxID0gcDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aFBvaW50MiA9IHAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzhfMSkgeyBlXzggPSB7IGVycm9yOiBlXzhfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2cgJiYgIV9nLmRvbmUgJiYgKF9iID0gX2YucmV0dXJuKSkgX2IuY2FsbChfZik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfOCkgdGhyb3cgZV84LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXhXaWR0aFBvaW50MSB8fCAhbWF4V2lkdGhQb2ludDIgfHwgIW1heEhlaWdodFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGhMaW5lID0gbWF4V2lkdGhQb2ludDEuZmluZExpbmUobWF4V2lkdGhQb2ludDIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVycGVuZGljdWxhcjEgPSB3aWR0aExpbmUuZmluZFBlcnBlbmRpY3VsYXIobWF4V2lkdGhQb2ludDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVycGVuZGljdWxhcjIgPSB3aWR0aExpbmUuZmluZFBlcnBlbmRpY3VsYXIobWF4V2lkdGhQb2ludDIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcFBvbHlnb24gPSBuZXcgRFBvbHlnb24oW1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aFBvaW50MixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnBlbmRpY3VsYXIyLmZpbmRQb2ludChwZXJwZW5kaWN1bGFyMi5maW5kUGVycGVuZGljdWxhcihtYXhIZWlnaHRQb2ludCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVycGVuZGljdWxhcjEuZmluZFBvaW50KHBlcnBlbmRpY3VsYXIxLmZpbmRQZXJwZW5kaWN1bGFyKG1heEhlaWdodFBvaW50KSlcbiAgICAgICAgICAgICAgICAgICAgXSkuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBQb2x5Z29uLmFyZWEgPCByZXN1bHRBcmVhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQb2x5Z29uID0gdGVtcFBvbHlnb247XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcmVhID0gdGVtcFBvbHlnb24uYXJlYTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzdfMSkgeyBlXzcgPSB7IGVycm9yOiBlXzdfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV83KSB0aHJvdyBlXzcuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRQb2x5Z29uO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJjb252ZXhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLm9wZW4oKTtcbiAgICAgICAgICAgIHZhciBpc0Nsb2Nrd2lzZSA9IHAuaXNDbG9ja3dpc2U7XG4gICAgICAgICAgICBpZiAoIWlzQ2xvY2t3aXNlKSB7XG4gICAgICAgICAgICAgICAgcC5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbCA9IDA7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgdmFyIHAxID0gcC5sYXN0O1xuICAgICAgICAgICAgICAgIHZhciBwMiA9IHAuZmlyc3Q7XG4gICAgICAgICAgICAgICAgdmFyIHAzID0gcC5zZWNvbmQ7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBwMi5maW5kSW5uZXJBbmdsZShwMSwgcDMpO1xuICAgICAgICAgICAgICAgIGlmIChkID4gTWF0aC5QSSB8fCBETnVtYmVycy5saWtlWmVybyhETnVtYmVycy5yYWQyRGVnKGQpKSB8fCBETnVtYmVycy5saWtlUEkoZCkgfHwgRE51bWJlcnMubGlrZTJQSShkKSkge1xuICAgICAgICAgICAgICAgICAgICBwLnJlbW92ZVBhcnQoLTEsIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAocC5sZW5ndGgpO1xuICAgICAgICAgICAgcC5jbG9zZSgpO1xuICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbiA9IDA7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgcCA9IHAuZGVpbnRlcnNlY3Rpb247XG4gICAgICAgICAgICAgICAgbCA9IHAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgcC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAxID0gcC5hdChpIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwMiA9IHAuYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwMyA9IHAuYXQoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHAyLmZpbmRJbm5lckFuZ2xlKHAxLCBwMyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkID4gTWF0aC5QSSB8fCBETnVtYmVycy5saWtlWmVybyhETnVtYmVycy5yYWQyRGVnKGQpKSB8fCBETnVtYmVycy5saWtlUEkoZCkgfHwgRE51bWJlcnMubGlrZTJQSShkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5yZW1vdmVQYXJ0KC0taSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaXRlcmF0aW9uKys7XG4gICAgICAgICAgICB9IHdoaWxlIChwLmxlbmd0aCAhPT0gbCAmJiBpdGVyYXRpb24gPCBNQVhfQ09OVkVYX0lURVJBVElPTlMpO1xuICAgICAgICAgICAgaWYgKCFpc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgIHAucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImlzQ2xvY2t3aXNlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV85LCBfYTtcbiAgICAgICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuY2xvbmUoKS5jbG9zZSgpXG4gICAgICAgICAgICAgICAgICAgIC5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgX2UgPSBfZFswXSwgeCA9IF9lLngsIHkgPSBfZS55LCBfZiA9IF9kWzFdLCBhID0gX2YueCwgYiA9IF9mLnk7XG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSAoYSAtIHgpICogKGIgKyB5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV85XzEpIHsgZV85ID0geyBlcnJvcjogZV85XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfOSkgdGhyb3cgZV85LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VtIDwgMDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiY2xvY2tXaXNlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnJldmVyc2UoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibm9Ib2xlc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJlcyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgICAgIHJlcy5ob2xlcyA9IFtdO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZWR1Y2UgPSBmdW5jdGlvbiAoZiwgdikge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnJlZHVjZShmLCB2KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5pbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAobCwgaW5jbHVkZU9ubHkpIHtcbiAgICAgICAgdmFyIGVfMTAsIF9hO1xuICAgICAgICBpZiAoaW5jbHVkZU9ubHkgPT09IHZvaWQgMCkgeyBpbmNsdWRlT25seSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAzKSwgbGluZSA9IF9kWzJdO1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnNlY3QgPSBsaW5lLmludGVyc2VjdGlvbihsLCAwLCBpbmNsdWRlT25seSk7XG4gICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdCkge1xuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChpbnRlcnNlY3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xMF8xKSB7IGVfMTAgPSB7IGVycm9yOiBlXzEwXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEwKSB0aHJvdyBlXzEwLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zZXRDZW50ZXIgPSBmdW5jdGlvbiAobmV3Q2VudGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvb3AoKVxuICAgICAgICAgICAgLm1vdmUobmV3Q2VudGVyLmNsb25lKCkubW92ZSh0aGlzLmNlbnRlci5taW51cygpKSlcbiAgICAgICAgICAgIC5ydW4oKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b1dLVCA9IGZ1bmN0aW9uICh0eXBlLCB3aXRoWikge1xuICAgICAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSBEUG9seWdvbi5XS1RfUE9MWUdPTjsgfVxuICAgICAgICBpZiAod2l0aFogPT09IHZvaWQgMCkgeyB3aXRoWiA9IGZhbHNlOyB9XG4gICAgICAgIGlmICh0eXBlID09PSBEUG9seWdvbi5XS1RfUE9MWUdPTikge1xuICAgICAgICAgICAgdmFyIGggPSAnJztcbiAgICAgICAgICAgIGlmICh0aGlzLmhvbGVzICYmIHRoaXMuaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaCA9IFwiLCBcIi5jb25jYXQodGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGhvbGUpIHsgcmV0dXJuIGhvbGUudG9TdHJpbmcoKTsgfSlcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oJywgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFwiUE9MWUdPTiAoKFwiLmNvbmNhdCh0aGlzLmRlaW50ZXJzZWN0aW9uLm1hcEFycmF5KGZ1bmN0aW9uIChyKSB7IHJldHVybiBcIlwiLmNvbmNhdChyLngsIFwiIFwiKS5jb25jYXQoci55KS5jb25jYXQod2l0aFogPyBcIiBcIi5jb25jYXQoci56KSA6ICcnKTsgfSlcbiAgICAgICAgICAgICAgICAuam9pbignLCAnKSwgXCIpXCIpLmNvbmNhdChoLCBcIilcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiTElORVNUUklORyAoXCIuY29uY2F0KHRoaXMubWFwQXJyYXkoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIFwiXCIuY29uY2F0KHIueCwgXCIgXCIpLmNvbmNhdChyLnkpLmNvbmNhdCh3aXRoWiA/IFwiIFwiLmNvbmNhdChyLnopIDogJycpOyB9KVxuICAgICAgICAgICAgLmpvaW4oJywgJyksIFwiKVwiKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5maWx0ZXIgPSBmdW5jdGlvbiAoZikge1xuICAgICAgICB0aGlzLnBQb2ludHMgPSB0aGlzLnBQb2ludHMuZmlsdGVyKGYpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiAoZikge1xuICAgICAgICB0aGlzLnBQb2ludHMgPSB0aGlzLm1hcEFycmF5KGYpO1xuICAgICAgICB0aGlzLmhvbGVzID0gdGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgubWFwKGYpOyB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubWFwQXJyYXkgPSBmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLm1hcChmKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zb3J0ID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wb2ludHMuc29ydChmKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdGhpcy5wb2ludHNbKGluZGV4ICUgbGVuZ3RoICsgbGVuZ3RoKSAlIGxlbmd0aF07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnBvcCgpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5wUG9pbnRzKS5wdXNoLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYXJncyksIGZhbHNlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMuc2hpZnQoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMucFBvaW50cykudW5zaGlmdC5hcHBseShfYSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFyZ3MpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnJldmVyc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucFBvaW50cyA9IHRoaXMucFBvaW50cy5yZXZlcnNlKCk7XG4gICAgICAgIHRoaXMuaG9sZXMgPSB0aGlzLmhvbGVzLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5yZXZlcnNlKCk7IH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnBQb2ludHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLmdldFZhbHVlKCk7IH0pICsgdGhpcy5ob2xlc1xuICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgaCkgeyByZXR1cm4gYSArIGguZ2V0VmFsdWUoKTsgfSwgJycpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiKFwiLmNvbmNhdCh0aGlzLm1hcEFycmF5KGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnRvU3RyaW5nKCk7IH0pLmpvaW4oJywgJyksIFwiKVwiKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHAwID0gdGhpcy5maXJzdDtcbiAgICAgICAgaWYgKHAwICYmICF0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5wdXNoKHAwLmNsb25lKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwID0gdGhpcy5maXJzdDtcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMiAmJiBwICYmIHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQodGhpcy5wb2ludHMpLCBmYWxzZSksIF9fcmVhZChwb2x5LnBvaW50cyksIGZhbHNlKSkuY2xvc2UoKTtcbiAgICAgICAgcmVzLmhvbGVzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQodGhpcy5ob2xlcyksIGZhbHNlKSwgX19yZWFkKHBvbHkuaG9sZXMpLCBmYWxzZSkubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmNsb25lKCk7IH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMuc29tZShmdW5jdGlvbiAocSkgeyByZXR1cm4gcS5lcXVhbChwKTsgfSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24odGhpcy5wb2ludHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLmNsb25lKCk7IH0pKTtcbiAgICAgICAgcmVzLmhvbGVzID0gdGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGguY2xvbmUoKTsgfSk7XG4gICAgICAgIHJlcy5wcm9wZXJ0aWVzID0gX19hc3NpZ24oe30sIHRoaXMucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBpZiAoIShwIGluc3RhbmNlb2YgRFBvbHlnb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoICE9PSBwLmxlbmd0aCB8fCB0aGlzLmhvbGVzLmxlbmd0aCAhPT0gcC5ob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHRoaXMuc2FtZShwKSAmJlxuICAgICAgICAgICAgdGhpcy5ob2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGhvbGUpIHsgcmV0dXJuIGEgJiYgcC5ob2xlcy5zb21lKGZ1bmN0aW9uIChwSG9sZXMpIHsgcmV0dXJuIHBIb2xlcy5zYW1lKGhvbGUpOyB9KTsgfSwgdHJ1ZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNhbWUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgcENsb25lID0gcC5jbG9uZSgpLmNsb3NlKCk7XG4gICAgICAgIHZhciB0aGlzQXNTdHJpbmcgPSB0aGlzLmNsb25lKClcbiAgICAgICAgICAgIC5jbG9zZSgpXG4gICAgICAgICAgICAudG9TdHJpbmcoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwQ2xvbmUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzQXNTdHJpbmcgPT09IHBDbG9uZS50b1N0cmluZygpIHx8IHRoaXNBc1N0cmluZyA9PT0gcENsb25lLmNsb25lKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBDbG9uZS5uZXh0U3RhcnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZmluZEluZGV4ID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvaW50cy5maW5kSW5kZXgoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHQuZXF1YWwoYSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50cy5maW5kSW5kZXgoYSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYXBwcm94aW1hdGlvbiA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChlID09PSB2b2lkIDApIHsgZSA9IE1hdGguc3FydCh0aGlzLnBlcmltZXRlcikgKiBBUFBST1hJTUFUSU9OX1ZBTFVFOyB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24odGhpcy5jbG9uZSgpLmRvdWdsYXNQZXVja2VyKHRoaXMucFBvaW50cywgZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmluc2VydEFmdGVyID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIHBvaW50cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgcG9pbnRzW19pIC0gMV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IHRoaXMucFBvaW50cykuc3BsaWNlLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KFtpbmRleCArIDEsIDBdLCBfX3JlYWQocG9pbnRzKSwgZmFsc2UpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZW1vdmVQYXJ0ID0gZnVuY3Rpb24gKGluZGV4LCBjb3VudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNwbGljZShpbmRleCArIDEsIGNvdW50KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5oYXNTaW1wbGVJbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgZXh0ZW5kMSA9IHRoaXMuZXh0ZW5kO1xuICAgICAgICB2YXIgZXh0ZW5kMiA9IHAuZXh0ZW5kO1xuICAgICAgICB2YXIgZXh0ZW5kMXBvaW50cyA9IGV4dGVuZDEucG9pbnRzO1xuICAgICAgICB2YXIgZXh0ZW5kMnBvaW50cyA9IGV4dGVuZDIucG9pbnRzO1xuICAgICAgICB2YXIgaW4xID0gZXh0ZW5kMXBvaW50cy5zb21lKGZ1bmN0aW9uICh0KSB7IHJldHVybiBleHRlbmQyLnNpbXBsZUluY2x1ZGUodCk7IH0pO1xuICAgICAgICB2YXIgaW4yID0gZXh0ZW5kMnBvaW50cy5zb21lKGZ1bmN0aW9uICh0KSB7IHJldHVybiBleHRlbmQxLnNpbXBsZUluY2x1ZGUodCk7IH0pO1xuICAgICAgICByZXR1cm4gaW4xIHx8IGluMjtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVJbmNsdWRlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxlSW5jbHVkZVgocCkgJiYgdGhpcy5zaW1wbGVJbmNsdWRlWShwKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5kcmF3UG9seWdvbk9uQ2FudmFzID0gZnVuY3Rpb24gKGNhbnZhcywgZmlsbENvbG9yLCBzdHJva2VDb2xvciwgc2hhZG93Q29sb3IsIGxpbmVXaWR0aCwgc3RlcHMpIHtcbiAgICAgICAgaWYgKGxpbmVXaWR0aCA9PT0gdm9pZCAwKSB7IGxpbmVXaWR0aCA9IDE7IH1cbiAgICAgICAgaWYgKHN0ZXBzID09PSB2b2lkIDApIHsgc3RlcHMgPSB0aGlzLmxlbmd0aCAtIDE7IH1cbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICAgICAgaWYgKGZpbGxDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsQ29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBzdHJva2VDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsaW5lV2lkdGgpIHtcbiAgICAgICAgICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbGxDb2xvciB8fCBzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZ29CeVBhdGgoY3R4LCBzdGVwcyAlIHRoaXMubGVuZ3RoKTtcbiAgICAgICAgICAgIGlmIChzaGFkb3dDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5zaGFkb3dDb2xvciA9IHNoYWRvd0NvbG9yO1xuICAgICAgICAgICAgICAgIGN0eC5zaGFkb3dCbHVyID0gMDtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WCA9IDE7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd09mZnNldFkgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbGxDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTtcbiAgICAgICAgICAgICAgICBjdHguZmlsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cm9rZUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNsZWFyUG9seWdvbk9uQ2FudmFzID0gZnVuY3Rpb24gKGNhbnZhcykge1xuICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIHZhciBvbGQgPSBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uO1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gJ2Rlc3RpbmF0aW9uLW91dCc7XG4gICAgICAgIHRoaXMuZ29CeVBhdGgoY3R4KTtcbiAgICAgICAgY3R4LmZpbGwoKTtcbiAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9IG9sZDtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5jb250YWluID0gZnVuY3Rpb24gKHAsIGlzQm9yZGVySW5zaWRlKSB7XG4gICAgICAgIHZhciBlXzExLCBfYTtcbiAgICAgICAgaWYgKGlzQm9yZGVySW5zaWRlID09PSB2b2lkIDApIHsgaXNCb3JkZXJJbnNpZGUgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgc2ltcGxlSW5jbHVkZSA9IHRoaXMuc2ltcGxlSW5jbHVkZShwKTtcbiAgICAgICAgaWYgKCFzaW1wbGVJbmNsdWRlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9uQm9yZGVyID0gdGhpcy5vbkJvcmRlcihwKTtcbiAgICAgICAgaWYgKG9uQm9yZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNCb3JkZXJJbnNpZGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHBvbHkgPSB0aGlzLmRlaW50ZXJzZWN0aW9uO1xuICAgICAgICB2YXIgdG90YWxGaSA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgX2UgPSBfZFswXSwgeCA9IF9lLngsIHkgPSBfZS55LCBfZiA9IF9kWzFdLCBhID0gX2YueCwgYiA9IF9mLnk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmUxID0gbmV3IERMaW5lKHggLSBwLngsIHkgLSBwLnksIDApO1xuICAgICAgICAgICAgICAgIHZhciBsaW5lMiA9IG5ldyBETGluZShhIC0gcC54LCBiIC0gcC55LCAwKTtcbiAgICAgICAgICAgICAgICB2YXIgZmlEaWYgPSBsaW5lMS5maW5kRmkobGluZTIpO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lMS52ZWN0b3JQcm9kdWN0KGxpbmUyKS5jID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0b3RhbEZpICs9IGZpRGlmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxGaSAtPSBmaURpZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTFfMSkgeyBlXzExID0geyBlcnJvcjogZV8xMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMSkgdGhyb3cgZV8xMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBlcHMgPSBNYXRoLlBJIC8gMTAwMDA7XG4gICAgICAgIHZhciBhYnNUb3RhbEZpID0gTWF0aC5hYnModG90YWxGaSk7XG4gICAgICAgIGlmIChhYnNUb3RhbEZpIDwgZXBzKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoTWF0aC5hYnMoMiAqIE1hdGguUEkgLSBhYnNUb3RhbEZpKSA8IGVwcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb250YWluczIgZmFpbGQnKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5vbkJvcmRlciA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBlXzEyLCBfYTtcbiAgICAgICAgdmFyIHNpbXBsZUluY2x1ZGUgPSB0aGlzLnNpbXBsZUluY2x1ZGUocCk7XG4gICAgICAgIGlmIChzaW1wbGVJbmNsdWRlKSB7XG4gICAgICAgICAgICB2YXIgcG9seSA9IHRoaXMuZGVpbnRlcnNlY3Rpb247XG4gICAgICAgICAgICB2YXIgaGFzU2FtZVBvaW50ID0gdGhpcy5wb2ludHMuc29tZShmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJuIHBvaW50LmVxdWFsKHApOyB9KTtcbiAgICAgICAgICAgIGlmIChoYXNTYW1lUG9pbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhwb2x5Lmxvb3BQb2ludHNHZW5lcmF0b3IodHJ1ZSkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAzKSwgcG9seWdvbkxpbmUgPSBfZFsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uQm9yZGVyID0gcG9seWdvbkxpbmUueChwKS5lcXVhbChwKSAmJiBwb2x5Z29uTGluZS5pblJhbmdlKHApO1xuICAgICAgICAgICAgICAgICAgICBpZiAob25Cb3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMTJfMSkgeyBlXzEyID0geyBlcnJvcjogZV8xMl8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEyKSB0aHJvdyBlXzEyLmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm5leHRTdGFydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIHRoaXMucHVzaCh0aGlzLnNoaWZ0KCkpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnJlbW92ZUR1cGxpY2F0ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBwMSA9IHRoaXMuYXQoaSk7XG4gICAgICAgICAgICB2YXIgcDIgPSB0aGlzLmF0KGkgKyAxKTtcbiAgICAgICAgICAgIGlmIChwMS5lcXVhbChwMikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVBhcnQoaSwgMSk7XG4gICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24udG9HZW9KU09ORmVhdHVyZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiAocG9seWdvbnMsIGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiBwb2x5Z29ucy5tYXAoZnVuY3Rpb24gKHBvbHlnb24pIHsgcmV0dXJuIHBvbHlnb24udG9HZW9KU09ORmVhdHVyZShmb3JtYXQpOyB9KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvbHlnb24ucGFyc2UgPSBmdW5jdGlvbiAoYSwgZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIGlmIChhLnR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoYS50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnRmVhdHVyZUNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5mZWF0dXJlcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IERQb2x5Z29uLnBhcnNlKGYsIGZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2guYXBwbHkoYWssIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZCh0KSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2godCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICBjYXNlICdGZWF0dXJlJzoge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IERQb2x5Z29uLnBhcnNlKGEuZ2VvbWV0cnksIGZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcm9wc18xID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGEucHJvcGVydGllcyksIChhLmlkID8gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhLmlkXG4gICAgICAgICAgICAgICAgICAgIH0pIDogKHt9KSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JFYWNoKGZ1bmN0aW9uIChyZWNvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCBwcm9wc18xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdC5wcm9wZXJ0aWVzID0gX19hc3NpZ24oe30sIHByb3BzXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICdMaW5lU3RyaW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdNdWx0aVBvaW50JzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihhLmNvb3JkaW5hdGVzLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gRFBvaW50LnBhcnNlKGMsIGZvcm1hdCk7IH0pKTtcbiAgICAgICAgICAgICAgICBjYXNlICdQb2x5Z29uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29vcmRpbmF0ZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgbGluZSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFrLnBvaW50cyA9IGxpbmUubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5ob2xlcy5wdXNoKG5ldyBEUG9seWdvbihsaW5lLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gRFBvaW50LnBhcnNlKGMsIGZvcm1hdCk7IH0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgICAgIH0sIG5ldyBEUG9seWdvbigpKTtcbiAgICAgICAgICAgICAgICBjYXNlICdNdWx0aUxpbmVTdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb29yZGluYXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKG5ldyBEUG9seWdvbihsaW5lLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gRFBvaW50LnBhcnNlKGMsIGZvcm1hdCk7IH0pKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICBjYXNlICdNdWx0aVBvbHlnb24nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb29yZGluYXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBjb29yZGluYXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChEUG9seWdvbi5wYXJzZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBjb29yZGluYXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgZm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICBjYXNlICdHZW9tZXRyeUNvbGxlY3Rpb24nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5nZW9tZXRyaWVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2goRFBvbHlnb24ucGFyc2UobGluZSwgZm9ybWF0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oYVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gRFBvaW50LnBhcnNlKHIsIGZvcm1hdCk7IH0pKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b0FycmF5T2ZDb29yZHMgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB0aGlzLm1hcEFycmF5KGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnRvQ29vcmRzKGZvcm1hdCk7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvR2VvSlNPTkZlYXR1cmUgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB0aGlzLnRvR2VvSlNPTihmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9HZW9KU09OID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBfX3NwcmVhZEFycmF5KFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b0FycmF5T2ZDb29yZHMoZm9ybWF0KVxuICAgICAgICAgICAgICAgIF0sIF9fcmVhZCh0aGlzLmhvbGVzLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC50b0FycmF5T2ZDb29yZHMoZm9ybWF0KTsgfSkpLCBmYWxzZSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiB0aGlzLnRvQXJyYXlPZkNvb3Jkcyhmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZGl2aWRlVG9QaWVjZXMgPSBmdW5jdGlvbiAocGllY2VzQ291bnQsIHdpdGhBbHRpdHVkZSkge1xuICAgICAgICB2YXIgZV8xMywgX2E7XG4gICAgICAgIGlmICh3aXRoQWx0aXR1ZGUgPT09IHZvaWQgMCkgeyB3aXRoQWx0aXR1ZGUgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgZnVsbExlbmd0aCA9IHRoaXMuZnVsbExlbmd0aDtcbiAgICAgICAgdmFyIHBpZWNlTGVuZ3RoID0gZnVsbExlbmd0aCAvIHBpZWNlc0NvdW50O1xuICAgICAgICB2YXIgY3VycmVudFBpZWNlTGVuZ3RoID0gcGllY2VMZW5ndGg7XG4gICAgICAgIHZhciBfbG9vcF8zID0gZnVuY3Rpb24gKHAxLCBwMiwgaSkge1xuICAgICAgICAgICAgdmFyIGQgPSBwMS5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICBpZiAoZCA9PT0gY3VycmVudFBpZWNlTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcDIucHJvcGVydGllcy5waWVjZUJvcmRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgY3VycmVudFBpZWNlTGVuZ3RoID0gcGllY2VMZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChkIC0gY3VycmVudFBpZWNlTGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciBjaXJjbGUgPSBuZXcgRENpcmNsZShwMSwgY3VycmVudFBpZWNlTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB2YXIgbGluZV8xID0gcDEuZmluZExpbmUocDIpO1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25Qb2ludCA9IGxpbmVfMS5pbnRlcnNlY3Rpb25XaXRoQ2lyY2xlKGNpcmNsZSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAocCkgeyByZXR1cm4gbGluZV8xLmluUmFuZ2UocCwgQ0xPU0VfVE9fSU5URVJTRUNUSU9OX0RJU1RBTkNFKTsgfSlbMF07XG4gICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9uUG9pbnQucHJvcGVydGllcy5waWVjZUJvcmRlciA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpc18xLmluc2VydEFmdGVyKGksIGludGVyc2VjdGlvblBvaW50KTtcbiAgICAgICAgICAgICAgICBpZiAod2l0aEFsdGl0dWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwMXogPSBwMS56O1xuICAgICAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25Qb2ludC56ID0gcDF6IC0gKHAxeiAtIHAyLnopICogKHAxLmRpc3RhbmNlKGludGVyc2VjdGlvblBvaW50KSAvIGQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50UGllY2VMZW5ndGggPSBwaWVjZUxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQaWVjZUxlbmd0aCAtPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgdGhpc18xID0gdGhpcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDQpLCBwMSA9IF9kWzBdLCBwMiA9IF9kWzFdLCBpID0gX2RbM107XG4gICAgICAgICAgICAgICAgX2xvb3BfMyhwMSwgcDIsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzEzXzEpIHsgZV8xMyA9IHsgZXJyb3I6IGVfMTNfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTMpIHRocm93IGVfMTMuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5wcmVwYXJlVG9GYXN0U2VhcmNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xNCwgX2E7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RvcmUgPSB7fTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5wb2ludHMpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX2MudmFsdWUsIHggPSBfZC54LCB5ID0gX2QueSwgeiA9IF9kLno7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF0gPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdW3ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF1beV0gPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTRfMSkgeyBlXzE0ID0geyBlcnJvcjogZV8xNF8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNCkgdGhyb3cgZV8xNC5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZmFzdEhhcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55LCB6ID0gX2EuejtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdW3ldKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ107XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImdyb3dpbmdQaWVjZXNHZW5lcmF0b3JcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwb2x5Z29uID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHIsIF9hLCBfYiwgcCwgZV8xNV8xO1xuICAgICAgICAgICAgICAgIHZhciBlXzE1LCBfYztcbiAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9kKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2QubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLnRyeXMucHVzaChbMSwgNiwgNywgOF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hID0gX192YWx1ZXMocG9seWdvbi5wUG9pbnRzKSwgX2IgPSBfYS5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QubGFiZWwgPSAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIV9iLmRvbmUpIHJldHVybiBbMywgNV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IF9iLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucHVzaChwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXAucHJvcGVydGllcy5waWVjZUJvcmRlcikgcmV0dXJuIFszLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIHIuY2xvbmUoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Quc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLmxhYmVsID0gNDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYiA9IF9hLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMsIDJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiByZXR1cm4gWzMsIDhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVfMTVfMSA9IF9kLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXzE1ID0geyBlcnJvcjogZV8xNV8xIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2IgJiYgIV9iLmRvbmUgJiYgKF9jID0gX2EucmV0dXJuKSkgX2MuY2FsbChfYSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNSkgdGhyb3cgZV8xNS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbN107XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg6IHJldHVybiBbMiwgci5jbG9uZSgpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVVbmlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gdGhpcy5zaW1wbGVMb2dpY0Z1bmN0aW9uKHAsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlcyBpbnN0YW5jZW9mIERQb2x5Z29uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChleCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVJbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaW1wbGVMb2dpY0Z1bmN0aW9uKHAsIGZhbHNlLCBmYWxzZSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlRGlmZmVyZW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbXBsZUxvZ2ljRnVuY3Rpb24ocCwgdHJ1ZSwgZmFsc2UpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNtYXJ0VW5pb24gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgZV8xNiwgX2E7XG4gICAgICAgIHZhciByZXMgPSB0aGlzLmNsb25lKCkuc2ltcGxlVW5pb24ocCk7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHZhciBhbGxIb2xlcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQodGhpcy5ob2xlcyksIGZhbHNlKSwgX19yZWFkKHAuaG9sZXMpLCBmYWxzZSksIF9fcmVhZChyZXMuaG9sZXMpLCBmYWxzZSkubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmNsb25lKCk7IH0pO1xuICAgICAgICAgICAgdmFyIF9sb29wXzQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICAgICAgICAgIHZhciBlXzE3LCBfYjtcbiAgICAgICAgICAgICAgICB2YXIgX2xvb3BfNSA9IGZ1bmN0aW9uIChiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhLmVxdWFsKGIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gYS5zaW1wbGVVbmlvbihiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEhvbGVzID0gYWxsSG9sZXMuZmlsdGVyKGZ1bmN0aW9uICh2KSB7IHJldHVybiAhdi5lcXVhbChhKSAmJiAhdi5lcXVhbChiKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxIb2xlcy5wdXNoKHIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBhbGxIb2xlc18yID0gKGVfMTcgPSB2b2lkIDAsIF9fdmFsdWVzKGFsbEhvbGVzKSksIGFsbEhvbGVzXzJfMSA9IGFsbEhvbGVzXzIubmV4dCgpOyAhYWxsSG9sZXNfMl8xLmRvbmU7IGFsbEhvbGVzXzJfMSA9IGFsbEhvbGVzXzIubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGFsbEhvbGVzXzJfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9sb29wXzUoYik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMTdfMSkgeyBlXzE3ID0geyBlcnJvcjogZV8xN18xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhbGxIb2xlc18yXzEgJiYgIWFsbEhvbGVzXzJfMS5kb25lICYmIChfYiA9IGFsbEhvbGVzXzIucmV0dXJuKSkgX2IuY2FsbChhbGxIb2xlc18yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTcpIHRocm93IGVfMTcuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhbGxIb2xlc18xID0gX192YWx1ZXMoYWxsSG9sZXMpLCBhbGxIb2xlc18xXzEgPSBhbGxIb2xlc18xLm5leHQoKTsgIWFsbEhvbGVzXzFfMS5kb25lOyBhbGxIb2xlc18xXzEgPSBhbGxIb2xlc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGFsbEhvbGVzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgX2xvb3BfNChhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xNl8xKSB7IGVfMTYgPSB7IGVycm9yOiBlXzE2XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEhvbGVzXzFfMSAmJiAhYWxsSG9sZXNfMV8xLmRvbmUgJiYgKF9hID0gYWxsSG9sZXNfMS5yZXR1cm4pKSBfYS5jYWxsKGFsbEhvbGVzXzEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTYpIHRocm93IGVfMTYuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcy5ob2xlcyA9IGFsbEhvbGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9UcmlhbmdsZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBxID0gdGhpcy5jbG9uZSgpLnJlbW92ZUR1cGxpY2F0ZXMoKVxuICAgICAgICAgICAgLm9wZW4oKTtcbiAgICAgICAgaWYgKHEubGVuZ3RoIDwgMykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChxLmxlbmd0aCA9PT0gMykge1xuICAgICAgICAgICAgcmV0dXJuIFtxXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5uZXJBbmROb3RJbnRlcnNlY3QgPSBmdW5jdGlvbiAocG9seSwgcDEsIHAyKSB7XG4gICAgICAgICAgICB2YXIgbCA9IHAxLmZpbmRMaW5lKHAyKTtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSBsLmNlbnRlcjtcbiAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25zID0gcG9seS5ob2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGhvbGUpIHsgcmV0dXJuIGEgJiYgQm9vbGVhbihob2xlLmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKTsgfSwgQm9vbGVhbihwb2x5LmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKSk7XG4gICAgICAgICAgICB2YXIgY29udGFpbiA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmICFob2xlXG4gICAgICAgICAgICAgICAgLmNvbnRhaW4oY2VudGVyKTsgfSwgcG9seS5jb250YWluKGNlbnRlcikpO1xuICAgICAgICAgICAgcmV0dXJuICFpbnRlcnNlY3Rpb25zICYmIGNvbnRhaW47XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRUcmlhbmdsZSA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvbHkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcDAgPSBwb2x5LmF0KDApO1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHBvbHkuYXQoMSk7XG4gICAgICAgICAgICAgICAgdmFyIHAyID0gcG9seS5hdCgyKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXJBbmROb3RJbnRlcnNlY3QocG9seSwgcDAsIHAyKSkge1xuICAgICAgICAgICAgICAgICAgICBwb2x5LnJlbW92ZVBhcnQoMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oW1xuICAgICAgICAgICAgICAgICAgICAgICAgcDAuY2xvbmUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAxLmNsb25lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwMi5jbG9uZSgpXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb2x5LnB1c2gocG9seS5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLnJlbW92ZUR1cGxpY2F0ZXMoKS5jbG9ja1dpc2Uub3BlbigpO1xuICAgICAgICB3aGlsZSAocC5ob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBoID0gcC5ob2xlcy5zaGlmdCgpXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAuY2xvY2tXaXNlXG4gICAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgIC5jbG9zZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHAsIHAuZmlyc3QsIGguZmlyc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFswXSwgX19yZWFkKGgucG9pbnRzKSwgZmFsc2UpLCBbcC5maXJzdF0sIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwLnB1c2gocC5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChwLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIHZhciB0cmlhbmdsZSA9IGdldFRyaWFuZ2xlKHApO1xuICAgICAgICAgICAgaWYgKHRyaWFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2godHJpYW5nbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoKHApO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdldFRyaWFuZ2xlc1BvaW50SW5kZXhlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlubmVyQW5kTm90SW50ZXJzZWN0ID0gZnVuY3Rpb24gKHBvbHksIHAxLCBwMikge1xuICAgICAgICAgICAgdmFyIGwgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICB2YXIgY2VudGVyID0gbC5jZW50ZXI7XG4gICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIEJvb2xlYW4oaG9sZS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCk7IH0sIEJvb2xlYW4ocG9seS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCkpO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW4gPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiAhaG9sZVxuICAgICAgICAgICAgICAgIC5jb250YWluKGNlbnRlcik7IH0sIHBvbHkuY29udGFpbihjZW50ZXIpKTtcbiAgICAgICAgICAgIHJldHVybiAhaW50ZXJzZWN0aW9ucyAmJiBjb250YWluO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0VHJpYW5nbGUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAwID0gcG9seS5hdCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgcDEgPSBwb2x5LmF0KDEpO1xuICAgICAgICAgICAgICAgIHZhciBwMiA9IHBvbHkuYXQoMik7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHBvbHksIHAwLCBwMikpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9seS5yZW1vdmVQYXJ0KDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgcDAucHJvcGVydGllcy5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAxLnByb3BlcnRpZXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwMi5wcm9wZXJ0aWVzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvbHkucHVzaChwb2x5LnNoaWZ0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHAgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHAucG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgIGYucHJvcGVydGllcy5pbmRleCA9IGluZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICBwLmhvbGVzLmZvckVhY2goZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgICAgIGgucFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgICAgICAgZi5wcm9wZXJ0aWVzLmluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcCA9IHAuY2xvY2tXaXNlLm9wZW4oKTtcbiAgICAgICAgd2hpbGUgKHAuaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgaCA9IHAuaG9sZXMuc2hpZnQoKVxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLmNsb2NrV2lzZVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuY2xvc2UoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckFuZE5vdEludGVyc2VjdChwLCBwLmZpcnN0LCBoLmZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwLmluc2VydEFmdGVyLmFwcGx5KHAsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbMF0sIF9fcmVhZChoLnBvaW50cyksIGZhbHNlKSwgW3AuZmlyc3RdLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcC5wdXNoKHAuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAocC5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICB2YXIgdHJpYW5nbGUgPSBnZXRUcmlhbmdsZShwKTtcbiAgICAgICAgICAgIGlmICh0cmlhbmdsZSkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRyaWFuZ2xlKSwgZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChwLnBvaW50cy5tYXAoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYucHJvcGVydGllcy5pbmRleDsgfSkpLCBmYWxzZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJjbG9zZWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpcnN0LmVxdWFsKHRoaXMubGFzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYnVmZmVyID0gZnVuY3Rpb24gKHYsIHF1YWRyYW50U2VnbWVudHMsIHR5cGUpIHtcbiAgICAgICAgaWYgKHF1YWRyYW50U2VnbWVudHMgPT09IHZvaWQgMCkgeyBxdWFkcmFudFNlZ21lbnRzID0gNjQ7IH1cbiAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gRFBvbHlnb24uQ0FQX1JPVU5EOyB9XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcganN0c0lvLldLVFJlYWRlcigpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBub0hvbGVzID0gX2Eubm9Ib2xlcywgY2xvc2VkID0gX2EuY2xvc2VkO1xuICAgICAgICB2YXIgcG9pbnRzID0gcmVhZGVyXG4gICAgICAgICAgICAucmVhZChub0hvbGVzLnRvV0tUKGNsb3NlZCA/IERQb2x5Z29uLldLVF9QT0xZR09OIDogRFBvbHlnb24uV0tUX0xJTkVTVFJJTkcpKVxuICAgICAgICAgICAgLmJ1ZmZlcih2LCBxdWFkcmFudFNlZ21lbnRzLCB0eXBlKVxuICAgICAgICAgICAgLmdldENvb3JkaW5hdGVzKCk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24ocG9pbnRzLm1hcChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5KTtcbiAgICAgICAgfSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpZGVCdWZmZXJzID0gZnVuY3Rpb24gKHYsIHF1YWRyYW50U2VnbWVudHMpIHtcbiAgICAgICAgaWYgKHF1YWRyYW50U2VnbWVudHMgPT09IHZvaWQgMCkgeyBxdWFkcmFudFNlZ21lbnRzID0gNjQ7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgZmlyc3QgPSBfYS5maXJzdCwgbGFzdCA9IF9hLmxhc3Q7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcih2LCBxdWFkcmFudFNlZ21lbnRzLCBEUG9seWdvbi5DQVBfRkxBVCkub3BlbigpO1xuICAgICAgICB2YXIgX2IgPSBfX3JlYWQoZmlyc3Quc29ydEJ5RGlzdGFuY2UoYnVmZmVyKS5wb2ludHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnByb3BlcnRpZXMuaW5kZXg7IH0pLCAyKSwgc3RhcnQwID0gX2JbMF0sIHN0YXJ0MSA9IF9iWzFdO1xuICAgICAgICB2YXIgX2MgPSBfX3JlYWQobGFzdC5zb3J0QnlEaXN0YW5jZShidWZmZXIpLnBvaW50cy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIucHJvcGVydGllcy5pbmRleDsgfSksIDIpLCBlbmQwID0gX2NbMF0sIGVuZDEgPSBfY1sxXTtcbiAgICAgICAgdmFyIGZyb21Qb2ludCA9IE1hdGgubWluKE1hdGgubWF4KHN0YXJ0MCwgc3RhcnQxKSwgTWF0aC5tYXgoZW5kMCwgZW5kMSkpO1xuICAgICAgICB2YXIgdG9Qb2ludCA9IE1hdGgubWF4KE1hdGgubWluKHN0YXJ0MCwgc3RhcnQxKSwgTWF0aC5taW4oZW5kMCwgZW5kMSkpO1xuICAgICAgICB2YXIgbGluZVBhcnQgPSBuZXcgRFBvbHlnb24oYnVmZmVyLnJlbW92ZVBhcnQoZnJvbVBvaW50IC0gMSwgdG9Qb2ludCAtIGZyb21Qb2ludCArIDEpKTtcbiAgICAgICAgYnVmZmVyLnVuc2hpZnQoYnVmZmVyLnBvcCgpKTtcbiAgICAgICAgcmV0dXJuIFtsaW5lUGFydC5yZXZlcnNlKCksIGJ1ZmZlcl07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHR5cGVvZiB2ID09PSAnb2JqZWN0JyA/IHYgOiB2KHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5iZXppZXIgPSBmdW5jdGlvbiAoc3RlcCkge1xuICAgICAgICBpZiAoc3RlcCA9PT0gdm9pZCAwKSB7IHN0ZXAgPSAwLjE7IH1cbiAgICAgICAgdmFyIHJlcyA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE7IGkgKz0gc3RlcCkge1xuICAgICAgICAgICAgcmVzLnB1c2godGhpcy5jbG9uZSgpLmdldEJlemllclBvaW50KGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNldEdyb3dpbmdIZWlnaHQgPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgICAgICAgdmFyIGZ1bGxMZW5ndGggPSB0aGlzLmZ1bGxMZW5ndGg7XG4gICAgICAgIHZhciBwcmV2UG9pbnQgPSB0aGlzLmZpcnN0O1xuICAgICAgICB2YXIgZCA9IHRvIC0gZnJvbTtcbiAgICAgICAgdmFyIGN1cnJlbnREaXN0YW5jZSA9IDA7XG4gICAgICAgIHRoaXMubG9vcCgpXG4gICAgICAgICAgICAuc2V0WihmdW5jdGlvbiAocCkge1xuICAgICAgICAgICAgY3VycmVudERpc3RhbmNlICs9IHByZXZQb2ludC5kaXN0YW5jZShwKTtcbiAgICAgICAgICAgIHByZXZQb2ludCA9IHA7XG4gICAgICAgICAgICByZXR1cm4gZnJvbSArIGN1cnJlbnREaXN0YW5jZSAvIGZ1bGxMZW5ndGggKiBkO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLnJ1bigpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5sb29wUG9pbnRzR2VuZXJhdG9yID0gZnVuY3Rpb24gKHdpdGhMaW5lKSB7XG4gICAgICAgIGlmICh3aXRoTGluZSA9PT0gdm9pZCAwKSB7IHdpdGhMaW5lID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGksIHAxLCBwMjtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSAxO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpIDwgdGhhdC5sZW5ndGggLSAxKSkgcmV0dXJuIFszLCA0XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAxID0gdGhhdC5hdChpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAyID0gdGhhdC5hdChpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQsIFtwMSwgcDIsIHdpdGhMaW5lID8gcDEuZmluZExpbmUocDIpIDogdW5kZWZpbmVkLCBpXV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszLCAxXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gWzJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdldEJlemllclBvaW50ID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdmFyIGVfMTgsIF9hO1xuICAgICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpcnN0O1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgcDEgPSBfZFswXSwgcDIgPSBfZFsxXTtcbiAgICAgICAgICAgICAgICBwMS5tb3ZlKHAyLmNsb25lKCkubW92ZShwMS5jbG9uZSgpLm1pbnVzKCkpXG4gICAgICAgICAgICAgICAgICAgIC5zY2FsZSh2KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMThfMSkgeyBlXzE4ID0geyBlcnJvcjogZV8xOF8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xOCkgdGhyb3cgZV8xOC5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJlemllclBvaW50KHYpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUluY2x1ZGVYID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIHggPSBwLng7XG4gICAgICAgIHJldHVybiB0aGlzLm1pblggPD0geCAmJiB0aGlzLm1heFggPj0geDtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVJbmNsdWRlWSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciB5ID0gcC55O1xuICAgICAgICByZXR1cm4gdGhpcy5taW5ZIDw9IHkgJiYgdGhpcy5tYXhZID49IHk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZG91Z2xhc1BldWNrZXIgPSBmdW5jdGlvbiAocG9pbnRzLCBlKSB7XG4gICAgICAgIHZhciBkTWF4ID0gMDtcbiAgICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgICAgdmFyIGVuZCA9IHBvaW50cy5sZW5ndGggLSAxO1xuICAgICAgICB2YXIgbGluZSA9IHBvaW50c1swXS5maW5kTGluZShwb2ludHNbZW5kXSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBkID0gbGluZS5wZXJwZW5kaWN1bGFyRGlzdGFuY2UocG9pbnRzW2ldKTtcbiAgICAgICAgICAgIGlmIChkID4gZE1heCkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICBkTWF4ID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZE1heCA+PSBlKSB7XG4gICAgICAgICAgICB2YXIgcmVjUmVzdWx0MSA9IHRoaXMuZG91Z2xhc1BldWNrZXIocG9pbnRzLnNsaWNlKDAsIGluZGV4ICsgMSksIGUpO1xuICAgICAgICAgICAgdmFyIHJlY1Jlc3VsdDIgPSB0aGlzLmRvdWdsYXNQZXVja2VyKHBvaW50cy5zbGljZShpbmRleCksIGUpO1xuICAgICAgICAgICAgcmVjUmVzdWx0MS5wb3AoKTtcbiAgICAgICAgICAgIHJldHVybiBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChyZWNSZXN1bHQxKSwgZmFsc2UpLCBfX3JlYWQocmVjUmVzdWx0MiksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3BvaW50c1swXSwgcG9pbnRzW2VuZF1dO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdvQnlQYXRoID0gZnVuY3Rpb24gKGN0eCwgc3RlcHMpIHtcbiAgICAgICAgaWYgKHN0ZXBzID09PSB2b2lkIDApIHsgc3RlcHMgPSB0aGlzLmxlbmd0aCAtIDE7IH1cbiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5maXJzdDtcbiAgICAgICAgY3R4Lm1vdmVUbyhzdGFydC54LCBzdGFydC55KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gKHN0ZXBzICUgdGhpcy5sZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMuYXQoaSksIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgICAgIGN0eC5saW5lVG8oeCwgeSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nZXRKU1RTR2VvbWV0cnkgPSBmdW5jdGlvbiAocCwgdW5pb25UaGlzLCB1bmlvblRoYXQpIHtcbiAgICAgICAgdmFyIHVuaW9uT3JJbnRlcnNlY3Rpb24gPSB1bmlvblRoYXQgPT09IHVuaW9uVGhpcztcbiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBqc3RzSW8uV0tUUmVhZGVyKCk7XG4gICAgICAgIHZhciBhID0gcmVhZGVyLnJlYWQodGhpcy5ub0hvbGVzLnRvV0tUKCkpO1xuICAgICAgICB2YXIgYiA9IHJlYWRlci5yZWFkKHAubm9Ib2xlcy50b1dLVCgpKTtcbiAgICAgICAgaWYgKCF1bmlvbk9ySW50ZXJzZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5kaWZmZXJlbmNlKGIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVuaW9uVGhpcykge1xuICAgICAgICAgICAgcmV0dXJuIGEudW5pb24oYik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXVuaW9uVGhpcykge1xuICAgICAgICAgICAgcmV0dXJuIGEuaW50ZXJzZWN0aW9uKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlTG9naWNGdW5jdGlvbiA9IGZ1bmN0aW9uIChwLCB1bmlvblRoaXMsIHVuaW9uVGhhdCkge1xuICAgICAgICB2YXIgZV8xOSwgX2EsIGVfMjAsIF9iLCBlXzIxLCBfYywgZV8yMiwgX2Q7XG4gICAgICAgIHZhciBjID0gdGhpcy5nZXRKU1RTR2VvbWV0cnkocCwgdW5pb25UaGlzLCB1bmlvblRoYXQpO1xuICAgICAgICBpZiAoYykge1xuICAgICAgICAgICAgdmFyIGNvb3JkaW5hdGVzXzEgPSBjLmdldENvb3JkaW5hdGVzKCk7XG4gICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXNfMS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gY29vcmRpbmF0ZXNfMS5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBfYSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhc3RJbmRleCA9IGFrLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERQb2ludCh4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0ID0gYWtbbGFzdEluZGV4XS5maXJzdDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQuZXF1YWwoZmlyc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29vcmRpbmF0ZXNfMVtpbmRleCArIDFdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRQb2ludCA9IG5ldyBEUG9pbnQoY29vcmRpbmF0ZXNfMVtpbmRleCArIDFdLngsIGNvb3JkaW5hdGVzXzFbaW5kZXggKyAxXS55KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWtbbGFzdEluZGV4XS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2gobmV3IERQb2x5Z29uKFtuZXh0UG9pbnRdKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWtbbGFzdEluZGV4XS5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICB9LCBbbmV3IERQb2x5Z29uKFtuZXcgRFBvaW50KGNvb3JkaW5hdGVzXzFbMF0ueCwgY29vcmRpbmF0ZXNfMVswXS55KV0pXSk7XG4gICAgICAgICAgICAgICAgaWYgKHVuaW9uVGhhdCAmJiB1bmlvblRoaXMgJiYgcmVzdWx0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF8xID0gX192YWx1ZXMocmVzdWx0KSwgcmVzdWx0XzFfMSA9IHJlc3VsdF8xLm5leHQoKTsgIXJlc3VsdF8xXzEuZG9uZTsgcmVzdWx0XzFfMSA9IHJlc3VsdF8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0gcmVzdWx0XzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xvb3BfNiA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEuaGFzKHIuZmlyc3QpICYmICFxLmVxdWFsKHIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBxLmZpbmRJbmRleChyLmZpcnN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfZSA9IHEucG9pbnRzKS5zcGxpY2UuYXBwbHkoX2UsIF9fc3ByZWFkQXJyYXkoW2luZGV4LCAwXSwgX19yZWFkKHIucG9pbnRzKSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKGgpIHsgcmV0dXJuICFoLmVxdWFsKHIpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMiA9IChlXzIwID0gdm9pZCAwLCBfX3ZhbHVlcyhyZXN1bHQpKSwgcmVzdWx0XzJfMSA9IHJlc3VsdF8yLm5leHQoKTsgIXJlc3VsdF8yXzEuZG9uZTsgcmVzdWx0XzJfMSA9IHJlc3VsdF8yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSByZXN1bHRfMl8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlXzEgPSBfbG9vcF82KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlXzEgPT09IFwiYnJlYWtcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8yMF8xKSB7IGVfMjAgPSB7IGVycm9yOiBlXzIwXzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdF8yXzEgJiYgIXJlc3VsdF8yXzEuZG9uZSAmJiAoX2IgPSByZXN1bHRfMi5yZXR1cm4pKSBfYi5jYWxsKHJlc3VsdF8yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMjApIHRocm93IGVfMjAuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8xOV8xKSB7IGVfMTkgPSB7IGVycm9yOiBlXzE5XzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdF8xXzEgJiYgIXJlc3VsdF8xXzEuZG9uZSAmJiAoX2EgPSByZXN1bHRfMS5yZXR1cm4pKSBfYS5jYWxsKHJlc3VsdF8xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xOSkgdGhyb3cgZV8xOS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgubGVuZ3RoID4gMjsgfSkubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmNsb3NlKCk7IH0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF8zID0gX192YWx1ZXMocmVzdWx0KSwgcmVzdWx0XzNfMSA9IHJlc3VsdF8zLm5leHQoKTsgIXJlc3VsdF8zXzEuZG9uZTsgcmVzdWx0XzNfMSA9IHJlc3VsdF8zLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHEgPSByZXN1bHRfM18xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9sb29wXzcgPSBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXEuZXF1YWwocikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEuY29udGFpbihyLmZpcnN0LCB0cnVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcS5ob2xlcy5wdXNoKHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoaCkgeyByZXR1cm4gIWguZXF1YWwocik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzQgPSAoZV8yMiA9IHZvaWQgMCwgX192YWx1ZXMocmVzdWx0KSksIHJlc3VsdF80XzEgPSByZXN1bHRfNC5uZXh0KCk7ICFyZXN1bHRfNF8xLmRvbmU7IHJlc3VsdF80XzEgPSByZXN1bHRfNC5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSByZXN1bHRfNF8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGVfMiA9IF9sb29wXzcocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZV8yID09PSBcImJyZWFrXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV8yMl8xKSB7IGVfMjIgPSB7IGVycm9yOiBlXzIyXzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdF80XzEgJiYgIXJlc3VsdF80XzEuZG9uZSAmJiAoX2QgPSByZXN1bHRfNC5yZXR1cm4pKSBfZC5jYWxsKHJlc3VsdF80KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIyKSB0aHJvdyBlXzIyLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8yMV8xKSB7IGVfMjEgPSB7IGVycm9yOiBlXzIxXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdF8zXzEgJiYgIXJlc3VsdF8zXzEuZG9uZSAmJiAoX2MgPSByZXN1bHRfMy5yZXR1cm4pKSBfYy5jYWxsKHJlc3VsdF8zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMjEpIHRocm93IGVfMjEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRbMF0uY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5tYXAoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIGcuY2xvc2UoKTsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBEUG9seWdvbi5DQVBfUk9VTkQgPSBDQVBfUk9VTkQ7XG4gICAgRFBvbHlnb24uQ0FQX0ZMQVQgPSBDQVBfRkxBVDtcbiAgICBEUG9seWdvbi5DQVBfU1FVQVJFID0gQ0FQX1NRVUFSRTtcbiAgICBEUG9seWdvbi5XS1RfTElORVNUUklORyA9ICdMSU5FU1RSSU5HJztcbiAgICBEUG9seWdvbi5XS1RfUE9MWUdPTiA9ICdQT0xZR09OJztcbiAgICByZXR1cm4gRFBvbHlnb247XG59KCkpO1xuZXhwb3J0IHsgRFBvbHlnb24gfTtcbiIsImltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IGNoZWNrRnVuY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEROdW1iZXJzIH0gZnJvbSAnLi9ETnVtYmVycyc7XG5pbXBvcnQgeyBEUG9seWdvbiB9IGZyb20gJy4vRFBvbHlnb24nO1xudmFyIERMaW5lID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBETGluZShhLCBiLCBjLCBiZWdpbiwgZW5kKSB7XG4gICAgICAgIGlmIChiZWdpbiA9PT0gdm9pZCAwKSB7IGJlZ2luID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICBpZiAoZW5kID09PSB2b2lkIDApIHsgZW5kID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICB0aGlzLmEgPSBhO1xuICAgICAgICB0aGlzLmIgPSBiO1xuICAgICAgICB0aGlzLmMgPSBjO1xuICAgICAgICB0aGlzLmJlZ2luID0gYmVnaW47XG4gICAgICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIH1cbiAgICBETGluZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUodGhpcy5hLCB0aGlzLmIsIHRoaXMuYywgdGhpcy5iZWdpbi5jbG9uZSgpLCB0aGlzLmVuZC5jbG9uZSgpKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5maW5kUGVycGVuZGljdWxhciA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2ZpbmRQZXJwZW5kaWN1bGFyJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmJlZ2luJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzLmJlZ2luKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuZW5kJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzLmVuZClcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBETGluZSgtdGhpcy5iLCB0aGlzLmEsIHRoaXMuYiAqIHAueCAtIHRoaXMuYSAqIHAueSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUucGVycGVuZGljdWxhckRpc3RhbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbigncGVycGVuZGljdWxhckRpc3RhbmNlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmJlZ2luJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzLmJlZ2luKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuZW5kJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzLmVuZClcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKTtcbiAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXJMaW5lID0gdGhpcy5maW5kUGVycGVuZGljdWxhcihwKTtcbiAgICAgICAgdmFyIHRhcmdldFBvaW50ID0gcGVycGVuZGljdWxhckxpbmUuZmluZFBvaW50KHRoaXMpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0UG9pbnQuZGlzdGFuY2UocCk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKGwsIGQsIGluY2x1ZGVPbmx5KSB7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IDA7IH1cbiAgICAgICAgaWYgKGluY2x1ZGVPbmx5ID09PSB2b2lkIDApIHsgaW5jbHVkZU9ubHkgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgcCA9IHRoaXMuZmluZFBvaW50KGwpO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgaWYgKGluY2x1ZGVPbmx5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5zaWRlUmFuZ2UocCwgZCkgJiYgbC5pbnNpZGVSYW5nZShwLCBkKSA/IHAgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5SYW5nZShwLCBkKSAmJiBsLmluUmFuZ2UocCwgZCkgPyBwIDogbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5pbnRlcnNlY3Rpb25XaXRoQ2lyY2xlID0gZnVuY3Rpb24gKGNpcmNsZSkge1xuICAgICAgICB2YXIgY2VudGVyID0gY2lyY2xlLmNlbnRlciwgciA9IGNpcmNsZS5yO1xuICAgICAgICB2YXIgcGVyID0gdGhpcy5maW5kUGVycGVuZGljdWxhcihjZW50ZXIpO1xuICAgICAgICB2YXIgdCA9IHRoaXMuZmluZFBvaW50KHBlcik7XG4gICAgICAgIHZhciBkaXN0YW5jZSA9IHQuZGlzdGFuY2UoY2VudGVyKTtcbiAgICAgICAgaWYgKHRoaXMuYmVnaW4uZXF1YWwoY2VudGVyKSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVuZC5lcXVhbChjZW50ZXIpKSB7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3RhbmNlIDwgcikge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYztcbiAgICAgICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3QgPSBjZW50ZXIuZGlzdGFuY2UodCk7XG4gICAgICAgICAgICAgICAgdmFyIG1vdmUgPSBNYXRoLnNxcnQociAqIHIgLSBjdCAqIGN0KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgICAgICAgICB0LnggPSB0aGlzLmJlZ2luLng7XG4gICAgICAgICAgICAgICAgICAgIHZhciByMV8xID0gdC5jbG9uZSgpLm1vdmUoMCwgLW1vdmUpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjJfMSA9IHQuY2xvbmUoKS5tb3ZlKDAsIG1vdmUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3IxXzEsIHIyXzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgICAgICAgICB0LnkgPSB0aGlzLmJlZ2luLnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByMV8yID0gdC5jbG9uZSgpLm1vdmUobW92ZSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByMl8yID0gdC5jbG9uZSgpLm1vdmUoLW1vdmUsIDApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3IxXzIsIHIyXzJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmJlZ2luLmxpa2UoY2VudGVyKSkge1xuICAgICAgICAgICAgICAgIHZhciBwID0gdGhpcy5iZWdpbi5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy5tb3ZlUG9pbnQocCwgciksIHRoaXMubW92ZVBvaW50KHAsIC1yKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5lbmQubGlrZShjZW50ZXIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmVuZC5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbdGhpcy5tb3ZlUG9pbnQocCwgciksIHRoaXMubW92ZVBvaW50KHAsIC1yKV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcyA9IGEgKiBhICsgYiAqIGI7XG4gICAgICAgICAgICB2YXIgZCA9IHIgKiByIC0gYyAqIGMgLyBzO1xuICAgICAgICAgICAgdmFyIG11bHQgPSBNYXRoLnNxcnQoZCAvIHMpO1xuICAgICAgICAgICAgdmFyIHIxID0gdC5jbG9uZSgpLm1vdmUoYiAqIG11bHQsIC1hICogbXVsdCk7XG4gICAgICAgICAgICB2YXIgcjIgPSB0LmNsb25lKCkubW92ZSgtYiAqIG11bHQsIGEgKiBtdWx0KTtcbiAgICAgICAgICAgIHJldHVybiBbcjEsIHIyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlzdGFuY2UgPT09IHIpIHtcbiAgICAgICAgICAgIHJldHVybiB0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmluUmFuZ2UgPSBmdW5jdGlvbiAocCwgZCkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIG1pblggPSBfYS5taW5YLCBtaW5ZID0gX2EubWluWSwgbWF4WCA9IF9hLm1heFgsIG1heFkgPSBfYS5tYXhZO1xuICAgICAgICB2YXIgeCA9IHAueCwgeSA9IHAueTtcbiAgICAgICAgdmFyIGlzSW5YID0geCA+PSBtaW5YIC0gZCAmJiB4IDw9IG1heFggKyBkO1xuICAgICAgICB2YXIgaXNJblkgPSB5ID49IG1pblkgLSBkICYmIHkgPD0gbWF4WSArIGQ7XG4gICAgICAgIHJldHVybiBpc0luWCAmJiBpc0luWTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5pbnNpZGVSYW5nZSA9IGZ1bmN0aW9uIChwLCBkKSB7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IDA7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgYmVnaW4gPSBfYS5iZWdpbiwgZW5kID0gX2EuZW5kO1xuICAgICAgICByZXR1cm4gdGhpcy5pblJhbmdlKHAsIGQpICYmICFiZWdpbi5saWtlKHAsIDAuMDAwMDEpICYmICFlbmQubGlrZShwLCAwLjAwMDAxKTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiY2VudGVyXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iZWdpblxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLnNldElmTGVzc1RoYW4odGhpcy5lbmQpXG4gICAgICAgICAgICAgICAgLm1vdmUodGhpcy5lbmRcbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHRoaXMuYmVnaW5cbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5taW51cygpKVxuICAgICAgICAgICAgICAgIC5hYnMoKVxuICAgICAgICAgICAgICAgIC5taW51cygpXG4gICAgICAgICAgICAgICAgLmRpdmlkZSgyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcIm1pblhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmJlZ2luLngsIHRoaXMuZW5kLngpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtaW5ZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5iZWdpbi55LCB0aGlzLmVuZC55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWF4WFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuYmVnaW4ueCwgdGhpcy5lbmQueCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcIm1heFlcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmJlZ2luLnksIHRoaXMuZW5kLnkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRExpbmUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gXCIoXCIuY29uY2F0KHRoaXMuYSwgXCIsIFwiKS5jb25jYXQodGhpcy5iLCBcIiwgXCIpLmNvbmNhdCh0aGlzLmMsIFwiKVwiKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmEsIHRoaXMuYiwgdGhpcy5jXTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS54ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KC10aGlzLmMgLyB0aGlzLmEsIHAueSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHAueCwgLXRoaXMuYyAvIHRoaXMuYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYiAvIHRoaXMuYSAqIHAueSAtIHRoaXMuYyAvIHRoaXMuYSwgcC55KTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS55ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KC10aGlzLmMgLyB0aGlzLmEsIHAueSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHAueCwgLXRoaXMuYyAvIHRoaXMuYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQocC54LCAtdGhpcy5hIC8gdGhpcy5iICogcC54IC0gdGhpcy5jIC8gdGhpcy5iKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5maW5kUG9pbnQgPSBmdW5jdGlvbiAobCkge1xuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSAmJiBsLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCAmJiBsLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCAmJiBsLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtbC5jIC8gbC5hLCAtdGhpcy5jIC8gdGhpcy5iKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSAmJiBsLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5jIC8gdGhpcy5hLCAtbC5jIC8gbC5iKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgdmFyIHggPSAtdGhpcy5jIC8gdGhpcy5hO1xuICAgICAgICAgICAgcmV0dXJuIGwueShuZXcgRFBvaW50KHgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgdmFyIHkgPSAtdGhpcy5jIC8gdGhpcy5iO1xuICAgICAgICAgICAgcmV0dXJuIGwueChuZXcgRFBvaW50KDAsIHkpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobC5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgdmFyIHggPSAtbC5jIC8gbC5hO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueShuZXcgRFBvaW50KHgpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobC5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgdmFyIHkgPSAtbC5jIC8gbC5iO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueChuZXcgRFBvaW50KDAsIHkpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzID0gdGhpcy55KG5ldyBEUG9pbnQoKGwuYyAvIGwuYiAtIHRoaXMuYyAvIHRoaXMuYikgLyAodGhpcy5hIC8gdGhpcy5iIC0gbC5hIC8gbC5iKSkpO1xuICAgICAgICBpZiAoIWlzRmluaXRlKHJlcy54KSAmJiAhaXNGaW5pdGUocmVzLnkpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJpc1BhcmFsbGVsXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1BhcmFsbGVsWCB8fCB0aGlzLmlzUGFyYWxsZWxZO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJpc1BhcmFsbGVsWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRoaXMuYikgPCAwLjAwMTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiaXNQYXJhbGxlbFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLmEpIDwgMC4wMDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcInBvaW50c1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmJlZ2luLCB0aGlzLmVuZF07XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBETGluZS5wcm90b3R5cGUuZ2V0RmkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2dldEZpJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmJlZ2luJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzLmJlZ2luKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuZW5kJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzLmVuZCk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuZW5kLmNsb25lKCkubW92ZSh0aGlzLmJlZ2luLmNsb25lKCkubWludXMoKSksIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdmFyIHYgPSBNYXRoLmF0YW4yKHksIHgpIC0gTWF0aC5QSTtcbiAgICAgICAgaWYgKHYgPiAwKSB7XG4gICAgICAgICAgICB2ID0gTWF0aC5QSSAtIHY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChNYXRoLlBJIC0gdikgJSAoTWF0aC5QSSAqIDIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnRvV0tUID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBfYiA9IF9hLmJlZ2luLCB4MSA9IF9iLngsIHkxID0gX2IueSwgX2MgPSBfYS5lbmQsIHgyID0gX2MueCwgeTIgPSBfYy55O1xuICAgICAgICByZXR1cm4gXCJMSU5FU1RSSU5HIChcIi5jb25jYXQoeDEsIFwiIFwiKS5jb25jYXQoeTEsIFwiLCBcIikuY29uY2F0KHgyLCBcIiBcIikuY29uY2F0KHkyLCBcIilcIik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUubW92ZVBvaW50ID0gZnVuY3Rpb24gKGksIGspIHtcbiAgICAgICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGkpO1xuICAgICAgICB2YXIgcCA9IGlzQXJyYXkgPyBpIDogW2ldO1xuICAgICAgICB2YXIgZCA9IChpc0FycmF5ID8gayA6IFtrXSk7XG4gICAgICAgIHZhciBmaSA9IHRoaXMuZmluZEZpKG5ldyBETGluZSgxLCAwLCAwKSk7XG4gICAgICAgIHZhciB0ZCA9IHRoaXMueChuZXcgRFBvaW50KDEsIDEpKS5kaXN0YW5jZSh0aGlzLngobmV3IERQb2ludCgyLCAyKSkpIC8gMjtcbiAgICAgICAgdmFyIHNpbkNvcyA9IG5ldyBEUG9pbnQoTWF0aC5zaW4oZmkpLCBNYXRoLmNvcyhmaSkpO1xuICAgICAgICB2YXIgZHQgPSBzaW5Db3MuY2xvbmUoKS5zY2FsZSh0ZCk7XG4gICAgICAgIHZhciBwMVQgPSBwWzBdLmNsb25lKCkubW92ZShkdC5jbG9uZSgpLm1pbnVzKCkpO1xuICAgICAgICB2YXIgcDJUID0gcFswXS5jbG9uZSgpLm1vdmUoZHQpO1xuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIGlmIChETnVtYmVycy5saWtlKHRoaXMueShwMVQpLnksIHAxVC55KSB8fCBETnVtYmVycy5saWtlKHRoaXMueShwMlQpLnksIHAyVC55KSkge1xuICAgICAgICAgICAgcmVzID0gcC5tYXAoZnVuY3Rpb24gKHQsIGluZGV4KSB7IHJldHVybiB0LmNsb25lKClcbiAgICAgICAgICAgICAgICAubW92ZShzaW5Db3MuY2xvbmUoKS5zY2FsZShkW2luZGV4XSkpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHAubWFwKGZ1bmN0aW9uICh0LCBpbmRleCkgeyByZXR1cm4gdC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1vdmUoc2luQ29zLmNsb25lKCkuc2NhbGUoZFtpbmRleF0pXG4gICAgICAgICAgICAgICAgLnNldFgoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIHggPSBfYS54O1xuICAgICAgICAgICAgICAgIHJldHVybiAteDtcbiAgICAgICAgICAgIH0pKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzQXJyYXkgPyByZXMgOiByZXNbMF07XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZmluZEZpID0gZnVuY3Rpb24gKF9hLCBkZWx0YSkge1xuICAgICAgICB2YXIgYSA9IF9hLmEsIGIgPSBfYS5iO1xuICAgICAgICBpZiAoZGVsdGEgPT09IHZvaWQgMCkgeyBkZWx0YSA9IDEuMDAwMTsgfVxuICAgICAgICB2YXIgX2IgPSB0aGlzLCBxID0gX2IuYSwgdyA9IF9iLmI7XG4gICAgICAgIHZhciB2YWwgPSAocSAqIGEgKyB3ICogYikgLyAoTWF0aC5zcXJ0KHEgKiBxICsgdyAqIHcpICogTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIpKTtcbiAgICAgICAgaWYgKHZhbCA+IDEgJiYgdmFsIDwgZGVsdGEpIHtcbiAgICAgICAgICAgIHZhbCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsIDwgLTEgJiYgdmFsID4gLWRlbHRhKSB7XG4gICAgICAgICAgICB2YWwgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWF0aC5hY29zKHZhbCk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUudmVjdG9yUHJvZHVjdCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYztcbiAgICAgICAgdmFyIF9iID0gdGhpcywgcSA9IF9iLmEsIHcgPSBfYi5iLCBlID0gX2IuYztcbiAgICAgICAgcmV0dXJuIG5ldyBETGluZSh3ICogYyAtIGUgKiBiLCBlICogYSAtIHEgKiBjLCBxICogYiAtIHcgKiBhKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5icmVzZW5oYW1zTGluZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5iZWdpbiwgeDAgPSBfYS54LCB5MCA9IF9hLnk7XG4gICAgICAgIHZhciBfYiA9IHRoaXMuZW5kLCB4MSA9IF9iLngsIHkxID0gX2IueTtcbiAgICAgICAgdmFyIGR4ID0gTWF0aC5hYnMoeDEgLSB4MCk7XG4gICAgICAgIHZhciBzeCA9IHgwIDwgeDEgPyAxIDogLTE7XG4gICAgICAgIHZhciBkeSA9IC1NYXRoLmFicyh5MSAtIHkwKTtcbiAgICAgICAgdmFyIHN5ID0geTAgPCB5MSA/IDEgOiAtMTtcbiAgICAgICAgdmFyIGVycm9yID0gZHggKyBkeTtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERQb2ludCh4MCwgeTApKTtcbiAgICAgICAgICAgIGlmICh4MCA9PT0geDEgJiYgeTAgPT09IHkxKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZTIgPSAyICogZXJyb3I7XG4gICAgICAgICAgICBpZiAoZTIgPj0gZHkpIHtcbiAgICAgICAgICAgICAgICBpZiAoeDAgPT09IHgxKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlcnJvciArPSBkeTtcbiAgICAgICAgICAgICAgICB4MCArPSBzeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlMiA8PSBkeCkge1xuICAgICAgICAgICAgICAgIGlmICh5MCA9PT0geTEpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVycm9yICs9IGR4O1xuICAgICAgICAgICAgICAgIHkwICs9IHN5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICByZXR1cm4gRExpbmU7XG59KCkpO1xuZXhwb3J0IHsgRExpbmUgfTtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5pbXBvcnQgeyBETGluZSB9IGZyb20gJy4vRExpbmUnO1xuaW1wb3J0IHsgRFBvbHlnb24gfSBmcm9tICcuL0RQb2x5Z29uJztcbmltcG9ydCB7IGNoZWNrRnVuY3Rpb24sIGNyZWF0ZUFycmF5LCBER2VvLCBkaXYsIGlzRGVmQW5kTm90TnVsbCwgdG9EZWdyZWVzTWludXRlc1NlY29uZHMgfSBmcm9tICcuL3V0aWxzJztcbnZhciBkaWZmID0gMDtcbnZhciByYWRpYW5zUG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xudmFyIHBzZXVkb01lcmNhdG9yUG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xudmFyIHdvcmxkR2VvZGV0aWNQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG5leHBvcnQgdmFyIEVBUlRIX1JBRElVU19JTl9NRVRFUlMgPSA2Mzc4MTM3O1xudmFyIEVBUlRIX0lOX01FVEVSUyA9IDIwMDM3NTA4LjM0O1xudmFyIERFR1JFRVNfSU5fRUFSVEggPSAxODA7XG52YXIgTUVURVJTX0lOX09ORV9ERUdSRUUgPSBFQVJUSF9JTl9NRVRFUlMgLyBERUdSRUVTX0lOX0VBUlRIO1xudmFyIERFR1JFRVNfSU5fT05FX01FVEVSID0gREVHUkVFU19JTl9FQVJUSCAvIEVBUlRIX0lOX01FVEVSUztcbmV4cG9ydCB2YXIgSEFMRl9QSV9JTl9ERUdSRUUgPSA5MDtcbmV4cG9ydCB2YXIgUElfSU5fREVHUkVFID0gMTgwO1xuZXhwb3J0IHZhciBET1VCTEVfUElfSU5fREVHUkVFID0gMzYwO1xuZXhwb3J0IHZhciBQSV9UT19ERUdSRUUgPSBNYXRoLlBJIC8gUElfSU5fREVHUkVFO1xuZXhwb3J0IHZhciBERUdSRUVfVE9fUEkgPSBQSV9JTl9ERUdSRUUgLyBNYXRoLlBJO1xudmFyIERQb2ludCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRFBvaW50KHgsIHksIHopIHtcbiAgICAgICAgaWYgKHggPT09IHZvaWQgMCkgeyB4ID0gMDsgfVxuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHRoaXMueiA9IHo7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHt9O1xuICAgIH1cbiAgICBEUG9pbnQuemVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoKTtcbiAgICB9O1xuICAgIERQb2ludC5wYXJzZSA9IGZ1bmN0aW9uIChjLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgdmFyIF9hID0gYywgbGF0ID0gX2EubGF0LCBsb24gPSBfYS5sb24sIF9iID0gX2EubG5nLCBsbmcgPSBfYiA9PT0gdm9pZCAwID8gbG9uIDogX2IsIGFsdCA9IF9hLmFsdDtcbiAgICAgICAgaWYgKGxhdCAmJiBsbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KGxuZywgbGF0LCBhbHQgIT09IG51bGwgJiYgYWx0ICE9PSB2b2lkIDAgPyBhbHQgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2MgPSBjLCB4ID0gX2MueCwgeSA9IF9jLnksIHogPSBfYy56LCBwcm9wZXJ0aWVzID0gX19yZXN0KF9jLCBbXCJ4XCIsIFwieVwiLCBcInpcIl0pO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHgpICYmIGlzRGVmQW5kTm90TnVsbCh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSwgeikuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdCA9IGM7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdQb2ludCcpIHtcbiAgICAgICAgICAgIHQgPSBjLmNvb3JkaW5hdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdGZWF0dXJlJykge1xuICAgICAgICAgICAgdmFyIGYgPSBEUG9pbnQucGFyc2UoYy5nZW9tZXRyeSwgZm9ybWF0KTtcbiAgICAgICAgICAgIGYucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCBjLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9bXngtel0vZ21pdSwgJycpXG4gICAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChhLCBrLCBpbmRleCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHN3aXRjaCAoaykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICBhLnggPSAoX2EgPSB0W2luZGV4XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIGEueSA9IChfYiA9IHRbaW5kZXhdKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgYS56ID0gdFtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSwgbmV3IERQb2ludCgpKTtcbiAgICB9O1xuICAgIERQb2ludC5wYXJzZUZyb21XS1QgPSBmdW5jdGlvbiAod2t0KSB7XG4gICAgICAgIHZhciByZWdleHAgPSAvUE9JTlQgXFwoKD88ZGF0YT4oPzooPyFcXCkpLikqPylcXCkkL21pdTtcbiAgICAgICAgdmFyIGRhdGEgPSB3a3QudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHZhciByZXMgPSByZWdleHAuZXhlYyhkYXRhKTtcbiAgICAgICAgdmFyIF9hID0gX19yZWFkKHJlcy5ncm91cHMuZGF0YS5zcGxpdCgnICcpLm1hcChOdW1iZXIpLCAzKSwgeCA9IF9hWzBdLCB5ID0gX2FbMV0sIHogPSBfYVsyXTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSwgeik7XG4gICAgfTtcbiAgICBEUG9pbnQucmFuZG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludChNYXRoLnJhbmRvbSgpLCBNYXRoLnJhbmRvbSgpKTtcbiAgICB9O1xuICAgIERQb2ludC5nZXRUaWxlRnJvbVF1YWRLZXkgPSBmdW5jdGlvbiAocXVhZEtleSkge1xuICAgICAgICB2YXIgcCA9IG5ldyBEUG9pbnQoMCwgMCwgcXVhZEtleS5sZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gcC56OyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgbWFzayA9IDEgPDwgKGkgLSAxKTtcbiAgICAgICAgICAgIHN3aXRjaCAocXVhZEtleVtwLnogLSBpXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgICAgICAgICAgcC54IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICAgICAgICBwLnkgfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICAgICAgICAgIHAueCB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBwLnkgfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFF1YWRLZXkgZGlnaXQgc2VxdWVuY2UuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvRGVncmVlc01pbnV0ZXNTZWNvbmRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogdG9EZWdyZWVzTWludXRlc1NlY29uZHModGhpcy54KSxcbiAgICAgICAgICAgIHk6IHRvRGVncmVlc01pbnV0ZXNTZWNvbmRzKHRoaXMueSlcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0VGlsZUZyb21Db29yZHMgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICBpZiAoem9vbSA9PT0gdm9pZCAwKSB7IHpvb20gPSB0aGlzLno7IH1cbiAgICAgICAgY2hlY2tGdW5jdGlvbignZ2V0VGlsZUZyb21Db29yZHMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpO1xuICAgICAgICB2YXIgeCA9IE1hdGguZmxvb3IoKHRoaXMueCArIFBJX0lOX0RFR1JFRSkgLyBET1VCTEVfUElfSU5fREVHUkVFICogKE1hdGgucG93KDIsIHpvb20pKSk7XG4gICAgICAgIHZhciB5ID0gTWF0aC5mbG9vcigoMSAtIE1hdGgubG9nKE1hdGgudGFuKHRoaXMueSAqIFBJX1RPX0RFR1JFRSkgKyAxIC8gTWF0aC5jb3ModGhpcy55ICogUElfVE9fREVHUkVFKSkgLyBNYXRoLlBJKSAvIDIgKiAoTWF0aC5wb3coMiwgem9vbSkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSwgem9vbSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmdldFF1YWRLZXlGcm9tVGlsZSA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIGlmICh6b29tID09PSB2b2lkIDApIHsgem9vbSA9IHRoaXMuejsgfVxuICAgICAgICB2YXIgcXVhZEtleSA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gem9vbTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gMDtcbiAgICAgICAgICAgIHZhciBtYXNrID0gMSA8PCAoaSAtIDEpO1xuICAgICAgICAgICAgaWYgKCh0aGlzLnggJiBtYXNrKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGRpZ2l0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHRoaXMueSAmIG1hc2spICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQrKztcbiAgICAgICAgICAgICAgICBkaWdpdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVhZEtleS5wdXNoKGRpZ2l0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcXVhZEtleS5qb2luKCcnKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0Q29vcmRzRnJvbVRpbGUgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICBpZiAoem9vbSA9PT0gdm9pZCAwKSB7IHpvb20gPSB0aGlzLno7IH1cbiAgICAgICAgY2hlY2tGdW5jdGlvbignZ2V0Q29vcmRzRnJvbVRpbGUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlVUludCh0aGlzKTtcbiAgICAgICAgdmFyIG4gPSBNYXRoLlBJIC0gMiAqIE1hdGguUEkgKiB0aGlzLnkgLyAoTWF0aC5wb3coMiwgem9vbSkpO1xuICAgICAgICB2YXIgeCA9IHRoaXMueCAvIChNYXRoLnBvdygyLCB6b29tKSkgKiBET1VCTEVfUElfSU5fREVHUkVFIC0gUElfSU5fREVHUkVFO1xuICAgICAgICB2YXIgeSA9IFBJX0lOX0RFR1JFRSAvIE1hdGguUEkgKiBNYXRoLmF0YW4oKE1hdGguZXhwKG4pIC0gTWF0aC5leHAoLW4pKSAvIDIpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6b29tKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9Db29yZHMgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgvW154LXpdL2dtaXUsICcnKS5zcGxpdCgnJylcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGspIHsgcmV0dXJuICh7XG4gICAgICAgICAgICB4OiBfdGhpcy54LFxuICAgICAgICAgICAgeTogX3RoaXMueSxcbiAgICAgICAgICAgIHo6IF90aGlzLnpcbiAgICAgICAgfSlba107IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiByICE9PSB1bmRlZmluZWQ7IH0pO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0dlb0pTT04gPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnUG9pbnQnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMudG9Db29yZHMoZm9ybWF0KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0dlb0pTT05GZWF0dXJlID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgcHJvcGVydGllczogX19hc3NpZ24oe30sIHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBnZW9tZXRyeTogdGhpcy50b0dlb0pTT04oZm9ybWF0KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5maW5kTGluZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2ZpbmRMaW5lJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApO1xuICAgICAgICBpZiAodGhpcy5lcXVhbChwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmluZExpbmUocC5jbG9uZSgpLm1vdmUoMCwgMSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBhID0gdGhpcy55IC0gcC55IC0gZGlmZjtcbiAgICAgICAgdmFyIGIgPSBwLnggLSB0aGlzLnggLSBkaWZmO1xuICAgICAgICB2YXIgYyA9IHRoaXMueCAqIHAueSAtIHAueCAqIHRoaXMueSAtIGRpZmY7XG4gICAgICAgIGlmIChhID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERMaW5lKDAsIDEsIGMgLyBiLCB0aGlzLCBwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBETGluZSgxLCAwLCBjIC8gYSwgdGhpcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBETGluZShhLCBiLCBjLCB0aGlzLCBwKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZmluZElubmVyQW5nbGUgPSBmdW5jdGlvbiAocDEsIHAzKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2ZpbmRJbm5lckFuZ2xlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AxJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwMSlcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwMycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocDMpO1xuICAgICAgICB2YXIgYTEgPSB0aGlzLmZpbmRMaW5lKHAxKS5nZXRGaSgpO1xuICAgICAgICB2YXIgYTIgPSB0aGlzLmZpbmRMaW5lKHAzKS5nZXRGaSgpO1xuICAgICAgICBpZiAoYTIgPj0gYTEpIHtcbiAgICAgICAgICAgIHJldHVybiBhMiAtIGExO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhMiArIE1hdGguUEkgKiAyIC0gYTE7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQodGhpcy54LCBcIiBcIikuY29uY2F0KHRoaXMueSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMueCwgdGhpcy55XTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuaGVpZ2h0ID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy56ID0gejtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvV0tUID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgIHJldHVybiBcIlBPSU5UIChcIi5jb25jYXQoeCwgXCIgXCIpLmNvbmNhdCh5LCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpc3RhbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGlzdGFuY2UnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIHZhciBkeCA9IHAueCAtIHRoaXMueDtcbiAgICAgICAgdmFyIGR5ID0gcC55IC0gdGhpcy55O1xuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGlzdGFuY2UzZCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2Rpc3RhbmNlM2QnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocClcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLnonKVxuICAgICAgICAgICAgLnNob3VsZEV4aXN0KHRoaXMueilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwLnonKVxuICAgICAgICAgICAgLnNob3VsZEV4aXN0KHAueik7XG4gICAgICAgIHZhciBkeCA9IHAueCAtIHRoaXMueDtcbiAgICAgICAgdmFyIGR5ID0gcC55IC0gdGhpcy55O1xuICAgICAgICB2YXIgZHogPSBwLnogLSB0aGlzLno7XG4gICAgICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHRoaXMueCA9IHR5cGVvZiB4ID09PSAnbnVtYmVyJyA/IHggOiB4KHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0WiA9IGZ1bmN0aW9uICh6KSB7XG4gICAgICAgIHRoaXMueiA9IHR5cGVvZiB6ID09PSAnbnVtYmVyJyA/IHogOiB6KHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0WSA9IGZ1bmN0aW9uICh5KSB7XG4gICAgICAgIHRoaXMueSA9IHR5cGVvZiB5ID09PSAnbnVtYmVyJyA/IHkgOiB5KHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHR5cGVvZiB2ID09PSAnb2JqZWN0JyA/IHYgOiB2KHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwID0gbmV3IERQb2ludCh0aGlzLngsIHRoaXMueSwgdGhpcy56KTtcbiAgICAgICAgcC5wcm9wZXJ0aWVzID0gX19hc3NpZ24oe30sIHRoaXMucHJvcGVydGllcyk7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnggPiBwLnggJiYgdGhpcy55ID4gcC55O1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnggPCBwLnggJiYgdGhpcy55IDwgcC55O1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5ndE9yRXF1YWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ndChwKSB8fCB0aGlzLmVxdWFsKHApO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5sdE9yRXF1YWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sdChwKSB8fCB0aGlzLmVxdWFsKHApO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3RhdGUgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB2YXIgeCA9IHRoaXMueCAqIE1hdGguY29zKGEpIC0gdGhpcy55ICogTWF0aC5zaW4oYSk7XG4gICAgICAgIHZhciB5ID0gdGhpcy54ICogTWF0aC5zaW4oYSkgKyB0aGlzLnkgKiBNYXRoLmNvcyhhKTtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZTNkWCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHkgPSBfYS55LCB6ID0gX2EuejtcbiAgICAgICAgdGhpcy55ID0geSAqIE1hdGguY29zKGEpICsgeiAqIE1hdGguc2luKGEpO1xuICAgICAgICB0aGlzLnogPSAteSAqIE1hdGguc2luKGEpICsgeiAqIE1hdGguY29zKGEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlM2RZID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeCA9IF9hLngsIHogPSBfYS56O1xuICAgICAgICB0aGlzLnggPSB4ICogTWF0aC5jb3MoYSkgKyB6ICogTWF0aC5zaW4oYSk7XG4gICAgICAgIHRoaXMueiA9IC14ICogTWF0aC5zaW4oYSkgKyB6ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3RhdGUzZFogPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgIHRoaXMueCA9IHggKiBNYXRoLmNvcyhhKSAtIHkgKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdGhpcy55ID0gLXggKiBNYXRoLnNpbihhKSArIHkgKiBNYXRoLmNvcyhhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICsgeC54O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKyB4Lnk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiArIHguejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICsgeDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICsgeTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiArIHo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRlZ3JlZVRvTWV0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkZWdyZWVUb01ldGVycycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcyk7XG4gICAgICAgIHZhciB4ID0gKCh0aGlzLnggKyBQSV9JTl9ERUdSRUUpICUgRE9VQkxFX1BJX0lOX0RFR1JFRSAtIFBJX0lOX0RFR1JFRSkgKiBNRVRFUlNfSU5fT05FX0RFR1JFRTtcbiAgICAgICAgdmFyIHkgPSAoTWF0aC5sb2coTWF0aC50YW4oKCh0aGlzLnkgKyBIQUxGX1BJX0lOX0RFR1JFRSkgJSBQSV9JTl9ERUdSRUUpICpcbiAgICAgICAgICAgIChNYXRoLlBJIC8gRE9VQkxFX1BJX0lOX0RFR1JFRSkpKSAvIFBJX1RPX0RFR1JFRSkgKiBNRVRFUlNfSU5fT05FX0RFR1JFRTtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLm1ldGVyc1RvRGVncmVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdtZXRlcnNUb0RlZ3JlZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcyk7XG4gICAgICAgIHZhciBsb24gPSB0aGlzLnggKiBERUdSRUVTX0lOX09ORV9NRVRFUjtcbiAgICAgICAgdmFyIGxhdCA9IE1hdGguYXRhbihNYXRoLnBvdyhNYXRoLkUsICgodGhpcy55IC8gTUVURVJTX0lOX09ORV9ERUdSRUUpICogUElfVE9fREVHUkVFKSkpICpcbiAgICAgICAgICAgIChET1VCTEVfUElfSU5fREVHUkVFIC8gTWF0aC5QSSkgLSBIQUxGX1BJX0lOX0RFR1JFRTtcbiAgICAgICAgdGhpcy54ID0gbG9uO1xuICAgICAgICB0aGlzLnkgPSBsYXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kZWdyZWVUb1JhZGlhbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2RlZ3JlZVRvUmFkaWFucycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlKFBJX1RPX0RFR1JFRSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJhZGlhbnNUb0RlZ3JlZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ3JhZGlhbnNUb0RlZ3JlZXMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlUmFkaWFucyh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUoREVHUkVFX1RPX1BJKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucmFkaWFuc1RvTWV0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdyYWRpYW5zVG9NZXRlcnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlUmFkaWFucyh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmFkaWFuc1RvRGVncmVlcygpLmRlZ3JlZVRvTWV0ZXJzKCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLm1ldGVyc1RvUmFkaWFucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignbWV0ZXJzVG9SYWRpYW5zJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0ZXJzVG9EZWdyZWUoKS5kZWdyZWVUb1JhZGlhbnMoKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm91bmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGgucm91bmQodGhpcy54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5yb3VuZCh0aGlzLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuY2VpbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5jZWlsKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGguY2VpbCh0aGlzLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZmxvb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGguZmxvb3IodGhpcy54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5mbG9vcih0aGlzLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9GaXhlZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIGlmIChuID09PSB2b2lkIDApIHsgbiA9IDI7IH1cbiAgICAgICAgdGhpcy54ID0gcGFyc2VGbG9hdCh0aGlzLngudG9GaXhlZChuKSk7XG4gICAgICAgIHRoaXMueSA9IHBhcnNlRmxvYXQodGhpcy55LnRvRml4ZWQobikpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLmFicyh0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLmFicyh0aGlzLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICogeC54O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKiB4Lnk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAqIHguejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICogeDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICogeTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAqIHo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpdmlkZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggLyB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAvIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56IC8geC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggLyB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgLyB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56IC8gejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAlIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICUgeC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogJSB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAlIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAlIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogJSB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gZGl2KHRoaXMueCwgeC54KTtcbiAgICAgICAgICAgIHlWID0gZGl2KHRoaXMueSwgeC55KTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gZGl2KHRoaXMueiwgeC56KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gZGl2KHRoaXMueCwgeCk7XG4gICAgICAgICAgICB5ViA9IGRpdih0aGlzLnksIHkpO1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gZGl2KHRoaXMueiwgeik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueCA9PT0gcC54ICYmIHRoaXMueSA9PT0gcC55ICYmIHRoaXMueiA9PT0gcC56O1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5saWtlID0gZnVuY3Rpb24gKHAsIGQpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwLjAwMTsgfVxuICAgICAgICBpZiAodGhpcy5lcXVhbChwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxpa2VYID0gTWF0aC5hYnModGhpcy54IC0gcC54KSA8IGQ7XG4gICAgICAgIHZhciBsaWtlWSA9IE1hdGguYWJzKHRoaXMueSAtIHAueSkgPCBkO1xuICAgICAgICB2YXIgbGlrZVogPSBNYXRoLmFicygoKF9iID0gKF9hID0gdGhpcy56KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBwLnopICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApIC0gKChfZCA9IChfYyA9IHAueikgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogdGhpcy56KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwKSkgPCBkO1xuICAgICAgICByZXR1cm4gbGlrZVggJiYgbGlrZVkgJiYgbGlrZVo7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZsaXBWZXJ0aWNhbGx5ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgdmFyIHYgPSBzaXplO1xuICAgICAgICBpZiAoc2l6ZSBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdiA9IHNpemUueTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnkgPSB2IC0gdGhpcy55O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxpa2VSYWRpYW5zXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocmFkaWFuc1BvbHlnb24ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmFkaWFuc1BvbHlnb24ucHVzaChuZXcgRFBvaW50KC1NYXRoLlBJLCAtTWF0aC5QSSAvIDIpLCBuZXcgRFBvaW50KE1hdGguUEksIE1hdGguUEkgLyAyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmFkaWFuc1BvbHlnb24uc2ltcGxlSW5jbHVkZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxpa2VXb3JsZEdlb2RldGljU3lzdGVtXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAod29ybGRHZW9kZXRpY1BvbHlnb24ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgd29ybGRHZW9kZXRpY1BvbHlnb24ucHVzaChuZXcgRFBvaW50KC0xODAsIC05MCksIG5ldyBEUG9pbnQoMTgwLCA5MCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmxpa2VSYWRpYW5zICYmIHdvcmxkR2VvZGV0aWNQb2x5Z29uLnNpbXBsZUluY2x1ZGUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsaWtlUHNldWRvTWVyY2F0b3JcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChwc2V1ZG9NZXJjYXRvclBvbHlnb24ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcHNldWRvTWVyY2F0b3JQb2x5Z29uLnB1c2gobmV3IERQb2ludCgtMjAwMjYzNzYuMzksIC0yMDA0ODk2Ni4xMCksIG5ldyBEUG9pbnQoMjAwMjYzNzYuMzksIDIwMDQ4OTY2LjEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMubGlrZVJhZGlhbnMgJiYgIXRoaXMubGlrZVdvcmxkR2VvZGV0aWNTeXN0ZW0gJiYgcHNldWRvTWVyY2F0b3JQb2x5Z29uLnNpbXBsZUluY2x1ZGUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ3XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiaFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoeSkge1xuICAgICAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImFyZWFcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNoZWNrRnVuY3Rpb24oJ2FyZWEnKVxuICAgICAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53ICogdGhpcy5oO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiaGlwXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Z1bmN0aW9uKCdoaXAnKVxuICAgICAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcyk7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMudyAqIHRoaXMudyArIHRoaXMuaCAqIHRoaXMuaCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJtaW5cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLngsIHRoaXMueSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJtYXhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLngsIHRoaXMueSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoaXBQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGhpcCA9IHRoaXMuaGlwO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoaGlwLCBoaXApO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwieFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgeCA9IHRoaXMueDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHgpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwieVBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgeSA9IHRoaXMueTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHksIHkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwid1BvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54UG9pbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoUG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnlQb2ludDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxhdFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgdGhpcy55ID0gdjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxuZ1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgdGhpcy54ID0gdjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxvblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgdGhpcy54ID0gdjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImFsdFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuejtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgdGhpcy56ID0gdjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERQb2ludC5wcm90b3R5cGUuc2ltcGxlID0gZnVuY3Rpb24gKHhLZXksIHlLZXksIHpLZXkpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKHhLZXkgPT09IHZvaWQgMCkgeyB4S2V5ID0gJ3gnOyB9XG4gICAgICAgIGlmICh5S2V5ID09PSB2b2lkIDApIHsgeUtleSA9ICd5JzsgfVxuICAgICAgICBpZiAoektleSA9PT0gdm9pZCAwKSB7IHpLZXkgPSAneic7IH1cbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKChfYSA9IHt9LCBfYVt4S2V5XSA9IHRoaXMueCwgX2FbeUtleV0gPSB0aGlzLnksIF9hKSwgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopID8gKF9iID0ge30sXG4gICAgICAgICAgICBfYlt6S2V5XSA9IHRoaXMueixcbiAgICAgICAgICAgIF9iKSA6IHt9KSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldElmTGVzc1RoYW4gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLm1heCh0aGlzLngsIHAueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGgubWF4KHRoaXMueSwgcC55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldElmTW9yZVRoYW4gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLm1pbih0aGlzLngsIHAueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGgubWluKHRoaXMueSwgcC55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLm1pbnVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZSgtMSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLm9ydGhvZHJvbWljUGF0aCA9IGZ1bmN0aW9uIChwb2ludCwgcG9pbnRzQ291bnQpIHtcbiAgICAgICAgaWYgKHBvaW50c0NvdW50ID09PSB2b2lkIDApIHsgcG9pbnRzQ291bnQgPSAzNjA7IH1cbiAgICAgICAgY2hlY2tGdW5jdGlvbignb3J0aG9kcm9taWNQYXRoJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3BvaW50JylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZShwb2ludCk7XG4gICAgICAgIHZhciB0ID0gdGhpcy5jbG9uZSgpLmRlZ3JlZVRvUmFkaWFucygpO1xuICAgICAgICB2YXIgcCA9IHBvaW50LmNsb25lKCkuZGVncmVlVG9SYWRpYW5zKCk7XG4gICAgICAgIHZhciBkID0gTWF0aC5zaW4ocC54IC0gdC54KTtcbiAgICAgICAgdmFyIHN0ZXAgPSAocC54IC0gdC54KSAvIChwb2ludHNDb3VudCAtIDEpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKGNyZWF0ZUFycmF5KHBvaW50c0NvdW50KVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodiwgaSkge1xuICAgICAgICAgICAgdmFyIHggPSB0LnggKyBzdGVwICogaTtcbiAgICAgICAgICAgIHZhciB5ID0gTWF0aC5hdGFuKChNYXRoLnRhbih0LnkpICogTWF0aC5zaW4ocC54IC0geCkpIC8gZCArXG4gICAgICAgICAgICAgICAgKE1hdGgudGFuKHAueSkgKiBNYXRoLnNpbih4IC0gdC54KSkgLyBkKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHkpLnJhZGlhbnNUb0RlZ3JlZXMoKTtcbiAgICAgICAgfSkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zb3J0QnlEaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBwXG4gICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoZCwgaW5kZXgpIHtcbiAgICAgICAgICAgIGQucHJvcGVydGllcy5kaXN0YW5jZSA9IGQuZGlzdGFuY2UoX3RoaXMpO1xuICAgICAgICAgICAgZC5wcm9wZXJ0aWVzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICByZXR1cm4gZDtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnByb3BlcnRpZXMuZGlzdGFuY2UgLSBiLnByb3BlcnRpZXMuZGlzdGFuY2U7IH0pO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5jYWxjdWxhdGVBbHRpdHVkZUJ5RGlzdGFuY2VCZXR3ZWVuUG9pbnRzID0gZnVuY3Rpb24gKHAxLCBwMikge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBpZiAocDEuYWx0ID09PSBwMi5hbHQpIHtcbiAgICAgICAgICAgIHRoaXMuYWx0ID0gcDEuYWx0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIG1pbkFsdCA9IE1hdGgubWluKChfYSA9IHAxLmFsdCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCwgKF9iID0gcDIuYWx0KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwKTtcbiAgICAgICAgICAgIHZhciBtYXhBbHQgPSBNYXRoLm1heCgoX2MgPSBwMS5hbHQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDAsIChfZCA9IHAyLmFsdCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMCk7XG4gICAgICAgICAgICB2YXIgZEFsdCA9IG1heEFsdCAtIG1pbkFsdDtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZTEgPSB0aGlzLmRpc3RhbmNlKHAxKTtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZTIgPSB0aGlzLmRpc3RhbmNlKHAyKTtcbiAgICAgICAgICAgIHZhciB0b3RhbERpc3RhbmNlID0gZGlzdGFuY2UxICsgZGlzdGFuY2UyO1xuICAgICAgICAgICAgaWYgKCgoX2UgPSBwMS5hbHQpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IDApID09PSBtaW5BbHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsdCA9IG1pbkFsdCArIGRpc3RhbmNlMSAvIHRvdGFsRGlzdGFuY2UgKiBkQWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbHQgPSBtaW5BbHQgKyBkaXN0YW5jZTIgLyB0b3RhbERpc3RhbmNlICogZEFsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBEUG9pbnQ7XG59KCkpO1xuZXhwb3J0IHsgRFBvaW50IH07XG4iLCJpbXBvcnQgeyBEUG9pbnQsIEVBUlRIX1JBRElVU19JTl9NRVRFUlMgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBEUG9seWdvbiB9IGZyb20gJy4vRFBvbHlnb24nO1xuaW1wb3J0IHsgY2hlY2tGdW5jdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xudmFyIERDaXJjbGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERDaXJjbGUoY2VudGVyLCByKSB7XG4gICAgICAgIGlmIChjZW50ZXIgPT09IHZvaWQgMCkgeyBjZW50ZXIgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChyID09PSB2b2lkIDApIHsgciA9IDA7IH1cbiAgICAgICAgdGhpcy5jZW50ZXIgPSBjZW50ZXI7XG4gICAgICAgIHRoaXMuciA9IHI7XG4gICAgfVxuICAgIERDaXJjbGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gXCIoXCIuY29uY2F0KHRoaXMuY2VudGVyLnRvU3RyaW5nKCksIFwiLCBcIikuY29uY2F0KHRoaXMuciwgXCIpXCIpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7IGNlbnRlcjogdGhpcy5jZW50ZXIsIHI6IHRoaXMuciB9O1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRENpcmNsZSh0aGlzLmNlbnRlciwgdGhpcy5yKTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmZpbmRQb2ludHMgPSBmdW5jdGlvbiAoYykge1xuICAgICAgICBpZiAodGhpcy5lcXVhbChjKSkge1xuICAgICAgICAgICAgcmV0dXJuIEluZmluaXR5O1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIF9iID0gX2EuY2VudGVyLCB4MCA9IF9iLngsIHkwID0gX2IueSwgcjAgPSBfYS5yO1xuICAgICAgICB2YXIgX2MgPSBjLmNlbnRlciwgeDEgPSBfYy54LCB5MSA9IF9jLnksIHIxID0gYy5yO1xuICAgICAgICB2YXIgcjAyID0gcjAgKiByMDtcbiAgICAgICAgdmFyIGQgPSB0aGlzLmNlbnRlci5kaXN0YW5jZShjLmNlbnRlcik7XG4gICAgICAgIHZhciBhID0gKHIwMiAtIHIxICogcjEgKyBkICogZCkgLyAoMiAqIGQpO1xuICAgICAgICB2YXIgaCA9IE1hdGguc3FydChyMDIgLSBhICogYSk7XG4gICAgICAgIHZhciBhZCA9IGEgLyBkO1xuICAgICAgICB2YXIgZHkgPSB5MSAtIHkwO1xuICAgICAgICB2YXIgZHggPSB4MSAtIHgwO1xuICAgICAgICB2YXIgaGQgPSBoIC8gZDtcbiAgICAgICAgdmFyIHgyID0geDAgKyBhZCAqICh4MSAtIHgwKTtcbiAgICAgICAgdmFyIHkyID0geTAgKyBhZCAqICh5MSAtIHkwKTtcbiAgICAgICAgdmFyIHgzMSA9IHgyICsgaGQgKiBkeTtcbiAgICAgICAgdmFyIHkzMSA9IHkyIC0gaGQgKiBkeDtcbiAgICAgICAgdmFyIHgzMiA9IHgyIC0gaGQgKiBkeTtcbiAgICAgICAgdmFyIHkzMiA9IHkyICsgaGQgKiBkeDtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBpZiAoIWlzTmFOKHgzMSkgJiYgIWlzTmFOKHkzMSkpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKG5ldyBEUG9pbnQoeDMxLCB5MzEpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTmFOKHgzMikgJiYgIWlzTmFOKHkzMikgJiYgISh4MzEgPT09IHgzMiAmJiB5MzEgPT09IHkzMikpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKG5ldyBEUG9pbnQoeDMyLCB5MzIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIGNlbnRlciA9IF9hLmNlbnRlciwgciA9IF9hLnI7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbnRlci5lcXVhbChjZW50ZXIpICYmIHRoaXMuciA9PT0gcjtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmZpbmRQb2x5Z29uSW5zaWRlID0gZnVuY3Rpb24gKHBvaW50Q291bnQsIHN0YXJ0QW5nbGUsIHN0b3BBbmdsZSkge1xuICAgICAgICBpZiAocG9pbnRDb3VudCA9PT0gdm9pZCAwKSB7IHBvaW50Q291bnQgPSA2NDsgfVxuICAgICAgICBpZiAoc3RhcnRBbmdsZSA9PT0gdm9pZCAwKSB7IHN0YXJ0QW5nbGUgPSAwOyB9XG4gICAgICAgIGlmIChzdG9wQW5nbGUgPT09IHZvaWQgMCkgeyBzdG9wQW5nbGUgPSAyICogTWF0aC5QSTsgfVxuICAgICAgICB2YXIgc3RlcCA9IDIgKiBNYXRoLlBJIC8gcG9pbnRDb3VudDtcbiAgICAgICAgdmFyIHBvaW50cyA9IFtdO1xuICAgICAgICB2YXIgYW5nbGUgPSBzdGFydEFuZ2xlO1xuICAgICAgICB3aGlsZSAoYW5nbGUgPCBzdG9wQW5nbGUgLSBzdGVwKSB7XG4gICAgICAgICAgICBwb2ludHMucHVzaChuZXcgRFBvaW50KHRoaXMucikuc2NhbGUoTWF0aC5jb3MoYW5nbGUpLCBNYXRoLnNpbihhbmdsZSkpXG4gICAgICAgICAgICAgICAgLm1vdmUodGhpcy5jZW50ZXIpKTtcbiAgICAgICAgICAgIGFuZ2xlICs9IHN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHggPSB0aGlzLnIgKiBNYXRoLmNvcyhzdG9wQW5nbGUpICsgdGhpcy5jZW50ZXIueDtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnIgKiBNYXRoLnNpbihzdG9wQW5nbGUpICsgdGhpcy5jZW50ZXIueTtcbiAgICAgICAgcG9pbnRzLnB1c2gobmV3IERQb2ludCh4LCB5KSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24ocG9pbnRzKTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmZpbmRQb2x5Z29uSW5zaWRlT25TcGhlcmUgPSBmdW5jdGlvbiAocG9pbnRDb3VudCwgc3RhcnRBbmdsZSwgc3RvcEFuZ2xlKSB7XG4gICAgICAgIGlmIChwb2ludENvdW50ID09PSB2b2lkIDApIHsgcG9pbnRDb3VudCA9IDY0OyB9XG4gICAgICAgIGlmIChzdGFydEFuZ2xlID09PSB2b2lkIDApIHsgc3RhcnRBbmdsZSA9IDA7IH1cbiAgICAgICAgaWYgKHN0b3BBbmdsZSA9PT0gdm9pZCAwKSB7IHN0b3BBbmdsZSA9IDIgKiBNYXRoLlBJOyB9XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2ZpbmRQb2x5Z29uSW5zaWRlT25TcGhlcmUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ2NlbnRlcicpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcy5jZW50ZXIpO1xuICAgICAgICB2YXIgc3RlcCA9IDIgKiBNYXRoLlBJIC8gcG9pbnRDb3VudDtcbiAgICAgICAgdmFyIHBvaW50cyA9IFtdO1xuICAgICAgICB2YXIgYW5nbGUgPSBzdGFydEFuZ2xlO1xuICAgICAgICB3aGlsZSAoYW5nbGUgPCBzdG9wQW5nbGUgLSBzdGVwKSB7XG4gICAgICAgICAgICBwb2ludHMucHVzaCh0aGlzLnNwaGVyZU9mZnNldChhbmdsZSkpO1xuICAgICAgICAgICAgYW5nbGUgKz0gc3RlcDtcbiAgICAgICAgfVxuICAgICAgICBwb2ludHMucHVzaCh0aGlzLnNwaGVyZU9mZnNldChzdG9wQW5nbGUpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihwb2ludHMpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuc3BoZXJlT2Zmc2V0ID0gZnVuY3Rpb24gKGJlYXJpbmcsIGVhcnRoUmFkaXVzKSB7XG4gICAgICAgIGlmIChlYXJ0aFJhZGl1cyA9PT0gdm9pZCAwKSB7IGVhcnRoUmFkaXVzID0gRUFSVEhfUkFESVVTX0lOX01FVEVSUzsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLmNlbnRlci5jbG9uZSgpLmRlZ3JlZVRvUmFkaWFucygpLCBsb24xID0gX2EueCwgbGF0MSA9IF9hLnk7XG4gICAgICAgIHZhciBkQnlSID0gdGhpcy5yIC8gZWFydGhSYWRpdXM7XG4gICAgICAgIHZhciBsYXQgPSBNYXRoLmFzaW4oTWF0aC5zaW4obGF0MSkgKiBNYXRoLmNvcyhkQnlSKSArXG4gICAgICAgICAgICBNYXRoLmNvcyhsYXQxKSAqIE1hdGguc2luKGRCeVIpICogTWF0aC5jb3MoYmVhcmluZykpO1xuICAgICAgICB2YXIgbG9uID0gbG9uMSArXG4gICAgICAgICAgICBNYXRoLmF0YW4yKE1hdGguc2luKGJlYXJpbmcpICogTWF0aC5zaW4oZEJ5UikgKiBNYXRoLmNvcyhsYXQxKSwgTWF0aC5jb3MoZEJ5UikgLSBNYXRoLnNpbihsYXQxKSAqIE1hdGguc2luKGxhdCkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludChsb24sIGxhdCkucmFkaWFuc1RvRGVncmVlcygpO1xuICAgIH07XG4gICAgcmV0dXJuIERDaXJjbGU7XG59KCkpO1xuZXhwb3J0IHsgRENpcmNsZSB9O1xuIiwidmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xudmFyIEZhc3RTZWFyY2ggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZhc3RTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RvcmUgPSB7fTtcbiAgICB9XG4gICAgRmFzdFNlYXJjaC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIHBvaW50c18xID0gX192YWx1ZXMocG9pbnRzKSwgcG9pbnRzXzFfMSA9IHBvaW50c18xLm5leHQoKTsgIXBvaW50c18xXzEuZG9uZTsgcG9pbnRzXzFfMSA9IHBvaW50c18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfYiA9IHBvaW50c18xXzEudmFsdWUsIHggPSBfYi54LCB5ID0gX2IueSwgeiA9IF9iLno7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF0gPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdW3ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF1beV0gPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChwb2ludHNfMV8xICYmICFwb2ludHNfMV8xLmRvbmUgJiYgKF9hID0gcG9pbnRzXzEucmV0dXJuKSkgX2EuY2FsbChwb2ludHNfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEZhc3RTZWFyY2gucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueSwgeiA9IF9hLno7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddO1xuICAgIH07XG4gICAgcmV0dXJuIEZhc3RTZWFyY2g7XG59KCkpO1xuZXhwb3J0IHsgRmFzdFNlYXJjaCB9O1xuIiwidmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgRFBvbHlnb24sIE1JTl9QT0lOVFNfSU5fVkFMSURfUE9MWUdPTiB9IGZyb20gJy4vRFBvbHlnb24nO1xuaW1wb3J0IHsgRmFzdFNlYXJjaCB9IGZyb20gJy4vRmFzdFNlYXJjaCc7XG5pbXBvcnQgeyBjcmVhdGVBcnJheSB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHZhciBUcmFjZU1hdHJpeFZhbHVlcztcbihmdW5jdGlvbiAoVHJhY2VNYXRyaXhWYWx1ZXMpIHtcbiAgICBUcmFjZU1hdHJpeFZhbHVlc1tUcmFjZU1hdHJpeFZhbHVlc1tcImZcIl0gPSAwXSA9IFwiZlwiO1xuICAgIFRyYWNlTWF0cml4VmFsdWVzW1RyYWNlTWF0cml4VmFsdWVzW1widFwiXSA9IDFdID0gXCJ0XCI7XG59KShUcmFjZU1hdHJpeFZhbHVlcyB8fCAoVHJhY2VNYXRyaXhWYWx1ZXMgPSB7fSkpO1xudmFyIGdldEJ5UG9zaXRpb24gPSBmdW5jdGlvbiAobSwgcCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSA9PT0gdm9pZCAwKSB7IGRlZmF1bHRWYWx1ZSA9IFRyYWNlTWF0cml4VmFsdWVzLmY7IH1cbiAgICBpZiAobVtwLnldID09PSB1bmRlZmluZWQgfHwgbVtwLnldW3AueF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbVtwLnldW3AueF07XG59O1xudmFyIHNldEJ5UG9zaXRpb24gPSBmdW5jdGlvbiAobSwgcCwgdmFsdWUpIHtcbiAgICBpZiAobVtwLnldID09PSB1bmRlZmluZWQgfHwgbVtwLnldW3AueF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIG1bcC55XVtwLnhdID0gdmFsdWU7XG4gICAgcmV0dXJuIG1bcC55XVtwLnhdO1xufTtcbnZhciBUcmFjZU1hdHJpeCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVHJhY2VNYXRyaXgocywgZikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLmFwcHJveGltYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLmZpbmRHcm91cEJ5SW5kZXggPSBmdW5jdGlvbiAobSwgcykge1xuICAgICAgICAgICAgdmFyIHJlcyA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgaWYgKHMgJiYgZ2V0QnlQb3NpdGlvbihtLCBzKSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMudCkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHMpO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICB2YXIgbWFya2VkID0gVHJhY2VNYXRyaXguY3JlYXRlTWF0cml4KF90aGlzLnNpemUsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFRyYWNlTWF0cml4VmFsdWVzLmY7IH0pO1xuICAgICAgICAgICAgICAgIHNldEJ5UG9zaXRpb24obWFya2VkLCBzLCBUcmFjZU1hdHJpeFZhbHVlcy50KTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3RhcnRJbmRleCA8IHJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSByZXMuYXQoc3RhcnRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAtMTsgaSA8IDI7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IC0xOyBqIDwgMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgRFBvaW50KHIueCArIGksIHIueSArIGopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRCeVBvc2l0aW9uKG1hcmtlZCwgdCwgVHJhY2VNYXRyaXhWYWx1ZXMudCkgPT09IFRyYWNlTWF0cml4VmFsdWVzLmYgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QnlQb3NpdGlvbihtLCB0LCBUcmFjZU1hdHJpeFZhbHVlcy5mKSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnlQb3NpdGlvbihtYXJrZWQsIHQsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdGFydEluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5maW5kQWxsR3JvdXBzSW5NYXRyaXggPSBmdW5jdGlvbiAobSkge1xuICAgICAgICAgICAgdmFyIGZpcnN0TWFyayA9IF90aGlzLmZpbmRNYXJrZWQobSk7XG4gICAgICAgICAgICBpZiAoIWZpcnN0TWFyaykge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBncm91cCA9IF90aGlzLmZpbmRHcm91cEJ5SW5kZXgobSwgZmlyc3RNYXJrKTtcbiAgICAgICAgICAgIHZhciBncm91cHMgPSBbZ3JvdXBdO1xuICAgICAgICAgICAgdmFyIGdyb3VwU3VtID0gZ3JvdXAubGVuZ3RoO1xuICAgICAgICAgICAgdmFyIGFsbEdyb3VwcyA9IF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChncm91cC5wb2ludHMpLCBmYWxzZSk7XG4gICAgICAgICAgICB2YXIgZnMgPSBuZXcgRmFzdFNlYXJjaCgpO1xuICAgICAgICAgICAgZnMuYWRkKGFsbEdyb3Vwcyk7XG4gICAgICAgICAgICB3aGlsZSAoZ3JvdXBTdW0gPCBfdGhpcy50b3RhbENvdW50SW5NYXRyaXgobSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWFyayA9IF90aGlzLmZpbmRNYXJrZWQobSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKG1hcmsgJiYgZnMuZmluZChtYXJrKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXJrID0gX3RoaXMuZmluZE1hcmtlZChtLCBtYXJrKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG5leHRHcm91cCA9IF90aGlzLmZpbmRHcm91cEJ5SW5kZXgobSwgbWFyayk7XG4gICAgICAgICAgICAgICAgZ3JvdXBTdW0gKz0gbmV4dEdyb3VwLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBhbGxHcm91cHMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChhbGxHcm91cHMpLCBmYWxzZSksIF9fcmVhZChuZXh0R3JvdXAucG9pbnRzKSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGZzLmFkZChuZXh0R3JvdXAucG9pbnRzKTtcbiAgICAgICAgICAgICAgICBncm91cHMucHVzaChuZXh0R3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdyb3Vwcy5maWx0ZXIoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIGcubGVuZ3RoID4gMjsgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudHJhY2VHcm91cCA9IGZ1bmN0aW9uIChtLCBncm91cCkge1xuICAgICAgICAgICAgdmFyIHRyYWNlRGlyZWN0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAtMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgtMSwgMCksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgtMSwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgwLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgMCksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAtMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgwLCAtMSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB2YXIgbGVmdCA9IGZ1bmN0aW9uIChkKSB7IHJldHVybiAoZCArIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGggKyAxKSAlIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGg7IH07XG4gICAgICAgICAgICB2YXIgcmlnaHQgPSBmdW5jdGlvbiAoZCkgeyByZXR1cm4gKGQgKyB0cmFjZURpcmVjdGlvbnMubGVuZ3RoIC0gMSkgJSB0cmFjZURpcmVjdGlvbnMubGVuZ3RoOyB9O1xuICAgICAgICAgICAgaWYgKGdyb3VwLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IGdyb3VwLmF0KDApLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihbdCwgdCwgdF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBvaW50cyA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgdmFyIGRpcmVjdGlvbiA9IDA7XG4gICAgICAgICAgICB2YXIgcHJldkRpcmVjdGlvbiA9IEluZmluaXR5O1xuICAgICAgICAgICAgdmFyIHAgPSBncm91cC5hdCgwKTtcbiAgICAgICAgICAgIHdoaWxlICghcC5lcXVhbChncm91cC5hdCgwKSkgfHwgcG9pbnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFZhbHVlID0gZ2V0QnlQb3NpdGlvbihtLCBwLmNsb25lKCkubW92ZSh0cmFjZURpcmVjdGlvbnNbZGlyZWN0aW9uXSkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dE5laWdoYm91clZhbHVlID0gZ2V0QnlQb3NpdGlvbihtLCBwLmNsb25lKCkubW92ZSh0cmFjZURpcmVjdGlvbnNbbGVmdChkaXJlY3Rpb24pXSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFZhbHVlID09PSBUcmFjZU1hdHJpeFZhbHVlcy50ICYmIG5leHROZWlnaGJvdXJWYWx1ZSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gcmlnaHQoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHByZXZEaXJlY3Rpb24gIT09IGRpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChwKTtcbiAgICAgICAgICAgICAgICAgICAgcHJldkRpcmVjdGlvbiA9IGRpcmVjdGlvbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcCA9IHAuY2xvbmUoKS5tb3ZlKHRyYWNlRGlyZWN0aW9uc1tkaXJlY3Rpb25dKTtcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBsZWZ0KGxlZnQoZGlyZWN0aW9uKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX3RoaXMuYXBwcm94aW1hdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBwb2ludHMuYXBwcm94aW1hdGlvbigpLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcG9pbnRzLmNsb25lKCkuY2xvc2UoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jcmVhdGVIb2xlTWF0cml4ID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgICAgIHZhciBmdWxsVHJhY2VEaXJlY3Rpb25zID0gW1xuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIC0xKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGdyb3VwLnByZXBhcmVUb0Zhc3RTZWFyY2goKTtcbiAgICAgICAgICAgIHZhciB0bXBNYXRyaXggPSBUcmFjZU1hdHJpeFxuICAgICAgICAgICAgICAgIC5jcmVhdGVNYXRyaXgoX3RoaXMuc2l6ZSwgZnVuY3Rpb24gKHApIHsgcmV0dXJuIGdyb3VwLmZhc3RIYXMocCkgPyBUcmFjZU1hdHJpeFZhbHVlcy50IDogVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfSk7XG4gICAgICAgICAgICB2YXIgc3RhcnRDb29yZHMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3RoaXMuc2l6ZS53OyBpKyspIHtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoaSwgLTEpKTtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoaSwgX3RoaXMuc2l6ZS5oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF90aGlzLnNpemUuaDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KC0xLCBpKSk7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KF90aGlzLnNpemUudywgaSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHN0YXJ0Q29vcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBwb2ludCA9IHN0YXJ0Q29vcmRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGZ1bGxUcmFjZURpcmVjdGlvbnNfMSA9IChlXzEgPSB2b2lkIDAsIF9fdmFsdWVzKGZ1bGxUcmFjZURpcmVjdGlvbnMpKSwgZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEgPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzEubmV4dCgpOyAhZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEuZG9uZTsgZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEgPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG1wUG9pbnQgPSBwb2ludC5jbG9uZSgpLm1vdmUoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldEJ5UG9zaXRpb24odG1wTWF0cml4LCB0bXBQb2ludCwgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IFRyYWNlTWF0cml4VmFsdWVzLmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCeVBvc2l0aW9uKHRtcE1hdHJpeCwgdG1wUG9pbnQsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2godG1wUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEgJiYgIWZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xLmRvbmUgJiYgKF9hID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xLnJldHVybikpIF9hLmNhbGwoZnVsbFRyYWNlRGlyZWN0aW9uc18xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHQgPSBfdGhpcy5yZXZlcnNlTWF0cml4KHRtcE1hdHJpeCk7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMudG90YWxDb3VudEluTWF0cml4KHQpID8gdCA6IG51bGw7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2l6ZSA9IHMuY2xvbmUoKS5zY2FsZSg0KTtcbiAgICAgICAgdmFyIHQgPSBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgodGhpcy5zaXplLCBmdW5jdGlvbiAocCkge1xuICAgICAgICAgICAgdmFyIF9hID0gcC5jbG9uZSgpLm1vZCg0KSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgaWYgKFsxLCAyXS5pbmNsdWRlcyh4KSAmJiBbMSwgMl0uaW5jbHVkZXMoeSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZihwLmNsb25lKCkuZGl2KDQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBUcmFjZU1hdHJpeFZhbHVlcy5mO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tID0gVHJhY2VNYXRyaXguY3JlYXRlTWF0cml4KHRoaXMuc2l6ZSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdGhpcy5zaXplLnkgLSAxOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgdGhpcy5zaXplLnggLSAxOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodFtpXVtqXSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSAtIDFdW2ogLSAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpIC0gMV1bal0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSAtIDFdW2ogKyAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpXVtqIC0gMV0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baV1bal0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baV1baiArIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2kgKyAxXVtqIC0gMV0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSArIDFdW2pdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2kgKyAxXVtqICsgMV0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBUcmFjZU1hdHJpeC5wcm90b3R5cGUuZnVsbE1hdHJpeFRyYWNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZ3JvdXBzID0gdGhpcy5maW5kQWxsR3JvdXBzSW5NYXRyaXgodGhpcy5tKTtcbiAgICAgICAgdmFyIHBhdGhzID0gZ3JvdXBzLm1hcChmdW5jdGlvbiAoZykgeyByZXR1cm4gX3RoaXMudHJhY2VHcm91cChfdGhpcy5tLCBnKTsgfSk7XG4gICAgICAgIHZhciBob2xlTWF0cml4cyA9IGdyb3Vwcy5tYXAodGhpcy5jcmVhdGVIb2xlTWF0cml4KTtcbiAgICAgICAgdmFyIGhvbGVzR3JvdXBzID0gaG9sZU1hdHJpeHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiBtICYmIF90aGlzLmZpbmRBbGxHcm91cHNJbk1hdHJpeChtKTsgfSk7XG4gICAgICAgIHZhciBob2xlc1BhdGhzID0gaG9sZXNHcm91cHMubWFwKGZ1bmN0aW9uIChoZywgaW5kZXgpIHsgcmV0dXJuIGhnICYmIGhnLm1hcChmdW5jdGlvbiAoZykgeyByZXR1cm4gX3RoaXNcbiAgICAgICAgICAgIC50cmFjZUdyb3VwKGhvbGVNYXRyaXhzW2luZGV4XSwgZyk7IH0pLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gci5sZW5ndGggPiBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT047IH0pOyB9KTtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5tYXAoZnVuY3Rpb24gKGcsIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gcGF0aHNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKGhvbGVzR3JvdXBzW2luZGV4XSAmJiBob2xlc0dyb3Vwc1tpbmRleF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzLmhvbGVzID0gaG9sZXNQYXRoc1tpbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzLmxvb3AoKVxuICAgICAgICAgICAgICAgIC5kaXZpZGUoNClcbiAgICAgICAgICAgICAgICAucm91bmQoKVxuICAgICAgICAgICAgICAgIC5ydW4oKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBUcmFjZU1hdHJpeC5wcm90b3R5cGUucmV2ZXJzZU1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHJldHVybiBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgodGhpcy5zaXplLCBmdW5jdGlvbiAocCkgeyByZXR1cm4gZ2V0QnlQb3NpdGlvbihtLCBwKSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZiA/IFRyYWNlTWF0cml4VmFsdWVzLnQgOiBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9KTtcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS5maW5kTWFya2VkID0gZnVuY3Rpb24gKG0sIGluaXQpIHtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnNpemU7XG4gICAgICAgIHZhciBpbmkgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnc7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzLmg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICghaW5pICYmIGluaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IGluaXQueDtcbiAgICAgICAgICAgICAgICAgICAgaiA9IGluaXQueTtcbiAgICAgICAgICAgICAgICAgICAgaW5pID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChnZXRCeVBvc2l0aW9uKG0sIG5ldyBEUG9pbnQoaSwgaikpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KGksIGopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS50b3RhbENvdW50SW5NYXRyaXggPSBmdW5jdGlvbiAobSkge1xuICAgICAgICB2YXIgcmVzID0gMDtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnNpemU7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy53OyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcy5oOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0QnlQb3NpdGlvbihtLCBuZXcgRFBvaW50KGksIGopKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCA9IGZ1bmN0aW9uIChzaXplLCBmKSB7XG4gICAgICAgIGlmIChmID09PSB2b2lkIDApIHsgZiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFRyYWNlTWF0cml4VmFsdWVzLmY7IH07IH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFycmF5KHNpemUuaClcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIGNyZWF0ZUFycmF5KHNpemUudykubWFwKGZ1bmN0aW9uICh2MiwgaikgeyByZXR1cm4gZihuZXcgRFBvaW50KGosIGkpKTsgfSk7IH0pO1xuICAgIH07XG4gICAgcmV0dXJuIFRyYWNlTWF0cml4O1xufSgpKTtcbmV4cG9ydCB7IFRyYWNlTWF0cml4IH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xuaW1wb3J0IHsgRFBvbHlnb24gfSBmcm9tICcuL0RQb2x5Z29uJztcbmltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IGlzRGVmQW5kTm90TnVsbCB9IGZyb20gJy4vdXRpbHMnO1xudmFyIEludGVycG9sYXRpb25NYXRyaXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEludGVycG9sYXRpb25NYXRyaXgoYmJveExpa2UsIHN0ZXBTaXplLCBrZXlzLCBwKSB7XG4gICAgICAgIGlmIChwID09PSB2b2lkIDApIHsgcCA9IDI7IH1cbiAgICAgICAgdGhpcy5zdGVwU2l6ZSA9IHN0ZXBTaXplO1xuICAgICAgICB0aGlzLnAgPSBwO1xuICAgICAgICB0aGlzLnBvaW50cyA9IFtdO1xuICAgICAgICB0aGlzLmNlbGxzID0ge307XG4gICAgICAgIHRoaXMuYWxsQ2VsbHMgPSBbXTtcbiAgICAgICAgdGhpcy5taW5Qb2ludCA9IGJib3hMaWtlLm1pblBvaW50O1xuICAgICAgICB0aGlzLm1heFBvaW50ID0gYmJveExpa2UubWF4UG9pbnQ7XG4gICAgICAgIHRoaXMuc2l6ZVBvbHkgPSBEUG9seWdvbi5jcmVhdGVTcXVhcmVCeVNpemUobmV3IERQb2ludCh0aGlzLnN0ZXBTaXplKSk7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHRoaXMubWF4UG9pbnQuY2xvbmUoKS5tb3ZlKHRoaXMubWluUG9pbnQuY2xvbmUoKS5taW51cygpKVxuICAgICAgICAgICAgLmRpdmlkZSh0aGlzLnN0ZXBTaXplKVxuICAgICAgICAgICAgLmNlaWwoKTtcbiAgICAgICAgdGhpcy5rZXlzID0gQXJyYXkuaXNBcnJheShrZXlzKSA/IGtleXMgOiBba2V5c107XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVDZWxscygpO1xuICAgIH1cbiAgICBJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZS5zZXRLbm93blBvaW50cyA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5wb2ludHMgPSBwb2ludHMgaW5zdGFuY2VvZiBEUG9seWdvbiA/IHBvaW50cy5wb2ludHMgOiBwb2ludHM7XG4gICAgICAgIHRoaXMubWluUG9pbnQuc2V0UHJvcGVydGllcyh0aGlzLnBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHYpIHsgcmV0dXJuIF90aGlzLmtleXNcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGFhLCBrKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBhYVtrXSA9IE1hdGgubWluKChfYSA9IGFba10pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IEluZmluaXR5LCB2LnByb3BlcnRpZXNba10pO1xuICAgICAgICAgICAgcmV0dXJuIGFhO1xuICAgICAgICB9LCBhKTsgfSwge30pKTtcbiAgICAgICAgdGhpcy5tYXhQb2ludC5zZXRQcm9wZXJ0aWVzKHRoaXMucG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYSwgdikgeyByZXR1cm4gX3RoaXMua2V5c1xuICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYWEsIGspIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGFhW2tdID0gTWF0aC5tYXgoKF9hID0gYVtrXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogLUluZmluaXR5LCB2LnByb3BlcnRpZXNba10pO1xuICAgICAgICAgICAgcmV0dXJuIGFhO1xuICAgICAgICB9LCBhKTsgfSwge30pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZS5wb3NpdGlvblRvQ2VsbENvb3JkcyA9IGZ1bmN0aW9uIChkKSB7XG4gICAgICAgIHJldHVybiBkLmNsb25lKClcbiAgICAgICAgICAgIC5tb3ZlKHRoaXMubWluUG9pbnQuY2xvbmUoKS5taW51cygpKVxuICAgICAgICAgICAgLmRpdmlkZSh0aGlzLnN0ZXBTaXplKVxuICAgICAgICAgICAgLmZsb29yKCk7XG4gICAgfTtcbiAgICBJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZS5jYWxjdWxhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0S25vd25WYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5pbnRlcnBvbGF0ZVZhbHVlcygpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLmdldENlbGxWYWx1ZSA9IGZ1bmN0aW9uIChfYSwga2V5KSB7XG4gICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgIHZhciBjZWxsID0gdGhpcy5jZWxsc1t4XVt5XTtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXkucmVkdWNlKGZ1bmN0aW9uIChhLCBrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFba10gPSBjZWxsLnByb3BlcnRpZXNba107XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjZWxsLnByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oe30sIGNlbGwucHJvcGVydGllcyk7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUsIFwiZ2V0Q2VsbERhdGFcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsbENlbGxzLnJlZHVjZShmdW5jdGlvbiAoYSwgYykge1xuICAgICAgICAgICAgICAgIHZhciBfYSA9IGMucHJvcGVydGllcywgeCA9IF9hLngsIHkgPSBfYS55LCBwcm9wcyA9IF9fcmVzdChfYSwgW1wieFwiLCBcInlcIl0pO1xuICAgICAgICAgICAgICAgIGFbeF0gPSBhW3hdIHx8IHt9O1xuICAgICAgICAgICAgICAgIGFbeF1beV0gPSBfX2Fzc2lnbih7fSwgcHJvcHMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLCBcImFsbENlbGxzQ2xvbmVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFsbENlbGxzLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gcC5jbG9uZSgpOyB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLmludGVycG9sYXRlVmFsdWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcG9pbnRzID0gdGhpcy5wb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBfdGhpcy5wb3NpdGlvblRvQ2VsbENvb3JkcyhwKTsgfSk7XG4gICAgICAgIHRoaXMuYWxsQ2VsbHMuZm9yRWFjaChmdW5jdGlvbiAoY2VsbCkge1xuICAgICAgICAgICAgdmFyIHQgPSBuZXcgRFBvaW50KGNlbGwucHJvcGVydGllcy54LCBjZWxsLnByb3BlcnRpZXMueSk7XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2VzID0gcG9pbnRzLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gTWF0aC5wb3codC5kaXN0YW5jZShwKSwgX3RoaXMucCk7IH0pO1xuICAgICAgICAgICAgX3RoaXMua2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbChjZWxsLnByb3BlcnRpZXNba10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gX19yZWFkKGRpc3RhbmNlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGQsIGkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbChfdGhpcy5wb2ludHNbaV0ucHJvcGVydGllc1trXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFbMF0gKz0gX3RoaXMucG9pbnRzW2ldLnByb3BlcnRpZXNba10gLyBkO1xuICAgICAgICAgICAgICAgICAgICAgICAgYVsxXSArPSAxIC8gZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgICAgICB9LCBbMCwgMF0pLCAyKSwgdmFsdWVTdW0gPSBfYVswXSwgb25lU3VtID0gX2FbMV07XG4gICAgICAgICAgICAgICAgY2VsbC5wcm9wZXJ0aWVzW2tdID0gdmFsdWVTdW0gLyBvbmVTdW07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZS5zZXRLbm93blZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbiAocCkge1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMucG9zaXRpb25Ub0NlbGxDb29yZHMocCksIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgICAgIF90aGlzLmtleXMuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgICAgIF90aGlzLmNlbGxzW3hdW3ldLnByb3BlcnRpZXNba10gPSBwLnByb3BlcnRpZXNba107XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZS5nZW5lcmF0ZUNlbGxzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5taW5Qb2ludC54LCB4ID0gMDsgaSA8IHRoaXMubWF4UG9pbnQueDsgaSArPSB0aGlzLnN0ZXBTaXplLCB4KyspIHtcbiAgICAgICAgICAgIHRoaXMuY2VsbHNbeF0gPSB0aGlzLmNlbGxzW3hdIHx8IHt9O1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IHRoaXMubWluUG9pbnQueSwgeSA9IDA7IGogPCB0aGlzLm1heFBvaW50Lnk7IGogKz0gdGhpcy5zdGVwU2l6ZSwgeSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLnNpemVQb2x5XG4gICAgICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgICAgIC5sb29wKClcbiAgICAgICAgICAgICAgICAgICAgLm1vdmUoaSwgailcbiAgICAgICAgICAgICAgICAgICAgLnJ1bigpXG4gICAgICAgICAgICAgICAgICAgIC5zZXRQcm9wZXJ0aWVzKHtcbiAgICAgICAgICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgICAgICAgICAgeTogeVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY2VsbHNbeF1beV0gPSB0O1xuICAgICAgICAgICAgICAgIHRoaXMuYWxsQ2VsbHMucHVzaCh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEludGVycG9sYXRpb25NYXRyaXg7XG59KCkpO1xuZXhwb3J0IHsgSW50ZXJwb2xhdGlvbk1hdHJpeCB9O1xuIiwidmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgZ2F1c3NpYW5FbGltaW5hdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRE51bWJlcnMgfSBmcm9tICcuL0ROdW1iZXJzJztcbnZhciBEUGxhbmUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQbGFuZShhLCBiLCBjLCBkLCBwMSwgcDIsIHAzKSB7XG4gICAgICAgIGlmIChwMSA9PT0gdm9pZCAwKSB7IHAxID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICBpZiAocDIgPT09IHZvaWQgMCkgeyBwMiA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKHAzID09PSB2b2lkIDApIHsgcDMgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIHRoaXMuYSA9IGE7XG4gICAgICAgIHRoaXMuYiA9IGI7XG4gICAgICAgIHRoaXMuYyA9IGM7XG4gICAgICAgIHRoaXMuZCA9IGQ7XG4gICAgICAgIHRoaXMucDEgPSBwMTtcbiAgICAgICAgdGhpcy5wMiA9IHAyO1xuICAgICAgICB0aGlzLnAzID0gcDM7XG4gICAgfVxuICAgIERQbGFuZS5maW5kID0gZnVuY3Rpb24gKHAxLCBwMiwgcDMpIHtcbiAgICAgICAgaWYgKHAxLnggPT09IHAyLnggJiYgcDIueCA9PT0gcDMueCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoMSwgMCwgMCwgLXAxLngsIHAxLCBwMiwgcDMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwMS55ID09PSBwMi55ICYmIHAyLnkgPT09IHAzLnkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBsYW5lKDAsIDEsIDAsIC1wMS55LCBwMSwgcDIsIHAzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocDEueiA9PT0gcDIueiAmJiBwMi56ID09PSBwMy56KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQbGFuZSgwLCAwLCAxLCAtcDEueiwgcDEsIHAyLCBwMyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGQgPSAxO1xuICAgICAgICB2YXIgX2EgPSBfX3JlYWQoZ2F1c3NpYW5FbGltaW5hdGlvbihbXG4gICAgICAgICAgICBbcDEueCwgcDEueSwgcDEueiwgLWRdLFxuICAgICAgICAgICAgW3AyLngsIHAyLnksIHAyLnosIC1kXSxcbiAgICAgICAgICAgIFtwMy54LCBwMy55LCBwMy56LCAtZF1cbiAgICAgICAgXSksIDMpLCBhID0gX2FbMF0sIGIgPSBfYVsxXSwgYyA9IF9hWzJdO1xuICAgICAgICByZXR1cm4gbmV3IERQbGFuZShhLCBiLCBjLCBkLCBwMSwgcDIsIHAzKTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUueCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jLCBkID0gX2EuZDtcbiAgICAgICAgICAgIHZhciB5ID0gcC55LCB6ID0gcC56O1xuICAgICAgICAgICAgcC54ID0gLShiICogeSArIGMgKiB6ICsgZCkgLyBhO1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHAubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiBfdGhpcy54KHQpOyB9KTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUueSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jLCBkID0gX2EuZDtcbiAgICAgICAgICAgIHZhciB4ID0gcC54LCB6ID0gcC56O1xuICAgICAgICAgICAgcC55ID0gLShhICogeCArIGMgKiB6ICsgZCkgLyBiO1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHAubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiBfdGhpcy55KHQpOyB9KTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUueiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jLCBkID0gX2EuZDtcbiAgICAgICAgICAgIHZhciB4ID0gcC54LCB5ID0gcC55O1xuICAgICAgICAgICAgcC56ID0gLShhICogeCArIGIgKiB5ICsgZCkgLyBjO1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHAubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiBfdGhpcy56KHQpOyB9KTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kLCBwMSA9IF9hLnAxLCBwMiA9IF9hLnAyLCBwMyA9IF9hLnAzO1xuICAgICAgICByZXR1cm4gbmV3IERQbGFuZShhLCBiLCBjLCBkLCBwMSwgcDIsIHAzKTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUuZGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdmFyIHggPSBwLngsIHkgPSBwLnksIHogPSBwLno7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBhXzEgPSBfYS5hLCBiXzEgPSBfYS5iLCBjXzEgPSBfYS5jLCBkXzEgPSBfYS5kO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGFfMSAqIHggKyBiXzEgKiB5ICsgY18xICogeiArIGRfMSkgLyBNYXRoLnNxcnQoYV8xICogYV8xICsgYl8xICogYl8xICsgY18xICogY18xKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2IgPSBwLCBhID0gX2IuYSwgYiA9IF9iLmIsIGMgPSBfYi5jLCBkID0gX2IuZDtcbiAgICAgICAgdmFyIHIgPSB0aGlzLmQ7XG4gICAgICAgIHJldHVybiBNYXRoLmFicyhkIC0gcikgLyBNYXRoLnNxcnQoYSAqIGEgKyBiICogYiArIGMgKiBjKTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgYSA9IHAuYSwgYiA9IHAuYiwgYyA9IHAuYywgZCA9IHAuZDtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgcSA9IF9hLmEsIHcgPSBfYS5iLCBlID0gX2EuYywgciA9IF9hLmQ7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKGEsIHEpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKGIsIHcpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKGMsIGUpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKGQsIHIpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5zYW1lID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGEgPSBwLmEsIGIgPSBwLmIsIGMgPSBwLmMsIGQgPSBwLmQ7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHEgPSBfYS5hLCB3ID0gX2EuYiwgZSA9IF9hLmMsIHIgPSBfYS5kO1xuICAgICAgICB2YXIgdCA9IGEgLyBxO1xuICAgICAgICB2YXIgeSA9IGIgLyB3O1xuICAgICAgICB2YXIgdSA9IGMgLyBlO1xuICAgICAgICB2YXIgaSA9IGQgLyByO1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZSh0LCB5KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZSh0LCB1KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZSh0LCBjKSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZSh0LCBpKTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUucGFyYWxsZWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgYSA9IHAuYSwgYiA9IHAuYiwgYyA9IHAuYywgZCA9IHAuZDtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgcSA9IF9hLmEsIHcgPSBfYS5iLCBlID0gX2EuYywgciA9IF9hLmQ7XG4gICAgICAgIHZhciB0ID0gYSAvIHE7XG4gICAgICAgIHZhciB5ID0gYiAvIHc7XG4gICAgICAgIHZhciB1ID0gYyAvIGU7XG4gICAgICAgIHZhciBpID0gZCAvIHI7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKHQsIHkpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIHUpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIGMpICYmXG4gICAgICAgICAgICAhRE51bWJlcnMubGlrZSh0LCBpKTtcbiAgICB9O1xuICAgIHJldHVybiBEUGxhbmU7XG59KCkpO1xuZXhwb3J0IHsgRFBsYW5lIH07XG4iXSwibmFtZXMiOlsiX19yZWFkIiwidGhpcyIsIl9fc3ByZWFkQXJyYXkiLCJfX3ZhbHVlcyIsIl9fYXNzaWduIiwib3BlcmF0aW9uIiwianN0c0lvIiwiX19yZXN0IiwiVHJhY2VNYXRyaXhWYWx1ZXMiXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFBLElBQUlBLFFBQU0sR0FBRyxDQUFDQyxTQUFJLElBQUlBLFNBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDckMsSUFBSSxJQUFJO0lBQ1IsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkYsS0FBSztJQUNMLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUMzQyxZQUFZO0lBQ1osUUFBUSxJQUFJO0lBQ1osWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsU0FBUztJQUNULGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3pDLEtBQUs7SUFDTCxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBQ0YsSUFBSUMsZUFBYSxHQUFHLENBQUNELFNBQUksSUFBSUEsU0FBSSxDQUFDLGFBQWEsS0FBSyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQzlFLElBQUksSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekYsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixTQUFTO0lBQ1QsS0FBSztJQUNMLElBQUksT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7SUFDRixJQUFJRSxVQUFRLEdBQUcsQ0FBQ0YsU0FBSSxJQUFJQSxTQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUFFO0lBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRixJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBTztJQUNsRCxRQUFRLElBQUksRUFBRSxZQUFZO0lBQzFCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQy9DLFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsU0FBUztJQUNULEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxJ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SyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFDRixJQUFJLFdBQVcsR0FBRyxDQUFDSCxTQUFJLElBQUlBLFNBQUksQ0FBQyxXQUFXLEtBQUssVUFBVSxPQUFPLEVBQUUsSUFBSSxFQUFFO0lBQ3pFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNySCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sS0FBSyxVQUFVLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdKLElBQUksU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEUsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDdEIsUUFBUSxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxPQUFPLENBQUMsRUFBRSxJQUFJO0lBQ3RCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekssWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELFlBQVksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQzlDLGdCQUFnQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDeEUsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7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QUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDdEQsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRUUsZUFBYSxDQUFDLEVBQUUsRUFBRUYsUUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0YsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0lBQzdDLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxZQUFZO0lBQzlDLFFBQVEsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLO0lBQ3BGLGFBQWEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFD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QUFFO0lBQ3hELFFBQVEsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtJQUMxRCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDL0IsUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFlBQVksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsU0FBUztJQUNULEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRTtJQUM1RSxRQUFRLElBQUksbUJBQW1CLEdBQUcsU0FBUyxLQUFLLFNBQVMsQ0FBQztJQUMxRCxRQUFRLElBQUksTUFBTSxHQUFHLElBQUlNLE9BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QyxRQUFRLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsbUJBQW1C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QUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3JDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNyQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUM5QixZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUM5QixZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMs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LElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pGLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3hGLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFO0lBQzlELGlCQUFpQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxhQUFhO0lBQ2IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUU7SUFDOUQsaUJBQWlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxpQkFBaUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0lBQ3BDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsU0FBUztJQUNULFFBQVEsT0FBTyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRTtJQUNqRCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUU7SUFDcEMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLFNBQVM7SUFDVCxhQUFhLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtJQUMzQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLEVBQUUsRUFBRTtJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFD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SUFBSSxHQUFHLFlBQVk7SUFDOUIsUUFBUSxPQUFPLElBQUksTUFBTSxFQUFFLENBQUM7SUFDNUIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUN4QyxRQUFRLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUM3RCxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDMUcsUUFBUSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7SUFDeEIsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLFNBQVM7SUFDVCxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEdBQUdNLFFBQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0YsUUFBUSxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDdEQsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUs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QUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLG1CQUFtQixHQUFHLFlBQVksQ0FBQztJQUNsRixRQUFRLElBQUksQ0FBQyxHQUFHLFlBQVksR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRixRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsTUFBTSxFQUFFO0lBQ2xELFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxNQUFNLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQzdELFFBQVEsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3pELGFBQWEsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3hDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFD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Q0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3ZDLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRTtJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFD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Q0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDMUMsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzVDLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRTtJQUN4QyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQixZQUFZLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLFNBQVM7SUFDVCxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFH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TyxDQUFDLENBQUM7SUFDckIsU0FBUyxDQUFDO0lBQ1YsYUFBYSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsd0NBQXdDLEdBQUcsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ2xGLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9CLFFBQVEsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUU7SUFDL0IsWUFBWSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDOUIsU0FBUztJQUNULGFBQWE7SUFDYixZQUFZLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0SSxZQUFZLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0SSxZQUFZLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkMsWUFBWSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLFlBQVksSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxZQUFZLElBQUksYUFBYSxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDdEQsWUFBWSxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sTUFBTSxFQUFFO0lBQy9FLGdCQUFnQixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sR0FBRyxTQUFTLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyRSxhQUFhO0lBQ2IsaUJBQWlCO0lBQ2pCLGdCQUFnQixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sR0FBRyxTQUFTLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQztJQUNyRSxhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDLEVBQUU7O0FDM3hCQSxRQUFDLE9BQU8sSUFBSSxZQUFZO0lBQzNCLElBQUksU0FBUyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNoQyxRQUFRLElBQUksTUFBTSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQzFELFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDcEMsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLEtBQUs7SUFDTCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7SUFDN0MsUUFBUSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1RSxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7SUFDN0MsUUFBUSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsRCxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7SUFDMUMsUUFBUSxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELEtBQUssQ0FBQztJQUNOLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDaEQsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsWUFBWSxPQUFPLFFBQVEsQ0FBQztJQUM1QixTQUFTO0lBQ1QsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkUsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkMsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQy9CLFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDL0IsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMvQixRQUFRLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFD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Q0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixTQUFTO0lBQ1QsS0FBSztJQUNMLElBQUksT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7SUFDRixJQUFJLFFBQVEsR0FBRyxDQUFDQSxTQUFJLElBQUlBLFNBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLEVBQUU7SUFDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLElBQUksSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUksSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPO0lBQ2xELFFBQVEsSUFBSSxFQUFFLFlBQVk7SUFDMUIsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDL0MsWUFBWSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRCxTQUFTO0lBQ1QsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLElBQUksU0FB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LENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtJQUM1QyxZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzVDLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDNUMsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixRQUFRLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztJQUM1QyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FB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Q0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0lBQ3pDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xHLFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzdDLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUcsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDN0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
|